hero infravision
Take a first step towards making the mons[] array be readonly. The only other place that updates it is when changing succubus and incubus AD_SSEX attacks to AD_SEDU ones and that can be handled via existing getmattk(), but so far has proven to be trickier than anticipated.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 mondata.h $NHDT-Date: 1513297342 2017/12/15 00:22:22 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.33 $ */
|
||||
/* NetHack 3.6 mondata.h $NHDT-Date: 1547086248 2019/01/10 02:10:48 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.35 $ */
|
||||
/* Copyright (c) 1989 Mike Threepoint */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -127,9 +127,9 @@
|
||||
#define is_longworm(ptr) \
|
||||
(((ptr) == &mons[PM_BABY_LONG_WORM]) || ((ptr) == &mons[PM_LONG_WORM]) \
|
||||
|| ((ptr) == &mons[PM_LONG_WORM_TAIL]))
|
||||
#define is_covetous(ptr) ((ptr->mflags3 & M3_COVETOUS))
|
||||
#define infravision(ptr) ((ptr->mflags3 & M3_INFRAVISION))
|
||||
#define infravisible(ptr) ((ptr->mflags3 & M3_INFRAVISIBLE))
|
||||
#define is_covetous(ptr) (((ptr)->mflags3 & M3_COVETOUS))
|
||||
#define infravision(ptr) (((ptr)->mflags3 & M3_INFRAVISION))
|
||||
#define infravisible(ptr) (((ptr)->mflags3 & M3_INFRAVISIBLE))
|
||||
#define is_displacer(ptr) (((ptr)->mflags3 & M3_DISPLACES) != 0L)
|
||||
#define is_mplayer(ptr) \
|
||||
(((ptr) >= &mons[PM_ARCHEOLOGIST]) && ((ptr) <= &mons[PM_WIZARD]))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 polyself.c $NHDT-Date: 1520797126 2018/03/11 19:38:46 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.117 $ */
|
||||
/* NetHack 3.6 polyself.c $NHDT-Date: 1547086249 2019/01/10 02:10:49 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.125 $ */
|
||||
/* Copyright (C) 1987, 1988, 1989 by Ken Arromdee */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -81,7 +81,8 @@ set_uasmon()
|
||||
PROPSET(HALLUC_RES, dmgtype(mdat, AD_HALU));
|
||||
PROPSET(SEE_INVIS, perceives(mdat));
|
||||
PROPSET(TELEPAT, telepathic(mdat));
|
||||
PROPSET(INFRAVISION, infravision(mdat));
|
||||
/* note that Infravision uses mons[race] rather than usual mons[role] */
|
||||
PROPSET(INFRAVISION, infravision(Upolyd ? mdat : &mons[urace.malenum]));
|
||||
PROPSET(INVIS, pm_invisible(mdat));
|
||||
PROPSET(TELEPORT, can_teleport(mdat));
|
||||
PROPSET(TELEPORT_CONTROL, control_teleport(mdat));
|
||||
|
||||
11
src/role.c
11
src/role.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 role.c $NHDT-Date: 1546137492 2018/12/30 02:38:12 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.55 $ */
|
||||
/* NetHack 3.6 role.c $NHDT-Date: 1547086250 2019/01/10 02:10:50 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.56 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985-1999. */
|
||||
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -2098,6 +2098,14 @@ role_init()
|
||||
/* 0 or 1; no gods are neuter, nor is gender randomized */
|
||||
quest_status.godgend = !strcmpi(align_gtitle(alignmnt), "goddess");
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Disable this fixup so that mons[] can be const. The only
|
||||
* place where it actually matters for the hero is in set_uasmon()
|
||||
* and that can use mons[race] rather than mons[role] for this
|
||||
* particular property. Despite the comment, it is checked--where
|
||||
* needed--via instrinsic 'Infravision' which set_uasmon() manages.
|
||||
*/
|
||||
/* Fix up infravision */
|
||||
if (mons[urace.malenum].mflags3 & M3_INFRAVISION) {
|
||||
/* although an infravision intrinsic is possible, infravision
|
||||
@@ -2113,6 +2121,7 @@ role_init()
|
||||
if (urole.femalenum != NON_PM)
|
||||
mons[urole.femalenum].mflags3 |= M3_INFRAVISION;
|
||||
}
|
||||
#endif /*0*/
|
||||
|
||||
/* Artifacts are fixed in hack_artifacts() */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user