From 14bd550481506798ebf7388f94e960069abfa8af Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Sat, 15 Oct 2016 19:47:04 +0300 Subject: [PATCH] Wielding Trollsbane prevents trolls from reviving --- doc/fixes36.1 | 1 + include/timeout.h | 29 +++++++++++++++++------------ src/zap.c | 4 +++- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 9878cf716..b997f6994 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -351,6 +351,7 @@ pets start with apport equal to your charisma sometimes generate the random mazes with wide corridors, thick walls, or with dead ends changed to loops put throne room gold in the chest +wielding Trollsbane prevents trolls from reviving Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository diff --git a/include/timeout.h b/include/timeout.h index e405b5e14..0cb4c706a 100644 --- a/include/timeout.h +++ b/include/timeout.h @@ -9,10 +9,12 @@ typedef void FDECL((*timeout_proc), (ANY_P *, long)); /* kind of timer */ -#define TIMER_LEVEL 0 /* event specific to level */ -#define TIMER_GLOBAL 1 /* event follows current play */ -#define TIMER_OBJECT 2 /* event follows a object */ -#define TIMER_MONSTER 3 /* event follows a monster */ +enum timer_type { + TIMER_LEVEL = 0, /* event specific to level */ + TIMER_GLOBAL, /* event follows current play */ + TIMER_OBJECT, /* event follows a object */ + TIMER_MONSTER /* event follows a monster */ +}; /* save/restore timer ranges */ #define RANGE_LEVEL 0 /* save/restore timers staying on level */ @@ -22,14 +24,17 @@ typedef void FDECL((*timeout_proc), (ANY_P *, long)); * Timeout functions. Add a define here, then put it in the table * in timeout.c. "One more level of indirection will fix everything." */ -#define ROT_ORGANIC 0 /* for buried organics */ -#define ROT_CORPSE 1 -#define REVIVE_MON 2 -#define BURN_OBJECT 3 -#define HATCH_EGG 4 -#define FIG_TRANSFORM 5 -#define MELT_ICE_AWAY 6 -#define NUM_TIME_FUNCS 7 +enum timeout_types { + ROT_ORGANIC = 0, /* for buried organics */ + ROT_CORPSE, + REVIVE_MON, + BURN_OBJECT, + HATCH_EGG, + FIG_TRANSFORM, + MELT_ICE_AWAY, + + NUM_TIME_FUNCS +}; /* used in timeout.c */ typedef struct fe { diff --git a/src/zap.c b/src/zap.c index 927bcb1dc..b2df5212f 100644 --- a/src/zap.c +++ b/src/zap.c @@ -748,7 +748,9 @@ boolean by_hero; x = xy.x, y = xy.y; } - if (mons[montype].mlet == S_EEL && !IS_POOL(levl[x][y].typ)) { + if ((mons[montype].mlet == S_EEL && !IS_POOL(levl[x][y].typ)) + || (mons[montype].mlet == S_TROLL + && uwep && uwep->oartifact == ART_TROLLSBANE)) { if (by_hero && cansee(x,y)) pline("%s twitches feebly.", upstart(corpse_xname(corpse, (const char *) 0, CXN_PFX_THE))); -- 2.40.0