From: Pasi Kallinen Date: Mon, 16 Nov 2020 16:42:12 +0000 (+0200) Subject: Unify unpolyable objects to single define X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d81e1672aa2c40fdcf5f81f92094329ef59462fd;p=nethack Unify unpolyable objects to single define --- diff --git a/include/obj.h b/include/obj.h index 4b6f6d5c8..89d932251 100644 --- a/include/obj.h +++ b/include/obj.h @@ -356,6 +356,10 @@ struct obj { && !undiscovered_artifact(ART_EYES_OF_THE_OVERWORLD))) #define pair_of(o) ((o)->otyp == LENSES || is_gloves(o) || is_boots(o)) +#define unpolyable(o) ((o)->otyp == WAN_POLYMORPH \ + || (o)->otyp == SPE_POLYMORPH \ + || (o)->otyp == POT_POLYMORPH) + /* achievement tracking; 3.6.x did this differently */ #define is_mines_prize(o) ((o)->o_id == g.context.achieveo.mines_prize_oid) #define is_soko_prize(o) ((o)->o_id == g.context.achieveo.soko_prize_oid) diff --git a/src/potion.c b/src/potion.c index 02484db07..a0e2256ed 100644 --- a/src/potion.c +++ b/src/potion.c @@ -1978,7 +1978,7 @@ dodip() } else if (obj->otyp == POT_POLYMORPH || potion->otyp == POT_POLYMORPH) { /* some objects can't be polymorphed */ if (obj->otyp == potion->otyp /* both POT_POLY */ - || obj->otyp == WAN_POLYMORPH || obj->otyp == SPE_POLYMORPH + || unpolyable(obj) || obj == uball || obj == uskin || obj_resists(obj->otyp == POT_POLYMORPH ? potion : obj, 5, 95)) { diff --git a/src/zap.c b/src/zap.c index 0494a9fb0..b8fd955ae 100644 --- a/src/zap.c +++ b/src/zap.c @@ -1964,8 +1964,7 @@ struct obj *obj, *otmp; switch (otmp->otyp) { case WAN_POLYMORPH: case SPE_POLYMORPH: - if (obj->otyp == WAN_POLYMORPH || obj->otyp == SPE_POLYMORPH - || obj->otyp == POT_POLYMORPH || obj_resists(obj, 5, 95)) { + if (unpolyable(obj) || obj_resists(obj, 5, 95)) { res = 0; break; }