diff options
author | DracoOmega <draco_omega@live.com> | 2014-03-01 10:04:28 -0330 |
---|---|---|
committer | Steve Melenchuk <smelenchuk@gmail.com> | 2014-03-06 09:58:16 -0700 |
commit | a0041117e710d6e1eb41807108dfb36a00ad2a09 (patch) | |
tree | 0790605d7a1f350fa70c977795f495cad2274d6d /crawl-ref/source/ouch.cc | |
parent | a2d5e95f530f9318f83bc6576ee364c256c4add8 (diff) | |
download | crawl-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.cc | 3 |
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)); |