]> granicus.if.org Git - nethack/commitdiff
potion of poison
authornethack.allison <nethack.allison>
Sat, 5 Jun 2004 22:16:00 +0000 (22:16 +0000)
committernethack.allison <nethack.allison>
Sat, 5 Jun 2004 22:16:00 +0000 (22:16 +0000)
<Someone> wrote:
> It is a little odd that, if you are poison resistant,
> potions of sickness can kill you if and only if they
> are blessed.

doc/fixes34.4
src/potion.c

index 35fe381689d617dd522a0553b630926a48e02042..db8d70ed385956f804faf22f7f8c0f5ef872e041 100644 (file)
@@ -37,6 +37,8 @@ if you didn't see a rolling boulder fall into a pit, you only heard the sound
 fire trap was triggered twice in the same turn when melting ice was involved
 abandon the specialized djinn and ghost counters used for potion tuning and
        use the mvitals[].born field instead
+if you were Poison_resistant, only a *blessed* potion of sickness caused
+       loss of hitpoints
 
 
 Platform- and/or Interface-Specific Fixes
index 668e47dece2a4bd0bdbd248890fd2a021d3cce32..b7b1f2cc2e34e8401476c4caabec0836a74f1561 100644 (file)
@@ -680,8 +680,13 @@ peffects(otmp)
                    if (Role_if(PM_HEALER))
                        pline("Fortunately, you have been immunized.");
                    else {
+                       char contaminant[BUFSZ];
                        int typ = rn2(A_MAX);
 
+                       Sprintf(contaminant, "%s%s",
+                               (Poison_resistance) ? "mildly " : "",
+                               (otmp->fromsink) ? "contaminated tap water" :
+                                                  "contaminated potion");
                        if (!Fixed_abil) {
                            poisontell(typ, FALSE);
                            (void) adjattrib(typ,
@@ -691,10 +696,14 @@ peffects(otmp)
                        if(!Poison_resistance) {
                            if (otmp->fromsink)
                                losehp(rnd(10)+5*!!(otmp->cursed),
-                                      "contaminated tap water", KILLED_BY);
+                                      contaminant, KILLED_BY);
                            else
                                losehp(rnd(10)+5*!!(otmp->cursed),
-                                      "contaminated potion", KILLED_BY_AN);
+                                      contaminant, KILLED_BY_AN);
+                       } else {
+                           /* rnd loss is so that unblessed poorer than blessed */
+                           losehp(1 + rn2(2), contaminant,
+                                  (otmp->fromsink) ? KILLED_BY : KILLED_BY_AN);
                        }
                        exercise(A_CON, FALSE);
                    }