message specifying that the steed has wounded legs.
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]
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
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 */
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);
}
}
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");
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);
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:
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);
}
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 ||