summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/abl-show.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2009-02-14 19:26:16 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2009-02-14 19:26:16 +0000
commitf5ecdf95ee8b9bb98f8a4cdea49a05cf5ecbaaf0 (patch)
treebc4d24ce6164c2d68bd4df393d96df0e1ad1e837 /crawl-ref/source/abl-show.cc
parent09cadff30441398df1bea28ffe712e767a002ee0 (diff)
downloadcrawl-ref-f5ecdf95ee8b9bb98f8a4cdea49a05cf5ecbaaf0.tar.gz
crawl-ref-f5ecdf95ee8b9bb98f8a4cdea49a05cf5ecbaaf0.zip
Give green draconians spit poison (a downgrade from breathe poison) in
spider form. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@9077 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/abl-show.cc')
-rw-r--r--crawl-ref/source/abl-show.cc44
1 files changed, 30 insertions, 14 deletions
diff --git a/crawl-ref/source/abl-show.cc b/crawl-ref/source/abl-show.cc
index dc3bee5714..9fb013665d 100644
--- a/crawl-ref/source/abl-show.cc
+++ b/crawl-ref/source/abl-show.cc
@@ -2104,20 +2104,36 @@ std::vector<talent> your_talents( bool check_confused )
_add_talent(talents, ABIL_SPIT_POISON, check_confused);
}
- if (player_genus(GENPC_DRACONIAN)
- && you.experience_level >= 7
- && !transform_changed_physiology())
- {
- const ability_type ability = (
- (you.species == SP_GREEN_DRACONIAN) ? ABIL_BREATHE_POISON :
- (you.species == SP_RED_DRACONIAN) ? ABIL_BREATHE_FIRE :
- (you.species == SP_WHITE_DRACONIAN) ? ABIL_BREATHE_FROST :
- (you.species == SP_YELLOW_DRACONIAN) ? ABIL_SPIT_ACID :
- (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);
+ if (player_genus(GENPC_DRACONIAN) && you.experience_level >= 7)
+ {
+ ability_type ability = ABIL_NON_ABILITY;
+ switch (you.species)
+ {
+ case SP_GREEN_DRACONIAN: ability = ABIL_BREATHE_POISON; break;
+ case SP_RED_DRACONIAN: ability = ABIL_BREATHE_FIRE; break;
+ case SP_WHITE_DRACONIAN: ability = ABIL_BREATHE_FROST; break;
+ case SP_YELLOW_DRACONIAN: ability = ABIL_SPIT_ACID; break;
+ case SP_BLACK_DRACONIAN: ability = ABIL_BREATHE_LIGHTNING; break;
+ case SP_PURPLE_DRACONIAN: ability = ABIL_BREATHE_POWER; break;
+ case SP_PALE_DRACONIAN: ability = ABIL_BREATHE_STEAM; break;
+ case SP_MOTTLED_DRACONIAN: ability = ABIL_BREATHE_STICKY_FLAME; break;
+ default: break;
+ }
+
+ // Draconians don't maintain their original breath weapons
+ // if shapechanged, but green draconians do get spit poison
+ // in spider form.
+ if (transform_changed_physiology())
+ {
+ if (you.species == SP_GREEN_DRACONIAN
+ && you.attribute[ATTR_TRANSFORMATION] == TRAN_SPIDER)
+ {
+ ability = ABIL_SPIT_POISON; // spit, not breath
+ }
+ else
+ ability = ABIL_NON_ABILITY;
+ }
+
if (ability != ABIL_NON_ABILITY)
_add_talent(talents, ability, check_confused );
}