summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/ouch.cc
diff options
context:
space:
mode:
authorDracoOmega <draco_omega@live.com>2014-03-01 10:04:28 -0330
committerSteve Melenchuk <smelenchuk@gmail.com>2014-03-06 09:58:16 -0700
commita0041117e710d6e1eb41807108dfb36a00ad2a09 (patch)
tree0790605d7a1f350fa70c977795f495cad2274d6d /crawl-ref/source/ouch.cc
parenta2d5e95f530f9318f83bc6576ee364c256c4add8 (diff)
downloadcrawl-ref-a0041117e710d6e1eb41807108dfb36a00ad2a09.tar.gz
crawl-ref-a0041117e710d6e1eb41807108dfb36a00ad2a09.zip
Adjust Deep Dwarves' interaction with poison damage
Damaging shaving interferes with being able to display an accurate estimate of how much poison is in your system (since you will take a random amount less than that) which is one of the whole points of deterministic poison in the first place. Moreover, applying it in the conventional fashion would cause them to take more damage when acting slowly than acting quickly. This is an attempt to approximate the current behavior with regard to DD poison (effectively ignoring low severity poison completely, but eventually taking steady damage if enough poison accumulates in your system at once). It does this by pretending you have less poison in your system than you actually do, and downscaling per-turn damage proportionally, while allowing this damage to bypass damage shaving (as it has already been 'shaved' beforehand). The effect, gameplay-wise, should be similar to the old system, I believe, while still allowing accurate shading of your health bar. I am, however, not entirely happy with it since it feels a bit like some seperate property to the otherwise-global damage shaving that players would need to learn and be aware of. I'm not sure what else to do that allows the health display to be accurate when stochastic damage reduction would be applied to each tick, though.
Diffstat (limited to 'crawl-ref/source/ouch.cc')
-rw-r--r--crawl-ref/source/ouch.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/crawl-ref/source/ouch.cc b/crawl-ref/source/ouch.cc
index 6d9fd31274..cd4e44add9 100644
--- a/crawl-ref/source/ouch.cc
+++ b/crawl-ref/source/ouch.cc
@@ -1048,7 +1048,8 @@ void ouch(int dam, int death_source, kill_method_type death_type,
dam = div_rand_round(dam * (10 - min(degree, 5)), 10);
}
- if (dam != INSTANT_DEATH && you.species == SP_DEEP_DWARF)
+ if (you.species == SP_DEEP_DWARF && dam != INSTANT_DEATH
+ && death_type != KILLED_BY_POISON)
{
// Deep Dwarves get to shave any hp loss.
int shave = 1 + random2(2 + random2(1 + you.experience_level / 3));