two figurine tweaks

Fix the reported problem of applying a figurine while swallowed
and getting a message about setting the figuring on the ground.  Rather
than coming with special messages, just prevent it would activating if
you're swallowed at the time.

     Also prevent figurines from creating the 4th erinys or 10th Nazgul.
I'm not sure whether to bother doing similar handling for stone-to-flesh
cast on statues.
This commit is contained in:
nethack.rankin
2002-09-26 04:05:54 +00:00
parent c9799a4231
commit 846de96a4a
3 changed files with 26 additions and 2 deletions

View File

@@ -1700,6 +1700,11 @@ boolean quietly;
{
xchar x,y;
if (carried(obj) && u.uswallow) {
if (!quietly)
You("don't have enough room in here.");
return FALSE;
}
x = cc->x; y = cc->y;
if (!isok(x,y)) {
if (!quietly)
@@ -1729,6 +1734,11 @@ register struct obj *obj;
xchar x, y;
coord cc;
if (u.uswallow) {
/* can't activate a figurine while swallowed */
if (!figurine_location_checks(obj, (coord *)0, FALSE))
return;
}
if(!getdir((char *)0)) {
flags.move = multi = 0;
return;

View File

@@ -56,8 +56,20 @@ boolean quietly;
int chance, trycnt = 100;
do {
if (otmp) {
pm = &mons[otmp->corpsenm]; /* Figurine; otherwise spell */
if (otmp) { /* figurine; otherwise spell */
int mndx = otmp->corpsenm;
pm = &mons[mndx];
/* activating a figurine provides one way to exceed the
maximum number of the target critter created--unless
it has a special limit (erinys, Nazgul) */
if ((mvitals[mndx].mvflags & G_EXTINCT) &&
mbirth_limit(mndx) != MAXMONNO) {
if (!quietly)
/* have just been given "You <do something with>
the figurine and it transforms." message */
pline("... into a pile of dust.");
break; /* mtmp is null */
}
} else if (!rn2(3)) {
pm = &mons[pet_type()];
} else {