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:
@@ -256,6 +256,8 @@ for wizard and explore modes, skip second screen of ^X output when first
|
||||
polyself into minotaur causes hard headgear to fall off
|
||||
with multiple leashes in use, 2nd had 50/50 chance of having unbounded length
|
||||
GOLDOBJ: coins aren't subject to curses/blesses and don't need identification
|
||||
can no longer activate a figurine while engulfed
|
||||
can't use figurines to get too many erinyes or Nazgul
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
|
||||
10
src/apply.c
10
src/apply.c
@@ -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;
|
||||
|
||||
16
src/dog.c
16
src/dog.c
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user