summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/output.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/output.cc')
-rw-r--r--crawl-ref/source/output.cc43
1 files changed, 28 insertions, 15 deletions
diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc
index c9329fe18c..f9e4e62326 100644
--- a/crawl-ref/source/output.cc
+++ b/crawl-ref/source/output.cc
@@ -208,10 +208,10 @@ static std::string describe_hunger()
case HS_VERY_HUNGRY:
return (vamp? "Very Thirsty" : "Very Hungry");
case HS_NEAR_STARVING:
- return ("Near Starving");
+ return (vamp? "Near Bloodless" : "Near Starving");
case HS_STARVING:
default:
- return ("Starving");
+ return (vamp? "Bloodless" : "Starving");
}
}
@@ -1525,14 +1525,29 @@ std::string status_mut_abilities()
if (you.duration[DUR_PRAYER])
text += "praying, ";
- if (you.duration[DUR_REGENERATION]
- && (you.species != SP_VAMPIRE || you.hunger_state >= HS_HUNGRY)
- || you.species == SP_VAMPIRE && you.hunger_state >= HS_FULL)
+ if (you.disease && !you.duration[DUR_REGENERATION]
+ || you.species == SP_VAMPIRE && you.hunger_state <= HS_STARVING)
+ {
+ text += "non-regenerating, ";
+ }
+ else if (you.duration[DUR_REGENERATION]
+ || you.species == SP_VAMPIRE && you.hunger_state != HS_SATIATED)
{
if (you.disease)
- text += "recuperating, ";
+ text += "recuperating";
else
- text += "regenerating, ";
+ text += "regenerating";
+
+ if (you.species == SP_VAMPIRE && you.hunger_state != HS_SATIATED)
+ {
+ if (you.hunger_state <= HS_HUNGRY)
+ text += " slowly";
+ else if (you.hunger_state == HS_ENGORGED)
+ text += " very quickly";
+ else if (you.hunger_state >= HS_FULL)
+ text += " quickly";
+ }
+ text += ", ";
}
// not used as resistance part already says so
@@ -1647,12 +1662,6 @@ std::string status_mut_abilities()
else if (!you.duration[DUR_HASTE] && you.duration[DUR_SWIFTNESS])
text += "swift, ";
- if (you.disease
- || you.species == SP_VAMPIRE && you.hunger_state < HS_HUNGRY)
- {
- text += "non-regenerating, ";
- }
-
if (you.attribute[ATTR_HELD])
text += "held, ";
@@ -1717,7 +1726,7 @@ std::string status_mut_abilities()
text += "\nYou are a cloud of diffuse gas.";
break;
}
-
+/*
const int to_hit = calc_your_to_hit( false ) * 2;
snprintf( info, INFO_SIZE,
@@ -1733,7 +1742,7 @@ std::string status_mut_abilities()
(to_hit < 100) ? "You feel comfortable with your ability to fight"
: "You feel confident with your ability to fight" );
text += info;
-
+*/
if (you.duration[DUR_DEATHS_DOOR])
text += "\nYou are standing in death's doorway.";
@@ -1777,6 +1786,10 @@ std::string status_mut_abilities()
have_any = true;
break;
+ case SP_VAMPIRE:
+ if (you.experience_level < 13 || you.hunger_state > HS_HUNGRY)
+ break;
+ // else fall-through
case SP_MUMMY:
text += "in touch with death";