diff --git a/doc/fixes36.2 b/doc/fixes36.2 index f7a3d5983..1e8d84cb6 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -273,6 +273,11 @@ make it easier to clear 'pickup_types' (menustyles Traditional and Combination allowed unselecting every object class; now 'all classes' is a choice) distribution of monsters selected by mkclass() didn't match expected distrib (cited example was ndemon() creating twice as many incubi as succubi) +while inside a shop, dropping an unpaid item inside an engulfer would leave + that item 'unpaid' and it would remain so on shop floor after the + the engulfer was killed; treat dropping shop items inside an engulfer + as stealing them and giving them to that engulfer--hero must pay for + for them and shop retains ownership of them Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository diff --git a/src/do.c b/src/do.c index 87cbe86c4..a4ef2bda5 100644 --- a/src/do.c +++ b/src/do.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 do.c $NHDT-Date: 1544442710 2018/12/10 11:51:50 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.177 $ */ +/* NetHack 3.6 do.c $NHDT-Date: 1545003783 2018/12/16 23:43:03 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.178 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -584,11 +584,13 @@ register struct obj *obj; if (u.uswallow) { /* barrier between you and the floor */ if (flags.verbose) { - char buf[BUFSZ]; + char *onam_p, monbuf[BUFSZ]; /* doname can call s_suffix, reusing its buffer */ - Strcpy(buf, s_suffix(mon_nam(u.ustuck))); - You("drop %s into %s %s.", doname(obj), buf, + Strcpy(monbuf, s_suffix(mon_nam(u.ustuck))); + onam_p = obj->unpaid ? Yobjnam2(obj, (char *) 0) : doname(obj); + + You("drop %s into %s %s.", onam_p, monbuf, mbodypart(u.ustuck, STOMACH)); } } else { @@ -682,6 +684,8 @@ boolean with_impact; could_grow = (obj->corpsenm == PM_WRAITH); could_heal = (obj->corpsenm == PM_NURSE); } + if (obj->unpaid) + (void) stolen_value(obj, u.ux, u.uy, TRUE, FALSE); (void) mpickobj(u.ustuck, obj); if (is_animal(u.ustuck->data)) { if (could_poly || could_slime) {