summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/fight.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-12-03 16:16:06 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-12-03 16:16:06 +0000
commitba3d08acb430062418484ed3e778474cd3b9482b (patch)
treea01b36b1d63b8a3b6a20f851175c2df214b28aea /crawl-ref/source/fight.cc
parentc4d32f0ab799f5dde968e6886961dd4ac26033b1 (diff)
downloadcrawl-ref-ba3d08acb430062418484ed3e778474cd3b9482b.tar.gz
crawl-ref-ba3d08acb430062418484ed3e778474cd3b9482b.zip
Implement harpyes. They ...
* appear in bands of 2-5 * use bat like movement * may steal (= destroy) the player's food. Still needs a tile. Also, actually use the M_BATTY flag instead of hardcoding batty monsters. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7734 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/fight.cc')
-rw-r--r--crawl-ref/source/fight.cc26
1 files changed, 21 insertions, 5 deletions
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc
index a47588edb9..c3a7af0c45 100644
--- a/crawl-ref/source/fight.cc
+++ b/crawl-ref/source/fight.cc
@@ -2179,7 +2179,7 @@ static bool _can_clone(const actor *defender, coord_def *pos, int *midx)
return (false);
}
- return (true);
+ return (true);
}
static bool _do_clone(monsters* orig, coord_def pos, int midx)
@@ -2321,7 +2321,7 @@ void melee_attack::chaos_affects_defender()
ASSERT(can_poly);
beam.flavour = BEAM_POLYMORPH;
break;
-
+
case CHAOS_POLY_UP:
ASSERT(can_poly);
ASSERT(defender->atype() == ACT_MONSTER);
@@ -2329,7 +2329,7 @@ void melee_attack::chaos_affects_defender()
obvious_effect = you.can_see(defender);
monster_polymorph(def, RANDOM_MONSTER, PPT_MORE, true);
break;
-
+
case CHAOS_MAKE_SHIFTER:
ASSERT(can_poly);
ASSERT(!is_shifter);
@@ -2341,11 +2341,11 @@ void melee_attack::chaos_affects_defender()
// Immediately polymorph monster, just to make the effect obvious.
monster_polymorph(def, RANDOM_MONSTER, PPT_SAME, true);
break;
-
+
case CHAOS_HEAL:
beam.flavour = BEAM_HEALING;
break;
-
+
case CHAOS_HASTE:
beam.flavour = BEAM_HASTE;
break;
@@ -4194,6 +4194,22 @@ void melee_attack::mons_apply_attack_flavour(const mon_attack_def &attk)
case AF_CHAOS:
chaos_affects_defender();
break;
+
+ case AF_STEAL_FOOD:
+ // Monsters don't carry food.
+ if (defender->atype() != ACT_PLAYER)
+ break;
+
+ // Only use this attack sometimes.
+ if (!one_chance_in(3))
+ break;
+
+ if (expose_player_to_element(BEAM_STEAL_FOOD, 10) && needs_message)
+ {
+ mprf("%s steals some of your food!",
+ atk_name(DESC_CAP_THE).c_str());
+ }
+ break;
}
}