summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/player.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-09 11:32:32 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-09 11:32:32 +0000
commit536cad41f666433204c1072afe2c3aa5c93c4d64 (patch)
tree5d12335fd52f0ed7de39b11acb35ead6a455019d /crawl-ref/source/player.cc
parent240d458d718fcae5faaffb6d49ee0da27b585465 (diff)
downloadcrawl-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.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);