summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
authorStefan O'Rear <stefanor@cox.net>2009-12-30 15:11:54 -0800
committerStefan O'Rear <stefanor@cox.net>2009-12-30 15:12:04 -0800
commit03c70abf21c20f95c3886988c06c44194f8623e5 (patch)
treedc7b3a4059efc6c3ba37981ceb8530a1e39bdedb /crawl-ref/source/dungeon.cc
parent29e6ceef048a1d23b61570dbbe3c2451adf860ff (diff)
downloadcrawl-ref-03c70abf21c20f95c3886988c06c44194f8623e5.tar.gz
crawl-ref-03c70abf21c20f95c3886988c06c44194f8623e5.zip
Zombie fish in Cocytus <3
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r--crawl-ref/source/dungeon.cc32
1 files changed, 29 insertions, 3 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index cf15bb7179..e9bc4d3637 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -3368,6 +3368,25 @@ static int _place_monster_vector(std::vector<monster_type> montypes,
for (int i = 0; i < num_to_place; i++)
{
mg.cls = montypes[random2(montypes.size())];
+
+ if (player_in_branch( BRANCH_COCYTUS ) &&
+ x_chance_in_y(95, 100) &&
+ mons_class_can_be_zombified(mg.cls))
+ {
+ static const monster_type lut[3][2] =
+ {
+ { MONS_SKELETON_SMALL, MONS_SKELETON_LARGE },
+ { MONS_ZOMBIE_SMALL, MONS_ZOMBIE_LARGE },
+ { MONS_SIMULACRUM_SMALL, MONS_SIMULACRUM_LARGE },
+ };
+
+ mg.base_type = mg.cls;
+ mg.cls = lut[random_choose_weighted(2, 0, 8, 1, 1, 2, 0)]
+ [mons_zombie_size(mg.base_type) == Z_BIG];
+ }
+
+ else
+ mg.base_type = MONS_NO_MONSTER;
if (place_monster(mg) != -1)
++result;
}
@@ -3430,6 +3449,16 @@ static void _place_aquatic_monsters(int level_number, char level_type)
else if (one_chance_in(20))
swimming_things[i] = MONS_KRAKEN;
}
+ else if (player_in_branch( BRANCH_COCYTUS ))
+ {
+ // Eels are useless when zombified
+ if (swimming_things[i] == MONS_ELECTRIC_EEL &&
+ !one_chance_in(20))
+ {
+ swimming_things[i] = one_chance_in(4) ? MONS_KRAKEN :
+ MONS_WATER_ELEMENTAL;
+ }
+ }
}
// Don't place sharks in the Swamp.
@@ -3442,9 +3471,6 @@ static void _place_aquatic_monsters(int level_number, char level_type)
if (level_number >= 25 && one_chance_in(5))
swimming_things[0] = MONS_WATER_ELEMENTAL;
- if (player_in_branch(BRANCH_COCYTUS))
- swimming_things[3] = MONS_WATER_ELEMENTAL;
-
_place_monster_vector(swimming_things, level_number,
std::min(random2avg(9, 2)
+ (random2(water_spaces) / 10), 15));