&& rn2(10)) {
if (otmp->otyp == BOULDER) {
pline("%s apart.", Tobjnam(otmp, "break"));
- fracture_rock(otmp); /* this will place fragments on floor */
- obj_extract_self(otmp);
+ fracture_rock(otmp);
place_object(otmp, sx, sy);
if ((otmp = sobj_at(BOULDER, sx, sy)) != 0) {
/* another boulder here, restack it to the top */
if ((trap = t_at(sx,sy)) && trap->ttyp == STATUE_TRAP)
deltrap(trap);
pline("%s.", Tobjnam(otmp, "crumble"));
- (void) break_statue(otmp); /*this will place fragments on floor */
- obj_extract_self(otmp);
+ (void) break_statue(otmp);
place_object(otmp, sx, sy); /* put fragments on floor */
}
used_up = TRUE;
obj->onamelth = 0; /* no names */
obj->oxlth = 0; /* no extra data */
obj->oattached = OATTACHED_NOTHING;
- obj_extract_self(obj); /* move rocks back on top */
- place_object(obj, obj->ox, obj->oy);
- if(!does_block(obj->ox,obj->oy,&levl[obj->ox][obj->oy]))
- unblock_point(obj->ox,obj->oy);
- if(cansee(obj->ox,obj->oy))
- newsym(obj->ox,obj->oy);
+ if (obj->where == OBJ_FLOOR) {
+ obj_extract_self(obj); /* move rocks back on top */
+ place_object(obj, obj->ox, obj->oy);
+ if(!does_block(obj->ox,obj->oy,&levl[obj->ox][obj->oy]))
+ unblock_point(obj->ox,obj->oy);
+ if(cansee(obj->ox,obj->oy))
+ newsym(obj->ox,obj->oy);
+ }
}
/* handle statue hit by striking/force bolt/pick-axe */