diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-28 12:18:36 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-03-28 12:18:36 +0000 |
commit | 30712a6f0906f3127c49989219c1077a81336c6c (patch) | |
tree | 86bef2abdd5fc92f286e8bb907239cae724fd4b8 /crawl-ref/source/fight.cc | |
parent | 17d51dec2e404928c52bd4358c66703285f1eb0f (diff) | |
download | crawl-ref-30712a6f0906f3127c49989219c1077a81336c6c.tar.gz crawl-ref-30712a6f0906f3127c49989219c1077a81336c6c.zip |
Implement FR 1911470: DVORP type influences chance of spattering blood
This is currently purely cosmetical, but there are a lot of ideas out
there how to make blood have an effect.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3910 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/fight.cc')
-rw-r--r-- | crawl-ref/source/fight.cc | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 11dffcecb7..62a4c9f76b 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -562,6 +562,38 @@ bool melee_attack::attack() mons_attack_mons() ); } +static int _modify_blood_amount(const int damage, const int dam_type) +{ + int factor = 0; // DVORP_NONE + + switch (dam_type) + { + case DVORP_CRUSHING: // flails, also unarmed + factor = 2; + break; + case DVORP_SLASHING: // whips + factor = 4; + break; + case DVORP_PIERCING: // pole-arms + factor = 5; + break; + case DVORP_STABBING: // knives, daggers + factor = 8; + break; + case DVORP_SLICING: // other short/long blades, also blade hands + factor = 10; + break; + case DVORP_CHOPPING: // axes + factor = 17; + break; + case DVORP_CLAWING: // unarmed, claws + factor = 24; + break; + } + + return (damage * factor / 10); +} + static bool _vamp_wants_blood_from_monster(const monsters *mon) { if (you.species != SP_VAMPIRE) @@ -688,7 +720,8 @@ bool melee_attack::player_attack() if (damage_done > 0) { - int blood = damage_done; + int blood + = _modify_blood_amount(damage_done, attacker->damage_type()); if (blood > defender->stat_hp()) blood = defender->stat_hp(); @@ -3688,11 +3721,12 @@ void melee_attack::mons_perform_attack_rounds() if (defender->atype() == ACT_MONSTER) type = defender->id(); - int damage = damage_done; - if (damage > defender->stat_hp()) - damage = defender->stat_hp(); + int blood + = _modify_blood_amount(damage_done, attacker->damage_type()); + if (blood > defender->stat_hp()) + blood = defender->stat_hp(); - bleed_onto_floor(pos.x, pos.y, type, damage, true); + bleed_onto_floor(pos.x, pos.y, type, blood, true); if (decapitate_hydra(damage_done, attacker->damage_type(attack_number))) |