reanimating a statue containing gold produced double gold
probing the resulting double-gold monster caused "static object freed" panic
cursed wand might explode if used to engrave
+fatal wish from magic lamp left functional magic lamp in bones data
Platform- and/or Interface-Specific Fixes
if (uwep->otyp == MAGIC_LAMP) {
if (uwep->spe > 0 && !rn2(3)) {
check_unpaid_usage(uwep, TRUE); /* unusual item use */
- djinni_from_bottle(uwep);
- makeknown(MAGIC_LAMP);
+ /* bones preparation: perform the lamp transformation
+ before releasing the djinni in case the latter turns out
+ to be fatal (a hostile djinni has no chance to attack yet,
+ but an indebtted one who grants a wish might bestow an
+ artifact which blasts the hero with lethal results) */
uwep->otyp = OIL_LAMP;
uwep->spe = 0; /* for safety */
uwep->age = rn1(500,1000);
if (uwep->lamplit) begin_burn(uwep, TRUE);
+ djinni_from_bottle(uwep);
+ makeknown(MAGIC_LAMP);
update_inventory();
- } else if (rn2(2) && !Blind)
- You("see a puff of smoke.");
- else pline(nothing_happens);
+ } else if (rn2(2)) {
+ You("%s smoke.", !Blind ? "see a puff of" : "smell");
+ } else
+ pline(nothing_happens);
} else if (obj->otyp == BRASS_LANTERN) {
/* message from Adventure */
pline("Rubbing the electric lamp is not particularly rewarding.");
pline("Anyway, nothing exciting happens.");
- } else pline(nothing_happens);
+ } else
+ pline(nothing_happens);
return 1;
}
-/* SCCS Id: @(#)fountain.c 3.5 2003/03/23 */
+/* SCCS Id: @(#)fountain.c 3.5 2005/04/23 */
/* Copyright Scott R. Turner, srt@ucla, 10/27/86 */
/* NetHack may be freely redistributed. See license for details. */
if (rnd(100) > (80 + level_difficulty())) {
pline("Grateful for %s release, %s grants you a wish!",
mhis(mtmp), mhe(mtmp));
- makewish();
+ /* bones prep: remove demon first in case the wish
+ turns out to be fatal (artifact blast) */
mongone(mtmp);
+ makewish();
} else if (t_at(mtmp->mx, mtmp->my))
(void) mintrap(mtmp);
}
-/* SCCS Id: @(#)potion.c 3.5 2005/03/26 */
+/* SCCS Id: @(#)potion.c 3.5 2005/04/23 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
switch (chance) {
case 0 : verbalize("I am in your debt. I will grant one wish!");
- makewish();
+ /* bones prep: remove djinni first in case the wish
+ turns out to be fatal (artifact blast) */
mongone(mtmp);
+ makewish();
break;
case 1 : verbalize("Thank you for freeing me!");
(void) tamedog(mtmp, (struct obj *)0);