summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-14 20:25:34 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-14 20:25:34 +0000
commit127ad9837168f9e32405bf45ae485181e647fac9 (patch)
treee606578d0807bdbcc4b5cbe773b39798a48ce4e0 /crawl-ref/source/decks.cc
parenta0209552c4a8fd7e91ccad436cc9822b65bea7b0 (diff)
downloadcrawl-ref-127ad9837168f9e32405bf45ae485181e647fac9.tar.gz
crawl-ref-127ad9837168f9e32405bf45ae485181e647fac9.zip
Added a Venom card; made Destruction deck effects somewhat more interesting.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1866 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r--crawl-ref/source/decks.cc52
1 files changed, 42 insertions, 10 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index 9ad1b295ac..0e24924765 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -57,7 +57,7 @@ static card_type a_deck_of_emergency[] = {
DEFVEC(deck_of_emergency);
static card_type a_deck_of_destruction[] = {
- CARD_VITRIOL, CARD_FLAME, CARD_FROST, CARD_HAMMER
+ CARD_VITRIOL, CARD_FLAME, CARD_FROST, CARD_VENOM, CARD_HAMMER
};
DEFVEC(deck_of_destruction);
@@ -153,6 +153,7 @@ const char* card_name(card_type card)
case CARD_VITRIOL: return "Vitriol";
case CARD_FLAME: return "Flame";
case CARD_FROST: return "Frost";
+ case CARD_VENOM: return "Venom";
case CARD_HAMMER: return "the Hammer";
case CARD_SPADE: return "the Spade";
case CARD_BARGAIN: return "the Bargain";
@@ -657,22 +658,46 @@ static void minefield_card(int power, deck_rarity_type rarity)
}
}
-static void damaging_card( card_type card, int power, deck_rarity_type rarity )
+static void damaging_card(card_type card, int power, deck_rarity_type rarity)
{
+ const int power_level = get_power_level(power, rarity);
+
dist target;
bolt beam;
- zap_type ztype;
+ zap_type ztype = ZAP_DEBUGGING_RAY;
+ const zap_type firezaps[3] = { ZAP_FLAME, ZAP_STICKY_FLAME, ZAP_FIRE };
+ const zap_type frostzaps[3] = { ZAP_FROST, ZAP_ICE_BOLT, ZAP_COLD };
+ const zap_type hammerzaps[3] = { ZAP_STRIKING, ZAP_STONE_ARROW,
+ ZAP_CRYSTAL_SPEAR };
+ const zap_type venomzaps[3] = { ZAP_STING, ZAP_VENOM_BOLT,
+ ZAP_POISON_ARROW };
+
switch ( card )
{
- case CARD_VITRIOL: ztype = ZAP_BREATHE_ACID; break;
- case CARD_FLAME: ztype = ZAP_BREATHE_FIRE; break;
- case CARD_FROST: ztype = ZAP_BREATHE_FROST; break;
- case CARD_HAMMER: ztype = ZAP_BREATHE_POWER; break;
- default: ztype = ZAP_DEBUGGING_RAY; break;
+ case CARD_VITRIOL:
+ ztype = (one_chance_in(3) ? ZAP_DEGENERATION : ZAP_BREATHE_ACID);
+ break;
+
+ case CARD_FLAME:
+ ztype = (coinflip() ? ZAP_FIREBALL : firezaps[power_level]);
+ break;
+
+ case CARD_FROST:
+ ztype = frostzaps[power_level];
+ break;
+
+ case CARD_HAMMER:
+ ztype = hammerzaps[power_level];
+ break;
+
+ case CARD_VENOM:
+ ztype = venomzaps[power_level];
+ break;
+
+ default:
+ break;
}
- // For now, just throw a bolt in that direction.
- // Make this more interesting later! XXX
if ( spell_direction( target, beam ) )
zapping(ztype, random2(power/4), beam);
}
@@ -1208,6 +1233,13 @@ void card_effect(card_type which_card, deck_rarity_type rarity)
case CARD_TROWEL: trowel_card(power, rarity); break;
case CARD_SPADE: your_spells(SPELL_DIG, random2(power/4), false); break;
+ case CARD_VENOM:
+ if ( coinflip() )
+ your_spells(SPELL_OLGREBS_TOXIC_RADIANCE,random2(power/4), false);
+ else
+ damaging_card(which_card, power, rarity);
+ break;
+
case CARD_VITRIOL: case CARD_FLAME: case CARD_FROST: case CARD_HAMMER:
damaging_card(which_card, power, rarity);
break;