summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-11-16 09:29:27 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-11-16 09:29:27 +0000
commite3c453d6832ff26d2da1847e2402069f7e42eba2 (patch)
treef6e2589ab65541d9e648aa89ddf44f5ae34b327f /crawl-ref/source/decks.cc
parentfe642d0694ff166fb0b65255c37f05b9d2ee73e1 (diff)
downloadcrawl-ref-e3c453d6832ff26d2da1847e2402069f7e42eba2.tar.gz
crawl-ref-e3c453d6832ff26d2da1847e2402069f7e42eba2.zip
Added Crusade card: conversion/abjuration effect.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2860 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r--crawl-ref/source/decks.cc37
1 files changed, 36 insertions, 1 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index e54e36e33f..0b59b66c7a 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -99,7 +99,7 @@ static card_type a_deck_of_enchantments[] = {
DEFVEC(deck_of_enchantments);
static card_type a_deck_of_summoning[] = {
- CARD_SUMMON_ANIMAL, CARD_SUMMON_DEMON, CARD_SUMMON_WEAPON
+ CARD_CRUSADE, CARD_SUMMON_ANIMAL, CARD_SUMMON_DEMON, CARD_SUMMON_WEAPON
};
DEFVEC(deck_of_summoning);
@@ -238,6 +238,7 @@ const char* card_name(card_type card)
case CARD_MAP: return "the Map";
case CARD_BANSHEE: return "the Banshee";
case CARD_WILD_MAGIC: return "Wild Magic";
+ case CARD_CRUSADE: return "the Crusade";
case CARD_SUMMON_ANIMAL: return "the Herd";
case CARD_SUMMON_DEMON: return "the Pentagram";
case CARD_SUMMON_WEAPON: return "the Dance";
@@ -2026,6 +2027,39 @@ static void curse_card(int power, deck_rarity_type rarity)
}
}
+static void crusade_card(int power, deck_rarity_type rarity)
+{
+ const int power_level = get_power_level(power, rarity);
+ if ( power_level >= 1 )
+ {
+ // A chance to convert opponents.
+ for ( int i = 0; i < MAX_MONSTERS; ++i )
+ {
+ monsters* const monster = &menv[i];
+ if (monster->type == -1 || !mons_near(monster) ||
+ mons_friendly(monster) ||
+ mons_holiness(monster) != MH_NATURAL ||
+ mons_is_unique(monster->type) ||
+ mons_immune_magic(monster))
+ continue;
+
+ // Note that this bypasses the magic resistance
+ // (though not immunity) check. Specifically,
+ // you can convert Killer Klowns this way.
+ // Might be too good.
+ if ( monster->hit_dice * 35 < random2(power) )
+ {
+ simple_monster_message(monster, " is converted.");
+ if ( one_chance_in(5 - power_level) )
+ monster->attitude = ATT_FRIENDLY;
+ else
+ monster->add_ench(ENCH_CHARM);
+ }
+ }
+ }
+ abjuration(power/4);
+}
+
static void summon_demon_card(int power, deck_rarity_type rarity)
{
const int power_level = get_power_level(power, rarity);
@@ -2184,6 +2218,7 @@ bool card_effect(card_type which_card, deck_rarity_type rarity,
case CARD_TOMB: entomb(power); break;
case CARD_WRAITH: drain_exp(false); lose_level(); break;
case CARD_WRATH: godly_wrath(); break;
+ case CARD_CRUSADE: crusade_card(power, rarity); break;
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;