From 7b73cc018371817cb29f658ac94e8863aa6e1656 Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Sun, 19 Aug 2012 22:01:14 +0200 Subject: [PATCH] added support for defend action in damage calculation --- src/battle/BattleState.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/battle/BattleState.cpp b/src/battle/BattleState.cpp index e72fbf9..7ea17d8 100644 --- a/src/battle/BattleState.cpp +++ b/src/battle/BattleState.cpp @@ -288,23 +288,26 @@ void BattleState::NextAttack() { } void BattleState::CalculateDamage() { + AttackChoice &ac(CurrentAttack().isMonster ? monsterAttacks[CurrentAttack().index] : AttackChoiceAt(CurrentAttack().index)); + if (ac.GetType() == AttackChoice::DEFEND) return; + if (CurrentAttack().isMonster) { const Stats &attackerStats(MonsterAt(CurrentAttack().index).GetStats()); // TODO: run monster's attack script - monsterAttacks[CurrentAttack().index].SetType(AttackChoice::SWORD); - monsterAttacks[CurrentAttack().index].Selection().SelectSingle(); - monsterAttacks[CurrentAttack().index].Selection().SelectHeroes(); + ac.SetType(AttackChoice::SWORD); + ac.Selection().SelectSingle(); + ac.Selection().SelectHeroes(); for (int i(0); i < NumHeroes(); ++i) { if (HeroAt(i).Health() > 0) { const Stats &defenderStats(HeroAt(i).GetStats()); Uint16 damage(CalculateDamage(attackerStats, defenderStats)); - monsterAttacks[CurrentAttack().index].Selection().SetBad(0, damage); + ac.Selection().SetBad(0, damage); break; } } } else { const Stats &attackerStats(HeroAt(CurrentAttack().index).GetStats()); - TargetSelection &ts(AttackChoiceAt(CurrentAttack().index).Selection()); + TargetSelection &ts(ac.Selection()); bool hitSome(false); if (ts.TargetsEnemies()) { for (int i(0); i < MaxMonsters(); ++i) { -- 2.39.2