diff options
Diffstat (limited to 'crawl-ref/source/misc.cc')
-rw-r--r-- | crawl-ref/source/misc.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc index 90d89d074f..d4e63f1186 100644 --- a/crawl-ref/source/misc.cc +++ b/crawl-ref/source/misc.cc @@ -1157,6 +1157,21 @@ static void _spatter_neighbours(const coord_def& where, int chance) } } +bool slime_vault_to_floor() +{ + bool success = false; + + for (rectangle_iterator ri(1); ri; ++ri) + { + if (grd(*ri) == DNGN_STONE_WALL) + { + grd(*ri) = DNGN_FLOOR; + success = true; + } + } + return (success); +} + void generate_random_blood_spatter_on_level() { int startprob; @@ -2419,6 +2434,31 @@ void down_stairs( int old_level, dungeon_feature_type force_stair, new_level(); + static int times_entered = 0; + + if (level_id::current() == level_id(BRANCH_SLIME_PITS, 6) + && you.religion == GOD_JIYVA) + { + const level_id target(BRANCH_SLIME_PITS, 6); + if (times_entered == 0) + { + if (apply_to_level(target, true, slime_vault_to_floor)) + { + if (!silenced(you.pos())) + { + mpr("You hear the sound of toppling stones.", + MSGCH_MONSTER_ENCHANT); + } + else + { + mpr("An unexplained breeze blows through the dungeon.", + MSGCH_MONSTER_ENCHANT); + } + } + times_entered++; + } + } + // Clear list of beholding monsters. if (you.duration[DUR_MESMERISED]) { @@ -3095,6 +3135,7 @@ bool stop_attack_prompt(const monsters *mon, bool beam_attack, prompt = true; } else if (inSanctuary || wontAttack + || (you.religion == GOD_JIYVA && mons_is_slime(mon)) || (isNeutral || isHoly) && is_good_god(you.religion) || isUnchivalric && you.religion == GOD_SHINING_ONE |