summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-11-29 17:40:40 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-11-29 17:40:40 +0000
commitbdc780ed167c098605f620a74238aec4f84e0c58 (patch)
tree8e02f5a788935794e38511f4e3898039d7583d41 /crawl-ref/source/decks.cc
parentec6dd2dc554ac988dc8ad23088328ae426ec7e0b (diff)
downloadcrawl-ref-bdc780ed167c098605f620a74238aec4f84e0c58.tar.gz
crawl-ref-bdc780ed167c098605f620a74238aec4f84e0c58.zip
Added the Bones, a skeleton summoning card.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2938 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r--crawl-ref/source/decks.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index 0010b70c5d..a90825f5fe 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -99,7 +99,8 @@ static card_type a_deck_of_enchantments[] = {
DEFVEC(deck_of_enchantments);
static card_type a_deck_of_summoning[] = {
- CARD_CRUSADE, CARD_SUMMON_ANIMAL, CARD_SUMMON_DEMON, CARD_SUMMON_WEAPON
+ CARD_CRUSADE, CARD_SUMMON_ANIMAL, CARD_SUMMON_DEMON, CARD_SUMMON_WEAPON,
+ CARD_SUMMON_SKELETON
};
DEFVEC(deck_of_summoning);
@@ -243,6 +244,7 @@ const char* card_name(card_type card)
case CARD_SUMMON_ANIMAL: return "the Herd";
case CARD_SUMMON_DEMON: return "the Pentagram";
case CARD_SUMMON_WEAPON: return "the Dance";
+ case CARD_SUMMON_SKELETON: return "the Bones";
case CARD_SUMMON_ANY: return "Summoning";
case CARD_XOM: return "Xom";
case CARD_FAMINE: return "Famine";
@@ -2247,6 +2249,21 @@ static void summon_dancing_weapon(int power, deck_rarity_type rarity)
menv[mon].flags |= MF_HARD_RESET;
}
+static void summon_skeleton(int power, deck_rarity_type rarity)
+{
+ const int power_level = get_power_level(power, rarity);
+ const bool friendly = (power_level > 0 || !one_chance_in(4));
+ const monster_type skeltypes[] = {
+ MONS_SKELETON_LARGE, MONS_SKELETAL_WARRIOR, MONS_SKELETAL_DRAGON
+ };
+
+ const int mon = create_monster(skeltypes[power_level], std::min(power/50,6),
+ friendly ? BEH_FRIENDLY : BEH_HOSTILE,
+ you.x_pos, you.y_pos, MHITYOU, 250 );
+ if ( mon != -1 )
+ menv[mon].flags |= MF_HARD_RESET;
+}
+
static int card_power(deck_rarity_type rarity)
{
int result = 0;
@@ -2333,8 +2350,9 @@ bool card_effect(card_type which_card, deck_rarity_type rarity,
case CARD_SUMMON_DEMON: summon_demon_card(power, rarity); break;
case CARD_SUMMON_ANIMAL: summon_animals(random2(power/3)); break;
case CARD_SUMMON_ANY: summon_any_monster(power, rarity); break;
- case CARD_XOM: xom_acts(5 + random2(power/10)); break;
case CARD_SUMMON_WEAPON: summon_dancing_weapon(power, rarity); break;
+ case CARD_SUMMON_SKELETON: summon_skeleton(power, rarity); break;
+ case CARD_XOM: xom_acts(5 + random2(power/10)); break;
case CARD_TROWEL: trowel_card(power, rarity); break;
case CARD_SPADE: your_spells(SPELL_DIG, random2(power/4), false); break;
case CARD_BANSHEE: mass_enchantment(ENCH_FEAR, power, MHITYOU); break;