summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monstuff.cc
diff options
context:
space:
mode:
authorzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-14 12:00:48 +0000
committerzelgadis <zelgadis@c06c8d41-db1a-0410-9941-cceddc491573>2009-01-14 12:00:48 +0000
commit85e11d2d3c892c2ffcd53b0bf55c0e83ce13fb9d (patch)
treec3a0a555a4e2e046ac138f75f1c3bfd76c4357f9 /crawl-ref/source/monstuff.cc
parentb83cbbcaed12c8df8422b0fda6465189757ce1c9 (diff)
downloadcrawl-ref-85e11d2d3c892c2ffcd53b0bf55c0e83ce13fb9d.tar.gz
crawl-ref-85e11d2d3c892c2ffcd53b0bf55c0e83ce13fb9d.zip
Implented some ranged brands from FR #2006917 and #1891231: shadow and
penetration (not phasing) for launchers and shadow, penetration, dispersal, exploding, steel and silver for ammo. Never randomly generated. If a launcher of venom is used to launch flame or ice ammo then the resulting bolt will be poisoned, just like poisoned ammo launched from a launcer of flame or frost. Put missile beam setup code that's common to monsters and the player in setup_missile_beam(). Removed mons_thrown_object_destroyed(), thrown_object_destroyed() is now used for both monsters and the player. The bolt struct has several new callback fields that can be set to alter the beam's behaviour; currently only used by the brands implemented in this commit, but they should be general enough to be used by anything. The bolt struct has the new field "special_explosion" which can be used to cause an explosion with flavour and/or damage dice different than the rest of the beam. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8449 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-rw-r--r--crawl-ref/source/monstuff.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 49f03b28f0..e787b38f4b 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -1010,11 +1010,11 @@ void _monster_die_cloud(const monsters* monster, bool corpse, bool silent,
}
}
-void monster_die(monsters *monster, killer_type killer,
- int killer_index, bool silent, bool wizard)
+int monster_die(monsters *monster, killer_type killer,
+ int killer_index, bool silent, bool wizard)
{
if (invalid_monster(monster))
- return;
+ return (-1);
// If a monster was banished to the Abyss and then killed there,
// then its death wasn't a banishment.
@@ -1022,7 +1022,7 @@ void monster_die(monsters *monster, killer_type killer,
monster->flags &= ~MF_BANISHED;
if (!silent && _monster_avoided_death(monster, killer, killer_index))
- return;
+ return (-1);
mons_clear_trapping_net(monster);
@@ -1659,6 +1659,8 @@ void monster_die(monsters *monster, killer_type killer,
view_update_at(mwhere);
update_screen();
}
+
+ return (corpse);
}
void monster_cleanup(monsters *monster)