Make STEED unconditional.

This commit is contained in:
Sean Hunt
2015-02-13 21:23:56 -05:00
committed by Pasi Kallinen
parent aba6ecb7b3
commit 9759f5bf6d
62 changed files with 98 additions and 641 deletions

View File

@@ -337,12 +337,10 @@ register struct monst *mtmp;
!is_flyer(mtmp->data) && !is_floater(mtmp->data);
infountain = IS_FOUNTAIN(levl[mtmp->mx][mtmp->my].typ);
#ifdef STEED
/* Flying and levitation keeps our steed out of the liquid */
/* (but not water-walking or swimming) */
if (mtmp == u.usteed && (Flying || Levitation))
return (0);
#endif
/* Gremlin multiplying won't go on forever since the hit points
* keep going down, and when it gets to 1 hit point the clone
@@ -449,15 +447,12 @@ struct monst *mon;
else if (mon->mspeed == MFAST)
mmove = (4 * mmove + 2) / 3;
#ifdef STEED
if (mon == u.usteed) {
if (u.ugallop && context.mv) {
/* average movement is 1.50 times normal */
mmove = ((rn2(2) ? 4 : 5) * mmove) / 3;
}
} else
#endif
if (mmove) {
} else if (mmove) {
/* vary movement points allocated to slightly reduce predictability;
random increment (avg +2) exceeds random decrement (avg +1) by
a small amount; normal speed monsters will occasionally get an
@@ -958,10 +953,8 @@ struct obj *otmp;
(otyp != BELL_OF_OPENING || !is_covetous(mdat)))
return FALSE;
#ifdef STEED
/* Steeds don't pick up stuff (to avoid shop abuse) */
if (mtmp == u.usteed) return (FALSE);
#endif
if (mtmp->isshk) return(TRUE); /* no limit */
if (mtmp->mpeaceful && !mtmp->mtame) return(FALSE);
/* otherwise players might find themselves obligated to violate
@@ -1313,10 +1306,8 @@ register struct monst *mtmp, *mtmp2;
relmon(mtmp, (struct monst **)0);
/* finish adding its replacement */
#ifdef STEED
if (mtmp == u.usteed) ; else /* don't place steed onto the map */
#endif
place_monster(mtmp2, mtmp2->mx, mtmp2->my);
if (mtmp != u.usteed) /* don't place steed onto the map */
place_monster(mtmp2, mtmp2->mx, mtmp2->my);
if (mtmp2->wormno) /* update level.monsters[wseg->wx][wseg->wy] */
place_wsegs(mtmp2); /* locations to mtmp2 not mtmp. */
if (emits_light(mtmp2->data)) {
@@ -1330,9 +1321,7 @@ register struct monst *mtmp, *mtmp2;
mtmp2->nmon = fmon;
fmon = mtmp2;
if (u.ustuck == mtmp) u.ustuck = mtmp2;
#ifdef STEED
if (u.usteed == mtmp) u.usteed = mtmp2;
#endif
if (mtmp2->isshk) replshk(mtmp,mtmp2);
/* discard the old monster */
@@ -1597,11 +1586,9 @@ register struct monst *mtmp;
need to do this after life-saving and before m_detach() */
if (mtmp->isgd && !grddead(mtmp)) return;
#ifdef STEED
/* Player is thrown from his steed when it dies */
if (mtmp == u.usteed)
dismount_steed(DISMOUNT_GENERIC);
#endif
mptr = mtmp->data; /* save this for m_detach() */
/* restore chameleon, lycanthropes to true form at death */
@@ -1748,11 +1735,9 @@ mongone(mdef)
register struct monst *mdef;
{
mdef->mhp = 0; /* can skip some inventory bookkeeping */
#ifdef STEED
/* Player is thrown from his steed when it disappears */
if (mdef == u.usteed)
dismount_steed(DISMOUNT_GENERIC);
#endif
/* drop special items like the Amulet so that a dismissed Kop or nurse
can't remove them from the game */
@@ -2121,14 +2106,12 @@ mnexto(mtmp) /* Make monster mtmp next to you (if possible) */
coord mm;
boolean couldspot = canspotmon(mtmp);
#ifdef STEED
if (mtmp == u.usteed) {
/* Keep your steed in sync with you instead */
mtmp->mx = u.ux;
mtmp->my = u.uy;
return;
}
#endif
if(!enexto(&mm, u.ux, u.uy, mtmp->data)) return;
rloc_to(mtmp, mm.x, mm.y);