shared abstract class PkmnScript { ref@ __owner; ref@& GetOwner(){ return __owner; }; void OnInitialize(const BattleLibrary@, const narray@){}; void Stack(){}; void OnRemove(){}; void OnBeforeTurn(BaseTurnChoice@){}; void ChangeAttack(MoveTurnChoice@, constString &inout){}; void ModifyNumberOfHits(MoveTurnChoice@, uint8 &inout){}; void PreventAttack(ExecutingMove@, bool &inout){}; void FailAttack(ExecutingMove@, bool &inout){}; void StopBeforeAttack(ExecutingMove@, bool &inout){}; void OnBeforeAttack(ExecutingMove@){}; void FailIncomingAttack(ExecutingMove@, Pokemon@, bool &inout){}; void IsInvulnerable(ExecutingMove@, Pokemon@, bool &inout){}; void OnAttackMiss(ExecutingMove@, Pokemon@){}; void ChangeAttackType(ExecutingMove@, Pokemon@, uint8, uint8 &inout){}; void ChangeEffectiveness(ExecutingMove@, Pokemon@, uint8, float &inout){}; void BlockCritical(ExecutingMove@, Pokemon@, uint8, bool &inout){}; void OnIncomingHit(ExecutingMove@, Pokemon@, uint8){}; void OnFaintingOpponent(ExecutingMove@, Pokemon@, uint8){}; void PreventStatBoostChange(Pokemon@, Statistic, int8, bool &inout){}; void ModifyStatBoostChange(Pokemon@, Statistic, int8 &inout){}; void PreventSecondaryEffects(ExecutingMove@, Pokemon@, uint8, bool &inout){}; void OnSecondaryEffect(ExecutingMove@, Pokemon@, uint8){}; void OnAfterHits(ExecutingMove@, Pokemon@){}; void PreventSelfSwitch(SwitchTurnChoice@, bool &inout){}; void ModifyEffectChance(ExecutingMove@, Pokemon@, float &inout){}; void ModifyIncomingEffectChance(ExecutingMove@, Pokemon@, float &inout){}; void OverrideBasePower(ExecutingMove@, Pokemon@, uint8, uint8 &inout){}; void ChangeDamageStatsUser(ExecutingMove@, Pokemon@, uint8, Pokemon@ &inout){}; void BypassDefensiveStat(ExecutingMove@, Pokemon@, uint8, bool &inout){}; void BypassOffensiveStat(ExecutingMove@, Pokemon@, uint8, bool &inout){}; void ModifyStatModifier(ExecutingMove@, Pokemon@, uint8, float &inout){}; void ModifyDamageModifier(ExecutingMove@, Pokemon@, uint8, float &inout){}; void OverrideDamage(ExecutingMove@, Pokemon@, uint8, uint &inout){}; void OverrideIncomingDamage(ExecutingMove@, Pokemon@, uint8, uint &inout){}; void ChangePriority(MoveTurnChoice@, int8 &inout){}; void OnFail(Pokemon@){}; void OnOpponentFail(Pokemon@){}; void PreventRunAway(FleeTurnChoice@, bool &inout){}; void PreventOpponentRunAway(FleeTurnChoice@, bool &inout){}; void PreventOpponentSwitch(SwitchTurnChoice@, bool &inout){}; void OnEndTurn(){}; void OnDamage(Pokemon@, DamageSource, uint, uint){}; void OnFaint(Pokemon@, DamageSource){}; void OnAfterHeldItemConsume(Pokemon@, const Item@){}; void PreventIncomingCritical(ExecutingMove@, Pokemon@, uint8, bool &inout){}; void ModifyCriticalStage(ExecutingMove@, Pokemon@, uint8, uint8 &inout){}; void OverrideCriticalModifier(ExecutingMove@, Pokemon@, uint8, float &inout){}; void OverrideSTABModifier(ExecutingMove@, Pokemon@, uint8, float &inout){}; void ModifyExperienceGain(Pokemon@, Pokemon@, uint &inout){}; void DoesShareExperience(Pokemon@, Pokemon@, bool &inout){}; void BlockWeather(Battle@, bool &inout){}; void OnSwitchIn(Pokemon@){}; void ModifyOffensiveStatValue(ExecutingMove@, Pokemon@, uint8, float &inout){}; void ModifyDefensiveStatValue(ExecutingMove@, Pokemon@, uint8, float &inout){}; }