summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monstuff.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/monstuff.cc')
-rw-r--r--crawl-ref/source/monstuff.cc51
1 files changed, 10 insertions, 41 deletions
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 9c349d3d3a..0753e6dac4 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -920,60 +920,29 @@ void _monster_die_cloud(const monsters* monster, bool corpse, bool silent,
if (!summoned)
return;
- std::string prefix;
- std::string msg = " disappears in a puff of smoke!";
- cloud_type cloud = random_smoke_type();
- int dur = 1 + random2(3);
-
+ std::string prefix = " ";
if (corpse)
{
if (mons_weight(mons_species(monster->type)) == 0)
return;
- prefix = "'s corpse";
+ prefix = "'s corpse ";
}
- switch(summon_type)
- {
- case SPELL_SHADOW_CREATURES:
- msg = " disolves into shadows!";
- cloud = CLOUD_NONE;
- break;
-
- case MON_SUMM_CHAOS:
- msg = " degenerates into a cloud of primal chaos!";
- cloud = CLOUD_CHAOS;
- break;
-
- case MON_SUMM_WRATH:
- case MON_SUMM_AID:
- if (is_good_god(monster->god))
- {
- msg = " disolves into sparkling lights!";
- cloud = CLOUD_NONE;
- }
- break;
- }
+ std::string msg = summoned_poof_msg(monster);
+ msg += "!";
- if (monster->god == GOD_XOM && one_chance_in(10)
- || cloud != CLOUD_NONE && monster->type == MONS_CHAOS_SPAWN)
- {
- msg = " degenerates into a cloud of primal chaos!";
+ cloud_type cloud = CLOUD_NONE;
+ if (msg.find("smoke") != std::string::npos)
+ cloud = random_smoke_type();
+ else if (msg.find("chaos") != std::string::npos)
cloud = CLOUD_CHAOS;
- }
-
- if (mons_is_holy(monster) && summon_type != SPELL_SHADOW_CREATURES
- && summon_type != MON_SUMM_CHAOS)
- {
- msg = " disolves into sparkling lights!";
- cloud = CLOUD_NONE;
- }
if (!silent)
simple_monster_message(monster, (prefix + msg).c_str());
if (cloud != CLOUD_NONE)
- place_cloud( cloud, monster->pos(), dur,
+ place_cloud( cloud, monster->pos(), 1 + random2(3),
monster->kill_alignment() );
}
@@ -1002,7 +971,7 @@ void monster_die(monsters *monster, killer_type killer,
const bool gives_xp = !summoned
&& !mons_enslaved_body_and_soul(monster);
- const bool drop_items = !hard_reset && !mons_is_holy(monster);
+ const bool drop_items = !hard_reset;
const bool mons_reset( killer == KILL_RESET || killer == KILL_DISMISSED );