Fixes for use after free
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -11,9 +11,11 @@ namespace PkmnLib::Battling {
|
||||
auto rate = pokemon->GetSpecies()->GetCaptureRate();
|
||||
|
||||
u8 bonusBall = 1;
|
||||
auto* itemScript = dynamic_cast<PkmnItemUseScript*>(
|
||||
pokemon->GetLibrary()->GetScriptResolver()->LoadItemScript(catchItem).GetValue());
|
||||
itemScript->ModifyPokeballCatchBonus(pokemon, &bonusBall);
|
||||
auto itemScript = pokemon->GetLibrary()->GetScriptResolver()->LoadItemScript(catchItem).As<PkmnItemUseScript>();
|
||||
if (!itemScript.HasValue()) {
|
||||
return {};
|
||||
}
|
||||
itemScript.GetValue()->ModifyPokeballCatchBonus(pokemon, &bonusBall);
|
||||
|
||||
u8 bonusStatus = 1;
|
||||
PKMN_HOOK(ModifyCaptureRateBonus, pokemon, pokemon, catchItem, &bonusStatus);
|
||||
|
||||
@@ -83,7 +83,7 @@ void PkmnLib::Battling::Pokemon::AttemptCapture(PkmnLib::Library::Item* catchIte
|
||||
Ensure(_battleData.Side.HasValue());
|
||||
Ensure(!IsFainted());
|
||||
Ensure(IsUsable());
|
||||
Ensure(!GetBattleSide().GetValue()->IsSlotUnfillabe(this)) auto captureLibrary =
|
||||
auto captureLibrary =
|
||||
GetLibrary().ForceAs<const BattleLibrary>()->GetCaptureLibrary();
|
||||
auto result = captureLibrary->TryCatch(this, catchItem, _battleData.Battle.GetValue()->GetRandom());
|
||||
_battleData.Battle.GetValue()->TriggerEventListener<CaptureAttemptEvent>(this, result);
|
||||
|
||||
Reference in New Issue
Block a user