shared abstract class PkmnScript { void OnInitialize(const EffectParameter@[] &in){}; 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 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 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(Pokemon@){}; 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){}; }