feedback for #wizbury
Noticed when trying all the extended commands. #wizbury didn't have any feedback (other than clearing the adjacent floor if any objects were present). Also, prevent #wizbury from burying boulders.
This commit is contained in:
@@ -1953,8 +1953,8 @@ bury_an_obj(struct obj *otmp, boolean *dealloced)
|
|||||||
obj_extract_self(otmp);
|
obj_extract_self(otmp);
|
||||||
|
|
||||||
under_ice = is_ice(otmp->ox, otmp->oy);
|
under_ice = is_ice(otmp->ox, otmp->oy);
|
||||||
if (otmp->otyp == ROCK && !under_ice) {
|
if ((otmp->otyp == ROCK && !under_ice) || otmp->otyp == BOULDER) {
|
||||||
/* merges into burying material */
|
/* merges into burying material; boulder removal is for #wizbury */
|
||||||
if (dealloced)
|
if (dealloced)
|
||||||
*dealloced = TRUE;
|
*dealloced = TRUE;
|
||||||
obfree(otmp, (struct obj *) 0);
|
obfree(otmp, (struct obj *) 0);
|
||||||
@@ -1966,7 +1966,7 @@ bury_an_obj(struct obj *otmp, boolean *dealloced)
|
|||||||
*/
|
*/
|
||||||
if (otmp->otyp == CORPSE) {
|
if (otmp->otyp == CORPSE) {
|
||||||
; /* should cancel timer if under_ice */
|
; /* should cancel timer if under_ice */
|
||||||
} else if ((under_ice ? otmp->oclass == POTION_CLASS : is_organic(otmp))
|
} else if ((under_ice ? (otmp->oclass == POTION_CLASS) : is_organic(otmp))
|
||||||
&& !obj_resists(otmp, 5, 95)) {
|
&& !obj_resists(otmp, 5, 95)) {
|
||||||
(void) start_timer((under_ice ? 0L : 250L) + (long) rnd(250),
|
(void) start_timer((under_ice ? 0L : 250L) + (long) rnd(250),
|
||||||
TIMER_OBJECT, ROT_ORGANIC, obj_to_any(otmp));
|
TIMER_OBJECT, ROT_ORGANIC, obj_to_any(otmp));
|
||||||
@@ -2223,14 +2223,45 @@ struct obj *otmp;
|
|||||||
int
|
int
|
||||||
wiz_debug_cmd_bury(void)
|
wiz_debug_cmd_bury(void)
|
||||||
{
|
{
|
||||||
int x, y;
|
struct obj *otmp;
|
||||||
|
int x, y, before = 0, after = 0, diff;
|
||||||
|
|
||||||
for (x = u.ux - 1; x <= u.ux + 1; x++)
|
for (x = u.ux - 1; x <= u.ux + 1; x++)
|
||||||
for (y = u.uy - 1; y <= u.uy + 1; y++)
|
for (y = u.uy - 1; y <= u.uy + 1; y++) {
|
||||||
if (isok(x, y))
|
if (!isok(x, y))
|
||||||
bury_objs(x, y);
|
continue;
|
||||||
|
for (otmp = gl.level.objects[x][y]; otmp; otmp = otmp->nexthere)
|
||||||
|
++before;
|
||||||
|
|
||||||
|
bury_objs(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (before == 0) { /* there was nothing here */
|
||||||
|
pline("No objects here or adjacent to bury.");
|
||||||
|
} else {
|
||||||
|
for (x = u.ux - 1; x <= u.ux + 1; x++)
|
||||||
|
for (y = u.uy - 1; y <= u.uy + 1; y++) {
|
||||||
|
if (!isok(x, y))
|
||||||
|
continue;
|
||||||
|
for (otmp = gl.level.objects[x][y]; otmp; otmp = otmp->nexthere)
|
||||||
|
++after;
|
||||||
|
}
|
||||||
|
diff = before - after;
|
||||||
|
/* will be 0 if only unburiable objects (The Amulet, &c) are present;
|
||||||
|
if uball got buried, uchain went away--count that as being buried */
|
||||||
|
if (diff == 0)
|
||||||
|
pline("No objects buried.");
|
||||||
|
else
|
||||||
|
pline("%d object%s buried.", diff, plur(diff));
|
||||||
|
}
|
||||||
return ECMD_OK;
|
return ECMD_OK;
|
||||||
}
|
}
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
#undef BY_YOU
|
||||||
|
#undef BY_OBJECT
|
||||||
|
/* for 'onefile' testing, leave STRIDENT defined so that the other instance
|
||||||
|
of it in pray.c will trigger a complaint if someone changes its value */
|
||||||
|
/*#undef STRIDENT*/
|
||||||
|
|
||||||
/*dig.c*/
|
/*dig.c*/
|
||||||
|
|||||||
Reference in New Issue
Block a user