Make STEED unconditional.
This commit is contained in:
23
src/mon.c
23
src/mon.c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user