diff options
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r-- | crawl-ref/source/decks.cc | 22 |
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; |