summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/attack.cc
diff options
context:
space:
mode:
authorSteve Melenchuk <smelenchuk@gmail.com>2014-05-10 20:20:54 -0600
committerSteve Melenchuk <smelenchuk@gmail.com>2014-05-10 21:38:22 -0600
commit2a5c544ae8650b4a2e5aed57a487cbdf1731d487 (patch)
tree4a27ac2195a982f4fa01d3dc950d2ef22b4668bd /crawl-ref/source/attack.cc
parent551055afaa86b1b141c89ecd9948a865fa779e6f (diff)
downloadcrawl-ref-2a5c544ae8650b4a2e5aed57a487cbdf1731d487.tar.gz
crawl-ref-2a5c544ae8650b4a2e5aed57a487cbdf1731d487.zip
New monster spell: Drain Magic.
It's an antimagic enchantment, borrowing the code from melee antimagic (which now internally refers to the new beam type). I have a vague notion that this might remove antimagic effects from the caster at some point, but that's for later.
Diffstat (limited to 'crawl-ref/source/attack.cc')
-rw-r--r--crawl-ref/source/attack.cc27
1 files changed, 3 insertions, 24 deletions
diff --git a/crawl-ref/source/attack.cc b/crawl-ref/source/attack.cc
index 0727a3e8a7..a9f71f9404 100644
--- a/crawl-ref/source/attack.cc
+++ b/crawl-ref/source/attack.cc
@@ -579,29 +579,8 @@ bool attack::distortion_affects_defender()
void attack::antimagic_affects_defender(int pow)
{
- int amount = 0;
- if (defender->is_player())
- {
- amount = min(you.magic_points, random2avg(pow, 3));
- if (!amount)
- return;
- mprf(MSGCH_WARN, "You feel your power leaking away.");
- drain_mp(amount);
- obvious_effect = true;
- }
- else if (mons_antimagic_affected(defender->as_monster()))
- {
- int dur = div_rand_round(pow * 8, defender->as_monster()->hit_dice);
- amount = random2(dur + 1);
- dur = amount * BASELINE_DELAY;
- defender->as_monster()->add_ench(mon_enchant(ENCH_ANTIMAGIC, 0,
- attacker, // doesn't matter
- dur));
- special_damage_message =
- apostrophise(defender->name(DESC_THE))
- + " magic leaks into the air.";
- obvious_effect = true;
- }
+ obvious_effect =
+ enchant_actor_with_flavour(defender, NULL, BEAM_DRAIN_MAGIC, pow);
}
void attack::pain_affects_defender()
@@ -1913,7 +1892,7 @@ bool attack::apply_damage_brand(const char *what)
break;
case SPWPN_ANTIMAGIC:
- antimagic_affects_defender(damage_done);
+ antimagic_affects_defender(damage_done * 8);
break;
default: