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:
arromdee
2002-01-12 05:37:33 +00:00
parent f64c0ac241
commit d5d7f15007
8 changed files with 47 additions and 13 deletions

View File

@@ -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]

View File

@@ -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

View File

@@ -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 */

View File

@@ -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);
}
}

View File

@@ -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");

View File

@@ -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);

View File

@@ -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:

View File

@@ -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 ||