diff options
author | elliptic <hyperelliptical@gmail.com> | 2014-05-07 13:25:12 -0400 |
---|---|---|
committer | elliptic <hyperelliptical@gmail.com> | 2014-05-07 13:25:12 -0400 |
commit | f9dfbfbb52568ade24638eff1d8e6db817ca550a (patch) | |
tree | 4f17afece37d813f30f25fc31553039890707a12 /crawl-ref/source/melee_attack.cc | |
parent | 167b67a7dc8d7dafb67f5636fe167065640b028d (diff) | |
download | crawl-ref-f9dfbfbb52568ade24638eff1d8e6db817ca550a.tar.gz crawl-ref-f9dfbfbb52568ade24638eff1d8e6db817ca550a.zip |
Balance cleaving order better when no walls are adjacent to the attacker.
Previously it would always attack the square directly opposite the target
first, now it targets that either first or last.
Diffstat (limited to 'crawl-ref/source/melee_attack.cc')
-rw-r--r-- | crawl-ref/source/melee_attack.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/crawl-ref/source/melee_attack.cc b/crawl-ref/source/melee_attack.cc index ea219f22ba..ed380ac5f7 100644 --- a/crawl-ref/source/melee_attack.cc +++ b/crawl-ref/source/melee_attack.cc @@ -3827,14 +3827,15 @@ void melee_attack::cleave_setup() return; int dir = coinflip() ? -1 : 1; - get_cleave_targets(attacker, defender->pos(), dir, cleave_targets, true); + bool behind = coinflip(); + get_cleave_targets(attacker, defender->pos(), dir, cleave_targets, behind); cleave_targets.reverse(); attack_cleave_targets(attacker, cleave_targets, attack_number, effective_attack_number); // We need to get the list of the remaining potential targets now because // if the main target dies, its position will be lost. - get_cleave_targets(attacker, defender->pos(), -dir, cleave_targets, false); + get_cleave_targets(attacker, defender->pos(), -dir, cleave_targets, !behind); } // cleave damage modifier for additional attacks: 75% of base damage |