summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dungeon.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-07-27 13:32:04 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2009-07-27 13:32:04 +0000
commit33cd5f7627dde3804aba172a68b994def4de896d (patch)
tree7f658fb890a29d4f5c4ac3bc9693b4bd99d08c79 /crawl-ref/source/dungeon.cc
parentd80b2858a02272181c42f6efc027713820fc0f09 (diff)
downloadcrawl-ref-33cd5f7627dde3804aba172a68b994def4de896d.tar.gz
crawl-ref-33cd5f7627dde3804aba172a68b994def4de896d.zip
Disallow vaults placing shaft traps if shafts are disallowed on that
level. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@10427 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/dungeon.cc')
-rw-r--r--crawl-ref/source/dungeon.cc15
1 files changed, 7 insertions, 8 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 14d7f60374..cfe2a84f0d 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -2819,10 +2819,10 @@ static bool _shaft_is_in_corridor(const coord_def& c)
const coord_def adjs[] = { coord_def(-1,0), coord_def(1,0),
coord_def(0,-1), coord_def(0,1) };
- for ( unsigned int i = 0; i < ARRAYSZ(adjs); ++i )
+ for (unsigned int i = 0; i < ARRAYSZ(adjs); ++i)
{
const coord_def spot = c + adjs[i];
- if ( !inside_level_bounds(spot) || grd(spot) < DNGN_SHALLOW_WATER )
+ if (!inside_level_bounds(spot) || grd(spot) < DNGN_SHALLOW_WATER)
return (true);
}
return (false);
@@ -2857,7 +2857,7 @@ static void _place_traps(int level_number)
if (ts.type == TRAP_SHAFT && level_number <= 7)
{
// Disallow shaft construction in corridors!
- if ( _shaft_is_in_corridor(ts.pos) )
+ if (_shaft_is_in_corridor(ts.pos))
{
// Choose again!
ts.type = random_trap_for_place(level_number);
@@ -4842,8 +4842,8 @@ static void _vault_grid( vault_placement &place,
{
const trap_type trap =
(f.trap == TRAP_INDEPTH)
- ? random_trap_for_place(place.level_number)
- : static_cast<trap_type>(f.trap);
+ ? random_trap_for_place(place.level_number)
+ : static_cast<trap_type>(f.trap);
place_specific_trap(where, trap);
}
@@ -7507,7 +7507,8 @@ static void _roguey_level(int level_number, spec_room &sr, bool make_stairs)
bool place_specific_trap(const coord_def& where, trap_type spec_type)
{
- if (spec_type == TRAP_RANDOM || spec_type == TRAP_NONTELEPORT)
+ if (spec_type == TRAP_RANDOM || spec_type == TRAP_NONTELEPORT
+ || spec_type == TRAP_SHAFT && !is_valid_shaft_level())
{
trap_type forbidden1 = NUM_TRAPS;
trap_type forbidden2 = NUM_TRAPS;
@@ -7521,9 +7522,7 @@ bool place_specific_trap(const coord_def& where, trap_type spec_type)
forbidden1 = TRAP_SHAFT;
do
- {
spec_type = static_cast<trap_type>( random2(NUM_TRAPS) );
- }
while (spec_type == forbidden1 || spec_type == forbidden2);
}