summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/melee_attack.cc
diff options
context:
space:
mode:
authorelliptic <hyperelliptical@gmail.com>2014-05-07 13:25:12 -0400
committerelliptic <hyperelliptical@gmail.com>2014-05-07 13:25:12 -0400
commitf9dfbfbb52568ade24638eff1d8e6db817ca550a (patch)
tree4f17afece37d813f30f25fc31553039890707a12 /crawl-ref/source/melee_attack.cc
parent167b67a7dc8d7dafb67f5636fe167065640b028d (diff)
downloadcrawl-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.cc5
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