diff options
author | David Lawrence Ramsey <dolorous@users.sourceforge.net> | 2009-11-08 16:35:16 -0600 |
---|---|---|
committer | David Lawrence Ramsey <dolorous@users.sourceforge.net> | 2009-11-08 16:36:10 -0600 |
commit | 6bc45a16ae8507bf7fb59d40d8d420de1f7193e1 (patch) | |
tree | 82041c6b24a92c4172476f5412d464a2616c2ad1 /crawl-ref/source/godwrath.cc | |
parent | 264758cf866f666f1fbd2e47288eed12bc0d0b06 (diff) | |
download | crawl-ref-6bc45a16ae8507bf7fb59d40d8d420de1f7193e1.tar.gz crawl-ref-6bc45a16ae8507bf7fb59d40d8d420de1f7193e1.zip |
In Yred's retribution, replace forced Animate Dead with summoning
hostile zombified monsters.
Diffstat (limited to 'crawl-ref/source/godwrath.cc')
-rw-r--r-- | crawl-ref/source/godwrath.cc | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/crawl-ref/source/godwrath.cc b/crawl-ref/source/godwrath.cc index 8e3c769bed..2164bdc394 100644 --- a/crawl-ref/source/godwrath.cc +++ b/crawl-ref/source/godwrath.cc @@ -44,12 +44,29 @@ static bool _beogh_idol_revenge(); static void _tso_blasts_cleansing_flame(const char *message = NULL); static bool _tso_holy_revenge(); +static bool _yred_random_zombified_hostile() +{ + const bool skel = one_chance_in(4); + + monster_type z_type = MONS_PROGRAM_BUG; + monster_type z_base = pick_random_zombie(); + + if (mons_zombie_size(z_base) == Z_BIG) + z_type = skel ? MONS_SKELETON_LARGE : MONS_ZOMBIE_LARGE; + else + z_type = skel ? MONS_SKELETON_SMALL : MONS_ZOMBIE_SMALL; + + mgen_data mg(z_type, BEH_HOSTILE, + 0, 0, you.pos(), MHITYOU, 0, GOD_YREDELEMNUL, + z_base); + + return (create_monster(mg) != -1); +} static bool _okawaru_random_servant() { - // error trapping {dlb} monster_type mon = MONS_PROGRAM_BUG; - int temp_rand = random2(100); + const int temp_rand = random2(100); // warriors mon = ((temp_rand < 15) ? MONS_ORC_WARRIOR : // 15% @@ -456,25 +473,27 @@ static bool _yredelemnul_retribution() if (random2(you.experience_level) > 4) { - if (one_chance_in(4) && animate_dead(&you, you.experience_level * 5, - BEH_HOSTILE, MHITYOU, god, false)) - { - simple_god_message(" animates the dead around you.", god); - animate_dead(&you, you.experience_level * 5, BEH_HOSTILE, MHITYOU, - god); - } - else if (you.religion == god && coinflip() - && yred_slaves_abandon_you()) + if (you.religion == god && coinflip() && yred_slaves_abandon_you()) { ; } else { + const bool zombified = one_chance_in(4); + int how_many = 1 + random2(1 + (you.experience_level / 5)); int count = 0; for (; how_many > 0; --how_many) - count += yred_random_servants(100, true); + { + if (zombified) + { + if (_yred_random_zombified_hostile()) + count++; + } + else + count += yred_random_servants(100, true); + } simple_god_message(count > 1 ? " sends servants to punish you." : count > 0 ? " sends a servant to punish you." |