Adds a bunch of script hooks to the damage library calculations
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-02-12 17:00:37 +01:00
parent d1efde4328
commit 48da191dfb
6 changed files with 55 additions and 22 deletions

View File

@@ -411,3 +411,24 @@ void AngelScriptScript::OnFaintingOpponent(const CreatureLib::Battling::Executin
ctx->SetArgByte(2, hitNumber);
})
}
void AngelScriptScript::ModifyOffensiveStatValue(CreatureLib::Battling::ExecutingAttack* attack,
CreatureLib::Battling::Creature* target, u8 hitIndex,
float* modifier) {
CALL_HOOK(ModifyOffensiveStatValue, {
ctx->SetArgObject(0, (void*)attack);
ctx->SetArgObject(1, (void*)target);
ctx->SetArgByte(2, hitIndex);
ctx->SetArgAddress(3, modifier);
})
}
void AngelScriptScript::ModifyDefensiveStatValue(CreatureLib::Battling::ExecutingAttack* attack,
CreatureLib::Battling::Creature* target, u8 hitIndex,
float* modifier) {
CALL_HOOK(ModifyDefensiveStatValue, {
ctx->SetArgObject(0, (void*)attack);
ctx->SetArgObject(1, (void*)target);
ctx->SetArgByte(2, hitIndex);
ctx->SetArgAddress(3, modifier);
})
}

View File

@@ -152,6 +152,11 @@ public:
bool* shareExperience) override;
void BlockWeather(CreatureLib::Battling::Battle* battle, bool* blockWeather) override;
void ModifyOffensiveStatValue(CreatureLib::Battling::ExecutingAttack* attack,
CreatureLib::Battling::Creature* target, u8 hitIndex, float* modifier) override;
void ModifyDefensiveStatValue(CreatureLib::Battling::ExecutingAttack* attack,
CreatureLib::Battling::Creature* target, u8 hitIndex, float* modifier) override;
};
#undef CALL_HOOK

View File

@@ -182,6 +182,13 @@ public:
SCRIPT_HOOK_FUNCTION(OnFaint, "void OnFaint(Pokemon@ pokemon, DamageSource damageSource)");
SCRIPT_HOOK_FUNCTION(BlockWeather, "void BlockWeather(Battle@ battle, bool& result)");
SCRIPT_HOOK_FUNCTION(OnSwitchIn, "void OnSwitchIn(Pokemon@ pokemon)");
SCRIPT_HOOK_FUNCTION(
ModifyOffensiveStatValue,
"void ModifyOffensiveStatValue(ExecutingMove@ attack, Pokemon@ target, uint8 hit, float& offensiveStatValue)");
SCRIPT_HOOK_FUNCTION(
ModifyDefensiveStatValue,
"void ModifyDefensiveStatValue(ExecutingMove@ attack, Pokemon@ target, uint8 hit, float& defensiveStatValue)");
};
#undef SCRIPT_HOOK_FUNCTION

View File

@@ -69,6 +69,9 @@ shared abstract class PkmnScript {
void DoesShareExperience(Pokemon@ faintedMon, Pokemon@ winningMon, bool& shareExperience){};
void BlockWeather(Battle@ battle, bool& blockWeather){};
void OnSwitchIn(Pokemon@ pokemon){};
void ModifyOffensiveStatValue(ExecutingMove@ attack, Pokemon@ target, uint8 hit, float& offensiveStatValue){};
void ModifyDefensiveStatValue(ExecutingMove@ attack, Pokemon@ target, uint8 hit, float& defensiveStatValue){};
}
)");
Ensure(r >= 0);