Prevent leashing monsters with no extremities
... and also unsolid monsters.
This commit is contained in:
@@ -211,6 +211,7 @@ wizmakemap could leave genocided monsters on map
|
|||||||
when entering Astral level, initial rendering of guardian angel didn't show
|
when entering Astral level, initial rendering of guardian angel didn't show
|
||||||
it as tame; noticeable if the level was entered with 'hilite_pet' On
|
it as tame; noticeable if the level was entered with 'hilite_pet' On
|
||||||
fix a leashed pet polymorphed into a long worm staying leashed
|
fix a leashed pet polymorphed into a long worm staying leashed
|
||||||
|
prevent leashing unsolid monsters and monsters with no extremities
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
13
src/apply.c
13
src/apply.c
@@ -591,15 +591,13 @@ unleash_all()
|
|||||||
|
|
||||||
#define MAXLEASHED 2
|
#define MAXLEASHED 2
|
||||||
|
|
||||||
/* TODO:
|
|
||||||
* This ought to exclude various other things, such as lights and gas
|
|
||||||
* spore, is_whirly() critters, ethereal creatures, possibly others.
|
|
||||||
*/
|
|
||||||
boolean
|
boolean
|
||||||
leashable(mtmp)
|
leashable(mtmp)
|
||||||
struct monst *mtmp;
|
struct monst *mtmp;
|
||||||
{
|
{
|
||||||
return (boolean) (mtmp->mnum != PM_LONG_WORM);
|
return (boolean) (mtmp->mnum != PM_LONG_WORM
|
||||||
|
&& !unsolid(mtmp->data)
|
||||||
|
&& (!nolimbs(mtmp->data) || has_head(mtmp->data)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
@@ -671,6 +669,11 @@ struct obj *obj;
|
|||||||
if (mtmp->mleashed) {
|
if (mtmp->mleashed) {
|
||||||
pline("This %s is already leashed.",
|
pline("This %s is already leashed.",
|
||||||
spotmon ? l_monnam(mtmp) : "creature");
|
spotmon ? l_monnam(mtmp) : "creature");
|
||||||
|
} else if (unsolid(mtmp->data)) {
|
||||||
|
pline("The leash would just fall off.");
|
||||||
|
} else if (nolimbs(mtmp->data) && !has_head(mtmp->data)) {
|
||||||
|
pline("%s has no extremities the leash would fit.",
|
||||||
|
Monnam(mtmp));
|
||||||
} else if (!leashable(mtmp)) {
|
} else if (!leashable(mtmp)) {
|
||||||
pline("The leash won't fit onto %s%s.", spotmon ? "your " : "",
|
pline("The leash won't fit onto %s%s.", spotmon ? "your " : "",
|
||||||
l_monnam(mtmp));
|
l_monnam(mtmp));
|
||||||
|
|||||||
Reference in New Issue
Block a user