namespace Gen7 { [Ability effect=Anticipation] class Anticipation : PkmnScript { void OnSwitchIn(Pokemon@ pokemon){ if (DoesOpponentHaveSuperEffectiveMove(pokemon.Battle, pokemon)){ // TODO: Shudder } } bool DoesOpponentHaveSuperEffectiveMove(Battle@ battle, Pokemon@ pokemon){ bool hasSuperEffectiveMove = false; auto typeLib = battle.Library.StaticLibrary.TypeLibrary; for (uint64 i = 0; i < battle.Sides.Length && !hasSuperEffectiveMove; i++){ auto side = battle.Sides[i]; if (side is pokemon.BattleSide){ continue; } for (uint64 j = 0; j < side.Pokemon.Length && !hasSuperEffectiveMove; j++){ auto opponent = side.Pokemon[j]; if (opponent is null || opponent.IsFainted){ continue; } for (uint64 k = 0; k < opponent.Moves.Length && !hasSuperEffectiveMove; k++){ auto move = opponent.Moves[k]; if (move !is null && typeLib.GetEffectiveness(move.MoveData.Type, pokemon) > 1){ hasSuperEffectiveMove = true; break; } } } } return hasSuperEffectiveMove; } } }