Implemented better script handling.

This commit is contained in:
2019-11-09 12:15:45 +01:00
parent c3bfbb569e
commit ee14efe22e
7 changed files with 121 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
#include "TurnHandler.hpp"
#include "../Models/Battle.hpp"
#include "../../Core/Exceptions/NotImplementedException.hpp"
#include "../ScriptHandling/ScriptMacros.cpp"
using namespace CreatureLib::Battling;
@@ -78,15 +79,15 @@ void TurnHandler::ExecuteAttackChoice(const AttackTurnChoice *choice) {
void TurnHandler::HandleAttackForTarget(ExecutingAttack &attack, Creature *target, ExecutingAttack::TargetData &targetData) {
//HOOK: Check if attack fails on target
target->ExecuteScripts(Hook::IncomingAttackFails, {std::any(attack), std::any(target)});
std::array<ScriptSource*, 1> sources = {target};
HOOK(OnIncomingAttackFails, sources, &attack, target);
//HOOK: Check if target is invulnerable
target->ExecuteScripts(Hook::IsInvulnerable, {std::any(attack), std::any(target)});
HOOK(IsInvulnerable, sources, &attack, target);
if (!targetData.IsHit()){
//HOOK: On attack miss.
target->ExecuteScripts(Hook::AttackMiss, {std::any(attack), std::any(target)});
HOOK(OnAttackMiss, sources, &attack, target);
return;
}