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:
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