summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/branch.cc2
-rw-r--r--crawl-ref/source/traps.cc19
-rw-r--r--crawl-ref/source/traps.h2
3 files changed, 22 insertions, 1 deletions
diff --git a/crawl-ref/source/branch.cc b/crawl-ref/source/branch.cc
index bcb5c69938..a8ed8355f6 100644
--- a/crawl-ref/source/branch.cc
+++ b/crawl-ref/source/branch.cc
@@ -213,7 +213,7 @@ Branch branches[] = {
NULL,
false, true, GREEN, LIGHTGREEN,
mons_pitslime_rare, mons_pitslime_level,
- NULL, NULL, NULL, NULL,
+ NULL, random_trap_slime, NULL, NULL,
5, 'M', false, true },
{ BRANCH_SNAKE_PIT, BRANCH_LAIR, 5, 7, 0, 0,
diff --git a/crawl-ref/source/traps.cc b/crawl-ref/source/traps.cc
index d27137443b..8bf5d030f0 100644
--- a/crawl-ref/source/traps.cc
+++ b/crawl-ref/source/traps.cc
@@ -1464,6 +1464,25 @@ int num_traps_for_place(int level_number, const level_id &place)
return 0;
}
+trap_type random_trap_slime(int level_number)
+{
+ trap_type type = NUM_TRAPS;
+
+ if (random2(1 + level_number) > 14 && one_chance_in(3))
+ {
+ type = TRAP_ZOT;
+ }
+
+ if (one_chance_in(5) && is_valid_shaft_level(level_id::current()))
+ type = TRAP_SHAFT;
+ if (one_chance_in(5))
+ type = TRAP_TELEPORT;
+ if (one_chance_in(10))
+ type = TRAP_ALARM;
+
+ return (type);
+}
+
static trap_type random_trap_default(int level_number, const level_id &place)
{
trap_type type = TRAP_DART;
diff --git a/crawl-ref/source/traps.h b/crawl-ref/source/traps.h
index 43285f96d7..a40aaf2941 100644
--- a/crawl-ref/source/traps.h
+++ b/crawl-ref/source/traps.h
@@ -43,6 +43,8 @@ int num_traps_for_place(int level_number = -1,
trap_type random_trap_for_place(int level_number = -1,
const level_id &place = level_id::current());
+trap_type random_trap_slime(int level_number = -1);
+
int traps_zero_number(int level_number = -1);
int traps_pan_number(int level_number = -1);