M29 - unconscious effects when not unconscious
While auditing nomul() I noticed unconscious() treats (multi < 0 && !nomovemsg) as unconscious. This explains the behavior in M29 (unconscious message while performing #turn). I checked all the places with this combination, and found a few that did not appear to fall under the "unconscious" category. Most I changed to use You_can_move_again to ensure the same display w/o the unconscious behavior. Also: - found another string that unconscious() should have considered - vomit() now sets nomovemsg, one caller was also doing this redundantly - vomiting_dialogue() was calling stop_occupation() after vomit(), which can reset multi. I reversed the order and removed a doubly-redundant nomul call. tele() still has a problem: some cases where multi < 0 should probably take a branch like the unconscious() branch but with a different message. doturn()'s behavior - turn then wait - is also less than perfect, but I think this is a known problem.
This commit is contained in:
@@ -44,7 +44,7 @@ stoned_dialogue()
|
||||
case 3: /* limbs turned to stone */
|
||||
stop_occupation();
|
||||
nomul(-3); /* can't move anymore */
|
||||
nomovemsg = 0;
|
||||
nomovemsg = You_can_move_again; /* not unconscious */
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -72,10 +72,9 @@ vomiting_dialogue()
|
||||
|
||||
switch ((int) i) {
|
||||
case 0:
|
||||
vomit();
|
||||
morehungry(20);
|
||||
stop_occupation();
|
||||
if (multi > 0) nomul(0);
|
||||
morehungry(20);
|
||||
vomit();
|
||||
break;
|
||||
case 2:
|
||||
make_stunned(HStun + d(2,4), FALSE);
|
||||
|
||||
Reference in New Issue
Block a user