diff --git a/include/obj.h b/include/obj.h index 88c4902d0..69ab173f8 100644 --- a/include/obj.h +++ b/include/obj.h @@ -1,4 +1,4 @@ -/* NetHack 3.7 obj.h $NHDT-Date: 1596498552 2020/08/03 23:49:12 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.76 $ */ +/* NetHack 3.7 obj.h $NHDT-Date: 1604442292 2020/11/03 22:24:52 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.78 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2006. */ /* NetHack may be freely redistributed. See license for details. */ @@ -308,22 +308,26 @@ struct obj { (otmp->otyp == TALLOW_CANDLE || otmp->otyp == WAX_CANDLE) #define MAX_OIL_IN_FLASK 400 /* maximum amount of oil in a potion of oil */ -/* MAGIC_LAMP intentionally excluded below */ -/* age field of this is relative age rather than absolute */ -#define age_is_relative(otmp) \ +/* age field of this is relative age rather than absolute; does not include + magic lamp */ +#define age_is_relative(otmp) \ ((otmp)->otyp == BRASS_LANTERN || (otmp)->otyp == OIL_LAMP \ || (otmp)->otyp == CANDELABRUM_OF_INVOCATION \ || (otmp)->otyp == TALLOW_CANDLE || (otmp)->otyp == WAX_CANDLE \ || (otmp)->otyp == POT_OIL) -/* object can be ignited */ -#define ignitable(otmp) \ +/* object can be ignited; magic lamp used to excluded here too but all + usage of this macro ended up testing + (ignitable(obj) || obj->otyp == MAGIC_LAMP) + so include it; brass lantern can be lit but not by fire */ +#define ignitable(otmp) \ ((otmp)->otyp == BRASS_LANTERN || (otmp)->otyp == OIL_LAMP \ + || ((otmp)->otyp == MAGIC_LAMP && (otmp)->spe > 0) \ || (otmp)->otyp == CANDELABRUM_OF_INVOCATION \ || (otmp)->otyp == TALLOW_CANDLE || (otmp)->otyp == WAX_CANDLE \ || (otmp)->otyp == POT_OIL) /* things that can be read */ -#define is_readable(otmp) \ +#define is_readable(otmp) \ ((otmp)->otyp == FORTUNE_COOKIE || (otmp)->otyp == T_SHIRT \ || (otmp)->otyp == ALCHEMY_SMOCK || (otmp)->otyp == CREDIT_CARD \ || (otmp)->otyp == CAN_OF_GREASE || (otmp)->otyp == MAGIC_MARKER \ diff --git a/src/apply.c b/src/apply.c index a43e3b730..9c742959c 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 apply.c $NHDT-Date: 1602270122 2020/10/09 19:02:02 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.328 $ */ +/* NetHack 3.7 apply.c $NHDT-Date: 1604442295 2020/11/03 22:24:55 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.330 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1404,14 +1404,14 @@ struct obj *obj; } /* Called when potentially lightable object is affected by fire_damage(). - Return TRUE if object was lit and FALSE otherwise --ALI */ + Return TRUE if object becomes lit and FALSE otherwise --ALI */ boolean catch_lit(obj) struct obj *obj; { xchar x, y; - if (!obj->lamplit && (obj->otyp == MAGIC_LAMP || ignitable(obj))) { + if (!obj->lamplit && ignitable(obj)) { if ((obj->otyp == MAGIC_LAMP || obj->otyp == CANDELABRUM_OF_INVOCATION) && obj->spe == 0) return FALSE; diff --git a/src/light.c b/src/light.c index d3fce655e..02ddaf03f 100644 --- a/src/light.c +++ b/src/light.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 light.c $NHDT-Date: 1596498173 2020/08/03 23:42:53 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.45 $ */ +/* NetHack 3.7 light.c $NHDT-Date: 1604442297 2020/11/03 22:24:57 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.46 $ */ /* Copyright (c) Dean Luick, 1994 */ /* NetHack may be freely redistributed. See license for details. */ @@ -691,8 +691,7 @@ boolean obj_is_burning(obj) struct obj *obj; { - return (boolean) (obj->lamplit && (obj->otyp == MAGIC_LAMP - || ignitable(obj) + return (boolean) (obj->lamplit && (ignitable(obj) || artifact_light(obj))); } diff --git a/src/trap.c b/src/trap.c index 5ba5bdc74..01c7a80fe 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1,4 +1,4 @@ -/* NetHack 3.7 trap.c $NHDT-Date: 1602270123 2020/10/09 19:02:03 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.364 $ */ +/* NetHack 3.7 trap.c $NHDT-Date: 1604442297 2020/11/03 22:24:57 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.365 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2013. */ /* NetHack may be freely redistributed. See license for details. */ @@ -5563,9 +5563,9 @@ boolean override; return defsyms[trap_to_defsym(ttyp)].explanation; } -/* Ignite ignitable items in the given object chain, due to some external source - * of fire. The object chain should be somewhere exposed, like someone's open - * inventory or the floor. +/* Ignite ignitable items in the given object chain, due to some external + * source of fire. The object chain should be somewhere exposed, like + * someone's open inventory or the floor. * This is modeled after destroy_item() somewhat and hopefully will be able to * merge into it in the future. */ @@ -5590,7 +5590,7 @@ struct obj *objchn; } for (obj = objchn; obj; obj = obj->nobj) { - if (!(ignitable(obj) || obj->otyp == MAGIC_LAMP) + if (!ignitable(obj) /* The Candelabrum requires intention to be lit */ || obj->otyp == CANDELABRUM_OF_INVOCATION || obj->otyp == BRASS_LANTERN /* doesn't ignite via fire */