diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-03 16:16:06 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-12-03 16:16:06 +0000 |
commit | ba3d08acb430062418484ed3e778474cd3b9482b (patch) | |
tree | a01b36b1d63b8a3b6a20f851175c2df214b28aea /crawl-ref/source/fight.cc | |
parent | c4d32f0ab799f5dde968e6886961dd4ac26033b1 (diff) | |
download | crawl-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.cc | 26 |
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; } } |