]> granicus.if.org Git - nethack/commitdiff
Wielding Trollsbane prevents trolls from reviving
authorPasi Kallinen <paxed@alt.org>
Sat, 15 Oct 2016 16:47:04 +0000 (19:47 +0300)
committerPasi Kallinen <paxed@alt.org>
Sat, 15 Oct 2016 16:47:04 +0000 (19:47 +0300)
doc/fixes36.1
include/timeout.h
src/zap.c

index 9878cf7163a1c3f26135fa3694ccbdf988de4a9f..b997f6994c17b12358892bf2c48789b15527acd0 100644 (file)
@@ -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
index e405b5e148843a921325ee8799a74a0fc6bf8142..0cb4c706a7d6471c9138fdd7fe3847088921f2be 100644 (file)
@@ -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 {
index 927bcb1dcdf719fe1a89a267bcaf15af8bf84db5..b2df5212f85827137e9d1e01dac38469cc2a32b8 100644 (file)
--- 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)));