context.victual.piece = new_obj;
context.victual.o_id = new_obj->o_id;
}
- if (old_obj == context.tin.tin) context.tin.tin = new_obj;
+ if (old_obj == context.tin.tin) {
+ context.tin.tin = new_obj;
+ context.tin.o_id =new_obj->o_id;
+ }
}
STATIC_OVL void
/* It so happens that since we know these monsters */
/* cannot appear in tins, context.victual.piece will always */
/* be what we want, which is not generally true. */
- if (revive_corpse(context.victual.piece))
+ if (revive_corpse(context.victual.piece)) {
context.victual.piece = (struct obj *)0;
+ context.victual.o_id = 0;
+ }
return;
}
case PM_GREEN_SLIME:
}
/* in case stop_occupation() was called on previous meal */
context.victual.piece = (struct obj *)0;
+ context.victual.o_id = 0;
context.victual.fullwarn = context.victual.eating = context.victual.doreset = FALSE;
You("consume %s %s.", tintxts[r].txt,
|| context.tin.tin->unpaid)) {
verbalize("You open it, you bought it!");
/* charge for one at pre-eating cost */
- if(context.tin.tin->quan > 1L) context.tin.tin = splitobj(context.tin.tin, 1L);
+ if(context.tin.tin->quan > 1L) {
+ context.tin.tin = splitobj(context.tin.tin, 1L);
+ if (context.tin.tin)
+ context.tin.o_id = context.tin.tin->o_id;
+ }
bill_dummy_object(context.tin.tin);
}
|| context.tin.tin->unpaid)) {
verbalize("You open it, you bought it!");
/* charge for one at pre-eating cost */
- if(context.tin.tin->quan > 1L) context.tin.tin = splitobj(context.tin.tin, 1L);
+ if(context.tin.tin->quan > 1L) {
+ context.tin.tin = splitobj(context.tin.tin, 1L);
+ if (context.tin.tin)
+ context.tin.o_id = context.tin.tin->o_id;
+ }
bill_dummy_object(context.tin.tin);
}
if (carried(context.tin.tin)) useup(context.tin.tin);
else useupf(context.tin.tin, 1L);
context.tin.tin = (struct obj *) 0;
+ context.tin.o_id = 0;
return(0);
}
context.tin.reqtime = tmp;
context.tin.usedtime = 0;
context.tin.tin = otmp;
+ if (otmp) context.tin.o_id = otmp->o_id;
set_occupation(opentin, "opening the tin", 0);
return;
}
lesshungry(context.victual.nmod);
occupation = 0;
context.victual.piece = (struct obj *)0;
+ context.victual.o_id = 0;
context.victual.eating = 0;
if (otmp->oclass == COIN_CLASS) {
#ifdef GOLDOBJ
int material;
context.victual.reqtime = 1;
context.victual.piece = otmp;
+ context.victual.o_id = otmp->o_id;
/* Don't split it, we don't need to if it's 1 move */
context.victual.usedtime = 0;
context.victual.canchoke = (u.uhs == SATIATED);
*/
if (u.uhs != SATIATED) context.victual.canchoke = FALSE;
context.victual.piece = touchfood(otmp);
+ if (context.victual.piece)
+ context.victual.o_id = context.victual.piece->o_id;
You("resume your meal.");
start_eating(context.victual.piece);
return(1);
u.uconduct.food++;
context.victual.piece = otmp = touchfood(otmp);
+ if (context.victual.piece)
+ context.victual.o_id = context.victual.piece->o_id;
context.victual.usedtime = 0;
/* Now we need to calculate delay and nutritional info.
if (tmp == 2) {
/* used up */
context.victual.piece = (struct obj *)0;
+ context.victual.o_id = 0;
return(1);
} else if (tmp)
dont_start = TRUE;