conflicting countdowns
I tried 'pick all' in the #wizintrinsics' menu and after 30 turns, died with "poisoned by a poisoned, while vomiting". Food poisioning and/or terminal illness beat the other fatal conditions to the coup de gras. However, the final stage of vomiting sets Sick to 0 cure food poisoning and ends up clobbering the killer reason if Sick is due to terminal illness. It's feasible for that to happen without using #wizintrinsic, so this fixes that, and also a few other combinations that seemed contradictory: 1) limbs turn to stone during Stoned countdown now cures wounded legs; 2) turn to stone (a couple of turns later) cures vomiting and sliming; 3) turning to slime during Slimed countdown cures stoning.
This commit is contained in:
11
src/potion.c
11
src/potion.c
@@ -113,6 +113,7 @@ const char *cause; /* sickness cause */
|
||||
boolean talk;
|
||||
int type;
|
||||
{
|
||||
struct kinfo *kptr;
|
||||
long old = Sick;
|
||||
|
||||
#if 0
|
||||
@@ -148,11 +149,17 @@ int type;
|
||||
context.botl = TRUE;
|
||||
}
|
||||
|
||||
kptr = find_delayed_killer(SICK);
|
||||
if (Sick) {
|
||||
exercise(A_CON, FALSE);
|
||||
delayed_killer(SICK, KILLED_BY_AN, cause);
|
||||
if (!old || !kptr) {
|
||||
int kpfx = ((cause && !strcmp(cause, "#wizintrinsic"))
|
||||
? KILLED_BY : KILLED_BY_AN);
|
||||
|
||||
delayed_killer(SICK, kpfx, cause);
|
||||
}
|
||||
} else
|
||||
dealloc_killer(find_delayed_killer(SICK));
|
||||
dealloc_killer(kptr);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user