summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/monplace.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-04-25 18:48:06 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-04-25 18:48:06 +0000
commit56fb5e29c0232b3f7263f80a7e4075c286216efc (patch)
treea56d4888e9bdc97594cc91e24197155e5fc90336 /crawl-ref/source/monplace.cc
parent3696d41c00d66d8e1a646d164a7fd1a933cbba13 (diff)
downloadcrawl-ref-56fb5e29c0232b3f7263f80a7e4075c286216efc.tar.gz
crawl-ref-56fb5e29c0232b3f7263f80a7e4075c286216efc.zip
OOD monster generation now starts only if you stay on a level for long enough
(700 turns on D:1, declining linearly to ~0 turns on D:7). Similar rules apply for extreme OOD generation. Breaks save compatibility with earlier 0.3 saves. Needs playtesting, perhaps some relaxation of the rules for moderate OODness if the monster mix gets too bland. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1368 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/monplace.cc')
-rw-r--r--crawl-ref/source/monplace.cc16
1 files changed, 14 insertions, 2 deletions
diff --git a/crawl-ref/source/monplace.cc b/crawl-ref/source/monplace.cc
index 40bcd01a53..3f68a4783b 100644
--- a/crawl-ref/source/monplace.cc
+++ b/crawl-ref/source/monplace.cc
@@ -121,6 +121,18 @@ bool monster_can_submerge(int monster_class, int grid)
}
}
+static bool need_super_ood(int lev_mons)
+{
+ return (env.turns_on_level > 1400 - lev_mons * 117
+ && one_chance_in(5000));
+}
+
+static bool need_moderate_ood(int lev_mons)
+{
+ return (env.turns_on_level > 700 - lev_mons * 117
+ && one_chance_in(50));
+}
+
bool place_monster(int &id, int mon_type, int power, char behaviour,
int target, bool summoned, int px, int py, bool allow_bands,
int proximity, int extra, int dur,
@@ -158,11 +170,11 @@ bool place_monster(int &id, int mon_type, int power, char behaviour,
&& lev_mons < 28)
{
// potentially nasty surprise, but very rare
- if (lev_mons > 0 && one_chance_in(5000))
+ if (need_super_ood(lev_mons))
lev_mons += random2(12);
// slightly out of depth monsters are more common:
- if (one_chance_in(50))
+ if (need_moderate_ood(lev_mons))
lev_mons += random2(5);
if (lev_mons > 27)