29 lines
1.3 KiB
C++
29 lines
1.3 KiB
C++
#include "MiscLibrary.hpp"
|
|
#include <CreatureLib/Battling/Models/Battle.hpp>
|
|
#include <CreatureLib/Battling/TurnChoices/AttackTurnChoice.hpp>
|
|
#include "../PkmnScriptHook.hpp"
|
|
|
|
bool PkmnLib::Battling::MiscLibrary::IsCritical(CreatureLib::Battling::ExecutingAttack* attack,
|
|
CreatureLib::Battling::Creature* target, uint8_t hit) const {
|
|
uint8_t critStage = 0;
|
|
PKMN_HOOK(ModifyCriticalStage, attack, attack, target, hit, &critStage);
|
|
Ensure(target->GetBattle().HasValue());
|
|
auto rand = target->GetBattle().GetValue()->GetRandom();
|
|
switch (critStage) {
|
|
case 0: return rand->Get(24) == 0;
|
|
case 1: return rand->Get(8) == 0;
|
|
case 2: return rand->Get(2) == 0;
|
|
default: return true;
|
|
}
|
|
}
|
|
|
|
bool PkmnLib::Battling::MiscLibrary::CanFlee(CreatureLib::Battling::FleeTurnChoice* switchChoice) const {
|
|
return CreatureLib::Battling::MiscLibrary::CanFlee(switchChoice);
|
|
}
|
|
|
|
CreatureLib::Battling::BaseTurnChoice*
|
|
PkmnLib::Battling::MiscLibrary::ReplacementAttack(CreatureLib::Battling::Creature* user,
|
|
CreatureLib::Battling::CreatureIndex target) const {
|
|
return new CreatureLib::Battling::AttackTurnChoice(user, GetReplacementAttack(), target);
|
|
}
|