diff options
author | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-09 11:32:32 +0000 |
---|---|---|
committer | dshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573> | 2007-07-09 11:32:32 +0000 |
commit | 536cad41f666433204c1072afe2c3aa5c93c4d64 (patch) | |
tree | 5d12335fd52f0ed7de39b11acb35ead6a455019d /crawl-ref/source/player.cc | |
parent | 240d458d718fcae5faaffb6d49ee0da27b585465 (diff) | |
download | crawl-ref-536cad41f666433204c1072afe2c3aa5c93c4d64.tar.gz crawl-ref-536cad41f666433204c1072afe2c3aa5c93c4d64.zip |
Give merfolk in water and flying kenku evasion bonuses.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1812 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/player.cc')
-rw-r--r-- | crawl-ref/source/player.cc | 32 |
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); |