From 6d3760b923282c5e02c73a74aa2d45f8d7b1a952 Mon Sep 17 00:00:00 2001 From: PatR Date: Tue, 10 Jul 2018 17:14:36 -0700 Subject: [PATCH] github pull request #102 - Popeye vs Fixed_abil Fixes #102 This is a simplified version of the code in pull request #102, which replaces "You feel like Popeye!" with "You feel like {Olive Oyl or Bluto}!" if eating spinach fails to provide a strength gain. I think you should still feel like Popeye if the lack of gain is due to already being at maximum, so I left out the change to make gainstr() return a value which indicates whether a change took place. Unfortunately, if you're both already at maximum and have attribute changes suppressed by Fixed_abil, the latter overrides and you'll feel like Olive Oyl or Bluto. I think that situation is too obscure to bother with the complexity of figuring out if you're at maximum for the purpose of a silly message. --- doc/fixes36.2 | 2 ++ src/eat.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/fixes36.2 b/doc/fixes36.2 index f8af944e2..134788868 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -70,6 +70,8 @@ attempting to update permanent inventory window during restore had problems were restored) and named fruit remembered corpse which isn't there anymore would be described by farlook as the corpse of a random monster type +when eating a tin of spinach, don't "feel like Popeye" is sustain-abilities + prevents any strength gain Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository diff --git a/src/eat.c b/src/eat.c index 1c055abbc..f398c8cc5 100644 --- a/src/eat.c +++ b/src/eat.c @@ -1395,7 +1395,16 @@ const char *mesg; u.uconduct.food++; /* don't need vegetarian checks for spinach */ if (!tin->cursed) pline("This makes you feel like %s!", - Hallucination ? "Swee'pea" : "Popeye"); + /* "Swee'pea" is a character from the Popeye cartoons */ + Hallucination ? "Swee'pea" + /* "feel like Popeye" unless sustain ability suppresses + any attribute change; this slightly oversimplifies + things: we want "Popeye" if no strength increase + occurs due to already being at maximum, but we won't + get it if at-maximum and fixed-abil both apply */ + : !Fixed_abil ? "Popeye" + /* no gain, feel like another character from Popeye */ + : (flags.female ? "Olive Oyl" : "Bluto")); gainstr(tin, 0, FALSE); tin = costly_tin(COST_OPEN);