summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/player.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/player.cc')
-rw-r--r--crawl-ref/source/player.cc32
1 files changed, 31 insertions, 1 deletions
diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc
index a407bb2f0a..2e678eea91 100644
--- a/crawl-ref/source/player.cc
+++ b/crawl-ref/source/player.cc
@@ -267,6 +267,11 @@ bool move_player_to_grid( int x, int y, bool stepped, bool allow_shift,
}
}
}
+ else if (!grid_is_water(new_grid) && grid_is_water(old_grid)
+ && you.species == SP_MERFOLK)
+ {
+ you.redraw_evasion = true;
+ }
}
// move the player to location
@@ -1891,6 +1896,30 @@ int player_evasion()
break;
}
+ switch (you.species)
+ {
+ case SP_MERFOLK:
+ // Merfolk get an evasion bonus in water.
+ if (you.swimming())
+ {
+ const int ev_bonus = std::min(9, std::max(2, ev / 4));
+ ev += ev_bonus;
+ }
+ break;
+
+ case SP_KENKU:
+ // Flying kenku get an evasion bonus.
+ if (you.levitates() == 1)
+ {
+ const int ev_bonus = std::min(9, std::max(1, ev / 5));
+ ev += ev_bonus;
+ }
+ break;
+
+ default:
+ break;
+ }
+
return (ev);
}
@@ -2149,6 +2178,7 @@ int burden_change(void)
you.burden_state = BS_UNENCUMBERED;
set_redraw_status( REDRAW_BURDEN );
+ you.redraw_evasion = true;
// changed the burdened levels to match the change to max_carried
if (you.burden < carrying_capacity(BS_UNENCUMBERED))
@@ -5083,7 +5113,7 @@ int player::res_negative_energy() const
int player::levitates() const
{
- if ( !player_is_levitating() )
+ if ( !is_levitating() )
return 0;
else
return (you.duration[DUR_CONTROLLED_FLIGHT] ? 1 : 2);