include the PM_ index in mons (permonst)
This is useful for debugging and it allows the index
to be used directly instead of calculated in a
monsndx() function, which has been removed.
I left monsndx() in as a simple short-hand macro for the value
and didn't change the use cases, the reasoning being that this:
monsndx(mon->data)
is arguably a little easier on the eyes than:
mon->data->pmidx
LOW_PM, NON_PM, SPECIAL_PM have been included in the 'enum monnums'
now, instead of as individual macro definitions.
I chose to add the pmidx field as an instance of the enum declaration,
because that has very advantageous results in some debuggers, where it is
then shown as:
pmidx PM_GRAND_MASTER (349) monnums
instead of the less-informative:
pmidx 349 int
Adding the element count to the extern declaration for mons from:
'extern struct permonst *mons[];'
to the more specific declaration to that in src/monst.c:
'extern struct permonst *mons[NUMMONS + 1];'
then allows navigation through the mons array in one of the debuggers.
This commit is contained in:
19
src/monst.c
19
src/monst.c
@@ -23,13 +23,15 @@
|
||||
flg1, flg2, flg3, d, col, bn) \
|
||||
{ \
|
||||
{ (const char *) 0, (const char *) 0, nam }, \
|
||||
sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, C(col) \
|
||||
PM_##bn, \
|
||||
sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, C(col) \
|
||||
}
|
||||
|
||||
#define MON3(namm, namf, namn, sym, lvl, gen, atk, siz, mr1, mr2, \
|
||||
flg1, flg2, flg3, d, col, bn) \
|
||||
{ \
|
||||
{ namm, namf, namn }, \
|
||||
PM_##bn, \
|
||||
sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, C(col) \
|
||||
}
|
||||
/* LVL() and SIZ() collect several fields to cut down on number of args
|
||||
@@ -52,11 +54,22 @@ struct permonst mons_init[NUMMONS + 1] = {
|
||||
/*
|
||||
* array terminator
|
||||
*/
|
||||
#undef MON
|
||||
#define MON(nam, sym, lvl, gen, atk, siz, mr1, mr2, \
|
||||
flg1, flg2, flg3, d, col, bn) \
|
||||
{ \
|
||||
{ (const char *) 0, (const char *) 0, nam }, \
|
||||
NON_PM, \
|
||||
sym, lvl, gen, atk, siz, mr1, mr2, flg1, flg2, flg3, d, C(col) \
|
||||
}
|
||||
MON("", 0, LVL(0, 0, 0, 0, 0), (0),
|
||||
A(NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK),
|
||||
SIZ(0, 0, 0, 0), 0, 0, 0L, 0L, 0, 0, 0, 0)
|
||||
SIZ(0, 0, 0, 0), 0, 0, 0L, 0L, 0, 0, 0, 0),
|
||||
};
|
||||
|
||||
#undef MON
|
||||
#undef MON3
|
||||
|
||||
void monst_globals_init(void); /* in hack.h but we're using config.h */
|
||||
|
||||
struct permonst mons[SIZE(mons_init)];
|
||||
@@ -76,8 +89,6 @@ const struct attack c_sa_no[NATTK] = SEDUCTION_ATTACKS_NO;
|
||||
#undef C
|
||||
#define C(c) (0x1f & (c)) /* global.h */
|
||||
#undef NO_ATTK
|
||||
#undef MON
|
||||
#undef MON3
|
||||
#undef LVL
|
||||
#undef SIZ
|
||||
#undef ATTK
|
||||
|
||||
Reference in New Issue
Block a user