diff --git a/src/ScriptResolving/AngelScript/AngelScriptScript.cpp b/src/ScriptResolving/AngelScript/AngelScriptScript.cpp index cdbaafc..e2b7404 100644 --- a/src/ScriptResolving/AngelScript/AngelScriptScript.cpp +++ b/src/ScriptResolving/AngelScript/AngelScriptScript.cpp @@ -126,6 +126,16 @@ void AngelScriptScript::BlockCritical(CreatureLib::Battling::ExecutingAttack* at }) } +void AngelScriptScript::PreventStatBoostChange(CreatureLib::Battling::Creature* target, + CreatureLib::Library::Statistic stat, int8_t diffAmount, bool* prevent) { + CALL_HOOK(PreventStatBoostChange, { + ctx->SetArgObject(0, (void*)target); + ctx->SetArgByte(1, (u8)stat); + ctx->SetArgByte(2, diffAmount); + ctx->SetArgAddress(3, prevent); + }) +} + void AngelScriptScript::ModifyStatBoostChange(CreatureLib::Battling::Creature* target, CreatureLib::Library::Statistic stat, int8_t* diffAmount) { CALL_HOOK(ModifyStatBoostChange, { diff --git a/src/ScriptResolving/AngelScript/AngelScriptScript.hpp b/src/ScriptResolving/AngelScript/AngelScriptScript.hpp index a2aea86..24e64a4 100644 --- a/src/ScriptResolving/AngelScript/AngelScriptScript.hpp +++ b/src/ScriptResolving/AngelScript/AngelScriptScript.hpp @@ -79,6 +79,8 @@ public: void ChangeEffectiveness(CreatureLib::Battling::ExecutingAttack* attack, CreatureLib::Battling::Creature* target, uint8_t hitNumber, float* effectiveness) override; + void PreventStatBoostChange(CreatureLib::Battling::Creature* target, CreatureLib::Library::Statistic stat, + int8_t diffAmount, bool* prevent) override; void ModifyStatBoostChange(CreatureLib::Battling::Creature* target, CreatureLib::Library::Statistic stat, int8_t* diffAmount) override; void PreventSecondaryEffects(const CreatureLib::Battling::ExecutingAttack* attack, diff --git a/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp b/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp index bc5b664..5f30073 100644 --- a/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp +++ b/src/ScriptResolving/AngelScript/AngelScriptTypeInfo.hpp @@ -112,6 +112,8 @@ public: "void ChangeEffectiveness(ExecutingMove@ attack, Pokemon@ target, uint8 hit, float& effectiveness)"); SCRIPT_HOOK_FUNCTION(BlockCritical, "void BlockCritical(ExecutingMove@ attack, Pokemon@ target, uint8 hit, bool& blockCritical)"); + SCRIPT_HOOK_FUNCTION(PreventStatBoostChange, + "void PreventStatBoostChange(Pokemon@ target, Statistic stat, int8 amount, bool& prevent)"); SCRIPT_HOOK_FUNCTION(ModifyStatBoostChange, "void ModifyStatBoostChange(Pokemon@ target, Statistic stat, int8& amount)"); SCRIPT_HOOK_FUNCTION( diff --git a/src/ScriptResolving/AngelScript/TypeRegistry/BasicScriptClass.cpp b/src/ScriptResolving/AngelScript/TypeRegistry/BasicScriptClass.cpp index 4a5e6bf..07de88c 100644 --- a/src/ScriptResolving/AngelScript/TypeRegistry/BasicScriptClass.cpp +++ b/src/ScriptResolving/AngelScript/TypeRegistry/BasicScriptClass.cpp @@ -29,6 +29,7 @@ shared abstract class PkmnScript { void BlockCritical(ExecutingMove@ attack, Pokemon@ target, uint8 hit, bool& blockCritical){}; void OnIncomingHit(ExecutingMove@ attack, Pokemon@ target, uint8 hit){}; void OnFaintingOpponent(ExecutingMove@ attack, Pokemon@ target, uint8 hit){}; + void PreventStatBoostChange(Pokemon@ target, Statistic stat, int8 amount, bool& prevent){}; void ModifyStatBoostChange(Pokemon@ target, Statistic stat, int8& amount){}; void PreventSecondaryEffects(ExecutingMove@ attack, Pokemon@ target, uint8 hit, bool& outResult){}; void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit){};