diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-07-27 13:32:04 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2009-07-27 13:32:04 +0000 |
commit | 33cd5f7627dde3804aba172a68b994def4de896d (patch) | |
tree | 7f658fb890a29d4f5c4ac3bc9693b4bd99d08c79 /crawl-ref/source/dungeon.cc | |
parent | d80b2858a02272181c42f6efc027713820fc0f09 (diff) | |
download | crawl-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.cc | 15 |
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); } |