/* place_object may change these */
boolean crysknife = (obj->otyp == CRYSKNIFE);
int oerode = obj->oerodeproof;
+ boolean wasUpolyd = Upolyd;
/* in case touching this object turns out to be fatal */
place_object(obj, u.ux, u.uy);
obj_extract_self(obj); /* remove it from the floor */
dropy(obj); /* now put it back again :-) */
return obj;
+ } else if (wasUpolyd && !Upolyd) {
+ /* loose your grip if you revert your form */
+ if (drop_fmt) pline(drop_fmt, drop_arg);
+ obj_extract_self(obj);
+ dropy(obj);
+ return obj;
}
obj_extract_self(obj);
if (crysknife) {
}
while ((otmp = mdef->minvent) != 0) {
+ if (!Upolyd) break; /* no longer have ability to steal */
/* take the object away from the monster */
obj_extract_self(otmp);
if ((unwornmask = otmp->owornmask) != 0L) {
mdef->misc_worn_check &= ~unwornmask;
- if (otmp->owornmask & W_WEP)
+ if (otmp->owornmask & W_WEP) {
setmnotwielded(mdef,otmp);
+ MON_NOWEP(mdef);
+ }
otmp->owornmask = 0L;
update_mon_intrinsics(mdef, otmp, FALSE);
Monnam(mdef), mhis(mdef));
}
/* give the object to the character */
- otmp = hold_another_object(otmp, "You steal %s.",
+ otmp = hold_another_object(otmp, "You snatched but dropped %s.",
doname(otmp), "You steal: ");
if (otmp->where != OBJ_INVENT) continue;
if (otmp->otyp == CORPSE &&