From 9270dcca8ce5fe398cd73b0ba7ba6a3b7a0d5df9 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 21 Nov 2021 13:29:41 +0100 Subject: [PATCH] Adds OnFaintingOpponent script hook. --- src/Battling/Flow/TurnHandler.cpp | 18 +++++++++++------- src/Battling/ScriptHandling/BattleScript.hpp | 2 ++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Battling/Flow/TurnHandler.cpp b/src/Battling/Flow/TurnHandler.cpp index e2d2740..cd06b82 100644 --- a/src/Battling/Flow/TurnHandler.cpp +++ b/src/Battling/Flow/TurnHandler.cpp @@ -26,20 +26,20 @@ void TurnHandler::RunTurn(const ArbUt::BorrowedPtr& queue, const Ar } scripts.Clear(); creature.GetValue()->GetOwnScripts(scripts); - for (auto& s : scripts) { - EXECUTE_SCRIPT_FUNC(s, OnEndTurn); + for (auto& script : scripts) { + EXECUTE_SCRIPT_FUNC(script, OnEndTurn); } } scripts.Clear(); side->GetOwnScripts(scripts); - for (auto& s : scripts) { - EXECUTE_SCRIPT_FUNC(s, OnEndTurn); + for (auto& script : scripts) { + EXECUTE_SCRIPT_FUNC(script, OnEndTurn); } } scripts.Clear(); battle->GetOwnScripts(scripts); - for (auto& s : scripts) { - EXECUTE_SCRIPT_FUNC(s, OnEndTurn); + for (auto& script : scripts) { + EXECUTE_SCRIPT_FUNC(script, OnEndTurn); } } queue->HasCompletedQueue = true; @@ -254,7 +254,11 @@ void TurnHandler::HandleAttackForTarget(ExecutingAttack* attack, const ArbUt::Bo } if (damage > 0) { target->Damage(damage, DamageSource::AttackDamage); - HOOK(OnIncomingHit, target, attack, target.GetRaw(), hitIndex); + if (!target->IsFainted()) { + HOOK(OnIncomingHit, target, attack, target.GetRaw(), hitIndex); + } else { + HOOK(OnFaintingOpponent, attack, attack, target.GetRaw(), hitIndex); + } if (attackData->HasSecondaryEffect() && !user->IsFainted()) { bool preventSecondary = false; diff --git a/src/Battling/ScriptHandling/BattleScript.hpp b/src/Battling/ScriptHandling/BattleScript.hpp index 2730c73..becd6de 100644 --- a/src/Battling/ScriptHandling/BattleScript.hpp +++ b/src/Battling/ScriptHandling/BattleScript.hpp @@ -85,6 +85,8 @@ namespace CreatureLib::Battling { virtual void OnIncomingHit([[maybe_unused]] const ExecutingAttack* attack, [[maybe_unused]] Creature* target, [[maybe_unused]] u8 hitNumber){}; + virtual void OnFaintingOpponent([[maybe_unused]] const ExecutingAttack* attack, + [[maybe_unused]] Creature* target, [[maybe_unused]] u8 hitNumber){}; virtual void PreventSecondaryEffects([[maybe_unused]] const ExecutingAttack* attack, [[maybe_unused]] Creature* target, [[maybe_unused]] u8 hitNumber,