Namespace BattleSystem.Moves.Psychic

    Public Class MirrorCoat

        Inherits Attack

        Public Sub New()
            '#Definitions
            Me.Type = New Element(Element.Types.Psychic)
            Me.ID = 243
            Me.OriginalPP = 20
            Me.CurrentPP = 20
            Me.MaxPP = 20
            Me.Power = 0
            Me.Accuracy = 100
            Me.Category = Categories.Physical
            Me.ContestCategory = ContestCategories.Cool
            Me.Name = Localization.GetString("move_name_" & Me.ID,"Mirror Coat")
            Me.Description = "A retaliation move that counters any special attack, inflicting double the damage taken."
            Me.CriticalChance = 0
            Me.IsHMMove = False
            Me.Target = Targets.OneAdjacentTarget
            Me.Priority = -5
            Me.TimesToAttack = 1
            '#End

            '#SpecialDefinitions
            Me.MakesContact = False
            Me.ProtectAffected = True
            Me.MagicCoatAffected = False
            Me.SnatchAffected = False
            Me.MirrorMoveAffected = False
            Me.KingsrockAffected = False
            Me.CounterAffected = False

            Me.DisabledWhileGravity = False
            Me.UseEffectiveness = True
            Me.ImmunityAffected = True
            Me.HasSecondaryEffect = False
            Me.RemovesOwnFrozen = False

            Me.IsHealingMove = False
            Me.IsRecoilMove = False

            Me.IsDamagingMove = True
            Me.IsProtectMove = False


            Me.IsAffectedBySubstitute = True
            Me.IsOneHitKOMove = False
            Me.IsWonderGuardAffected = True
            '#End

            Me.AIField1 = AIField.Support
            Me.AIField2 = AIField.Nothing
        End Sub

        Public Overrides Function MoveFailBeforeAttack(Own As Boolean, BattleScreen As BattleScreen) As Boolean
            Dim damage As Integer = BattleScreen.FieldEffects.OwnLastDamage
            If Own = True Then
                damage = BattleScreen.FieldEffects.OppLastDamage
            End If

            If damage > 0 Then
                Dim lastMove As Attack = BattleScreen.FieldEffects.OwnLastMove
                If Own = True Then
                    lastMove = BattleScreen.FieldEffects.OppLastMove
                End If
                If Not lastMove Is Nothing Then
                    If lastMove.Category = Categories.Special Then
                        Return False
                    End If
                End If
            End If

            Return True
        End Function

        Public Overrides Function GetDamage(Critical As Boolean, Own As Boolean, targetPokemon As Boolean, BattleScreen As BattleScreen, Optional ExtraParameter As String = "") As Integer
            Dim damage As Integer = BattleScreen.FieldEffects.OwnLastDamage
            If Own = True Then
                damage = BattleScreen.FieldEffects.OppLastDamage
            End If

            Return damage * 2
        End Function

    End Class

End Namespace