Fix some steed/wounded legs things. Also add a wizard-only enlightenment
message specifying that the steed has wounded legs.
This commit is contained in:
@@ -152,16 +152,8 @@ Riding bugs:
|
||||
showing the player in that situation. The u.usteed check in the
|
||||
display_self() macro could become u.usteed && !u.usteed.minvis
|
||||
to accomodate that.
|
||||
-- Land mine traps cause wounded legs when the character is riding, and
|
||||
don't do any harm to the steed.
|
||||
-- Wielding Stormbringer while riding should result in it attacking
|
||||
your steed on occasion.
|
||||
-- There are several inappropriate items around riding a steed
|
||||
with wounded legs:
|
||||
-Dexterity is periodically abused.
|
||||
-Wounded legs are a minor prayer trouble.
|
||||
-Wounded legs are considered an unfixable unicorn horn trouble.
|
||||
-Falling/being thrown from steed doesn't incur usual wounded-legs DEX hit.
|
||||
-- The steed might want to wander about when you are paralyzed (of course the
|
||||
knight's well-trained pony wouldn't)
|
||||
[eino.keskitalo@purkki.mbnet.fi]
|
||||
|
||||
@@ -234,6 +234,10 @@ quaffing a noncursed potion of speed no longer heals the steed's wounded legs
|
||||
prevent mounting of steed when you have Wounded_legs to prevent abuse;
|
||||
dismount does an unconditional healing of Wounded_legs during the
|
||||
Wounded_legs context switch
|
||||
wounded legs on a steed doesn't count as a prayer trouble
|
||||
wounded legs on a steed doesn't abuse dexterity
|
||||
make wounded legs gained by falling off a steed consistent (dexterity loss)
|
||||
land mines while mounted should hurt the steed
|
||||
self-genocide while sitting on a throne should not refer to scroll of genocide
|
||||
eating dogfood or fixing a squeaky board conveys experience but didn't
|
||||
check for gaining a new level
|
||||
|
||||
@@ -2703,7 +2703,11 @@ int unfixable_trouble_count(is_horn)
|
||||
|
||||
if (Stoned) unfixable_trbl++;
|
||||
if (Strangled) unfixable_trbl++;
|
||||
if (Wounded_legs) unfixable_trbl++;
|
||||
if (Wounded_legs
|
||||
#ifdef STEED
|
||||
&& !u.usteed
|
||||
#endif
|
||||
) unfixable_trbl++;
|
||||
if (Slimed) unfixable_trbl++;
|
||||
/* lycanthropy is not desirable, but it doesn't actually make you feel
|
||||
bad */
|
||||
|
||||
@@ -350,7 +350,11 @@ exerper()
|
||||
|
||||
if(Sick || Vomiting) exercise(A_CON, FALSE);
|
||||
if(Confusion || Hallucination) exercise(A_WIS, FALSE);
|
||||
if(Wounded_legs || Fumbling || HStun) exercise(A_DEX, FALSE);
|
||||
if((Wounded_legs
|
||||
#ifdef STEED
|
||||
&& !u.usteed
|
||||
#endif
|
||||
) || Fumbling || HStun) exercise(A_DEX, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -790,6 +790,14 @@ int final; /* 0 => still in progress; 1 => over, survived; 2 => dead */
|
||||
Sprintf(buf, "wounded %s", makeplural(body_part(LEG)));
|
||||
you_have(buf);
|
||||
}
|
||||
#if defined(WIZARD) && defined(STEED)
|
||||
if (Wounded_legs && u.usteed && wizard) {
|
||||
Strcpy(buf, x_monnam(u.usteed, ARTICLE_YOUR, (char *)0,
|
||||
SUPPRESS_SADDLE | SUPPRESS_HALLUCINATION, FALSE));
|
||||
*buf = highc(*buf);
|
||||
enl_msg(buf, " has", " had", " wounded legs");
|
||||
}
|
||||
#endif
|
||||
if (Sleeping) enl_msg("You ", "fall", "fell", " asleep");
|
||||
if (Hunger) enl_msg("You hunger", "", "ed", " rapidly");
|
||||
|
||||
|
||||
@@ -167,7 +167,11 @@ in_trouble()
|
||||
if(Blinded > 1) return(TROUBLE_BLIND);
|
||||
for(i=0; i<A_MAX; i++)
|
||||
if(ABASE(i) < AMAX(i)) return(TROUBLE_POISONED);
|
||||
if(Wounded_legs) return (TROUBLE_WOUNDED_LEGS);
|
||||
if(Wounded_legs
|
||||
#ifdef STEED
|
||||
&& !u.usteed
|
||||
#endif
|
||||
) return (TROUBLE_WOUNDED_LEGS);
|
||||
if(u.uhs >= HUNGRY) return(TROUBLE_HUNGRY);
|
||||
if(HStun) return (TROUBLE_STUNNED);
|
||||
if(HConfusion) return (TROUBLE_CONFUSED);
|
||||
|
||||
@@ -457,8 +457,7 @@ dismount_steed(reason)
|
||||
You("%s off of %s!", verb, mon_nam(mtmp));
|
||||
if (!have_spot) have_spot = landing_spot(&cc,1);
|
||||
losehp(rn1(10,10), "riding accident", KILLED_BY_AN);
|
||||
HWounded_legs += rn1(5, 5);
|
||||
EWounded_legs |= BOTH_SIDES;
|
||||
set_wounded_legs(BOTH_SIDES, HWounded_legs + rn1(5,5));
|
||||
repair_leg_damage = FALSE;
|
||||
break;
|
||||
case DISMOUNT_POLY:
|
||||
|
||||
19
src/trap.c
19
src/trap.c
@@ -974,9 +974,23 @@ glovecheck: (void) rust_dmg(uarmg, "gauntlets", 1, TRUE, &youmonst);
|
||||
already_seen ? a_your[trap->madeby_u] : "",
|
||||
already_seen ? " land mine" : "it");
|
||||
} else {
|
||||
#ifdef STEED
|
||||
/* prevent landmine from killing steed, throwing you to
|
||||
* the ground, and you being affected again by the same
|
||||
* mine because it hasn't been deleted yet
|
||||
*/
|
||||
static boolean recursive_mine = FALSE;
|
||||
|
||||
if (recursive_mine) break;
|
||||
#endif
|
||||
seetrap(trap);
|
||||
pline("KAABLAMM!!! You triggered %s land mine!",
|
||||
a_your[trap->madeby_u]);
|
||||
#ifdef STEED
|
||||
recursive_mine = TRUE;
|
||||
(void) steedintrap(trap, (struct obj *)0);
|
||||
recursive_mine = FALSE;
|
||||
#endif
|
||||
set_wounded_legs(LEFT_SIDE, rn1(35, 41));
|
||||
set_wounded_legs(RIGHT_SIDE, rn1(35, 41));
|
||||
exercise(A_DEX, FALSE);
|
||||
@@ -1059,6 +1073,11 @@ struct obj *otmp;
|
||||
}
|
||||
steedhit = TRUE;
|
||||
break;
|
||||
case LANDMINE:
|
||||
if (thitm(0, mtmp, (struct obj *)0, rnd(16)))
|
||||
trapkilled = TRUE;
|
||||
steedhit = TRUE;
|
||||
break;
|
||||
case PIT:
|
||||
case SPIKED_PIT:
|
||||
if (mtmp->mhp <= 0 ||
|
||||
|
||||
Reference in New Issue
Block a user