Skip to content

Commit

Permalink
Use stairs above or below when they exist
Browse files Browse the repository at this point in the history
Sometimes when you went down stairs in close proximity, it could move
you to a different set of stairs - this is most visible in evac shelter
0 and 2, where going down the top left stairs could teleport you to the
  bottom right stairs. To fix this, if there are stairs below or above
the stairs you're using, go directly to those instead of searching the
map for stairs.
  • Loading branch information
anothersimulacrum committed Feb 22, 2020
1 parent cbd994a commit ed49c34
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions src/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10226,10 +10226,24 @@ cata::optional<tripoint> game::find_or_make_stairs( map &mp, const int z_after,
int best = INT_MAX;
const int movez = z_after - get_levz();
Creature *blocking_creature = nullptr;
const bool going_down_1 = movez == -1;
const bool going_up_1 = movez == 1;
// If there are stairs on the same x and y as we currently are, use those
if( going_down_1 && mp.has_flag( TFLAG_GOES_UP, u.pos() + tripoint_below ) ) {
stairs.emplace( u.pos() + tripoint_below );
}
if( going_up_1 && mp.has_flag( TFLAG_GOES_DOWN, u.pos() + tripoint_above ) ) {
stairs.emplace( u.pos() + tripoint_above );
}
if( stairs ) {
// We found stairs above or below, no need to do anything else
return stairs;
}
// Otherwise, search the map for them
for( const tripoint &dest : m.points_in_rectangle( omtile_align_start, omtile_align_end ) ) {
if( rl_dist( u.pos(), dest ) <= best &&
( ( movez == -1 && mp.has_flag( flag_GOES_UP, dest ) ) ||
( movez == 1 && ( mp.has_flag( flag_GOES_DOWN, dest ) ||
( ( going_down_1 && mp.has_flag( TFLAG_GOES_UP, dest ) ) ||
( going_up_1 && ( mp.has_flag( TFLAG_GOES_DOWN, dest ) ||
mp.ter( dest ) == t_manhole_cover ) ) ||
( ( movez == 2 || movez == -2 ) && mp.ter( dest ) == t_elevator ) ) ) {
if( mp.has_zlevels() && critter_at( dest ) ) {
Expand Down

0 comments on commit ed49c34

Please sign in to comment.