X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fbattle%2FBattleState.cpp;h=bf2d2c1ff1c6d084cef55c91fdc6b7b038a588ad;hb=fa2eb577b1b5356b8f4b1c23b52f673900ae6b71;hp=95f2f118d9e618f45b928180bad1698240b0969d;hpb=d4609ba1798d82cce128b5985d60cb212b760246;p=l2e.git diff --git a/src/battle/BattleState.cpp b/src/battle/BattleState.cpp index 95f2f11..bf2d2c1 100644 --- a/src/battle/BattleState.cpp +++ b/src/battle/BattleState.cpp @@ -211,7 +211,6 @@ void BattleState::ExitState(Application &ctrl, SDL_Surface *screen) { } void BattleState::ResumeState(Application &ctrl, SDL_Surface *screen) { - // TODO: check for victory or defeat if (ranAway) { ctrl.PopState(); // quit the battle scene return; @@ -279,6 +278,10 @@ void BattleState::CalculateAttackOrder() { } void BattleState::NextAttack() { + if (Victory() || Defeat()) { + attackCursor = attackOrder.size(); + return; + } ++attackCursor; while (attackCursor < int(attackOrder.size())) { if (attackOrder[attackCursor].isMonster) { @@ -376,15 +379,20 @@ void BattleState::ApplyDamage() { TargetSelection &ts(ac.Selection()); if (ts.TargetsEnemies()) { for (int i(0); i < MaxMonsters(); ++i) { + Monster &monster(MonsterAt(i)); if (ts.IsBad(i)) { - MonsterAt(i).SubtractHealth(ts.GetAmount(i)); - // TODO: collect reward if dead + monster.SubtractHealth(ts.GetAmount(i)); + if (monster.Health() == 0) { + expReward += monster.ExpReward(); + goldReward += monster.GoldReward(); + } } } } else { for (int i(0); i < NumHeroes(); ++i) { + Hero &hero(HeroAt(i)); if (ts.IsBad(i)) { - HeroAt(i).SubtractHealth(ts.GetAmount(i)); + hero.SubtractHealth(ts.GetAmount(i)); } } }