Support for experience sharing.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-05-24 13:36:45 +02:00
parent d6792635f9
commit 0d111739f4
6 changed files with 76 additions and 7 deletions

View File

@@ -258,3 +258,19 @@ void AngelScriptScript::ModifyCriticalStage(CreatureLib::Battling::ExecutingAtta
ctx->SetArgAddress(3, critStage);
})
}
void AngelScriptScript::ModifyExperienceGain(CreatureLib::Battling::Creature* faintedMon,
CreatureLib::Battling::Creature* winningMon, uint32_t* experienceGain) {
CALL_HOOK(ModifyExperienceGain, {
ctx->SetArgObject(0, (void*)faintedMon);
ctx->SetArgObject(1, (void*)winningMon);
ctx->SetArgAddress(2, experienceGain);
})
}
void AngelScriptScript::DoesShareExperience(CreatureLib::Battling::Creature* faintedMon,
CreatureLib::Battling::Creature* winningMon, bool* shareExperience) {
CALL_HOOK(DoesShareExperience, {
ctx->SetArgObject(0, (void*)faintedMon);
ctx->SetArgObject(1, (void*)winningMon);
ctx->SetArgAddress(2, shareExperience);
})
}

View File

@@ -104,6 +104,11 @@ public:
void ModifyCriticalStage(CreatureLib::Battling::ExecutingAttack* attack, CreatureLib::Battling::Creature* target,
uint8_t hit, uint8_t* critStage) override;
void ModifyExperienceGain(CreatureLib::Battling::Creature* faintedMon, CreatureLib::Battling::Creature* winningMon,
uint32_t* experienceGain) override;
void DoesShareExperience(CreatureLib::Battling::Creature* faintedMon, CreatureLib::Battling::Creature* winningMon,
bool* shareExperience) override;
};
#undef CALL_HOOK

View File

@@ -131,6 +131,10 @@ public:
SCRIPT_HOOK_FUNCTION(
ModifyCriticalStage,
"void ModifyCriticalStage(ExecutingMove@ attack, Pokemon@ target, uint8 hit, uint8& critStage)");
SCRIPT_HOOK_FUNCTION(ModifyExperienceGain,
"void ModifyExperienceGain(Pokemon@ faintedMon, Pokemon@ winningMon, uint32& critStage)");
SCRIPT_HOOK_FUNCTION(DoesShareExperience,
"void DoesShareExperience(Pokemon@ faintedMon, Pokemon@ winningMon, bool& shareExperience)");
};
#undef SCRIPT_HOOK_FUNCTION

View File

@@ -39,6 +39,8 @@ shared abstract class PkmnScript {
// PkmnLib methods
void ModifyCriticalStage(ExecutingMove@ attack, Pokemon@ target, uint8 hit, uint8& critStage){};
void ModifyExperienceGain(Pokemon@ faintedMon, Pokemon@ winningMon, uint32& critStage){};
void DoesShareExperience(Pokemon@ faintedMon, Pokemon@ winningMon, bool& shareExperience){};
}
)");
assert(r >= 0);