summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/abl-show.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/abl-show.cc')
-rw-r--r--crawl-ref/source/abl-show.cc18
1 files changed, 13 insertions, 5 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index 4b25ad308f..61c87c46a8 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -825,10 +825,16 @@ bool activate_ability()
std::vector<talent> talents = your_talents(false);
if ( talents.empty() )
{
- mpr("Sorry, you're not good enough to have a special ability.");
+ // Vampires can't turn into bats when full to the rim with blood.
+ if (you.species == SP_VAMPIRE && you.experience_level >= 3)
+ mpr("Sorry, you're too full to transform right now.");
+ else
+ mpr("Sorry, you're not good enough to have a special ability.");
+
crawl_state.zero_turns_taken();
return false;
}
+
if ( you.duration[DUR_CONF] )
{
talents = your_talents(true);
@@ -900,6 +906,7 @@ static bool activate_talent(const talent& tal)
case ABIL_END_TRANSFORMATION:
case ABIL_DELAYED_FIREBALL:
case ABIL_MUMMY_RESTORATION:
+ case ABIL_TRAN_BAT:
hungerCheck = false;
break;
default:
@@ -1991,15 +1998,16 @@ std::vector<talent> your_talents( bool check_confused )
(you.species == SP_BLACK_DRACONIAN) ? ABIL_BREATHE_LIGHTNING :
(you.species == SP_PURPLE_DRACONIAN) ? ABIL_BREATHE_POWER :
(you.species == SP_PALE_DRACONIAN) ? ABIL_BREATHE_STEAM :
- (you.species == SP_MOTTLED_DRACONIAN)? ABIL_BREATHE_STICKY_FLAME:
- ABIL_NON_ABILITY);
+ (you.species == SP_MOTTLED_DRACONIAN)? ABIL_BREATHE_STICKY_FLAME
+ : ABIL_NON_ABILITY);
if (ability != ABIL_NON_ABILITY)
add_talent(talents, ability, check_confused );
}
}
- if (you.species == SP_VAMPIRE && you.experience_level >= 3 &&
- you.attribute[ATTR_TRANSFORMATION] != TRAN_BAT)
+ if (you.species == SP_VAMPIRE && you.experience_level >= 3
+ && you.hunger_state < HS_ENGORGED
+ && you.attribute[ATTR_TRANSFORMATION] != TRAN_BAT)
{
add_talent(talents, ABIL_TRAN_BAT, check_confused );
}