From c79f92b3e8879b21a71c912b73e81772645567c5 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com>
Date: Sun, 22 Aug 2021 20:17:36 +0200
Subject: [PATCH 01/57] Battle Animations 22-08-2021

Made the Battle Animation implementation functional
Added animations for:
Stats Increasing
Stats Decreasing
Status Effects
- Poisoned
- Burned
Attacks
- Ember
- Growl
- Pound
- Tackle
- Poison Sting
---
 P3D/Battle/BattleSystemV2/Battle.vb       | 1005 +++++++++++++--------
 P3D/Pokemon/Attacks/Attack.vb             |   28 +-
 P3D/Pokemon/Attacks/Fire/Ember.vb         |   50 +-
 P3D/Pokemon/Attacks/Normal/Growl.vb       |    9 +
 P3D/Pokemon/Attacks/Normal/Pound.vb       |    7 +
 P3D/Pokemon/Attacks/Normal/Tackle.vb      |   13 +
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb |   30 +
 7 files changed, 763 insertions(+), 379 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 0b0fb2977..2b322aaa2 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1496,7 +1496,7 @@
             End If
 
             'Own Pokémon move animation! This displays any effects that should display on the user of the move.
-            moveUsed.UserPokemonMoveAnimation(BattleScreen)
+            moveUsed.UserPokemonMoveAnimation(BattleScreen, own)
 
             If moveUsed.Target <> Attack.Targets.Self And moveUsed.FocusOppPokemon = True Then
                 If own = True Then
@@ -1849,7 +1849,7 @@
                     End If
 
                     'Opp Pokémon move animation! This displays the move effects that target the other Pokémon and appear after the camera switched around.
-                    moveUsed.OpponentPokemonMoveAnimation(BattleScreen)
+                    moveUsed.OpponentPokemonMoveAnimation(BattleScreen, own)
 
                     If moveUsed.IsDamagingMove = True Then
                         ChangeCameraAngle(2, own, BattleScreen)
@@ -2643,9 +2643,12 @@
         Public Function InflictBurn(ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String) As Boolean
             Dim p As Pokemon = BattleScreen.OwnPokemon
             Dim op As Pokemon = BattleScreen.OppPokemon
+            Dim pNPC As Entity = BattleScreen.OwnPokemonNPC
+
             If own = False Then
                 p = BattleScreen.OppPokemon
                 op = BattleScreen.OwnPokemon
+                pNPC = BattleScreen.OppPokemonNPC
             End If
 
             If p.HP <= 0 OrElse p.Status = Pokemon.StatusProblems.Fainted Then
@@ -2701,7 +2704,15 @@
                                 'Works!
                                 p.Status = Pokemon.StatusProblems.Burn
                                 ChangeCameraAngle(1, own, BattleScreen)
-                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Burned", False))
+                                'Burn animation
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+                                BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                                BattleScreen.BattleQuery.Add(BurnAnimation)
                                 Select Case message
                                     Case "" 'Print default message only
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
@@ -3399,7 +3410,28 @@
                 End If
             End If
 
-            '***SHOW STAT INCREASE ANIMATION HERE***
+            '***STAT INCREASE ANIMATION***
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim maxAmount As Integer = 20 * val
+            Dim currentAmount As Integer = 0
+            While currentAmount <= maxAmount
+                Dim Texture As String = "Textures\Battle\StatChange\statDown"
+                Dim Position As Vector3 = New Vector3(0, -0.4, 0)
+                Dim Destination As Vector3 = New Vector3(0, 0.8, 0)
+                Dim Scale As Vector3 = New Vector3(0.2F)
+                Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+                Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+
+                Position.X = xPos
+                Position.Z = zPos
+                Destination.X = xPos
+                Destination.Z = zPos
+                Dim startDelay As Double = 5.0 * Random.NextDouble()
+                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                Threading.Interlocked.Increment(currentAmount)
+            End While
+            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
+            BattleScreen.BattleQuery.Add(MoveAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -3660,8 +3692,28 @@
                     val = 6 + statC
                 End If
             End If
+            '***STAT DECREASE ANIMATION***
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim maxAmount As Integer = 20 * val
+            Dim currentAmount As Integer = 0
+            While currentAmount <= maxAmount
+                Dim Texture As String = "Textures\Battle\StatChange\statDown"
+                Dim Position As Vector3 = New Vector3(0, 0.8, 0)
+                Dim Destination As Vector3 = New Vector3(0, -0.4, 0)
+                Dim Scale As Vector3 = New Vector3(0.2F)
+                Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+                Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-            '***SHOW STAT DECREASE ANIMATION HERE***
+                Position.X = xPos
+                Position.Z = zPos
+                Destination.X = xPos
+                Destination.Z = zPos
+                Dim startDelay As Double = 5.0 * Random.NextDouble()
+                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                Threading.Interlocked.Increment(currentAmount)
+            End While
+            MoveAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -5295,14 +5347,48 @@
                     Else
                         If .OwnPokemon.Ability.Name.ToLower() <> "magic guard" Then
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
-                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                'Poison animation
+                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
+                                BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP / 8), True, True, BattleScreen, "The poison hurt " & .OwnPokemon.GetDisplayName() & ".", "poison")
                             End If
 
                             If .OwnPokemon.Status = Pokemon.StatusProblems.BadPoison Then 'Own Toxic
                                 .FieldEffects.OwnPoisonCounter += 1
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
-                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                'Poison animation
+                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
+                                BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP * multiplier), True, True, BattleScreen, "The toxic hurt " & .OwnPokemon.GetDisplayName() & ".", "badpoison")
                             End If
                         End If
@@ -5317,7 +5403,16 @@
                                 reduceAmount = CInt(.OwnPokemon.MaxHP / 32)
                             End If
 
-                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Burned", False))
+                            'Burn animation
+                            Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
+                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                            BattleScreen.BattleQuery.Add(BurnAnimation)
+                            'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
                     End If
@@ -6044,14 +6139,48 @@
                     Else
                         If .OppPokemon.Ability.Name.ToLower() <> "magic guard" Then
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
-                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                'Poison animation
+                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
+                                BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP / 8), False, False, BattleScreen, "The poison hurt " & .OppPokemon.GetDisplayName() & ".", "poison")
                             End If
 
                             If .OppPokemon.Status = Pokemon.StatusProblems.BadPoison Then 'Opp Toxic
                                 .FieldEffects.OppPoisonCounter += 1
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
-                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                'Poison animation
+                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
+                                BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
                             End If
                         End If
@@ -6065,8 +6194,16 @@
                             If .OppPokemon.Ability.Name.ToLower() = "heatproof" Then
                                 reduceAmount = CInt(.OppPokemon.MaxHP / 16)
                             End If
-
-                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Burned", False))
+                            'Burn animation
+                            Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
+                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                            BattleScreen.BattleQuery.Add(BurnAnimation)
+                            'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
                     End If
@@ -6620,8 +6757,8 @@
 			End If
 		End Sub
 
-        Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
-            HasSwitchedInOwn = True
+		Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
+			HasSwitchedInOwn = True
             If FirstTime = False Then
                 Dim insertMessage As String = message
 
@@ -6631,6 +6768,34 @@
 
                 BattleScreen.AddToQuery(InsertIndex, New TextQueryObject(insertMessage))
 
+                Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
+
+                ' Ball Closes
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                Dim SmokeReturned As Integer = 0
+                Do
+                    Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                    Dim SmokeDestination = New Vector3(0, 0, 0)
+
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+
+                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Threading.Interlocked.Increment(SmokeReturned)
+                Loop While SmokeReturned <= 38
+
+                ' Pokemon disappears
+                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
+                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+
+                ' Ball returns
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+
+                BattleScreen.AddToQuery(InsertIndex, BallReturn)
+
                 Dim index As Integer = NewPokemonIndex
                 If index <= -1 Then
                     For i = 0 To Core.Player.Pokemons.Count - 1
@@ -6655,435 +6820,547 @@
                 End If
 
                 Dim ownModel As String = BattleScreen.GetModelName(True)
-
                 If ownModel = "" Then
                     BattleScreen.AddToQuery(InsertIndex, New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OwnPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OwnPokemon), 0, 1, -1, -1))
                 Else
                     BattleScreen.AddToQuery(InsertIndex, New ToggleEntityQueryObject(True, ownModel, 1, 0, -1, -1))
                 End If
 
-                BattleScreen.AddToQuery(InsertIndex, New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OwnPokemon, 1, -1, -1, -1, -1))
-                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(BattleScreen.OwnPokemon.Number.ToString(), True))
                 BattleScreen.AddToQuery(InsertIndex, New TextQueryObject("Go, " & BattleScreen.OwnPokemon.GetDisplayName() & "!"))
+
+                ' Ball is thrown
+                Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+
+                ' Ball Opens
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                Dim SmokeSpawned As Integer = 0
+                Do
+                    Dim SmokePosition = New Vector3(0, 0.35, 0)
+                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+
+                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    Threading.Interlocked.Increment(SmokeSpawned)
+                Loop While SmokeSpawned <= 38
+
+                ' Pokemon appears
+                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
+                BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
+
+                '  Pokémon falls down
+                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+
+                BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
 
             With BattleScreen
-                If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
-                    .FieldEffects.UsedPokemon.Add(NewPokemonIndex)
-                End If
+				If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
+					.FieldEffects.UsedPokemon.Add(NewPokemonIndex)
+				End If
 
-                If Not .OwnPokemon.Item Is Nothing Then
-                    If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
-                        If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
-                            BattleScreen.FieldEffects.AmuletCoin += 1
-                        End If
-                    End If
-                End If
+				If Not .OwnPokemon.Item Is Nothing Then
+					If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
+						If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
+							BattleScreen.FieldEffects.AmuletCoin += 1
+						End If
+					End If
+				End If
 
-                Dim p As Pokemon = .OwnPokemon
-                Dim op As Pokemon = .OppPokemon
+				Dim p As Pokemon = .OwnPokemon
+				Dim op As Pokemon = .OppPokemon
 
-                Dim spikeAffected As Boolean = True
-                Dim rockAffected As Boolean = True
+				Dim spikeAffected As Boolean = True
+				Dim rockAffected As Boolean = True
 
-                spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
+				spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
 
-                'Spikes
-                If spikeAffected = True Then
-                    If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-                        Dim spikeDamage As Double = 1D
-                        Select Case .FieldEffects.OppSpikes
-                            Case 1
-                                spikeDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2
-                                spikeDamage = (p.MaxHP / 100) * 16.7D
-                            Case 3
-                                spikeDamage = (p.MaxHP / 100) * 25D
-                        End Select
-                        ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-                    End If
-                End If
+				'Spikes
+				If spikeAffected = True Then
+					If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+						Dim spikeDamage As Double = 1D
+						Select Case .FieldEffects.OppSpikes
+							Case 1
+								spikeDamage = (p.MaxHP / 100) * 12.5D
+							Case 2
+								spikeDamage = (p.MaxHP / 100) * 16.7D
+							Case 3
+								spikeDamage = (p.MaxHP / 100) * 25D
+						End Select
+						ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+					End If
+				End If
 
-                'Sticky Web
-                If spikeAffected = True Then
-                    If .FieldEffects.OppStickyWeb > 0 Then
+				'Sticky Web
+				If spikeAffected = True Then
+					If .FieldEffects.OppStickyWeb > 0 Then
 
-                        LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
+						LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-                    End If
-                End If
+					End If
+				End If
 
-                'Toxic Spikes
-                If spikeAffected = True Then
-                    If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-                        Select Case .FieldEffects.OppToxicSpikes
-                            Case 1
-                                InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                            Case 2
-                                InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                        End Select
-                    End If
-                    If .FieldEffects.OppToxicSpikes > 0 Then
-                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-                            .AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-                            .FieldEffects.OppToxicSpikes = 0
-                        End If
-                    End If
-                End If
+				'Toxic Spikes
+				If spikeAffected = True Then
+					If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+						Select Case .FieldEffects.OppToxicSpikes
+							Case 1
+								InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+							Case 2
+								InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+						End Select
+					End If
+					If .FieldEffects.OppToxicSpikes > 0 Then
+						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+							.AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+							.FieldEffects.OppToxicSpikes = 0
+						End If
+					End If
+				End If
 
-                'Stealth Rock
-                If rockAffected = True Then
-                    If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-                        Dim rocksDamage As Double = 1D
+				'Stealth Rock
+				If rockAffected = True Then
+					If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+						Dim rocksDamage As Double = 1D
 
-                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-                        Select Case effectiveness
-                            Case 0.25F
-                                rocksDamage = (p.MaxHP / 100) * 3.125D
-                            Case 0.5F
-                                rocksDamage = (p.MaxHP / 100) * 6.25D
-                            Case 1.0F
-                                rocksDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2.0F
-                                rocksDamage = (p.MaxHP / 100) * 25D
-                            Case 4.0F
-                                rocksDamage = (p.MaxHP / 100) * 50D
-                        End Select
+						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+						Select Case effectiveness
+							Case 0.25F
+								rocksDamage = (p.MaxHP / 100) * 3.125D
+							Case 0.5F
+								rocksDamage = (p.MaxHP / 100) * 6.25D
+							Case 1.0F
+								rocksDamage = (p.MaxHP / 100) * 12.5D
+							Case 2.0F
+								rocksDamage = (p.MaxHP / 100) * 25D
+							Case 4.0F
+								rocksDamage = (p.MaxHP / 100) * 50D
+						End Select
 
-                        ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-                    End If
-                End If
+						ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+					End If
+				End If
 
-                TriggerAbilityEffect(BattleScreen, True)
-                TriggerItemEffect(BattleScreen, True)
+				TriggerAbilityEffect(BattleScreen, True)
+				TriggerItemEffect(BattleScreen, True)
 
-                If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
-                    .FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
-                End If
+				If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
+					.FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
+				End If
 
-                If BattleScreen.FieldEffects.OwnHealingWish = True Then
-                    BattleScreen.FieldEffects.OwnHealingWish = False
+				If BattleScreen.FieldEffects.OwnHealingWish = True Then
+					BattleScreen.FieldEffects.OwnHealingWish = False
 
-                    If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
-                        GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
-                        CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
-                    End If
-                End If
-            End With
-        End Sub
+					If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
+						GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
+						CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
+					End If
+				End If
+			End With
+		End Sub
 
-        Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
-            With BattleScreen
-                'Natural cure cures status problems
-                If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
-                    If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-                        .OppPokemon.Status = Pokemon.StatusProblems.None
-                        .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
-                    End If
-                End If
-                'Regenerator ability heals 1/3 of it's max HP
-                If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
-                    If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
-                        Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
-                        If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
-                            BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
-                        End If
-                    End If
-                End If
-                'save baton pass stuff:
-                If .FieldEffects.OppUsedBatonPass = True Then
-                    .FieldEffects.OppBatonPassStats = New List(Of Integer)
-                    With .OppPokemon
-                        BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
-                    End With
-                    .FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
-                End If
+		Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
+			With BattleScreen
+				'Natural cure cures status problems
+				If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
+					If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+						.OppPokemon.Status = Pokemon.StatusProblems.None
+						.BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
+					End If
+				End If
+				'Regenerator ability heals 1/3 of it's max HP
+				If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
+					If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
+						Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
+						If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
+							BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
+						End If
+					End If
+				End If
+				'save baton pass stuff:
+				If .FieldEffects.OppUsedBatonPass = True Then
+					.FieldEffects.OppBatonPassStats = New List(Of Integer)
+					With .OppPokemon
+						BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
+					End With
+					.FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
+				End If
 
-                'Set the original objects of Pokemon
-                .OppPokemon.ResetTemp()
+				'Set the original objects of Pokemon
+				.OppPokemon.ResetTemp()
 
-                'Remove volatiles
-                .OppPokemon.ClearAllVolatiles()
+				'Remove volatiles
+				.OppPokemon.ClearAllVolatiles()
 
-                'Resetting FieldEffects
-                With .FieldEffects
-                    .OppSleepTurns = 0
-                    .OppTruantRound = 0
-                    .OppTaunt = 0
-                    .OppSmacked = 0
-                    .OppFlashFire = 0
-                    .OppRageCounter = 0
-                    .OppUproar = 0
-                    If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
-                    .OppEndure = 0
-                    .OppProtectCounter = 0
-                    .OppDetectCounter = 0
-                    .OppKingsShieldCounter = 0
-                    .OppProtectMovesCount = 0
-                    If .OppUsedBatonPass = False Then .OppIngrain = 0
-                    If .OppUsedBatonPass = False Then .OppSubstitute = 0
-                    If .OppUsedBatonPass = False Then .OppMagnetRise = 0
-                    If .OppUsedBatonPass = False Then .OppAquaRing = 0
-                    .OppPoisonCounter = 0
-                    .OppNightmare = 0
-                    If .OppUsedBatonPass = False Then .OppCurse = 0
-                    .OppOutrage = 0
-                    .OppThrash = 0
-                    .OppPetalDance = 0
-                    .OppEncore = 0
-                    .OppEncoreMove = Nothing
-                    If .OppUsedBatonPass = False Then .OppEmbargo = 0
-                    .OppYawn = 0
-                    If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
-                    .OppConfusionTurns = 0
-                    .OppTorment = 0
-                    .OppTormentMove = Nothing
-                    .OppChoiceMove = Nothing
-                    .OppRecharge = 0
-                    .OppRolloutCounter = 0
-                    .OppIceBallCounter = 0
-                    .OppDefenseCurl = 0
-                    .OppCharge = 0
-                    .OppSolarBeam = 0
-                    .OppSolarBlade = 0
-                    If .OppUsedBatonPass = False Then .OppLeechSeed = 0
-                    If .OppUsedBatonPass = False Then .OppLockOn = 0
-                    .OppLansatBerry = 0
-                    .OppCustapBerry = 0
-                    .OppTrappedCounter = 0
-                    .OppFuryCutter = 0
-                    .OppEchoedVoice = 0
-                    .OppPokemonTurns = 0
-                    .OppStockpileCount = 0
-                    .OppDestinyBond = False
-                    .OppGastroAcid = False
+				'Resetting FieldEffects
+				With .FieldEffects
+					.OppSleepTurns = 0
+					.OppTruantRound = 0
+					.OppTaunt = 0
+					.OppSmacked = 0
+					.OppRageCounter = 0
+					.OppUproar = 0
+					If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
+					.OppEndure = 0
+					.OppProtectCounter = 0
+					.OppDetectCounter = 0
+					.OppKingsShieldCounter = 0
+					.OppProtectMovesCount = 0
+					If .OppUsedBatonPass = False Then .OppIngrain = 0
+					If .OppUsedBatonPass = False Then .OppSubstitute = 0
+					If .OppUsedBatonPass = False Then .OppMagnetRise = 0
+					If .OppUsedBatonPass = False Then .OppAquaRing = 0
+					.OppPoisonCounter = 0
+					.OppNightmare = 0
+					If .OppUsedBatonPass = False Then .OppCurse = 0
+					.OppOutrage = 0
+					.OppThrash = 0
+					.OppPetalDance = 0
+					.OppEncore = 0
+					.OppEncoreMove = Nothing
+					If .OppUsedBatonPass = False Then .OppEmbargo = 0
+					.OppYawn = 0
+					If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
+					.OppConfusionTurns = 0
+					.OppTorment = 0
+					.OppTormentMove = Nothing
+					.OppChoiceMove = Nothing
+					.OppRecharge = 0
+					.OppRolloutCounter = 0
+					.OppIceBallCounter = 0
+					.OppDefenseCurl = 0
+					.OppCharge = 0
+					.OppSolarBeam = 0
+					.OppSolarBlade = 0
+					If .OppUsedBatonPass = False Then .OppLeechSeed = 0
+					If .OppUsedBatonPass = False Then .OppLockOn = 0
+					.OppLansatBerry = 0
+					.OppCustapBerry = 0
+					.OppTrappedCounter = 0
+					.OppFuryCutter = 0
+					.OppEchoedVoice = 0
+					.OppPokemonTurns = 0
+					.OppStockpileCount = 0
+					.OppDestinyBond = False
+					.OppGastroAcid = False
 
-                    .OppFlyCounter = 0
-                    .OppDigCounter = 0
-                    .OppBounceCounter = 0
-                    .OppDiveCounter = 0
-                    .OppShadowForceCounter = 0
-                    .OppPhantomForceCounter = 0
-                    .OppSkyDropCounter = 0
-                    .OppGeomancyCounter = 0
-                    .OppSkyAttackCounter = 0
-                    .OppRazorWindCounter = 0
-                    .OppSkullBashCounter = 0
+					.OppFlyCounter = 0
+					.OppDigCounter = 0
+					.OppBounceCounter = 0
+					.OppDiveCounter = 0
+					.OppShadowForceCounter = 0
+					.OppPhantomForceCounter = 0
+					.OppSkyDropCounter = 0
+					.OppGeomancyCounter = 0
+					.OppSkyAttackCounter = 0
+					.OppRazorWindCounter = 0
+					.OppSkullBashCounter = 0
 
-                    .OppForesight = 0
-                    .OppOdorSleuth = 0
-                    .OppMiracleEye = 0
+					.OppForesight = 0
+					.OppOdorSleuth = 0
+					.OppMiracleEye = 0
 
-                    .OppWrap = 0
-                    .OppWhirlpool = 0
-                    .OppBind = 0
-                    .OppClamp = 0
-                    .OppFireSpin = 0
-                    .OppMagmaStorm = 0
-                    .OppSandTomb = 0
-                    .OppInfestation = 0
+					.OppWrap = 0
+					.OppWhirlpool = 0
+					.OppBind = 0
+					.OppClamp = 0
+					.OppFireSpin = 0
+					.OppMagmaStorm = 0
+					.OppSandTomb = 0
+					.OppInfestation = 0
 
-                    .OppBideCounter = 0
-                    .OppBideDamage = 0
+					.OppBideCounter = 0
+					.OppBideDamage = 0
 
-                    .OppRoostUsed = False
+					.OppRoostUsed = False
 
-                    'Own stuff that depends on opp pokemon presence
-                    .OwnTrappedCounter = 0
-                    .OwnWrap = 0
-                    .OwnWhirlpool = 0
-                    .OwnBind = 0
-                    .OwnClamp = 0
-                    .OwnFireSpin = 0
-                    .OwnMagmaStorm = 0
-                    .OwnSandTomb = 0
-                    .OwnInfestation = 0
+					'Own stuff that depends on opp pokemon presence
+					.OwnTrappedCounter = 0
+					.OwnWrap = 0
+					.OwnWhirlpool = 0
+					.OwnBind = 0
+					.OwnClamp = 0
+					.OwnFireSpin = 0
+					.OwnMagmaStorm = 0
+					.OwnSandTomb = 0
+					.OwnInfestation = 0
 
-                    If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
-                        BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
-                    End If
-                End With
-            End With
+					If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
+						BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
+					End If
+				End With
+			End With
 
-            BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
+			BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
 
-            If BattleScreen.IsTrainerBattle = False Then
+			If BattleScreen.IsTrainerBattle = False Then
                 ChangeCameraAngle(1, False, BattleScreen)
+                Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+                Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                Faint.AnimationMovePokemonEntity(0, -1, 0, 0.1, False, False, 2, 0,,, 4)
+                BattleScreen.BattleQuery.Add(Faint)
+
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
 
-                EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
-            Else
-                If BattleScreen.TrainerHasFightablePokemon() = True Then
-                    If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
-                        GainEXP(BattleScreen)
-                    End If
-                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
+				EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
+			Else
+				If BattleScreen.TrainerHasFightablePokemon() = True Then
+					If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
+						GainEXP(BattleScreen)
+					End If
 
                     If BattleScreen.IsRemoteBattle And BattleScreen.OppFaint Then
-                        'Next pokemon is selected by the opponent.
-                    Else
-                        SwitchInOpp(BattleScreen, False, index)
-                    End If
-                Else
-                    GainEXP(BattleScreen)
-
-                    ChangeCameraAngle(1, False, BattleScreen)
-                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
+						'Next pokemon is selected by the opponent.
+					Else
+						SwitchInOpp(BattleScreen, False, index)
+					End If
+				Else
+					GainEXP(BattleScreen)
 
                     If message = "" Then
-                        message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
-                    End If
+						message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
+					End If
 
-                    BattleScreen.BattleQuery.Add(New TextQueryObject(message))
+					BattleScreen.BattleQuery.Add(New TextQueryObject(message))
+
+                    Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+
+                    ' Ball Closes
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                    Dim SmokeReturned As Integer = 0
+                    Do
+                        Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                        Dim SmokeDestination = New Vector3(0, 0, 0)
+
+                        Dim SmokeTexture As String = "Textures\Battle\Cloud"
+
+                        Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+
+                        BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                        Threading.Interlocked.Increment(SmokeReturned)
+                    Loop While SmokeReturned <= 38
+
+                    ' Pokemon disappears
+                    BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
+                    BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+
+                    ' Ball returns
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                    BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+
+                    BattleScreen.BattleQuery.Add(BallReturn)
 
                     EndBattle(EndBattleReasons.WinTrainer, BattleScreen, False)
-                    If BattleScreen.IsRemoteBattle = True Then
-                        EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
-                    End If
-                End If
-            End If
-        End Sub
+					If BattleScreen.IsRemoteBattle = True Then
+						EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
+					End If
+				End If
+			End If
+		End Sub
 
-        Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
-            If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
-                BattleScreen.FieldEffects.OppUsedBatonPass = False
+		Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
+			If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
+				BattleScreen.FieldEffects.OppUsedBatonPass = False
 
-                BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
-                BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
-                BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
-                BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
-                BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
-                BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
-                BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
+				BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
+				BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
+				BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
+				BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
+				BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
+				BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
+				BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
 
-                If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
-                    BattleScreen.FieldEffects.OppBatonPassConfusion = False
-                    BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
-                End If
-            End If
-        End Sub
+				If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
+					BattleScreen.FieldEffects.OppBatonPassConfusion = False
+					BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
+				End If
+			End If
+		End Sub
 
-        Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
+		Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
 
-            If FirstTime = False Then
-                HasSwitchedInOpp = True
-                ChangeCameraAngle(1, False, BattleScreen)
+			If FirstTime = False Then
+				HasSwitchedInOpp = True
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
+                Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+
+                ' Ball Closes
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                Dim SmokeReturned As Integer = 0
+                Do
+                    Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                    Dim SmokeDestination = New Vector3(0, 0, 0)
+
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+
+                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Threading.Interlocked.Increment(SmokeReturned)
+                Loop While SmokeReturned <= 38
+
+                ' Pokemon disappears
+                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
+                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+
+                ' Ball returns
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+
+                BattleScreen.BattleQuery.Add(BallReturn)
+
                 BattleScreen.SendInNewTrainerPokemon(index)
-                Me.ApplyOppBatonPass(BattleScreen)
+				Me.ApplyOppBatonPass(BattleScreen)
 
-                If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
-                    BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
-                End If
+				If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
+					BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
+				End If
 
-                Dim oppShiny As String = "N"
-                If BattleScreen.OppPokemon.IsShiny = True Then
-                    oppShiny = "S"
-                End If
+				Dim oppShiny As String = "N"
+				If BattleScreen.OppPokemon.IsShiny = True Then
+					oppShiny = "S"
+				End If
 
-                Dim oppModel As String = BattleScreen.GetModelName(False)
+				Dim oppModel As String = BattleScreen.GetModelName(False)
 
-                If oppModel = "" Then
-                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
-                Else
-                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
-                End If
+				If oppModel = "" Then
+					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
+				Else
+					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
+				End If
 
-                BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
-                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(BattleScreen.OppPokemon.Number.ToString(), True))
+				BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Go, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
+
+                ' Ball is thrown
+                Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+
+                ' Ball Opens
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                Dim SmokeSpawned As Integer = 0
+                Do
+                    Dim SmokePosition = New Vector3(0, 0.35, 0)
+                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+
+                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    Threading.Interlocked.Increment(SmokeSpawned)
+                Loop While SmokeSpawned <= 38
+
+                ' Pokemon appears
+                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
+                BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+
+                '  Pokémon falls down
+                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+
+                BattleScreen.BattleQuery.Add(BallThrow)
             End If
 
-            With BattleScreen
-                Dim p As Pokemon = .OppPokemon
-                Dim op As Pokemon = .OwnPokemon
+			With BattleScreen
+				Dim p As Pokemon = .OppPokemon
+				Dim op As Pokemon = .OwnPokemon
 
-                Dim spikeAffected As Boolean = True
-                Dim rockAffected As Boolean = True
+				Dim spikeAffected As Boolean = True
+				Dim rockAffected As Boolean = True
 
-                spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
+				spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
 
-                If spikeAffected = True Then
-                    If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-                        Dim spikeDamage As Double = 1D
-                        Select Case .FieldEffects.OwnSpikes
-                            Case 1
-                                spikeDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2
-                                spikeDamage = (p.MaxHP / 100) * 16.7D
-                            Case 3
-                                spikeDamage = (p.MaxHP / 100) * 25D
-                        End Select
-                        ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-                    End If
-                End If
-                'Sticky Web
-                If spikeAffected = True Then
-                    If .FieldEffects.OwnStickyWeb > 0 Then
+				If spikeAffected = True Then
+					If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+						Dim spikeDamage As Double = 1D
+						Select Case .FieldEffects.OwnSpikes
+							Case 1
+								spikeDamage = (p.MaxHP / 100) * 12.5D
+							Case 2
+								spikeDamage = (p.MaxHP / 100) * 16.7D
+							Case 3
+								spikeDamage = (p.MaxHP / 100) * 25D
+						End Select
+						ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+					End If
+				End If
+				'Sticky Web
+				If spikeAffected = True Then
+					If .FieldEffects.OwnStickyWeb > 0 Then
 
-                        LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
+						LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-                    End If
-                End If
-                If spikeAffected = True Then
-                    If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-                        Select Case .FieldEffects.OwnToxicSpikes
-                            Case 1
-                                InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                            Case 2
-                                InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                        End Select
-                    End If
-                    If .FieldEffects.OwnToxicSpikes > 0 Then
-                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-                            .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-                            .FieldEffects.OwnToxicSpikes = 0
-                        End If
-                    End If
-                End If
+					End If
+				End If
+				If spikeAffected = True Then
+					If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+						Select Case .FieldEffects.OwnToxicSpikes
+							Case 1
+								InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+							Case 2
+								InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+						End Select
+					End If
+					If .FieldEffects.OwnToxicSpikes > 0 Then
+						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+							.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+							.FieldEffects.OwnToxicSpikes = 0
+						End If
+					End If
+				End If
 
-                If rockAffected = True Then
-                    If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-                        Dim rocksDamage As Double = 1D
+				If rockAffected = True Then
+					If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+						Dim rocksDamage As Double = 1D
 
-                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-                        Select Case effectiveness
-                            Case 0.25F
-                                rocksDamage = (p.MaxHP / 100) * 3.125D
-                            Case 0.5F
-                                rocksDamage = (p.MaxHP / 100) * 6.25D
-                            Case 1.0F
-                                rocksDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2.0F
-                                rocksDamage = (p.MaxHP / 100) * 25D
-                            Case 4.0F
-                                rocksDamage = (p.MaxHP / 100) * 50D
-                        End Select
+						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+						Select Case effectiveness
+							Case 0.25F
+								rocksDamage = (p.MaxHP / 100) * 3.125D
+							Case 0.5F
+								rocksDamage = (p.MaxHP / 100) * 6.25D
+							Case 1.0F
+								rocksDamage = (p.MaxHP / 100) * 12.5D
+							Case 2.0F
+								rocksDamage = (p.MaxHP / 100) * 25D
+							Case 4.0F
+								rocksDamage = (p.MaxHP / 100) * 50D
+						End Select
 
-                        ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-                    End If
-                End If
+						ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+					End If
+				End If
 
-                TriggerAbilityEffect(BattleScreen, False)
-                TriggerItemEffect(BattleScreen, False)
+				TriggerAbilityEffect(BattleScreen, False)
+				TriggerItemEffect(BattleScreen, False)
 
-                If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
-                    .FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
-                End If
+				If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
+					.FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
+				End If
 
-                If BattleScreen.FieldEffects.OppHealingWish = True Then
-                    BattleScreen.FieldEffects.OppHealingWish = False
+				If BattleScreen.FieldEffects.OppHealingWish = True Then
+					BattleScreen.FieldEffects.OppHealingWish = False
 
-                    If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-                        GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
-                        CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
-                    End If
-                End If
-            End With
-        End Sub
+					If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+						GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
+						CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
+					End If
+				End If
+			End With
+		End Sub
 
 #End Region
 
diff --git a/P3D/Pokemon/Attacks/Attack.vb b/P3D/Pokemon/Attacks/Attack.vb
index 35b2af5b6..cf379b4c5 100644
--- a/P3D/Pokemon/Attacks/Attack.vb
+++ b/P3D/Pokemon/Attacks/Attack.vb
@@ -1844,7 +1844,7 @@
                     'returnMove = New Moves.Fighting.MeteorAssault()
                     'Case 795
                     'returnMove = New Moves.Dragon.Eternabeam()
-                Case 796
+                    Case 796
                     returnMove = New Moves.Steel.SteelBeam()
                     'Case 797
                     'Blank
@@ -2163,23 +2163,37 @@
 
 #Region "Animation"
 
-        Public Sub UserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
+        Public Sub UserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean)
             If Core.Player.ShowBattleAnimations = 1 Then
-                Me.InternalUserPokemonMoveAnimation(BattleScreen)
+                Dim CurrentPokemon As Pokemon = BattleScreen.OwnPokemon
+                Dim CurrentEntity As NPC = BattleScreen.OwnPokemonNPC
+                Dim CurrentModel As ModelEntity = BattleScreen.OwnPokemonModel
+                If own = False Then
+                    CurrentEntity = BattleScreen.OppPokemonNPC
+                    CurrentModel = BattleScreen.OppPokemonModel
+                End If
+                Me.InternalUserPokemonMoveAnimation(BattleScreen, own, CurrentPokemon, CurrentEntity, CurrentModel)
             End If
         End Sub
 
-        Public Overridable Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
+        Public Overridable Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             'Override this method in the attack class to insert the move animation query objects into the queue.
         End Sub
 
-        Public Sub OpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
+        Public Sub OpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean)
             If Core.Player.ShowBattleAnimations = 1 Then
-                Me.InternalOpponentPokemonMoveAnimation(BattleScreen)
+                Dim CurrentPokemon As Pokemon = BattleScreen.OppPokemon
+                Dim CurrentEntity As NPC = BattleScreen.OppPokemonNPC
+                Dim CurrentModel As ModelEntity = BattleScreen.OppPokemonModel
+                If own = False Then
+                    CurrentEntity = BattleScreen.OwnPokemonNPC
+                    CurrentModel = BattleScreen.OwnPokemonModel
+                End If
+                Me.InternalOpponentPokemonMoveAnimation(BattleScreen, own, CurrentPokemon, CurrentEntity, CurrentModel)
             End If
         End Sub
 
-        Public Overridable Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen)
+        Public Overridable Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             'Override this method in the attack class to insert the move animation query objects into the queue.
         End Sub
 
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index 48a698f0d..bb5fae6fe 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -50,7 +50,6 @@
             Me.IsOneHitKOMove = False
             Me.IsWonderGuardAffected = True
             '#End
-
             Me.AIField1 = AIField.Damage
             Me.AIField2 = AIField.CanBurn
 
@@ -58,19 +57,54 @@
         End Sub
 
         Public Overrides Sub MoveHits(own As Boolean, BattleScreen As BattleScreen)
-            Dim p As Pokemon = BattleScreen.OwnPokemon
-            Dim op As Pokemon = BattleScreen.OppPokemon
-            If own = False Then
-                p = BattleScreen.OppPokemon
-                op = BattleScreen.OwnPokemon
-            End If
-
             Dim chance As Integer = GetEffectChance(0, own, BattleScreen)
             If Core.Random.Next(0, 100) < chance Then
                 BattleScreen.Battle.InflictBurn(Not own, own, BattleScreen, "", "move:ember")
             End If
         End Sub
 
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Start", 0, 0)
+            For i = 0 To 12
+                MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+                i += 1
+            Next
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
+
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+
+            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0, 0.1, 0.5, 0)
+            For i = 0 To 12
+                MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+                i += 1
+            Next
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Hit", 2, 0)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
 End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index c42633558..5c35961e3 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -62,6 +62,15 @@
             End If
         End Sub
 
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
 End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 2f542a2ab..467c5891d 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -55,6 +55,13 @@
             Me.AIField2 = AIField.Nothing
         End Sub
 
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
+            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
+
     End Class
 
 End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 36b8ca00f..6d8954700 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -52,6 +52,19 @@
             '#End
         End Sub
 
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
+            MoveAnimation.AnimationMovePokemonEntity(0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.AnimationMovePokemonEntity(0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
+
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Tackle", 0, 2)
+            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Tackle", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 2)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
 End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 7e857aa53..36622416b 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -65,6 +65,36 @@
             End If
         End Sub
 
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Start", 0, 0)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
+
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+
+            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Hit", 1, 0)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 2)
+
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
+
     End Class
 
 End Namespace
\ No newline at end of file

From 09e5661729dee9a1682d442235c688a7f3ab8c02 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sat, 2 Oct 2021 17:40:48 +0200
Subject: [PATCH 02/57] Fix Burned animation error

---
 P3D/Battle/BattleSystemV2/Battle.vb | 32 ++++++++++++++---------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 2b322aaa2..2b69ba9cc 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2705,13 +2705,13 @@
                                 p.Status = Pokemon.StatusProblems.Burn
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
-                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
                                 Select Case message
                                     Case "" 'Print default message only
@@ -5406,11 +5406,11 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
@@ -6197,11 +6197,11 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")

From b95d4d1c694b1632463acf43f2feb92e3850eaa7 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sun, 3 Oct 2021 11:02:18 +0200
Subject: [PATCH 03/57] Hit Animation + Restructure of attack sound effects +
 Absorb animation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Attack sound effects are now in the folder of the type of their attack

Pokémon flicker briefly when hit
---
 P3D/Battle/BattleSystemV2/Battle.vb           |   9 +++++++
 .../Attacks/{ => Electric}/Thunderbolt.wav    | Bin
 .../Battle/Attacks/{ => Fire}/Ember_Hit.wav   | Bin
 .../Battle/Attacks/{ => Fire}/Ember_Start.wav | Bin
 .../Battle/Attacks/{ => Flying}/Fly_Hit.wav   | Bin
 .../Battle/Attacks/{ => Flying}/Fly_Start.wav | Bin
 .../Sounds/Battle/Attacks/Grass/Absorb.wav    | Bin 0 -> 472456 bytes
 .../Battle/Attacks/{ => Normal}/Pound.wav     | Bin
 .../Battle/Attacks/{ => Normal}/Tackle.wav    | Bin
 .../Attacks/{ => Poison}/PoisonSting_Hit.wav  | Bin
 .../{ => Poison}/PoisonSting_Start.wav        | Bin
 P3D/Content/Textures/Battle/Grass/Absorb.png  | Bin 0 -> 258 bytes
 P3D/P3D.vbproj                                |  24 +++++++++++-------
 P3D/Pokemon/Attacks/Fire/Ember.vb             |   4 +--
 P3D/Pokemon/Attacks/Grass/Absorb.vb           |  16 ++++++++++++
 P3D/Pokemon/Attacks/Normal/Pound.vb           |   2 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb          |   2 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb     |   4 +--
 P3D/Screens/Pokemon/HatchEggScreen.vb         |   2 +-
 P3D/World/World.vb                            |   2 +-
 20 files changed, 48 insertions(+), 17 deletions(-)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Electric}/Thunderbolt.wav (100%)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Fire}/Ember_Hit.wav (100%)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Fire}/Ember_Start.wav (100%)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Flying}/Fly_Hit.wav (100%)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Flying}/Fly_Start.wav (100%)
 create mode 100644 P3D/Content/Sounds/Battle/Attacks/Grass/Absorb.wav
 rename P3D/Content/Sounds/Battle/Attacks/{ => Normal}/Pound.wav (100%)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Normal}/Tackle.wav (100%)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Poison}/PoisonSting_Hit.wav (100%)
 rename P3D/Content/Sounds/Battle/Attacks/{ => Poison}/PoisonSting_Start.wav (100%)
 create mode 100644 P3D/Content/Textures/Battle/Grass/Absorb.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 2b69ba9cc..6247835f1 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -3978,8 +3978,10 @@
 
         Public Sub ReduceHP(ByVal HPAmount As Integer, ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String, ByVal sound As String)
             Dim p As Pokemon = BattleScreen.OwnPokemon
+            Dim pNPC As Entity = BattleScreen.OwnPokemonNPC
             If own = False Then
                 p = BattleScreen.OppPokemon
+                pNPC = BattleScreen.OppPokemonNPC
             End If
 
             If p.HP > 0 And p.Status <> Pokemon.StatusProblems.Fainted Then
@@ -3996,6 +3998,13 @@
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(sound, False, 0.0F))
                 End If
 
+                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
+                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 0, 0)
+                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 1, 0)
+                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 2, 0)
+                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 3, 0)
+                BattleScreen.BattleQuery.Add(HitAnimation)
+
                 If own = True Then
                     BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, HPAmount, New Vector2(200, 256)))
                 Else
diff --git a/P3D/Content/Sounds/Battle/Attacks/Thunderbolt.wav b/P3D/Content/Sounds/Battle/Attacks/Electric/Thunderbolt.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/Thunderbolt.wav
rename to P3D/Content/Sounds/Battle/Attacks/Electric/Thunderbolt.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/Ember_Hit.wav b/P3D/Content/Sounds/Battle/Attacks/Fire/Ember_Hit.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/Ember_Hit.wav
rename to P3D/Content/Sounds/Battle/Attacks/Fire/Ember_Hit.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/Ember_Start.wav b/P3D/Content/Sounds/Battle/Attacks/Fire/Ember_Start.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/Ember_Start.wav
rename to P3D/Content/Sounds/Battle/Attacks/Fire/Ember_Start.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/Fly_Hit.wav b/P3D/Content/Sounds/Battle/Attacks/Flying/Fly_Hit.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/Fly_Hit.wav
rename to P3D/Content/Sounds/Battle/Attacks/Flying/Fly_Hit.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/Fly_Start.wav b/P3D/Content/Sounds/Battle/Attacks/Flying/Fly_Start.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/Fly_Start.wav
rename to P3D/Content/Sounds/Battle/Attacks/Flying/Fly_Start.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/Grass/Absorb.wav b/P3D/Content/Sounds/Battle/Attacks/Grass/Absorb.wav
new file mode 100644
index 0000000000000000000000000000000000000000..84c0f3f606b904a185a7f9d161686cf26b517608
GIT binary patch
literal 472456
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%0A;j?LJbN(gQX7b9)D~-
z>d<{px=II|M{-2(H?sCtXF#X<9+@Bhl7ARsZy)r!VT^D1z&!am_I=&WURUvb<*X}>
zd*1|jo!`Hz+~2BiEN=}6KUU6t(i7bi-RXlGV`7`4T6!NI@=@VGpdK7D{S{^IcRcMR
zsgh6;<a$+t7*tbZFkKOzTkGu|(j|})WU#d-rTJn103>DwbhnO9Zy(*#(o%u;Z%^d^
zYXAOiH>gY?@x)hlL#ohITYThNSgCA3RAM;NuFxdcq1ZVbj~i0B`gti?3_#FPFj`ZC
z8dPpitupx&^F&$HJGuMu;g(v`VmCDJeC{6)a9wO7WvV*6Iv{MOopd9Z9tGuLg-kfi
z%gDz2@t5EvavLmAe>=>Alha)3+azpV=bn09UEylc^t+<6w`cJv4?)hkihL|oW)ph?
zAQ<!t=075Rd*0T^Qw3B#L45i5@#V`dQ(dQ9N$%d{L6@my-vzFHra@!vZ3~t4A?K7`
zu!M8A^i<_nFF(=CE?0U-Stvu}F@9;{EWbG(eA^0rE0v9Y1>irAFCthsCClP8#<uGH
z<l3fOYN#nC;*o1{9LFH`$G_@bwFelCY)(hxIP|`gm)Gov#%9`xgd?m<u72_zaNgC?
z1y|9y>-#uK{k~(u{->$a&Up?PDo}+i<|+ol$yJo8?An$`+{~TdM!7ciCnbA2A*$=_
z`sH}^3CYa7XHJ{C&Z+=tplW!icvcLBZ}!}Ag4W9!pXWy=J{YZ_hf0fOdGE!Q-==7&
zx{{Y<qM$In&3e$VC$g)-4aa`jR1ZqCz#%`wz<8d?o_`HeOJk~%6W$4WXBbJV+`9Cn
z^Czsk3{(wTl#-%pN6)+3HAv$K<4qlYVW8Bb<wZ{tTA0atw4p%>wL2E-U|DxaThg8!
zi#o%x!ADh!-^3bQ)mb~xF$4kxrxe^Ny-Ejy<l#~YEcldBnpp}ZaS%_C?Eq;I=K7LX
z9D<(MGx)OOJWM+qR<wQ^KRl9{hKQ1OGT>(UBzvN4+*MuAGaQR<hUQ^MjZd2PmQAmZ
zay7&(ya0^&vp?r^X8S3o>l}%uYNR@v5$&lzk5vlld|guSv<|aRp?#j`_za{FLoe&R
z)OgG&L|Mnmf&^xxLvEaO4o453Z0JSnWrR$h-C8VVP&l1FwW0^?f2uoIEHXkZQ{Ao^
zQjOsXfq_j^-KklLIbT5%t%u3kyeSdt15as+Hd2r|QPsm$@+)6fh(S$FhBapA!R{?g
zp1M-ii~BWTpJ36ZU1OaVLJqFh<Nh|2vA&)xaYjJ*G4lslD>)Up+AZsE3BadxqslEq
zKllGC>V5XvA3z;@8nM2~x}*Ptc|AN(^Go)xePX>;y&!P`fCUc);~o#+ak^sk;_cMj
t9%An}<MA*L-0r34+wR*F(jHL#i(MwTxD}*0D6z-dW3eZG3;nb7zW^4+%kuyL

literal 0
HcmV?d00001

diff --git a/P3D/Content/Sounds/Battle/Attacks/Pound.wav b/P3D/Content/Sounds/Battle/Attacks/Normal/Pound.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/Pound.wav
rename to P3D/Content/Sounds/Battle/Attacks/Normal/Pound.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/Tackle.wav b/P3D/Content/Sounds/Battle/Attacks/Normal/Tackle.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/Tackle.wav
rename to P3D/Content/Sounds/Battle/Attacks/Normal/Tackle.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/PoisonSting_Hit.wav b/P3D/Content/Sounds/Battle/Attacks/Poison/PoisonSting_Hit.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/PoisonSting_Hit.wav
rename to P3D/Content/Sounds/Battle/Attacks/Poison/PoisonSting_Hit.wav
diff --git a/P3D/Content/Sounds/Battle/Attacks/PoisonSting_Start.wav b/P3D/Content/Sounds/Battle/Attacks/Poison/PoisonSting_Start.wav
similarity index 100%
rename from P3D/Content/Sounds/Battle/Attacks/PoisonSting_Start.wav
rename to P3D/Content/Sounds/Battle/Attacks/Poison/PoisonSting_Start.wav
diff --git a/P3D/Content/Textures/Battle/Grass/Absorb.png b/P3D/Content/Textures/Battle/Grass/Absorb.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d4a6efbc484f930a32dd82c39506e5d3e8be1e7
GIT binary patch
literal 258
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W
zHKHUqKdq!Zu_%?nIW?!avREOwq%<WnUm+wvKj+}`hc!TDy`C<PArXg@|NQ@Nf7pTP
zSRi|kRl*g<#e53K8STT3lCB<+`!|2$GQNgrnGejqX-qA*0vtCvca$ACKegw-p>EoN
z5{}Nk1^bv6C_09+3#40C_DPf;2q<!3XJ&S0ES$z~&Az~@iLu*RZ9&n>xx9hi2l@VR
uWrhj}KIMoKJKDU+NGg{fYT*J_1_q^_I}gqdn>h{WFa}RoKbLh*2~7aIOjlC?

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index f1927c233..7b6910788 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14665,31 +14665,34 @@
     <Content Include="Content\Songs\wind.ogg">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\Ember_Hit.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Electric\Thunderbolt.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\Ember_Start.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Fire\Ember_Hit.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\Fly_Hit.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Fire\Ember_Start.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\Fly_Start.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Flying\Fly_Hit.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\PoisonSting_Hit.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Flying\Fly_Start.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\PoisonSting_Start.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Grass\Absorb.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\Pound.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Normal\Pound.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\Tackle.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Normal\Tackle.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Sounds\Battle\Attacks\Thunderbolt.wav">
+    <Content Include="Content\Sounds\Battle\Attacks\Poison\PoisonSting_Hit.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\Sounds\Battle\Attacks\Poison\PoisonSting_Start.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Content Include="Content\Sounds\Battle\Damage\Effective.wav">
@@ -15379,6 +15382,9 @@
     <Content Include="Content\Textures\Battle\Fire\Smoke.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\Grass\Absorb.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\Normal\Growl.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index bb5fae6fe..6719f780d 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -66,7 +66,7 @@
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Start", 0, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
@@ -82,7 +82,7 @@
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
             Next
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Hit", 2, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index 4c0c2f7b7..a63495b58 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -92,6 +92,22 @@
             End If
         End Sub
 
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            Dim maxAmount As Integer = 8
+            Dim currentAmount As Integer = 0
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
+            While currentAmount <= maxAmount
+                Dim yPos As Single = CSng(Random.NextDouble() * 0.5)
+                Dim zPos As Single = CSng(Random.Next(-5, 5) * 0.15)
+                MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Grass\Absorb", 0.35, 0.35, 0.35, 1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount), 0.0, 0.1, 0.5)
+                Threading.Interlocked.Increment(currentAmount)
+            End While
+
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
+
+
 End Namespace
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 467c5891d..25785556e 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -55,7 +55,7 @@
             Me.AIField2 = AIField.Nothing
         End Sub
 
-        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
             MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 6d8954700..c3a075d95 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -61,7 +61,7 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Tackle", 0, 2)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
             MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Tackle", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 36622416b..9684f8379 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -68,7 +68,7 @@
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Start", 0, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
@@ -77,7 +77,7 @@
 
             MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Hit", 1, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
diff --git a/P3D/Screens/Pokemon/HatchEggScreen.vb b/P3D/Screens/Pokemon/HatchEggScreen.vb
index e4f2c31f1..7e1aa39c7 100644
--- a/P3D/Screens/Pokemon/HatchEggScreen.vb
+++ b/P3D/Screens/Pokemon/HatchEggScreen.vb
@@ -72,7 +72,7 @@
                     If Stage = 6 Then
                         SoundManager.PlaySound("egg_hatch")
                     Else
-                        SoundManager.PlaySound("Battle\Attacks\Pound")
+                        SoundManager.PlaySound("Battle\Attacks\Normal\Pound")
                     End If
 
                     Egg = GetEggTexture()
diff --git a/P3D/World/World.vb b/P3D/World/World.vb
index a53cc8e06..39a864436 100644
--- a/P3D/World/World.vb
+++ b/P3D/World/World.vb
@@ -717,7 +717,7 @@ endsub:
             If Core.Random.Next(0, 250) = 0 Then
                 Dim pitch As Single = -(Core.Random.Next(8, 11) / 10.0F)
                 Debug.Print(pitch.ToString())
-                SoundManager.PlaySound("Battle\Attacks\Thunderbolt", pitch, 0F, SoundManager.Volume, False)
+                SoundManager.PlaySound("Battle\Attacks\Electric\Thunderbolt", pitch, 0F, SoundManager.Volume, False)
             End If
         End If
 

From 7ff7f96a47da163a7a80f946a173ad59cad5be92 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 14 Oct 2021 01:21:10 +0200
Subject: [PATCH 04/57] Battle Animation System Rework about halfway done

Updated to work with the new animation system:
- Catch animation
- Burn animation
- Attack: Tackle
---
 .../{BABillMove.vb => BAEntityMove.vb}        |   6 +-
 .../{BABillOpacity.vb => BAEntityOpacity.vb}  |   2 +-
 P3D/Battle/BattleAnimations/BAEntityRotate.vb | 131 +++++++++++
 .../{BABillSize.vb => BAEntityScale.vb}       |   2 +-
 .../BattleAnimations/BAEntityTextureChange.vb |  21 ++
 P3D/Battle/BattleAnimations/BAMove.vb         |   2 +-
 P3D/Battle/BattleAnimations/BASize.vb         | 106 ---------
 P3D/Battle/BattleSystemV2/Battle.vb           | 122 ++++++-----
 .../QueryObjects/AnimationQueryObject.vb      | 198 +++++++++--------
 .../{Other/Star.png => BallCatchStar.png}     | Bin
 P3D/P3D.vbproj                                |  11 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb          |   4 +-
 P3D/Screens/Battle/BattleCatchScreen.vb       | 207 +++++++++---------
 13 files changed, 448 insertions(+), 364 deletions(-)
 rename P3D/Battle/BattleAnimations/{BABillMove.vb => BAEntityMove.vb} (98%)
 rename P3D/Battle/BattleAnimations/{BABillOpacity.vb => BAEntityOpacity.vb} (97%)
 create mode 100644 P3D/Battle/BattleAnimations/BAEntityRotate.vb
 rename P3D/Battle/BattleAnimations/{BABillSize.vb => BAEntityScale.vb} (99%)
 create mode 100644 P3D/Battle/BattleAnimations/BAEntityTextureChange.vb
 delete mode 100644 P3D/Battle/BattleAnimations/BASize.vb
 rename P3D/Content/Textures/Battle/{Other/Star.png => BallCatchStar.png} (100%)

diff --git a/P3D/Battle/BattleAnimations/BABillMove.vb b/P3D/Battle/BattleAnimations/BAEntityMove.vb
similarity index 98%
rename from P3D/Battle/BattleAnimations/BABillMove.vb
rename to P3D/Battle/BattleAnimations/BAEntityMove.vb
index 120d3b87f..8e7685f6f 100644
--- a/P3D/Battle/BattleAnimations/BABillMove.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityMove.vb
@@ -1,4 +1,4 @@
-Public Class BABillMove
+Public Class BAEntityMove
 
 	Inherits BattleAnimation3D
 
@@ -20,7 +20,7 @@
 		Linear
 	End Enum
 
-	Public Sub New(ByRef entity As Entity, ByVal Destination As Vector3, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
+	Public Sub New(ByRef Entity As Entity, ByVal Destination As Vector3, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
 		MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
 
 		Me.Destination = Destination
@@ -33,7 +33,7 @@
 		Me.SpinSpeedZ = SpinZSpeed
 
 		Me.Visible = False
-		Me.TargetEntity = entity
+		Me.TargetEntity = Entity
 
 		Select Case MovementCurve
 			Case Curves.EaseIn
diff --git a/P3D/Battle/BattleAnimations/BABillOpacity.vb b/P3D/Battle/BattleAnimations/BAEntityOpacity.vb
similarity index 97%
rename from P3D/Battle/BattleAnimations/BABillOpacity.vb
rename to P3D/Battle/BattleAnimations/BAEntityOpacity.vb
index e2bc7e3d8..959d733b5 100644
--- a/P3D/Battle/BattleAnimations/BABillOpacity.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityOpacity.vb
@@ -1,4 +1,4 @@
-Public Class BABillOpacity
+Public Class BAEntityOpacity
 
     Inherits BattleAnimation3D
 
diff --git a/P3D/Battle/BattleAnimations/BAEntityRotate.vb b/P3D/Battle/BattleAnimations/BAEntityRotate.vb
new file mode 100644
index 000000000..cbcda0f7b
--- /dev/null
+++ b/P3D/Battle/BattleAnimations/BAEntityRotate.vb
@@ -0,0 +1,131 @@
+Public Class BAEntityRotate
+
+    Inherits BattleAnimation3D
+
+    Dim TargetEntity As Entity
+    Dim RotationSpeedVector As Vector3
+    Dim EndRotation As Vector3
+    Dim DoReturn As Boolean = False
+    Dim ReturnVector As Vector3
+    Dim hasReturned As Boolean = False
+    Dim DoRotation As Vector3 = New Vector3(1.0F)
+
+    Public Sub New(ByVal Entity As Entity, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single)
+        MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
+
+        Me.RotationSpeedVector = RotationSpeedVector
+        Me.EndRotation = EndRotation
+        Me.ReturnVector = Me.Rotation
+        Me.TargetEntity = Entity
+    End Sub
+
+    Public Sub New(ByVal Entity As Entity, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean)
+        Me.New(Entity, RotationSpeedVector, EndRotation, startDelay, endDelay)
+
+        If DoXRotation = False Then
+            DoRotation.X = 0.0F
+        End If
+        If DoYRotation = False Then
+            DoRotation.Y = 0.0F
+        End If
+        If DoZRotation = False Then
+            DoRotation.Z = 0.0F
+        End If
+    End Sub
+
+    Public Sub New(ByVal Entity As Entity, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
+        Me.New(Entity, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation)
+
+        Me.DoReturn = DoReturn
+    End Sub
+
+    Public Overrides Sub DoActionActive()
+        If VectorReached() = False Then
+
+            If DoRotation.X = 1.0F Then
+                If TargetEntity.Rotation.X > Me.EndRotation.X Then
+                    TargetEntity.Rotation.X += Me.RotationSpeedVector.X
+
+                    If TargetEntity.Rotation.X <= Me.EndRotation.X Then
+                        TargetEntity.Rotation.X = Me.EndRotation.X
+                    End If
+                ElseIf TargetEntity.Rotation.X < Me.EndRotation.X Then
+                    TargetEntity.Rotation.X += Me.RotationSpeedVector.X
+
+                    If TargetEntity.Rotation.X >= Me.EndRotation.X Then
+                        TargetEntity.Rotation.X = Me.EndRotation.X
+                    End If
+                End If
+            End If
+
+            If DoRotation.Y = 1.0F Then
+                If TargetEntity.Rotation.Y > Me.EndRotation.Y Then
+                    TargetEntity.Rotation.Y += Me.RotationSpeedVector.Y
+
+                    If TargetEntity.Rotation.Y <= Me.EndRotation.Y Then
+                        TargetEntity.Rotation.Y = Me.EndRotation.Y
+                    End If
+                ElseIf TargetEntity.Rotation.Y < Me.EndRotation.Y Then
+                    TargetEntity.Rotation.Y += Me.RotationSpeedVector.Y
+
+                    If TargetEntity.Rotation.Y >= Me.EndRotation.Y Then
+                        TargetEntity.Rotation.Y = Me.EndRotation.Y
+                    End If
+                End If
+            End If
+
+            If DoRotation.Z = 1.0F Then
+                If TargetEntity.Rotation.Z > Me.EndRotation.Z Then
+                    TargetEntity.Rotation.Z += Me.RotationSpeedVector.Z
+
+                    If TargetEntity.Rotation.Z <= Me.EndRotation.Z Then
+                        TargetEntity.Rotation.Z = Me.EndRotation.Z
+                    End If
+                ElseIf TargetEntity.Rotation.Z < Me.EndRotation.Z Then
+                    TargetEntity.Rotation.Z += Me.RotationSpeedVector.Z
+
+                    If TargetEntity.Rotation.Z >= Me.EndRotation.Z Then
+                        TargetEntity.Rotation.Z = Me.EndRotation.Z
+                    End If
+                End If
+            End If
+
+            If VectorReached() = True Then
+                RotationReady()
+            End If
+        Else
+            RotationReady()
+        End If
+    End Sub
+
+    Private Sub RotationReady()
+        If Me.DoReturn = True And Me.hasReturned = False Then
+            Me.hasReturned = True
+            Me.EndRotation = Me.ReturnVector
+            Me.RotationSpeedVector = New Vector3(Me.RotationSpeedVector.X * -1, Me.RotationSpeedVector.Y * -1, Me.RotationSpeedVector.Z * -1)
+        Else
+            Me.Ready = True
+        End If
+    End Sub
+
+    Private Function VectorReached() As Boolean
+        If DoRotation.X = 1.0F Then
+            If EndRotation.X <> TargetEntity.Rotation.X Then
+                Return False
+            End If
+        End If
+        If DoRotation.Y = 1.0F Then
+            If EndRotation.Y <> TargetEntity.Rotation.Y Then
+                Return False
+            End If
+        End If
+        If DoRotation.Z = 1.0F Then
+            If EndRotation.Z <> TargetEntity.Rotation.Z Then
+                Return False
+            End If
+        End If
+
+        Return True
+    End Function
+
+End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BABillSize.vb b/P3D/Battle/BattleAnimations/BAEntityScale.vb
similarity index 99%
rename from P3D/Battle/BattleAnimations/BABillSize.vb
rename to P3D/Battle/BattleAnimations/BAEntityScale.vb
index ce7ff373a..24d1245ea 100644
--- a/P3D/Battle/BattleAnimations/BABillSize.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityScale.vb
@@ -1,4 +1,4 @@
-Public Class BABillSize
+Public Class BAEntityScale
 
     Inherits BattleAnimation3D
 
diff --git a/P3D/Battle/BattleAnimations/BAEntityTextureChange.vb b/P3D/Battle/BattleAnimations/BAEntityTextureChange.vb
new file mode 100644
index 000000000..4b266b706
--- /dev/null
+++ b/P3D/Battle/BattleAnimations/BAEntityTextureChange.vb
@@ -0,0 +1,21 @@
+Public Class BAEntityTextureChange
+
+    Inherits BattleAnimation3D
+
+    Public Texture As Texture2D
+    Public TargetEntity As Entity
+
+    Public Sub New(ByVal Entity As Entity, Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
+        MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
+
+        Me.TargetEntity = Entity
+        Me.Texture = Texture
+        Me.AnimationType = AnimationTypes.Texture
+    End Sub
+
+    Public Overrides Sub DoActionActive()
+        TargetEntity.Textures = {Me.Texture}
+        Me.Ready = True
+    End Sub
+
+End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BAMove.vb b/P3D/Battle/BattleAnimations/BAMove.vb
index c1220411d..e59c0f0e5 100644
--- a/P3D/Battle/BattleAnimations/BAMove.vb
+++ b/P3D/Battle/BattleAnimations/BAMove.vb
@@ -10,7 +10,7 @@
     Public InterpolationSpeed As Single
     Public SpinSpeedX As Single = 0.1F
     Public SpinSpeedZ As Single = 0.1F
-	Public MovementCurve As Integer = 2
+	Public MovementCurve As Integer = 3
 
 	Private EasedIn As Boolean = False
 	Private EasedOut As Boolean = False
diff --git a/P3D/Battle/BattleAnimations/BASize.vb b/P3D/Battle/BattleAnimations/BASize.vb
deleted file mode 100644
index b8926f1da..000000000
--- a/P3D/Battle/BattleAnimations/BASize.vb
+++ /dev/null
@@ -1,106 +0,0 @@
-Public Class BASize
-
-    Inherits BattleAnimation3D
-
-    Public Grow As Boolean = False
-    Public EndSize As Vector3
-    Public SizeSpeed As Single = 0.01F
-    Public Anchors As String
-
-    Public Change As New Vector3(1)
-
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Grow As Boolean, ByVal EndSize As Vector3, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal Anchors As String)
-        MyBase.New(Position, Texture, Scale, startDelay, endDelay)
-
-        Me.Anchors = Anchors
-        Me.Grow = Grow
-        Me.EndSize = EndSize
-        Me.SizeSpeed = SizeSpeed
-
-        Me.AnimationType = AnimationTypes.Size
-    End Sub
-
-    Public Overrides Sub DoActionActive()
-        Dim saveScale As Vector3 = Me.Scale
-
-        Dim changeX As Single = SizeSpeed * Change.X
-        Dim changeY As Single = SizeSpeed * Change.Y
-        Dim changeZ As Single = SizeSpeed * Change.Z
-
-        If Grow = True Then
-            If Me.Scale.X < Me.EndSize.X Then
-                Me.Scale.X += changeX
-
-                If Me.Scale.X >= Me.EndSize.X Then
-                    Me.Scale.X = Me.EndSize.X
-                End If
-            End If
-            If Me.Scale.Y < Me.EndSize.Y Then
-                Me.Scale.Y += changeY
-
-                If Me.Scale.Y >= Me.EndSize.Y Then
-                    Me.Scale.Y = Me.EndSize.Y
-                End If
-            End If
-            If Me.Scale.Z < Me.EndSize.Z Then
-                Me.Scale.Z += changeZ
-
-                If Me.Scale.Z >= Me.EndSize.Z Then
-                    Me.Scale.Z = Me.EndSize.Z
-                End If
-            End If
-        Else
-            If Me.Scale.X > Me.EndSize.X Then
-                Me.Scale.X -= changeX
-
-                If Me.Scale.X <= Me.EndSize.X Then
-                    Me.Scale.X = Me.EndSize.X
-                End If
-            End If
-            If Me.Scale.Y > Me.EndSize.Y Then
-                Me.Scale.Y -= changeY
-
-                If Me.Scale.Y <= Me.EndSize.Y Then
-                    Me.Scale.Y = Me.EndSize.Y
-                End If
-            End If
-            If Me.Scale.Z > Me.EndSize.Z Then
-                Me.Scale.Z -= changeZ
-
-                If Me.Scale.Z <= Me.EndSize.Z Then
-                    Me.Scale.Z = Me.EndSize.Z
-                End If
-            End If
-        End If
-
-        'Bottom
-        If Anchors.Contains("1") = True Then
-            Dim diffY As Single = saveScale.Y - Me.Scale.Y
-            Me.Position.Y -= diffY / 2
-        End If
-        'Top
-        If Anchors.Contains("2") = True Then
-            Dim diffY As Single = saveScale.Y - Me.Scale.Y
-            Me.Position.Y += diffY / 2
-        End If
-        'Left
-        If Anchors.Contains("3") = True Then
-            Dim diffX As Single = saveScale.X - Me.Scale.X
-            Me.Position.X -= diffX / 2
-        End If
-        'Right
-        If Anchors.Contains("4") = True Then
-            Dim diffX As Single = saveScale.X - Me.Scale.X
-            Me.Position.X += diffX / 2
-        End If
-
-        If Me.EndSize = Me.Scale Then
-            Me.Ready = True
-        End If
-    End Sub
-
-    Public Sub SetChange(ByVal changeX As Single, ByVal changeY As Single, ByVal changeZ As Single)
-        Me.Change = New Vector3(changeX, changeY, changeZ)
-    End Sub
-
-End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 6247835f1..823bea6f1 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2705,14 +2705,20 @@
                                 p.Status = Pokemon.StatusProblems.Burn
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
-                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+                                BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
+
+                                If FlameEntity.Opacity = 0.0F Then
+                                    BurnAnimation.RemoveEntity(FlameEntity)
+                                End If
+
                                 Select Case message
                                     Case "" 'Print default message only
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
@@ -2723,30 +2729,30 @@
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
                                 End Select
                                 If p.Ability.Name.ToLower() = "synchronize" AndAlso from <> own Then
-                                    Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
-                                End If
+                                        Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
+                                    End If
 
-                                If Not p.Item Is Nothing Then
-                                    If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
-                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                            CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
+                                    If Not p.Item Is Nothing Then
+                                        If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
+                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                                CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
+                                            End If
                                         End If
                                     End If
-                                End If
 
-                                If Not p.Item Is Nothing Then
-                                    If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
-                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                            CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
+                                    If Not p.Item Is Nothing Then
+                                        If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
+                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                                CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
+                                            End If
                                         End If
                                     End If
-                                End If
 
-                                Return True
+                                    Return True
+                                End If
                             End If
-                        End If
                     End If
                 End If
             End If
@@ -3411,7 +3417,7 @@
             End If
 
             '***STAT INCREASE ANIMATION***
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
@@ -3427,11 +3433,11 @@
                 Destination.X = xPos
                 Destination.Z = zPos
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                StatAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
-            BattleScreen.BattleQuery.Add(MoveAnimation)
+            BattleScreen.BattleQuery.Add(StatAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -3998,11 +4004,11 @@
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(sound, False, 0.0F))
                 End If
 
-                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
-                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 0, 0)
-                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 1, 0)
-                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 2, 0)
-                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 3, 0)
+                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 0, 0)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 1, 0)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 2, 0)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 3, 0)
                 BattleScreen.BattleQuery.Add(HitAnimation)
 
                 If own = True Then
@@ -5415,12 +5421,19 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+
+                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
+
+                            If FlameEntity.Opacity = 0.0F Then
+                                BurnAnimation.RemoveEntity(FlameEntity)
+                            End If
+
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6206,12 +6219,19 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+
+                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
+
+                            If FlameEntity.Opacity = 0.0F Then
+                                BurnAnimation.RemoveEntity(FlameEntity)
+                            End If
+
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6796,8 +6816,8 @@
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
-                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
+                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                 ' Ball returns
                 BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -6859,11 +6879,11 @@
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
+                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
@@ -7112,7 +7132,7 @@
                 ChangeCameraAngle(1, False, BattleScreen)
                 Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
                 Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.AnimationMovePokemonEntity(0, -1, 0, 0.1, False, False, 2, 0,,, 4)
+                Faint.AnimationMoveEntity(Nothing, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
                 BattleScreen.BattleQuery.Add(Faint)
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
@@ -7157,8 +7177,8 @@
                     Loop While SmokeReturned <= 38
 
                     ' Pokemon disappears
-                    BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
-                    BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
+                    BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                     ' Ball returns
                     BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -7218,8 +7238,8 @@
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
-                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
+                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
                 BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -7273,11 +7293,11 @@
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
+                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.BattleQuery.Add(BallThrow)
             End If
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index bf5d71de7..75e95027d 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -7,6 +7,7 @@
 		Public AnimationEnded As Boolean = False
 		Public BAFlipped As Boolean
 		Public AnimationSequence As List(Of BattleAnimation3D)
+		Public SpawnedEntities As List(Of Entity)
 		Public CurrentEntity As Entity
 		Public CurrentModel As ModelEntity
 
@@ -16,7 +17,7 @@
 			End Get
 		End Property
 
-		Public Sub New(ByVal entity As NPC, ByVal BAFlipped As Boolean, Optional ByVal model As ModelEntity = Nothing)
+		Public Sub New(ByVal entity As Entity, ByVal BAFlipped As Boolean, Optional ByVal model As ModelEntity = Nothing)
 			MyBase.New(QueryTypes.MoveAnimation)
 			Me.AnimationSequence = New List(Of BattleAnimation3D)
 			Me.BAFlipped = BAFlipped
@@ -54,20 +55,18 @@
 				If AnimationSequence.Count <= 0 Then
 					AnimationSequenceEnd()
 				End If
+
 				For Each Animation As BattleAnimation3D In AnimationSequence
 					Animation.UpdateEntity()
 				Next
+				For Each Entity As Entity In SpawnedEntities
+					Entity.UpdateEntity()
+				Next
 			End If
 		End Sub
 
 		Public Sub AnimationSequenceBegin()
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationSequenceBegin OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationSequenceBegin INSIDE ANIMATION SEQUENCE, DID YOU MEAN AnimationSequenceEnd?")
-			Else
-				AnimationStarted = True
-			End If
+			AnimationStarted = True
 		End Sub
 
 		Public Sub AnimationSequenceEnd()
@@ -80,6 +79,104 @@
 			End If
 		End Sub
 
+		Public Function SpawnEntity(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Opacity As Single) As Entity
+			Dim SpawnedEntity As Entity = New Entity(Position.X, Position.Y, Position.Z, "BattleAnimation", {Texture}, {0, 0}, False, 0, Scale, BaseModel.BillModel, 0, "", New Vector3(1.0F))
+
+			SpawnedEntity.Opacity = Opacity
+			If SpawnedEntity.Opacity > 0 Then
+				SpawnedEntity.Visible = True
+			Else
+				SpawnedEntity.Visible = False
+			End If
+
+			SpawnedEntities.Add(SpawnedEntity)
+			Return SpawnedEntity
+		End Function
+		Public Sub RemoveEntity(Entity As Entity)
+			SpawnedEntities.Remove(Entity)
+		End Sub
+		Public Sub AnimationChangeTexture(ByVal Entity As Entity, ByVal Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
+			Dim TextureChangeEntity As Entity
+
+			If Entity Is Nothing Then
+				TextureChangeEntity = CurrentEntity
+			Else
+				TextureChangeEntity = Entity
+			End If
+
+			Dim baEntityTextureChange As BAEntityTextureChange = New BAEntityTextureChange(TextureChangeEntity, Texture, startDelay, endDelay)
+			AnimationSequence.Add(baEntityTextureChange)
+		End Sub
+
+		Public Sub AnimationMoveEntity(ByVal Entity As Entity, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
+			Dim MoveEntity As Entity
+			Dim Destination As Vector3
+
+			If Entity Is Nothing Then
+				MoveEntity = CurrentEntity
+				If BAFlipped Then
+					DestinationX -= DestinationX * 2.0F
+					DestinationZ -= DestinationZ * 2.0F
+					Destination = New Vector3(CurrentEntity.Position.X + DestinationX, CurrentEntity.Position.Y + DestinationY, CurrentEntity.Position.Z + DestinationZ)
+				End If
+			Else
+				MoveEntity = Entity
+				Destination = New Vector3(DestinationX, DestinationY, DestinationZ)
+			End If
+
+			Dim baEntityMove As BAEntityMove = New BAEntityMove(MoveEntity, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
+			AnimationSequence.Add(baEntityMove)
+
+			If Me.CurrentModel IsNot Nothing Then
+				Dim baModelMove As BAEntityMove = New BAEntityMove(CType(CurrentModel, Entity), Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
+				AnimationSequence.Add(baModelMove)
+			End If
+		End Sub
+
+		Public Sub AnimationFadeEntity(ByVal Entity As Entity, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = -1.0F)
+			Dim FadeEntity As Entity
+			If Entity Is Nothing Then
+				FadeEntity = CurrentEntity
+			Else
+				FadeEntity = Entity
+			End If
+			If startState = -1.0F Then startState = FadeEntity.Opacity
+			Dim baEntityOpacity As BAEntityOpacity = New BAEntityOpacity(FadeEntity, TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
+			AnimationSequence.Add(baEntityOpacity)
+
+			If Me.CurrentModel IsNot Nothing Then
+				Dim baModelOpacity As BAEntityOpacity = New BAEntityOpacity(CType(CurrentModel, Entity), TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
+				AnimationSequence.Add(baModelOpacity)
+			End If
+		End Sub
+		Public Sub AnimationRotateEntity(Entity As Entity, ByVal RotationSpeedX As Single, ByVal RotationSpeedY As Single, ByVal RotationSpeedZ As Single, ByVal EndRotationX As Single, ByVal EndRotationY As Single, ByVal EndRotationZ As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
+			Dim RotateEntity As Entity
+			If Entity Is Nothing Then
+				RotateEntity = CurrentEntity
+			Else
+				RotateEntity = Entity
+			End If
+
+			Dim RotationSpeedVector As Vector3 = New Vector3(RotationSpeedX, RotationSpeedY, RotationSpeedZ)
+			Dim EndRotation As Vector3 = New Vector3(EndRotationX, EndRotationY, EndRotationZ)
+			Dim baEntityRotate As BAEntityRotate = New BAEntityRotate(RotateEntity, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation, DoReturn)
+			AnimationSequence.Add(baEntityRotate)
+		End Sub
+		Public Sub AnimationScaleEntity(ByVal Entity As Entity, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
+			Dim ScaleEntity As Entity
+			If Entity Is Nothing Then
+				ScaleEntity = CurrentEntity
+			Else
+				ScaleEntity = Entity
+			End If
+
+			Dim Position As Vector3 = ScaleEntity.Position
+			Dim Scale As Vector3 = ScaleEntity.Scale
+			Dim EndSize As Vector3 = New Vector3(EndSizeX, EndSizeY, EndSizeZ)
+			Dim baBillSize As BAEntityScale = New BAEntityScale(ScaleEntity, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
+			AnimationSequence.Add(baBillSize)
+		End Sub
+
 		Public Sub AnimationSpawnFadingEntity(ByVal PositionX As Single, ByVal PositionY As Single, ByVal PositionZ As Single, ByVal Texture As String, ByVal ScaleX As Single, ByVal ScaleY As Single, ByVal ScaleZ As Single, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = 1.0F)
 			If CurrentEntity Is Nothing Then
 				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation OUTSIDE OF ATTACK ANIMATION DELEGATE")
@@ -142,44 +239,6 @@
 				AnimationSequence.Add(baMove)
 			End If
 		End Sub
-		Public Sub AnimationMovePokemonEntity(ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation BEFORE CALLING AnimationSequenceBegin")
-			Else
-				If BAFlipped Then
-					DestinationX -= DestinationX * 2.0F
-					DestinationZ -= DestinationZ * 2.0F
-				End If
-
-				Dim Destination As Vector3 = New Vector3(CurrentEntity.Position.X + DestinationX, CurrentEntity.Position.Y + DestinationY, CurrentEntity.Position.Z + DestinationZ)
-
-				Dim baBillMove As BABillMove = New BABillMove(CurrentEntity, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
-				AnimationSequence.Add(baBillMove)
-
-				If Me.CurrentModel IsNot Nothing Then
-					Dim baModelMove As BABillMove = New BABillMove(CType(CurrentModel, Entity), Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
-					AnimationSequence.Add(baModelMove)
-				End If
-			End If
-		End Sub
-		Public Sub AnimationFadePokemonEntity(ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = -1.0F)
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation BEFORE CALLING AnimationSequenceBegin")
-			Else
-				If startState = -1.0F Then startState = CurrentEntity.Opacity
-				Dim baBillOpacity As BABillOpacity = New BABillOpacity(CurrentEntity, TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
-				AnimationSequence.Add(baBillOpacity)
-
-				If Me.CurrentModel IsNot Nothing Then
-					Dim baModelOpacity As BABillOpacity = New BABillOpacity(CType(CurrentModel, Entity), TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
-					AnimationSequence.Add(baModelOpacity)
-				End If
-			End If
-		End Sub
 		Public Sub AnimationPlaySound(ByVal sound As String, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal stopMusic As Boolean = False, Optional ByVal IsPokemon As Boolean = False)
 			If CurrentEntity Is Nothing Then
 				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationPlaySound OUTSIDE OF ATTACK ANIMATION DELEGATE")
@@ -191,52 +250,5 @@
 			End If
 		End Sub
 
-		Public Sub AnimationSpawnScalingEntity(ByVal PositionX As Single, ByVal PositionY As Single, ByVal PositionZ As Single, ByVal Texture As String, ByVal ScaleX As Single, ByVal ScaleY As Single, ByVal ScaleZ As Single, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnSizeAnimation OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnSizeAnimation BEFORE CALLING AnimationSequenceBegin")
-			Else
-				Dim stringArray = Texture.Split(","c)
-				Dim texture2D As Texture2D = Nothing
-
-				If stringArray.Length = 1 Then
-					texture2D = TextureManager.GetTexture(Texture)
-				ElseIf stringArray.Length = 5 Then
-					Dim r As Rectangle = New Rectangle(CInt(stringArray(1)), CInt(stringArray(2)), CInt(stringArray(3)), CInt(stringArray(4)))
-					texture2D = TextureManager.GetTexture(stringArray(0), r, "")
-				End If
-
-				If BAFlipped Then
-					PositionX -= PositionX * 2.0F
-					PositionZ -= PositionZ * 2.0F
-				End If
-				Dim Position As Vector3 = New Vector3(CurrentEntity.Position.X + PositionX, CurrentEntity.Position.Y + PositionY, CurrentEntity.Position.Z + PositionZ)
-				Dim Scale As Vector3 = New Vector3(ScaleX, ScaleY, ScaleZ)
-				Dim EndSize As Vector3 = New Vector3(EndSizeX, EndSizeY, EndSizeZ)
-				Dim baSize As BASize = New BASize(Position, texture2D, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
-				AnimationSequence.Add(baSize)
-			End If
-		End Sub
-		Public Sub AnimationScalePokemonEntity(ByVal entity As Entity, ByVal PositionX As Single, ByVal PositionY As Single, ByVal PositionZ As Single, ByVal Texture As String, ByVal ScaleX As Single, ByVal ScaleY As Single, ByVal ScaleZ As Single, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnSizeAnimation OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnSizeAnimation BEFORE CALLING AnimationSequenceBegin")
-			Else
-				Dim stringArray = Texture.Split(","c)
-
-
-				If BAFlipped Then
-					PositionX -= PositionX * 2.0F
-					PositionZ -= PositionZ * 2.0F
-				End If
-				Dim Position As Vector3 = New Vector3(CurrentEntity.Position.X + PositionX, CurrentEntity.Position.Y + PositionY, CurrentEntity.Position.Z + PositionZ)
-				Dim Scale As Vector3 = New Vector3(ScaleX, ScaleY, ScaleZ)
-				Dim EndSize As Vector3 = New Vector3(EndSizeX, EndSizeY, EndSizeZ)
-				Dim baBillSize As BABillSize = New BABillSize(entity, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
-				AnimationSequence.Add(baBillSize)
-			End If
-		End Sub
 	End Class
 End Namespace
\ No newline at end of file
diff --git a/P3D/Content/Textures/Battle/Other/Star.png b/P3D/Content/Textures/Battle/BallCatchStar.png
similarity index 100%
rename from P3D/Content/Textures/Battle/Other/Star.png
rename to P3D/Content/Textures/Battle/BallCatchStar.png
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 7b6910788..ec16b862f 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -15394,7 +15394,7 @@
     <Content Include="Content\Textures\Battle\Normal\Tackle.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Textures\Battle\Other\Star.png">
+    <Content Include="Content\Textures\Battle\BallCatchStar.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Content Include="Content\Textures\Battle\Poison\Bubble.png">
@@ -27545,9 +27545,11 @@
     <Content Include="credits.txt">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Compile Include="Battle\BattleAnimations\BABillMove.vb" />
-    <Compile Include="Battle\BattleAnimations\BABillOpacity.vb" />
-    <Compile Include="Battle\BattleAnimations\BABillSize.vb" />
+    <Compile Include="Battle\BattleAnimations\BAEntityRotate.vb" />
+    <Compile Include="Battle\BattleAnimations\BAEntityMove.vb" />
+    <Compile Include="Battle\BattleAnimations\BAEntityOpacity.vb" />
+    <Compile Include="Battle\BattleAnimations\BAEntityTextureChange.vb" />
+    <Compile Include="Battle\BattleAnimations\BAEntityScale.vb" />
     <Compile Include="Battle\BattleAnimations\BASound.vb" />
     <Compile Include="Battle\BattleSystemV2\QueryObjects\AnimationQueryObject.vb" />
     <Compile Include="Dialogues\ImageView.vb" />
@@ -29229,7 +29231,6 @@
     <Compile Include="Battle\BattleAnimations\BAMove.vb" />
     <Compile Include="Battle\BattleAnimations\BAOpacity.vb" />
     <Compile Include="Battle\BattleAnimations\BARotation.vb" />
-    <Compile Include="Battle\BattleAnimations\BASize.vb" />
     <Compile Include="Battle\BattleAnimations\BattleAnimation3D.vb" />
     <Compile Include="Battle\BattleStats.vb" />
     <Compile Include="Battle\BattleSystemV2\Battle.vb" />
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index c3a075d95..4d53f749d 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,8 +54,8 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.AnimationMovePokemonEntity(0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.AnimationMovePokemonEntity(0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.AnimationMoveEntity(Nothing, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.AnimationMoveEntity(Nothing, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
diff --git a/P3D/Screens/Battle/BattleCatchScreen.vb b/P3D/Screens/Battle/BattleCatchScreen.vb
index 3720b2ede..787d1e9b0 100644
--- a/P3D/Screens/Battle/BattleCatchScreen.vb
+++ b/P3D/Screens/Battle/BattleCatchScreen.vb
@@ -3,10 +3,13 @@
     Inherits Screen
 
     Dim Ball As Item
-    Dim Animations As New List(Of BattleAnimation3D)
+
+    Dim Animations As BattleSystem.AnimationQueryObject = New BattleSystem.AnimationQueryObject(Nothing, False, Nothing)
+    Dim BallStartPosition As Vector3 = New Vector3(Camera.Position.X - 1.0F, Camera.Position.Y, Camera.Position.Z - 0.5F) + BattleScreen.BattleMapOffset
+    Dim BallEntity As Entity = Animations.SpawnEntity(BallStartPosition, Ball.Texture, New Vector3(0.3F), 1.0F)
 
     Dim AnimationStarted As Boolean = False
-    Dim catched As Boolean = False
+    Dim caught As Boolean = False
     Dim InBall As Boolean = False
     Dim AnimationIndex As Integer = 0
     Dim renamed As Boolean = False
@@ -49,9 +52,6 @@
         Level.Draw()
 
         Dim RenderObjects As New List(Of Entity)
-        For Each a As BattleAnimation3D In Me.Animations
-            RenderObjects.Add(a)
-        Next
 
         If InBall = False Then
             RenderObjects.Add(BattleScreen.OppPokemonNPC)
@@ -65,29 +65,15 @@
             [Object].Render()
         Next
 
+        Animations.Draw(CType(Me.PreScreen, BattleSystem.BattleScreen))
+
         World.DrawWeather(Screen.Level.World.CurrentMapWeather)
 
         TextBox.Draw()
     End Sub
 
     Private Sub UpdateAnimations()
-        Animations = (From a In Animations Order By a.CameraDistance Descending).ToList()
-
-        For i = 0 To Animations.Count - 1
-            If i <= Animations.Count - 1 Then
-                Dim a As BattleAnimation3D = Animations(i)
-                If a.CanRemove = True Then
-                    i -= 1
-                    Animations.Remove(a)
-                Else
-                    a.Update()
-                End If
-            End If
-        Next
-
-        For Each Animation As BattleAnimation3D In Animations
-            Animation.UpdateEntity()
-        Next
+        Animations.Update(CType(Me.PreScreen, BattleSystem.BattleScreen))
     End Sub
 
     Private Sub SetCamera()
@@ -129,75 +115,72 @@
                 If AnimationStarted = False Then
                     SetupAnimation()
                 Else
-                    If Me.Animations.Count = 0 Then
-                        Select Case Me.AnimationIndex
-                            Case 0
+                    Select Case Me.AnimationIndex
+                        Case 0
+                            SoundManager.PlaySound("Battle\Pokeball\open")
+                            InBall = True
+                            AnimationIndex = 1
+                            AnimationStarted = False
+                            SetupAnimation()
+                        Case 1
+                            AnimationIndex = 2
+                            AnimationStarted = False
+                            SetupAnimation()
+                        Case 2, 3, 4, 5
+                            If StayInBall() = True Then
+                                SoundManager.PlaySound("Battle\Pokeball\shake")
+                                AnimationIndex += 1
+                            Else
                                 SoundManager.PlaySound("Battle\Pokeball\open")
-                                InBall = True
-                                AnimationIndex = 1
-                                AnimationStarted = False
-                                SetupAnimation()
-                            Case 1
-                                AnimationIndex = 2
-                                AnimationStarted = False
-                                SetupAnimation()
-                            Case 2, 3, 4, 5
-                                If StayInBall() = True Then
-                                    SoundManager.PlaySound("Battle\Pokeball\shake")
-                                    AnimationIndex += 1
-                                Else
-                                    SoundManager.PlaySound("Battle\Pokeball\break")
-                                    AnimationIndex = 21
-                                    InBall = False
-                                End If
-                                AnimationStarted = False
-                                SetupAnimation()
-                            Case 6
-                                AnimationIndex = 7
-                                AnimationStarted = False
-                                SetupAnimation()
-                                SoundManager.PlaySound("Battle\Pokeball\catch", False)
-                            Case 7
-                                AnimationIndex = 8
-                                AnimationStarted = False
-                                SetupAnimation()
-                                CatchPokemon()
-                                BattleSystem.Battle.Caught = True
-                            Case 8
-                                AnimationIndex = 9
-                                If showPokedexEntry = True Then
-                                    Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New PokedexViewScreen(Core.CurrentScreen, p, True), Color.White, False))
-                                End If
-                            Case 9
-                                AnimationIndex = 10
-                                Core.SetScreen(New NameObjectScreen(Core.CurrentScreen, p))
-                            Case 10 ' After Catch
-                                If p.CatchBall.ID = 186 Then
-                                    p.FullRestore() ' Heal Ball
-                                End If
+                                AnimationIndex = 21
+                                InBall = False
+                            End If
+                            AnimationStarted = False
+                            SetupAnimation()
+                        Case 6
+                            AnimationIndex = 7
+                            AnimationStarted = False
+                            SetupAnimation()
+                        Case 7
+                            AnimationIndex = 8
+                            AnimationStarted = False
+                            SetupAnimation()
+                            CatchPokemon()
+                            BattleSystem.Battle.Caught = True
+                        Case 8
+                            AnimationIndex = 9
+                            If showPokedexEntry = True Then
+                                Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New PokedexViewScreen(Core.CurrentScreen, p, True), Color.White, False))
+                            End If
+                        Case 9
+                            AnimationIndex = 10
+                            Core.SetScreen(New NameObjectScreen(Core.CurrentScreen, p))
+                        Case 10 ' After Catch
+                            If p.CatchBall.ID = 186 Then
+                                p.FullRestore() ' Heal Ball
+                            End If
 
-                                PlayerStatistics.Track("Caught Pokemon", 1)
-                                StorePokemon()
-                                AnimationIndex = 11
-                            Case 11
-                                Core.SetScreen(Me.PreScreen)
-                                BattleSystem.Battle.Won = True
-                                CType(Core.CurrentScreen, BattleSystem.BattleScreen).EndBattle(False)
-                            Case 20 ' Failed
-                                If Core.Player.Pokemons.Count < 6 Then
-                                    Dim p As Pokemon = BattleScreen.OppPokemon
-                                    p.SetCatchInfos(Me.Ball, "Illegally caught!")
+                            PlayerStatistics.Track("Caught Pokemon", 1)
+                            StorePokemon()
+                            AnimationIndex = 11
+                        Case 11
+                            Core.SetScreen(Me.PreScreen)
+                            BattleSystem.Battle.Won = True
+                            CType(Core.CurrentScreen, BattleSystem.BattleScreen).EndBattle(False)
+                        Case 20 ' Failed
+                            If Core.Player.Pokemons.Count < 6 Then
+                                Dim p As Pokemon = BattleScreen.OppPokemon
+                                p.SetCatchInfos(Me.Ball, "Illegally caught!")
 
-                                    Core.Player.Pokemons.Add(p)
-                                End If
-                                ResetVisibility()
-                                Core.SetScreen(Me.PreScreen)
-                            Case 21 ' After Break
-                                ResetVisibility()
-                                Core.SetScreen(Me.PreScreen)
-                                CType(Core.CurrentScreen, BattleSystem.BattleScreen).Battle.InitializeRound(CType(Core.CurrentScreen, BattleSystem.BattleScreen), New BattleSystem.Battle.RoundConst() With {.StepType = BattleSystem.Battle.RoundConst.StepTypes.Text, .Argument = "It broke free!"})
-                        End Select
-                    End If
+                                Core.Player.Pokemons.Add(p)
+                            End If
+                            ResetVisibility()
+                            Core.SetScreen(Me.PreScreen)
+                        Case 21 ' After Break
+                            ResetVisibility()
+                            Core.SetScreen(Me.PreScreen)
+                            CType(Core.CurrentScreen, BattleSystem.BattleScreen).Battle.InitializeRound(CType(Core.CurrentScreen, BattleSystem.BattleScreen), New BattleSystem.Battle.RoundConst() With {.StepType = BattleSystem.Battle.RoundConst.StepTypes.Text, .Argument = "It broke free!"})
+                    End Select
                 End If
             End If
         End If
@@ -272,29 +255,51 @@
 
         Select Case Me.AnimationIndex
             Case 0
-                Animations.Add(New BAMove(New Vector3(Camera.Position.X - 1.0F, Camera.Position.Y, Camera.Position.Z - 0.5F) + BattleScreen.BattleMapOffset, Ball.Texture, New Vector3(0.3F), New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z), 0.04F, True, True, 1.0F, 0.0F,,, 3))
+                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z, 0.04F, True, True, 1.0F, 0.0F,,, 3)
             Case 1
-                BattleScreen.OppPokemonNPC.Visible = False
-                Animations.Add(New BAMove(New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z), Ball.Texture, New Vector3(0.3F), New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z), 0.01F, False, False, 0.0F, 6.0F,,, 3))
+                Dim SmokeReturned As Integer = 0
+                Do
+                    Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                    Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                Dim Size As New BASize(BattleScreen.OppPokemonNPC.Position, BattleScreen.OppPokemonNPC.Textures(0), BattleScreen.OppPokemonNPC.Scale, False, New Vector3(0.05F), 0.02F, 0.0F, 0.0F, "1")
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Cloud")
 
-                Animations.Add(Size)
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+
+                    Dim SmokeEntity As Entity = Animations.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
+
+                    Animations.AnimationMoveEntity(SmokeEntity, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    If SmokeEntity.Position = SmokeDestination Then
+                        Animations.RemoveEntity(SmokeEntity)
+                    End If
+                    Threading.Interlocked.Increment(SmokeReturned)
+                Loop While SmokeReturned <= 38
+
+                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z, 0.01F, False, False, 0.0F, 6.0F,,, 3)
+
+                Animations.AnimationScaleEntity(BattleScreen.OppPokemonNPC, False, 0.05F, 0.05F, 0.05F, 0.02F, 0.0F, 0.0F, "1")
+                Animations.AnimationFadeEntity(BattleScreen.OppPokemonNPC, 1, False, 0.0F, 0.0F, 0.0F)
             Case 2
-                Animations.Add(New BAMove(New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z), Ball.Texture, New Vector3(0.3F), New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z), 0.02F, False, False, 0.0F, 6.0F,,, 3))
+                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
+
             Case 3, 5
-                Animations.Add(New BARotation(New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z), Ball.Texture, New Vector3(0.3F), New Vector3(0, 0, 0.05F), New Vector3(0, 0, 1.0F), 0.0F, 4.0F, False, False, True, True))
+                Animations.AnimationRotateEntity(BallEntity, 0, 0, 0.05F, 0, 0, 1.0F, 0.0F, 4.0F, False, False, True, True)
             Case 4, 6
-                Animations.Add(New BARotation(New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z), Ball.Texture, New Vector3(0.3F), New Vector3(0, 0, -0.05F), New Vector3(0, 0, -1.0F), 0.0F, 4.0F, False, False, True, True))
+                Animations.AnimationRotateEntity(BallEntity, 0, 0, -0.05F, 0, 0, -1.0F, 0.0F, 4.0F, False, False, True, True)
             Case 7 ' Catch Animation
                 For i = 0 To 2
-                    Dim v As Vector3 = New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z)
-
-                    Animations.Add(New BAMove(v, TextureManager.GetTexture("Textures\Battle\Other\Star"), New Vector3(0.1F), New Vector3(v.X, v.Y + 0.4F, v.Z - ((1 - i) * 0.4F)), 0.01F, False, False, 0.0F, 0.0F,,, 3))
+                    Dim StarPosition As Vector3 = New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z)
+                    Dim StarDestination As Vector3 = New Vector3(StarPosition.X, StarPosition.Y + 0.4F, StarPosition.Z - ((1 - i) * 0.4F))
+                    Dim StarEntity As Entity = Animations.SpawnEntity(StarPosition, TextureManager.GetTexture("Textures\Battle\BallCatchStar"), New Vector3(0.1F), 1.0F)
+                    Animations.AnimationMoveEntity(StarEntity, StarDestination.X, StarDestination.Y, StarDestination.Z, 0.01F, False, False, 0.0F, 0.0F,,, 3)
+                    If StarEntity.Position = StarDestination Then
+                        Animations.RemoveEntity(StarEntity)
+                    End If
                 Next
-                Animations.Add(New BAMove(New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z), Ball.Texture, New Vector3(0.3F), New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z), 0.02F, False, False, 0.0F, 6.0F,,, 3))
+                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
             Case 8
-                Animations.Add(New BAOpacity(New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z), Ball.Texture, New Vector3(0.3F), 0.01F, False, 0.0F, 0.0F, 0.0F))
+                Animations.AnimationFadeEntity(BallEntity, 0.01F, False, 0.0F, 0.0F, 0.0F)
             Case 21 ' Break Animation
 
         End Select

From 168a855ed03ad6257391b5f0d36edabb55b70f59 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 14 Oct 2021 17:50:44 +0200
Subject: [PATCH 05/57] I was not halfway done
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

I've updated Poison Sting, through which I realized I hadn't taken some usage cases into consideration, so the system should be more robust and useful now
I've also updated the animation for Switching In your own Pokémon
and I've added an animation for when the Pokémon breaks out of the ball when you're trying to catch it
---
 P3D/Battle/BattleAnimations/BAEntityColor.vb  |   67 +
 P3D/Battle/BattleAnimations/BAEntityScale.vb  |    2 +-
 P3D/Battle/BattleAnimations/BAMove.vb         |  194 ---
 P3D/Battle/BattleAnimations/BAOpacity.vb      |   41 -
 P3D/Battle/BattleAnimations/BARotation.vb     |  129 --
 P3D/Battle/BattleAnimations/BASound.vb        |   28 -
 .../BattleAnimations/BattleAnimation3D.vb     |   10 +-
 P3D/Battle/BattleSystemV2/Battle.vb           | 1086 ++++++++---------
 .../QueryObjects/AnimationQueryObject.vb      |   99 +-
 .../Textures/Battle/{Cloud.png => Smoke.png}  |  Bin
 P3D/Entites/Entity.vb                         |    1 +
 P3D/P3D.vbproj                                |    7 +-
 P3D/Pokemon/Attacks/Fire/Ember.vb             |    4 +-
 P3D/Pokemon/Attacks/Grass/Absorb.vb           |    2 +-
 P3D/Pokemon/Attacks/Normal/Growl.vb           |    2 +-
 P3D/Pokemon/Attacks/Normal/Pound.vb           |    2 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb          |    9 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb     |   34 +-
 P3D/Resources/Models/BaseModel.vb             |    6 +-
 P3D/Screens/Battle/BattleCatchScreen.vb       |   86 +-
 20 files changed, 777 insertions(+), 1032 deletions(-)
 create mode 100644 P3D/Battle/BattleAnimations/BAEntityColor.vb
 delete mode 100644 P3D/Battle/BattleAnimations/BAMove.vb
 delete mode 100644 P3D/Battle/BattleAnimations/BAOpacity.vb
 delete mode 100644 P3D/Battle/BattleAnimations/BARotation.vb
 delete mode 100644 P3D/Battle/BattleAnimations/BASound.vb
 rename P3D/Content/Textures/Battle/{Cloud.png => Smoke.png} (100%)

diff --git a/P3D/Battle/BattleAnimations/BAEntityColor.vb b/P3D/Battle/BattleAnimations/BAEntityColor.vb
new file mode 100644
index 000000000..75ba229d4
--- /dev/null
+++ b/P3D/Battle/BattleAnimations/BAEntityColor.vb
@@ -0,0 +1,67 @@
+Public Class BAEntityColor
+
+    Inherits BattleAnimation3D
+
+    Public TargetEntity As Entity
+    Public TransitionSpeed As Single = 0.01F
+    Public FadeIn As Boolean = False
+    Public ColorTo As Vector3 = New Vector3(1.0F, 1.0F, 1.0F)
+
+    Public Sub New(ByVal Entity As Entity, ByVal TransitionSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal ColorTo As Color, Optional ByVal ColorFrom As Color = Nothing)
+        MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
+
+        Me.TransitionSpeed = TransitionSpeed
+        Me.TargetEntity = Entity
+
+        If Not ColorFrom = Nothing Then
+            TargetEntity.Color = ColorFrom.ToVector3
+        End If
+        Me.ColorTo = ColorTo.ToVector3
+
+        Me.Visible = False
+
+        Me.AnimationType = AnimationTypes.Transition
+    End Sub
+
+    Public Overrides Sub DoActionActive()
+
+        If TargetEntity.Color.X > ColorTo.X Then
+            TargetEntity.Color.X -= CByte(Me.TransitionSpeed)
+            If TargetEntity.Color.X <= ColorTo.X Then
+                TargetEntity.Color.X = ColorTo.X
+            End If
+        ElseIf TargetEntity.Color.X < ColorTo.X Then
+            TargetEntity.Color.X += CByte(Me.TransitionSpeed)
+            If TargetEntity.Color.X >= ColorTo.X Then
+                TargetEntity.Color.X = ColorTo.X
+            End If
+        End If
+        If TargetEntity.Color.Y > ColorTo.Y Then
+            TargetEntity.Color.Y -= CByte(Me.TransitionSpeed)
+            If TargetEntity.Color.Y <= ColorTo.Y Then
+                TargetEntity.Color.Y = ColorTo.Y
+            End If
+        ElseIf TargetEntity.Color.Y < ColorTo.Y Then
+            TargetEntity.Color.Y += CByte(Me.TransitionSpeed)
+            If TargetEntity.Color.Y >= ColorTo.Y Then
+                TargetEntity.Color.Y = ColorTo.Y
+            End If
+        End If
+        If TargetEntity.Color.Z > ColorTo.Z Then
+            TargetEntity.Color.Z -= CByte(Me.TransitionSpeed)
+            If TargetEntity.Color.Z <= ColorTo.Z Then
+                TargetEntity.Color.Z = ColorTo.Z
+            End If
+        ElseIf TargetEntity.Color.Z < ColorTo.Z Then
+            TargetEntity.Color.Z += CByte(Me.TransitionSpeed)
+            If TargetEntity.Color.Z >= ColorTo.Z Then
+                TargetEntity.Color.Z = ColorTo.Z
+            End If
+        End If
+
+        If TargetEntity.Color = ColorTo Then
+            Me.Ready = True
+        End If
+    End Sub
+
+End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BAEntityScale.vb b/P3D/Battle/BattleAnimations/BAEntityScale.vb
index 24d1245ea..1e687de4c 100644
--- a/P3D/Battle/BattleAnimations/BAEntityScale.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityScale.vb
@@ -6,7 +6,7 @@
     Public EndSize As Vector3
     Public SizeSpeed As Single = 0.01F
     Public TargetEntity As Entity
-    Public Anchors As String
+    Public Anchors As String '1 = Bottom, 2 = Top, 3 = Left, 4 = Right. Combinations are possible.
 
     Public Change As New Vector3(1)
 
diff --git a/P3D/Battle/BattleAnimations/BAMove.vb b/P3D/Battle/BattleAnimations/BAMove.vb
deleted file mode 100644
index e59c0f0e5..000000000
--- a/P3D/Battle/BattleAnimations/BAMove.vb
+++ /dev/null
@@ -1,194 +0,0 @@
-Public Class BAMove
-
-    Inherits BattleAnimation3D
-
-    Public Destination As Vector3
-    Public MoveSpeed As Single
-    Public SpinX As Boolean = False
-    Public SpinZ As Boolean = False
-
-    Public InterpolationSpeed As Single
-    Public SpinSpeedX As Single = 0.1F
-    Public SpinSpeedZ As Single = 0.1F
-	Public MovementCurve As Integer = 3
-
-	Private EasedIn As Boolean = False
-	Private EasedOut As Boolean = False
-	Public Enum Curves As Integer
-        EaseIn
-        EaseOut
-		EaseInAndOut
-		Linear
-	End Enum
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Destination As Vector3, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 2)
-        MyBase.New(Position, Texture, Scale, startDelay, endDelay)
-
-        Me.Position = Position
-        Me.Destination = Destination
-        Me.MovementCurve = CType(MovementCurve, Curves)
-
-        Me.MoveSpeed = Speed
-        Me.Scale = Scale
-        Me.SpinSpeedX = SpinXSpeed
-        Me.SpinSpeedZ = SpinZSpeed
-
-        Me.SpinX = SpinX
-        Me.SpinZ = SpinZ
-
-        Select Case MovementCurve
-            Case Curves.EaseIn
-                InterpolationSpeed = 0.0F
-            Case Curves.EaseOut
-                InterpolationSpeed = MoveSpeed
-            Case Curves.EaseInAndOut
-				InterpolationSpeed = 0.0F
-			Case Curves.Linear
-				InterpolationSpeed = MoveSpeed
-		End Select
-
-        Me.AnimationType = AnimationTypes.Move
-    End Sub
-
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Destination As Vector3, ByVal Speed As Single, ByVal startDelay As Single, ByVal endDelay As Single)
-		Me.New(Position, Texture, Scale, Destination, Speed, False, False, startDelay, endDelay, 0.1, 0.1, 2)
-	End Sub
-
-    Public Overrides Sub DoActionUpdate()
-        Spin()
-    End Sub
-
-    Public Overrides Sub DoActionActive()
-        Move()
-    End Sub
-
-    Private Sub Spin()
-        If Me.SpinX = True Then
-            Me.Rotation.X += SpinSpeedX
-        End If
-        If Me.SpinZ = True Then
-            Me.Rotation.Z += SpinSpeedZ
-        End If
-    End Sub
-
-    Private Sub Move()
-		Select Case MovementCurve
-			Case Curves.EaseIn
-				If EasedIn = False Then
-					If InterpolationSpeed < MoveSpeed Then
-						InterpolationSpeed += MoveSpeed / 10
-					Else
-						EasedIn = True
-						InterpolationSpeed = MoveSpeed
-					End If
-				End If
-			Case Curves.EaseOut
-				If EasedOut = False Then
-					If InterpolationSpeed > 0 Then
-						InterpolationSpeed -= MoveSpeed / 10
-					Else
-						EasedOut = True
-						InterpolationSpeed = 0
-					End If
-				End If
-			Case Curves.EaseInAndOut
-				If EasedIn = False Then
-					If InterpolationSpeed < MoveSpeed Then
-						InterpolationSpeed += MoveSpeed / 10
-					Else
-						EasedIn = True
-						InterpolationSpeed = MoveSpeed
-					End If
-				Else
-					If EasedOut = False Then
-						If InterpolationSpeed > 0 Then
-							InterpolationSpeed -= MoveSpeed / 10
-						Else
-							EasedOut = True
-							InterpolationSpeed = 0
-						End If
-					End If
-				End If
-		End Select
-		If MovementCurve = Curves.Linear Then
-			If Me.Position.X < Me.Destination.X Then
-				Me.Position.X += Me.MoveSpeed
-
-				If Me.Position.X >= Me.Destination.X Then
-					Me.Position.X = Me.Destination.X
-				End If
-			ElseIf Me.Position.X > Me.Destination.X Then
-				Me.Position.X -= Me.MoveSpeed
-
-				If Me.Position.X <= Me.Destination.X Then
-					Me.Position.X = Me.Destination.X
-				End If
-			End If
-			If Me.Position.Y < Me.Destination.Y Then
-				Me.Position.Y += Me.MoveSpeed
-
-				If Me.Position.Y >= Me.Destination.Y Then
-					Me.Position.Y = Me.Destination.Y
-				End If
-			ElseIf Me.Position.Y > Me.Destination.Y Then
-				Me.Position.Y -= Me.MoveSpeed
-
-				If Me.Position.Y <= Me.Destination.Y Then
-					Me.Position.Y = Me.Destination.Y
-				End If
-			End If
-			If Me.Position.Z < Me.Destination.Z Then
-				Me.Position.Z += Me.MoveSpeed
-
-				If Me.Position.Z >= Me.Destination.Z Then
-					Me.Position.Z = Me.Destination.Z
-				End If
-			ElseIf Me.Position.Z > Me.Destination.Z Then
-				Me.Position.Z -= Me.MoveSpeed
-
-				If Me.Position.Z <= Me.Destination.Z Then
-					Me.Position.Z = Me.Destination.Z
-				End If
-			End If
-		Else
-			If Me.Position.X < Me.Destination.X Then
-				Me.Position.X = MathHelper.Lerp(Me.Position.X, Me.Destination.X, Me.InterpolationSpeed)
-				If Me.Position.X > Me.Destination.X - 0.05 Then
-					Me.Position.X = Me.Destination.X
-				End If
-			ElseIf Me.Position.X > Me.Destination.X Then
-				Me.Position.X = MathHelper.Lerp(Me.Position.X, Me.Destination.X, Me.InterpolationSpeed)
-				If Me.Position.X < Me.Destination.X + 0.05 Then
-					Me.Position.X = Me.Destination.X
-				End If
-			End If
-			If Me.Position.Y < Me.Destination.Y Then
-				Me.Position.Y = MathHelper.Lerp(Me.Position.Y, Me.Destination.Y, Me.InterpolationSpeed)
-				If Me.Position.Y > Me.Destination.Y - 0.05 Then
-					Me.Position.Y = Me.Destination.Y
-				End If
-			ElseIf Me.Position.Y > Me.Destination.Y Then
-				Me.Position.Y = MathHelper.Lerp(Me.Position.Y, Me.Destination.Y, Me.InterpolationSpeed)
-				If Me.Position.Y < Me.Destination.Y + 0.05 Then
-					Me.Position.Y = Me.Destination.Y
-				End If
-			End If
-			If Me.Position.Z < Me.Destination.Z Then
-				Me.Position.Z = MathHelper.Lerp(Me.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
-				If Me.Position.Z > Me.Destination.Z - 0.05 Then
-					Me.Position.Z = Me.Destination.Z
-				End If
-			ElseIf Me.Position.Z > Me.Destination.Z Then
-				Me.Position.Z = MathHelper.Lerp(Me.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
-				If Me.Position.Z < Me.Destination.Z + 0.05 Then
-					Me.Position.Z = Me.Destination.Z
-				End If
-			End If
-		End If
-
-		If Me.Position = Destination Then
-			Me.Ready = True
-		End If
-
-	End Sub
-
-End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BAOpacity.vb b/P3D/Battle/BattleAnimations/BAOpacity.vb
deleted file mode 100644
index 5326dcea2..000000000
--- a/P3D/Battle/BattleAnimations/BAOpacity.vb
+++ /dev/null
@@ -1,41 +0,0 @@
-Public Class BAOpacity
-
-    Inherits BattleAnimation3D
-
-    Public TransitionSpeed As Single = 0.01F
-    Public FadeIn As Boolean = False
-    Public EndState As Single = 0.0F
-
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal StartState As Single = 1.0F)
-        MyBase.New(Position, Texture, Scale, startDelay, endDelay)
-        MyBase.Opacity = StartState
-        Me.EndState = EndState
-        Me.FadeIn = FadeIn
-        Me.TransitionSpeed = TransitionSpeed
-
-        Me.AnimationType = AnimationTypes.Transition
-    End Sub
-
-    Public Overrides Sub DoActionActive()
-        If Me.FadeIn = True Then
-            If Me.EndState > Me.Opacity Then
-                Me.Opacity += Me.TransitionSpeed
-                If Me.Opacity >= Me.EndState Then
-                    Me.Opacity = Me.EndState
-                End If
-            End If
-        Else
-            If Me.EndState < Me.Opacity Then
-                Me.Opacity -= Me.TransitionSpeed
-                If Me.Opacity <= Me.EndState Then
-                    Me.Opacity = Me.EndState
-                End If
-            End If
-        End If
-
-        If Me.Opacity = Me.EndState Then
-            Me.Ready = True
-        End If
-    End Sub
-
-End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BARotation.vb b/P3D/Battle/BattleAnimations/BARotation.vb
deleted file mode 100644
index 13f921a10..000000000
--- a/P3D/Battle/BattleAnimations/BARotation.vb
+++ /dev/null
@@ -1,129 +0,0 @@
-Public Class BARotation
-
-    Inherits BattleAnimation3D
-
-    Dim RotationVector As Vector3
-    Dim EndRotation As Vector3
-    Dim DoReturn As Boolean = False
-    Dim ReturnVector As Vector3
-    Dim hasReturned As Boolean = False
-    Dim DoRotation As Vector3 = New Vector3(1.0F)
-
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal RotationVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single)
-        MyBase.New(Position, Texture, Scale, startDelay, endDelay)
-
-        Me.RotationVector = RotationVector
-        Me.EndRotation = EndRotation
-        Me.ReturnVector = Me.Rotation
-    End Sub
-
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal RotationVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean)
-        Me.New(Position, Texture, Scale, RotationVector, EndRotation, startDelay, endDelay)
-
-        If DoXRotation = False Then
-            DoRotation.X = 0.0F
-        End If
-        If DoYRotation = False Then
-            DoRotation.Y = 0.0F
-        End If
-        If DoZRotation = False Then
-            DoRotation.Z = 0.0F
-        End If
-    End Sub
-
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal RotationVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
-        Me.New(Position, Texture, Scale, RotationVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation)
-
-        Me.DoReturn = DoReturn
-    End Sub
-
-    Public Overrides Sub DoActionActive()
-        If VectorReached() = False Then
-
-            If DoRotation.X = 1.0F Then
-                If Me.Rotation.X > Me.EndRotation.X Then
-                    Me.Rotation.X += Me.RotationVector.X
-
-                    If Me.Rotation.X <= Me.EndRotation.X Then
-                        Me.Rotation.X = Me.EndRotation.X
-                    End If
-                ElseIf Me.Rotation.X < Me.EndRotation.X Then
-                    Me.Rotation.X += Me.RotationVector.X
-
-                    If Me.Rotation.X >= Me.EndRotation.X Then
-                        Me.Rotation.X = Me.EndRotation.X
-                    End If
-                End If
-            End If
-
-            If DoRotation.Y = 1.0F Then
-                If Me.Rotation.Y > Me.EndRotation.Y Then
-                    Me.Rotation.Y += Me.RotationVector.Y
-
-                    If Me.Rotation.Y <= Me.EndRotation.Y Then
-                        Me.Rotation.Y = Me.EndRotation.Y
-                    End If
-                ElseIf Me.Rotation.Y < Me.EndRotation.Y Then
-                    Me.Rotation.Y += Me.RotationVector.Y
-
-                    If Me.Rotation.Y >= Me.EndRotation.Y Then
-                        Me.Rotation.Y = Me.EndRotation.Y
-                    End If
-                End If
-            End If
-
-            If DoRotation.Z = 1.0F Then
-                If Me.Rotation.Z > Me.EndRotation.Z Then
-                    Me.Rotation.Z += Me.RotationVector.Z
-
-                    If Me.Rotation.Z <= Me.EndRotation.Z Then
-                        Me.Rotation.Z = Me.EndRotation.Z
-                    End If
-                ElseIf Me.Rotation.Z < Me.EndRotation.Z Then
-                    Me.Rotation.Z += Me.RotationVector.Z
-
-                    If Me.Rotation.Z >= Me.EndRotation.Z Then
-                        Me.Rotation.Z = Me.EndRotation.Z
-                    End If
-                End If
-            End If
-
-            If VectorReached() = True Then
-                RotationReady()
-            End If
-        Else
-            RotationReady()
-        End If
-    End Sub
-
-    Private Sub RotationReady()
-        If Me.DoReturn = True And Me.hasReturned = False Then
-            Me.hasReturned = True
-            Me.EndRotation = Me.ReturnVector
-            Me.RotationVector = New Vector3(Me.RotationVector.X * -1, Me.RotationVector.Y * -1, Me.RotationVector.Z * -1)
-        Else
-            Me.Ready = True
-        End If
-    End Sub
-
-    Private Function VectorReached() As Boolean
-        If DoRotation.X = 1.0F Then
-            If EndRotation.X <> Me.Rotation.X Then
-                Return False
-            End If
-        End If
-        If DoRotation.Y = 1.0F Then
-            If EndRotation.Y <> Me.Rotation.Y Then
-                Return False
-            End If
-        End If
-        If DoRotation.Z = 1.0F Then
-            If EndRotation.Z <> Me.Rotation.Z Then
-                Return False
-            End If
-        End If
-
-        Return True
-    End Function
-
-End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BASound.vb b/P3D/Battle/BattleAnimations/BASound.vb
deleted file mode 100644
index da699ec23..000000000
--- a/P3D/Battle/BattleAnimations/BASound.vb
+++ /dev/null
@@ -1,28 +0,0 @@
-Public Class BASound
-
-    Inherits BattleAnimation3D
-
-    Private soundfile As String
-    Private stopMusic As Boolean
-    Private IsPokemon As Boolean
-
-
-    Public Sub New(ByVal sound As String, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal stopMusic As Boolean = False, Optional ByVal IsPokemon As Boolean = False)
-        MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
-        Me.Scale = New Vector3(1.0F)
-        soundfile = sound
-        Me.Visible = False
-        Me.stopMusic = stopMusic
-        Me.IsPokemon = IsPokemon
-        AnimationType = AnimationTypes.Sound
-    End Sub
-
-    Public Overrides Sub DoActionActive()
-        If IsPokemon = True Then
-            SoundManager.PlayPokemonCry(CInt(soundfile))
-        Else
-            SoundManager.PlaySound(soundfile, stopMusic)
-        End If
-        Me.Ready = True
-    End Sub
-End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
index 7d7c8050b..1aeb45e27 100644
--- a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
+++ b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
@@ -24,14 +24,19 @@
     Public Ready As Boolean = False
     Public startDelay As Single
     Public endDelay As Single
+    Public SpawnedEntity As Entity = Nothing
 
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal startDelay As Single, ByVal endDelay As Single)
+    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, Optional SpawnedEntity As Entity = Nothing)
         MyBase.New(Position.X, Position.Y, Position.Z, "BattleAnimation", {Texture}, {0, 0}, False, 0, Scale, BaseModel.BillModel, 0, "", New Vector3(1.0F))
 
         Me.Visible = Visible
         Me.startDelay = startDelay
         Me.endDelay = endDelay
 
+        If SpawnedEntity IsNot Nothing Then
+            Me.SpawnedEntity = SpawnedEntity
+        End If
+
         Me.CreateWorldEveryFrame = True
         Me.DropUpdateUnlessDrawn = False
     End Sub
@@ -56,6 +61,9 @@
                         startDelay = 0.0F
                     End If
                 Else
+                    If SpawnedEntity IsNot Nothing Then
+                        Ready = True
+                    End If
                     DoActionActive()
                 End If
             End If
diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 823bea6f1..a93c5e4bc 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2706,19 +2706,14 @@
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                                BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                                BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
                                 Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-                                BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
 
-                                If FlameEntity.Opacity = 0.0F Then
-                                    BurnAnimation.RemoveEntity(FlameEntity)
-                                End If
-
                                 Select Case message
                                     Case "" 'Print default message only
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
@@ -2729,30 +2724,30 @@
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
                                 End Select
                                 If p.Ability.Name.ToLower() = "synchronize" AndAlso from <> own Then
-                                        Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
-                                    End If
-
-                                    If Not p.Item Is Nothing Then
-                                        If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
-                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                                CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
-                                            End If
-                                        End If
-                                    End If
-
-                                    If Not p.Item Is Nothing Then
-                                        If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
-                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                                CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
-                                            End If
-                                        End If
-                                    End If
-
-                                    Return True
+                                    Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
                                 End If
+
+                                If Not p.Item Is Nothing Then
+                                    If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
+                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                            CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
+                                        End If
+                                    End If
+                                End If
+
+                                If Not p.Item Is Nothing Then
+                                    If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
+                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                            CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
+                                        End If
+                                    End If
+                                End If
+
+                                Return True
                             End If
+                        End If
                     End If
                 End If
             End If
@@ -3421,19 +3416,18 @@
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
-                Dim Texture As String = "Textures\Battle\StatChange\statDown"
-                Dim Position As Vector3 = New Vector3(0, -0.4, 0)
-                Dim Destination As Vector3 = New Vector3(0, 0.8, 0)
-                Dim Scale As Vector3 = New Vector3(0.2F)
+                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statUp")
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Position.X = xPos
-                Position.Z = zPos
-                Destination.X = xPos
-                Destination.Z = zPos
+                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), pNPC.Position.Z + zPos)
+                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), zPos + pNPC.Position.Z)
+                Dim Scale As New Vector3(0.2F)
+
+                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-                StatAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+
+                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
@@ -3699,27 +3693,26 @@
                 End If
             End If
             '***STAT DECREASE ANIMATION***
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
-                Dim Texture As String = "Textures\Battle\StatChange\statDown"
-                Dim Position As Vector3 = New Vector3(0, 0.8, 0)
-                Dim Destination As Vector3 = New Vector3(0, -0.4, 0)
-                Dim Scale As Vector3 = New Vector3(0.2F)
+                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statDown")
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Position.X = xPos
-                Position.Z = zPos
-                Destination.X = xPos
-                Destination.Z = zPos
+                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), pNPC.Position.Z + zPos)
+                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), zPos + pNPC.Position.Z)
+                Dim Scale As New Vector3(0.2F)
+
+                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+
+                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
-            MoveAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
-            BattleScreen.BattleQuery.Add(MoveAnimation)
+            StatAnimation.PlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
+            BattleScreen.BattleQuery.Add(StatAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -4005,10 +3998,10 @@
                 End If
 
                 Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 0, 0)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 1, 0)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 2, 0)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 3, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 0, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 1, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 2, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 3, 0)
                 BattleScreen.BattleQuery.Add(HitAnimation)
 
                 If own = True Then
@@ -4763,14 +4756,14 @@
 
 #End Region
 
-		''' <summary>
-		''' Switches camera to angle
-		''' </summary>
-		''' <param name="direction">0=main battle/1=own pokemon/2=opp pokemon</param>
-		''' <param name="own">If the code comes from the own player or not.</param>
-		''' <param name="BattleScreen">Battlescreen reference</param>
-		''' <param name="AddPVP">If the call should get added the PVP list or the own queue.</param>
-		Public Sub ChangeCameraAngle(ByVal direction As Integer, ByVal own As Boolean, ByVal BattleScreen As BattleScreen, Optional ByVal AddPVP As Boolean = False)
+        ''' <summary>
+        ''' Switches camera to angle
+        ''' </summary>
+        ''' <param name="direction">0=main battle/1=own pokemon/2=opp pokemon</param>
+        ''' <param name="own">If the code comes from the own player or not.</param>
+        ''' <param name="BattleScreen">Battlescreen reference</param>
+        ''' <param name="AddPVP">If the call should get added the PVP list or the own queue.</param>
+        Public Sub ChangeCameraAngle(ByVal direction As Integer, ByVal own As Boolean, ByVal BattleScreen As BattleScreen, Optional ByVal AddPVP As Boolean = False)
             Dim q As CameraQueryObject = Nothing
 
             Select Case direction
@@ -5364,7 +5357,7 @@
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -5388,7 +5381,7 @@
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -5420,20 +5413,15 @@
 
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
-                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
-                            If FlameEntity.Opacity = 0.0F Then
-                                BurnAnimation.RemoveEntity(FlameEntity)
-                            End If
-
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6163,7 +6151,7 @@
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -6187,7 +6175,7 @@
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -6218,20 +6206,15 @@
                             End If
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
-                            If FlameEntity.Opacity = 0.0F Then
-                                BurnAnimation.RemoveEntity(FlameEntity)
-                            End If
-
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6756,38 +6739,38 @@
                     End If
                 Else
                     If BattleScreen.IsTrainerBattle = True Then
-						EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, False)
-						If BattleScreen.IsRemoteBattle = True Then
-							EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, True)
-						End If
-					Else
-						EndBattle(EndBattleReasons.LoseWild, BattleScreen, False)
-					End If
-				End If
-			End With
-		End Sub
+                        EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, False)
+                        If BattleScreen.IsRemoteBattle = True Then
+                            EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, True)
+                        End If
+                    Else
+                        EndBattle(EndBattleReasons.LoseWild, BattleScreen, False)
+                    End If
+                End If
+            End With
+        End Sub
 
-		Public Sub ApplyOwnBatonPass(ByVal BattleScreen As BattleScreen)
-			If BattleScreen.FieldEffects.OwnUsedBatonPass = True Then
-				BattleScreen.FieldEffects.OwnUsedBatonPass = False
+        Public Sub ApplyOwnBatonPass(ByVal BattleScreen As BattleScreen)
+            If BattleScreen.FieldEffects.OwnUsedBatonPass = True Then
+                BattleScreen.FieldEffects.OwnUsedBatonPass = False
 
-				BattleScreen.OwnPokemon.StatAttack = BattleScreen.FieldEffects.OwnBatonPassStats(0)
-				BattleScreen.OwnPokemon.StatDefense = BattleScreen.FieldEffects.OwnBatonPassStats(1)
-				BattleScreen.OwnPokemon.StatSpAttack = BattleScreen.FieldEffects.OwnBatonPassStats(2)
-				BattleScreen.OwnPokemon.StatSpDefense = BattleScreen.FieldEffects.OwnBatonPassStats(3)
-				BattleScreen.OwnPokemon.StatSpeed = BattleScreen.FieldEffects.OwnBatonPassStats(4)
-				BattleScreen.OwnPokemon.Evasion = BattleScreen.FieldEffects.OwnBatonPassStats(5)
-				BattleScreen.OwnPokemon.Accuracy = BattleScreen.FieldEffects.OwnBatonPassStats(6)
+                BattleScreen.OwnPokemon.StatAttack = BattleScreen.FieldEffects.OwnBatonPassStats(0)
+                BattleScreen.OwnPokemon.StatDefense = BattleScreen.FieldEffects.OwnBatonPassStats(1)
+                BattleScreen.OwnPokemon.StatSpAttack = BattleScreen.FieldEffects.OwnBatonPassStats(2)
+                BattleScreen.OwnPokemon.StatSpDefense = BattleScreen.FieldEffects.OwnBatonPassStats(3)
+                BattleScreen.OwnPokemon.StatSpeed = BattleScreen.FieldEffects.OwnBatonPassStats(4)
+                BattleScreen.OwnPokemon.Evasion = BattleScreen.FieldEffects.OwnBatonPassStats(5)
+                BattleScreen.OwnPokemon.Accuracy = BattleScreen.FieldEffects.OwnBatonPassStats(6)
 
-				If BattleScreen.FieldEffects.OwnBatonPassConfusion = True Then
-					BattleScreen.FieldEffects.OwnBatonPassConfusion = False
-					BattleScreen.OwnPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
-				End If
-			End If
-		End Sub
+                If BattleScreen.FieldEffects.OwnBatonPassConfusion = True Then
+                    BattleScreen.FieldEffects.OwnBatonPassConfusion = False
+                    BattleScreen.OwnPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
+                End If
+            End If
+        End Sub
 
-		Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
-			HasSwitchedInOwn = True
+        Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
+            HasSwitchedInOwn = True
             If FirstTime = False Then
                 Dim insertMessage As String = message
 
@@ -6800,28 +6783,32 @@
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
 
                 ' Ball Closes
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-                    Dim SmokeDestination = New Vector3(0, 0, 0)
+                    Dim SmokeDestination As Vector3 = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
-                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
+
+                    BallReturn.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+                BallReturn.FadeEntity(Nothing, False, 1, False, 0, 1, 0)
+                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                 ' Ball returns
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
+                Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position, TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallReturn.MoveEntity(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
@@ -6859,315 +6846,322 @@
 
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+
+                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
+
+                Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position + New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallThrow.MoveEntity(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
+
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
-                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    Dim SmokeEntity As Entity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
+
+                    BallThrow.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
-                BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
+                BallThrow.FadeEntity(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.PlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
 
             With BattleScreen
-				If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
-					.FieldEffects.UsedPokemon.Add(NewPokemonIndex)
-				End If
+                If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
+                    .FieldEffects.UsedPokemon.Add(NewPokemonIndex)
+                End If
 
-				If Not .OwnPokemon.Item Is Nothing Then
-					If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
-						If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
-							BattleScreen.FieldEffects.AmuletCoin += 1
-						End If
-					End If
-				End If
+                If Not .OwnPokemon.Item Is Nothing Then
+                    If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
+                        If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
+                            BattleScreen.FieldEffects.AmuletCoin += 1
+                        End If
+                    End If
+                End If
 
-				Dim p As Pokemon = .OwnPokemon
-				Dim op As Pokemon = .OppPokemon
+                Dim p As Pokemon = .OwnPokemon
+                Dim op As Pokemon = .OppPokemon
 
-				Dim spikeAffected As Boolean = True
-				Dim rockAffected As Boolean = True
+                Dim spikeAffected As Boolean = True
+                Dim rockAffected As Boolean = True
 
-				spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
+                spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
 
-				'Spikes
-				If spikeAffected = True Then
-					If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-						Dim spikeDamage As Double = 1D
-						Select Case .FieldEffects.OppSpikes
-							Case 1
-								spikeDamage = (p.MaxHP / 100) * 12.5D
-							Case 2
-								spikeDamage = (p.MaxHP / 100) * 16.7D
-							Case 3
-								spikeDamage = (p.MaxHP / 100) * 25D
-						End Select
-						ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-					End If
-				End If
+                'Spikes
+                If spikeAffected = True Then
+                    If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+                        Dim spikeDamage As Double = 1D
+                        Select Case .FieldEffects.OppSpikes
+                            Case 1
+                                spikeDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2
+                                spikeDamage = (p.MaxHP / 100) * 16.7D
+                            Case 3
+                                spikeDamage = (p.MaxHP / 100) * 25D
+                        End Select
+                        ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+                    End If
+                End If
 
-				'Sticky Web
-				If spikeAffected = True Then
-					If .FieldEffects.OppStickyWeb > 0 Then
+                'Sticky Web
+                If spikeAffected = True Then
+                    If .FieldEffects.OppStickyWeb > 0 Then
 
-						LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
+                        LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-					End If
-				End If
+                    End If
+                End If
 
-				'Toxic Spikes
-				If spikeAffected = True Then
-					If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-						Select Case .FieldEffects.OppToxicSpikes
-							Case 1
-								InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-							Case 2
-								InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-						End Select
-					End If
-					If .FieldEffects.OppToxicSpikes > 0 Then
-						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-							.AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-							.FieldEffects.OppToxicSpikes = 0
-						End If
-					End If
-				End If
+                'Toxic Spikes
+                If spikeAffected = True Then
+                    If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+                        Select Case .FieldEffects.OppToxicSpikes
+                            Case 1
+                                InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                            Case 2
+                                InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                        End Select
+                    End If
+                    If .FieldEffects.OppToxicSpikes > 0 Then
+                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+                            .AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+                            .FieldEffects.OppToxicSpikes = 0
+                        End If
+                    End If
+                End If
 
-				'Stealth Rock
-				If rockAffected = True Then
-					If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-						Dim rocksDamage As Double = 1D
+                'Stealth Rock
+                If rockAffected = True Then
+                    If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+                        Dim rocksDamage As Double = 1D
 
-						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-						Select Case effectiveness
-							Case 0.25F
-								rocksDamage = (p.MaxHP / 100) * 3.125D
-							Case 0.5F
-								rocksDamage = (p.MaxHP / 100) * 6.25D
-							Case 1.0F
-								rocksDamage = (p.MaxHP / 100) * 12.5D
-							Case 2.0F
-								rocksDamage = (p.MaxHP / 100) * 25D
-							Case 4.0F
-								rocksDamage = (p.MaxHP / 100) * 50D
-						End Select
+                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+                        Select Case effectiveness
+                            Case 0.25F
+                                rocksDamage = (p.MaxHP / 100) * 3.125D
+                            Case 0.5F
+                                rocksDamage = (p.MaxHP / 100) * 6.25D
+                            Case 1.0F
+                                rocksDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2.0F
+                                rocksDamage = (p.MaxHP / 100) * 25D
+                            Case 4.0F
+                                rocksDamage = (p.MaxHP / 100) * 50D
+                        End Select
 
-						ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-					End If
-				End If
+                        ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+                    End If
+                End If
 
-				TriggerAbilityEffect(BattleScreen, True)
-				TriggerItemEffect(BattleScreen, True)
+                TriggerAbilityEffect(BattleScreen, True)
+                TriggerItemEffect(BattleScreen, True)
 
-				If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
-					.FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
-				End If
+                If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
+                    .FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
+                End If
 
-				If BattleScreen.FieldEffects.OwnHealingWish = True Then
-					BattleScreen.FieldEffects.OwnHealingWish = False
+                If BattleScreen.FieldEffects.OwnHealingWish = True Then
+                    BattleScreen.FieldEffects.OwnHealingWish = False
 
-					If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
-						GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
-						CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
-					End If
-				End If
-			End With
-		End Sub
+                    If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
+                        GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
+                        CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
+                    End If
+                End If
+            End With
+        End Sub
 
-		Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
-			With BattleScreen
-				'Natural cure cures status problems
-				If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
-					If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-						.OppPokemon.Status = Pokemon.StatusProblems.None
-						.BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
-					End If
-				End If
-				'Regenerator ability heals 1/3 of it's max HP
-				If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
-					If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
-						Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
-						If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
-							BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
-						End If
-					End If
-				End If
-				'save baton pass stuff:
-				If .FieldEffects.OppUsedBatonPass = True Then
-					.FieldEffects.OppBatonPassStats = New List(Of Integer)
-					With .OppPokemon
-						BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
-					End With
-					.FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
-				End If
+        Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
+            With BattleScreen
+                'Natural cure cures status problems
+                If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
+                    If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+                        .OppPokemon.Status = Pokemon.StatusProblems.None
+                        .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
+                    End If
+                End If
+                'Regenerator ability heals 1/3 of it's max HP
+                If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
+                    If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
+                        Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
+                        If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
+                            BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
+                        End If
+                    End If
+                End If
+                'save baton pass stuff:
+                If .FieldEffects.OppUsedBatonPass = True Then
+                    .FieldEffects.OppBatonPassStats = New List(Of Integer)
+                    With .OppPokemon
+                        BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
+                    End With
+                    .FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
+                End If
 
-				'Set the original objects of Pokemon
-				.OppPokemon.ResetTemp()
+                'Set the original objects of Pokemon
+                .OppPokemon.ResetTemp()
 
-				'Remove volatiles
-				.OppPokemon.ClearAllVolatiles()
+                'Remove volatiles
+                .OppPokemon.ClearAllVolatiles()
 
-				'Resetting FieldEffects
-				With .FieldEffects
-					.OppSleepTurns = 0
-					.OppTruantRound = 0
-					.OppTaunt = 0
-					.OppSmacked = 0
-					.OppRageCounter = 0
-					.OppUproar = 0
-					If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
-					.OppEndure = 0
-					.OppProtectCounter = 0
-					.OppDetectCounter = 0
-					.OppKingsShieldCounter = 0
-					.OppProtectMovesCount = 0
-					If .OppUsedBatonPass = False Then .OppIngrain = 0
-					If .OppUsedBatonPass = False Then .OppSubstitute = 0
-					If .OppUsedBatonPass = False Then .OppMagnetRise = 0
-					If .OppUsedBatonPass = False Then .OppAquaRing = 0
-					.OppPoisonCounter = 0
-					.OppNightmare = 0
-					If .OppUsedBatonPass = False Then .OppCurse = 0
-					.OppOutrage = 0
-					.OppThrash = 0
-					.OppPetalDance = 0
-					.OppEncore = 0
-					.OppEncoreMove = Nothing
-					If .OppUsedBatonPass = False Then .OppEmbargo = 0
-					.OppYawn = 0
-					If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
-					.OppConfusionTurns = 0
-					.OppTorment = 0
-					.OppTormentMove = Nothing
-					.OppChoiceMove = Nothing
-					.OppRecharge = 0
-					.OppRolloutCounter = 0
-					.OppIceBallCounter = 0
-					.OppDefenseCurl = 0
-					.OppCharge = 0
-					.OppSolarBeam = 0
-					.OppSolarBlade = 0
-					If .OppUsedBatonPass = False Then .OppLeechSeed = 0
-					If .OppUsedBatonPass = False Then .OppLockOn = 0
-					.OppLansatBerry = 0
-					.OppCustapBerry = 0
-					.OppTrappedCounter = 0
-					.OppFuryCutter = 0
-					.OppEchoedVoice = 0
-					.OppPokemonTurns = 0
-					.OppStockpileCount = 0
-					.OppDestinyBond = False
-					.OppGastroAcid = False
+                'Resetting FieldEffects
+                With .FieldEffects
+                    .OppSleepTurns = 0
+                    .OppTruantRound = 0
+                    .OppTaunt = 0
+                    .OppSmacked = 0
+                    .OppRageCounter = 0
+                    .OppUproar = 0
+                    If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
+                    .OppEndure = 0
+                    .OppProtectCounter = 0
+                    .OppDetectCounter = 0
+                    .OppKingsShieldCounter = 0
+                    .OppProtectMovesCount = 0
+                    If .OppUsedBatonPass = False Then .OppIngrain = 0
+                    If .OppUsedBatonPass = False Then .OppSubstitute = 0
+                    If .OppUsedBatonPass = False Then .OppMagnetRise = 0
+                    If .OppUsedBatonPass = False Then .OppAquaRing = 0
+                    .OppPoisonCounter = 0
+                    .OppNightmare = 0
+                    If .OppUsedBatonPass = False Then .OppCurse = 0
+                    .OppOutrage = 0
+                    .OppThrash = 0
+                    .OppPetalDance = 0
+                    .OppEncore = 0
+                    .OppEncoreMove = Nothing
+                    If .OppUsedBatonPass = False Then .OppEmbargo = 0
+                    .OppYawn = 0
+                    If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
+                    .OppConfusionTurns = 0
+                    .OppTorment = 0
+                    .OppTormentMove = Nothing
+                    .OppChoiceMove = Nothing
+                    .OppRecharge = 0
+                    .OppRolloutCounter = 0
+                    .OppIceBallCounter = 0
+                    .OppDefenseCurl = 0
+                    .OppCharge = 0
+                    .OppSolarBeam = 0
+                    .OppSolarBlade = 0
+                    If .OppUsedBatonPass = False Then .OppLeechSeed = 0
+                    If .OppUsedBatonPass = False Then .OppLockOn = 0
+                    .OppLansatBerry = 0
+                    .OppCustapBerry = 0
+                    .OppTrappedCounter = 0
+                    .OppFuryCutter = 0
+                    .OppEchoedVoice = 0
+                    .OppPokemonTurns = 0
+                    .OppStockpileCount = 0
+                    .OppDestinyBond = False
+                    .OppGastroAcid = False
 
-					.OppFlyCounter = 0
-					.OppDigCounter = 0
-					.OppBounceCounter = 0
-					.OppDiveCounter = 0
-					.OppShadowForceCounter = 0
-					.OppPhantomForceCounter = 0
-					.OppSkyDropCounter = 0
-					.OppGeomancyCounter = 0
-					.OppSkyAttackCounter = 0
-					.OppRazorWindCounter = 0
-					.OppSkullBashCounter = 0
+                    .OppFlyCounter = 0
+                    .OppDigCounter = 0
+                    .OppBounceCounter = 0
+                    .OppDiveCounter = 0
+                    .OppShadowForceCounter = 0
+                    .OppPhantomForceCounter = 0
+                    .OppSkyDropCounter = 0
+                    .OppGeomancyCounter = 0
+                    .OppSkyAttackCounter = 0
+                    .OppRazorWindCounter = 0
+                    .OppSkullBashCounter = 0
 
-					.OppForesight = 0
-					.OppOdorSleuth = 0
-					.OppMiracleEye = 0
+                    .OppForesight = 0
+                    .OppOdorSleuth = 0
+                    .OppMiracleEye = 0
 
-					.OppWrap = 0
-					.OppWhirlpool = 0
-					.OppBind = 0
-					.OppClamp = 0
-					.OppFireSpin = 0
-					.OppMagmaStorm = 0
-					.OppSandTomb = 0
-					.OppInfestation = 0
+                    .OppWrap = 0
+                    .OppWhirlpool = 0
+                    .OppBind = 0
+                    .OppClamp = 0
+                    .OppFireSpin = 0
+                    .OppMagmaStorm = 0
+                    .OppSandTomb = 0
+                    .OppInfestation = 0
 
-					.OppBideCounter = 0
-					.OppBideDamage = 0
+                    .OppBideCounter = 0
+                    .OppBideDamage = 0
 
-					.OppRoostUsed = False
+                    .OppRoostUsed = False
 
-					'Own stuff that depends on opp pokemon presence
-					.OwnTrappedCounter = 0
-					.OwnWrap = 0
-					.OwnWhirlpool = 0
-					.OwnBind = 0
-					.OwnClamp = 0
-					.OwnFireSpin = 0
-					.OwnMagmaStorm = 0
-					.OwnSandTomb = 0
-					.OwnInfestation = 0
+                    'Own stuff that depends on opp pokemon presence
+                    .OwnTrappedCounter = 0
+                    .OwnWrap = 0
+                    .OwnWhirlpool = 0
+                    .OwnBind = 0
+                    .OwnClamp = 0
+                    .OwnFireSpin = 0
+                    .OwnMagmaStorm = 0
+                    .OwnSandTomb = 0
+                    .OwnInfestation = 0
 
-					If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
-						BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
-					End If
-				End With
-			End With
+                    If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
+                        BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
+                    End If
+                End With
+            End With
 
-			BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
+            BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
 
-			If BattleScreen.IsTrainerBattle = False Then
+            If BattleScreen.IsTrainerBattle = False Then
                 ChangeCameraAngle(1, False, BattleScreen)
                 Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
-                Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.AnimationMoveEntity(Nothing, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
+                Faint.PlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                Faint.MoveEntity(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
                 BattleScreen.BattleQuery.Add(Faint)
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
 
-				EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
-			Else
-				If BattleScreen.TrainerHasFightablePokemon() = True Then
-					If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
-						GainEXP(BattleScreen)
-					End If
+                EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
+            Else
+                If BattleScreen.TrainerHasFightablePokemon() = True Then
+                    If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
+                        GainEXP(BattleScreen)
+                    End If
 
                     If BattleScreen.IsRemoteBattle And BattleScreen.OppFaint Then
-						'Next pokemon is selected by the opponent.
-					Else
-						SwitchInOpp(BattleScreen, False, index)
-					End If
-				Else
-					GainEXP(BattleScreen)
+                        'Next pokemon is selected by the opponent.
+                    Else
+                        SwitchInOpp(BattleScreen, False, index)
+                    End If
+                Else
+                    GainEXP(BattleScreen)
 
                     If message = "" Then
-						message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
-					End If
+                        message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
+                    End If
 
-					BattleScreen.BattleQuery.Add(New TextQueryObject(message))
+                    BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
                     Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                     ' Ball Closes
-                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                    BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
                     Dim SmokeReturned As Integer = 0
                     Do
                         Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                         Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                        Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                        Dim SmokeTexture As String = "Textures\Battle\Smoke"
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                         Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
@@ -7178,57 +7172,57 @@
 
                     ' Pokemon disappears
                     BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                    BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                     ' Ball returns
-                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                    BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
                     BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                     BattleScreen.BattleQuery.Add(BallReturn)
 
                     EndBattle(EndBattleReasons.WinTrainer, BattleScreen, False)
-					If BattleScreen.IsRemoteBattle = True Then
-						EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
-					End If
-				End If
-			End If
-		End Sub
+                    If BattleScreen.IsRemoteBattle = True Then
+                        EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
+                    End If
+                End If
+            End If
+        End Sub
 
-		Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
-			If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
-				BattleScreen.FieldEffects.OppUsedBatonPass = False
+        Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
+            If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
+                BattleScreen.FieldEffects.OppUsedBatonPass = False
 
-				BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
-				BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
-				BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
-				BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
-				BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
-				BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
-				BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
+                BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
+                BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
+                BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
+                BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
+                BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
+                BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
+                BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
 
-				If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
-					BattleScreen.FieldEffects.OppBatonPassConfusion = False
-					BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
-				End If
-			End If
-		End Sub
+                If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
+                    BattleScreen.FieldEffects.OppBatonPassConfusion = False
+                    BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
+                End If
+            End If
+        End Sub
 
-		Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
+        Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
 
-			If FirstTime = False Then
-				HasSwitchedInOpp = True
+            If FirstTime = False Then
+                HasSwitchedInOpp = True
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                 ' Ball Closes
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                     Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
@@ -7239,51 +7233,51 @@
 
                 ' Pokemon disappears
                 BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
                 BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.BattleQuery.Add(BallReturn)
 
                 BattleScreen.SendInNewTrainerPokemon(index)
-				Me.ApplyOppBatonPass(BattleScreen)
+                Me.ApplyOppBatonPass(BattleScreen)
 
-				If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
-					BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
-				End If
+                If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
+                    BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
+                End If
 
-				Dim oppShiny As String = "N"
-				If BattleScreen.OppPokemon.IsShiny = True Then
-					oppShiny = "S"
-				End If
+                Dim oppShiny As String = "N"
+                If BattleScreen.OppPokemon.IsShiny = True Then
+                    oppShiny = "S"
+                End If
 
-				Dim oppModel As String = BattleScreen.GetModelName(False)
+                Dim oppModel As String = BattleScreen.GetModelName(False)
 
-				If oppModel = "" Then
-					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
-				Else
-					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
-				End If
+                If oppModel = "" Then
+                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
+                Else
+                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
+                End If
 
-				BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
+                BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Go, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
                 BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
@@ -7294,180 +7288,180 @@
 
                 ' Pokemon appears
                 BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
-                BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+                BallThrow.PlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.BattleQuery.Add(BallThrow)
             End If
 
-			With BattleScreen
-				Dim p As Pokemon = .OppPokemon
-				Dim op As Pokemon = .OwnPokemon
+            With BattleScreen
+                Dim p As Pokemon = .OppPokemon
+                Dim op As Pokemon = .OwnPokemon
 
-				Dim spikeAffected As Boolean = True
-				Dim rockAffected As Boolean = True
+                Dim spikeAffected As Boolean = True
+                Dim rockAffected As Boolean = True
 
-				spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
+                spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
 
-				If spikeAffected = True Then
-					If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-						Dim spikeDamage As Double = 1D
-						Select Case .FieldEffects.OwnSpikes
-							Case 1
-								spikeDamage = (p.MaxHP / 100) * 12.5D
-							Case 2
-								spikeDamage = (p.MaxHP / 100) * 16.7D
-							Case 3
-								spikeDamage = (p.MaxHP / 100) * 25D
-						End Select
-						ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-					End If
-				End If
-				'Sticky Web
-				If spikeAffected = True Then
-					If .FieldEffects.OwnStickyWeb > 0 Then
+                If spikeAffected = True Then
+                    If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+                        Dim spikeDamage As Double = 1D
+                        Select Case .FieldEffects.OwnSpikes
+                            Case 1
+                                spikeDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2
+                                spikeDamage = (p.MaxHP / 100) * 16.7D
+                            Case 3
+                                spikeDamage = (p.MaxHP / 100) * 25D
+                        End Select
+                        ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+                    End If
+                End If
+                'Sticky Web
+                If spikeAffected = True Then
+                    If .FieldEffects.OwnStickyWeb > 0 Then
 
-						LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
+                        LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-					End If
-				End If
-				If spikeAffected = True Then
-					If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-						Select Case .FieldEffects.OwnToxicSpikes
-							Case 1
-								InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-							Case 2
-								InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-						End Select
-					End If
-					If .FieldEffects.OwnToxicSpikes > 0 Then
-						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-							.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-							.FieldEffects.OwnToxicSpikes = 0
-						End If
-					End If
-				End If
+                    End If
+                End If
+                If spikeAffected = True Then
+                    If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+                        Select Case .FieldEffects.OwnToxicSpikes
+                            Case 1
+                                InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                            Case 2
+                                InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                        End Select
+                    End If
+                    If .FieldEffects.OwnToxicSpikes > 0 Then
+                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+                            .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+                            .FieldEffects.OwnToxicSpikes = 0
+                        End If
+                    End If
+                End If
 
-				If rockAffected = True Then
-					If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-						Dim rocksDamage As Double = 1D
+                If rockAffected = True Then
+                    If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+                        Dim rocksDamage As Double = 1D
 
-						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-						Select Case effectiveness
-							Case 0.25F
-								rocksDamage = (p.MaxHP / 100) * 3.125D
-							Case 0.5F
-								rocksDamage = (p.MaxHP / 100) * 6.25D
-							Case 1.0F
-								rocksDamage = (p.MaxHP / 100) * 12.5D
-							Case 2.0F
-								rocksDamage = (p.MaxHP / 100) * 25D
-							Case 4.0F
-								rocksDamage = (p.MaxHP / 100) * 50D
-						End Select
+                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+                        Select Case effectiveness
+                            Case 0.25F
+                                rocksDamage = (p.MaxHP / 100) * 3.125D
+                            Case 0.5F
+                                rocksDamage = (p.MaxHP / 100) * 6.25D
+                            Case 1.0F
+                                rocksDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2.0F
+                                rocksDamage = (p.MaxHP / 100) * 25D
+                            Case 4.0F
+                                rocksDamage = (p.MaxHP / 100) * 50D
+                        End Select
 
-						ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-					End If
-				End If
+                        ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+                    End If
+                End If
 
-				TriggerAbilityEffect(BattleScreen, False)
-				TriggerItemEffect(BattleScreen, False)
+                TriggerAbilityEffect(BattleScreen, False)
+                TriggerItemEffect(BattleScreen, False)
 
-				If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
-					.FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
-				End If
+                If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
+                    .FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
+                End If
 
-				If BattleScreen.FieldEffects.OppHealingWish = True Then
-					BattleScreen.FieldEffects.OppHealingWish = False
+                If BattleScreen.FieldEffects.OppHealingWish = True Then
+                    BattleScreen.FieldEffects.OppHealingWish = False
 
-					If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-						GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
-						CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
-					End If
-				End If
-			End With
-		End Sub
+                    If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+                        GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
+                        CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
+                    End If
+                End If
+            End With
+        End Sub
 
 #End Region
 
 #Region "EndBattle"
 
-		Enum EndBattleReasons
-			WinWild
-			LoseWild
-			WinTrainer
-			LoseTrainer
-			WinPvP
-			LosePvP
-		End Enum
+        Enum EndBattleReasons
+            WinWild
+            LoseWild
+            WinTrainer
+            LoseTrainer
+            WinPvP
+            LosePvP
+        End Enum
 
-		Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean)
-			BattleScreen.OwnFaint = False
-			BattleScreen.OppFaint = False
-			IsAfterFaint = False
-			If AddPVP = True Then
-				Select Case reason
-					Case EndBattleReasons.WinTrainer 'Lost
-						Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
-						q.ApplyCurrentCamera = True
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 5, q)
+        Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean)
+            BattleScreen.OwnFaint = False
+            BattleScreen.OppFaint = False
+            IsAfterFaint = False
+            If AddPVP = True Then
+                Select Case reason
+                    Case EndBattleReasons.WinTrainer 'Lost
+                        Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
+                        q.ApplyCurrentCamera = True
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 5, q)
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 4, New TextQueryObject("You lost the battle!"))
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, New TextQueryObject(""))
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject(""))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 4, New TextQueryObject("You lost the battle!"))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, New TextQueryObject(""))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject(""))
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
-					Case EndBattleReasons.LoseTrainer 'Won
-						Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
-						q.ApplyCurrentCamera = True
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, q)
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
+                    Case EndBattleReasons.LoseTrainer 'Won
+                        Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
+                        q.ApplyCurrentCamera = True
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, q)
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject("Pokémon Trainer " & Core.Player.Name & " was defeated!"))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject("Pokémon Trainer " & Core.Player.Name & " was defeated!"))
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
-				End Select
-			Else
-				Select Case reason
-					Case EndBattleReasons.WinWild
-						Won = True
-						Core.Player.AddPoints(1, "Won against wild Pokémon.")
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
+                End Select
+            Else
+                Select Case reason
+                    Case EndBattleReasons.WinWild
+                        Won = True
+                        Core.Player.AddPoints(1, "Won against wild Pokémon.")
 
-						BattleScreen.BattleQuery.Add(New PlayMusicQueryObject("wild_defeat"))
-						ChangeCameraAngle(1, True, BattleScreen)
+                        BattleScreen.BattleQuery.Add(New PlayMusicQueryObject("wild_defeat"))
+                        ChangeCameraAngle(1, True, BattleScreen)
 
-						GainEXP(BattleScreen)
+                        GainEXP(BattleScreen)
 
-						If BattleScreen.FieldEffects.OwnPayDayCounter > 0 Then
-							Core.Player.Money += BattleScreen.FieldEffects.OwnPayDayCounter
-							BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " picked up $" & BattleScreen.FieldEffects.OwnPayDayCounter & "!"))
-						End If
+                        If BattleScreen.FieldEffects.OwnPayDayCounter > 0 Then
+                            Core.Player.Money += BattleScreen.FieldEffects.OwnPayDayCounter
+                            BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " picked up $" & BattleScreen.FieldEffects.OwnPayDayCounter & "!"))
+                        End If
 
-						BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
-					Case EndBattleReasons.WinTrainer
-						Won = True
-						Core.Player.AddPoints(3, "Won against trainer.")
+                        BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
+                    Case EndBattleReasons.WinTrainer
+                        Won = True
+                        Core.Player.AddPoints(3, "Won against trainer.")
 
-						Core.Player.Money += BattleScreen.GetTrainerMoney()
+                        Core.Player.Money += BattleScreen.GetTrainerMoney()
 
-						BattleScreen.BattleQuery.Add(New PlayMusicQueryObject(BattleScreen.Trainer.GetDefeatMusic()))
+                        BattleScreen.BattleQuery.Add(New PlayMusicQueryObject(BattleScreen.Trainer.GetDefeatMusic()))
 
-						Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.04F, 0.02F)
-						q.ApplyCurrentCamera = True
-						BattleScreen.BattleQuery.Add(q)
+                        Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.04F, 0.02F)
+                        q.ApplyCurrentCamera = True
+                        BattleScreen.BattleQuery.Add(q)
 
-						BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.TrainerType & " " & BattleScreen.Trainer.Name & " was defeated!"))
-						BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.OutroMessage))
+                        BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.TrainerType & " " & BattleScreen.Trainer.Name & " was defeated!"))
+                        BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.OutroMessage))
 
-						If BattleScreen.GetTrainerMoney() > 0 Then
-							BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " got $" & BattleScreen.GetTrainerMoney() & "!"))
-						End If
+                        If BattleScreen.GetTrainerMoney() > 0 Then
+                            BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " got $" & BattleScreen.GetTrainerMoney() & "!"))
+                        End If
 
-						BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
-					Case EndBattleReasons.LoseTrainer, EndBattleReasons.LoseWild
-						Won = False
+                        BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
+                    Case EndBattleReasons.LoseTrainer, EndBattleReasons.LoseWild
+                        Won = False
                         Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
                         q.ApplyCurrentCamera = True
                         BattleScreen.BattleQuery.Add(q)
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index 75e95027d..84eca1a23 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -5,7 +5,7 @@
 
 		Public AnimationStarted As Boolean = False
 		Public AnimationEnded As Boolean = False
-		Public BAFlipped As Boolean
+		Public BattleFlipped As Boolean = Nothing
 		Public AnimationSequence As List(Of BattleAnimation3D)
 		Public SpawnedEntities As List(Of Entity)
 		Public CurrentEntity As Entity
@@ -17,10 +17,12 @@
 			End Get
 		End Property
 
-		Public Sub New(ByVal entity As Entity, ByVal BAFlipped As Boolean, Optional ByVal model As ModelEntity = Nothing)
+		Public Sub New(ByVal entity As Entity, ByVal BattleFlipped As Boolean, Optional ByVal model As ModelEntity = Nothing)
 			MyBase.New(QueryTypes.MoveAnimation)
 			Me.AnimationSequence = New List(Of BattleAnimation3D)
-			Me.BAFlipped = BAFlipped
+			If BattleFlipped <> Nothing Then
+				Me.BattleFlipped = BattleFlipped
+			End If
 			Me.CurrentEntity = entity
 			Me.CurrentModel = model
 			AnimationSequenceBegin()
@@ -48,6 +50,9 @@
 							i -= 1
 							AnimationSequence.Remove(a)
 						Else
+							If a.SpawnedEntity IsNot Nothing And a.Ready = True Then
+								SpawnedEntities.Add(a.SpawnedEntity)
+							End If
 							a.Update()
 						End If
 					End If
@@ -70,32 +75,32 @@
 		End Sub
 
 		Public Sub AnimationSequenceEnd()
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationSequenceEnd OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationSequenceEnd BEFORE CALLING AnimationSequenceBegin")
-			Else
-				AnimationEnded = True
-			End If
+			AnimationEnded = True
 		End Sub
 
-		Public Function SpawnEntity(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Opacity As Single) As Entity
-			Dim SpawnedEntity As Entity = New Entity(Position.X, Position.Y, Position.Z, "BattleAnimation", {Texture}, {0, 0}, False, 0, Scale, BaseModel.BillModel, 0, "", New Vector3(1.0F))
-
-			SpawnedEntity.Opacity = Opacity
-			If SpawnedEntity.Opacity > 0 Then
-				SpawnedEntity.Visible = True
-			Else
-				SpawnedEntity.Visible = False
+		Public Function SpawnEntity(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Opacity As Single, Optional ByVal startDelay As Single = 0.0F, Optional ByVal endDelay As Single = 0.0F) As Entity
+			If Not BattleFlipped = Nothing Then
+				If BattleFlipped = True Then
+					Position.X = CurrentEntity.Position.X - Position.X * 2.0F
+					Position.Z = CurrentEntity.Position.Z - Position.Z * 2.0F
+				Else
+					Position.X = CurrentEntity.Position.X + Position.X * 2.0F
+					Position.Z = CurrentEntity.Position.Z + Position.Z * 2.0F
+				End If
 			End If
 
-			SpawnedEntities.Add(SpawnedEntity)
+			Dim SpawnedEntity As Entity = New Entity(Position.X, Position.Y, Position.Z, "BattleAnimation", {Texture}, {0, 0}, False, 0, Scale, BaseModel.BillModel, 0, "", New Vector3(1.0F))
+			SpawnedEntity.Opacity = Opacity
+
+			Dim SpawnDelayEntity As BattleAnimation3D = New BattleAnimation3D(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay, SpawnedEntity)
+
+			AnimationSequence.Add(SpawnDelayEntity)
 			Return SpawnedEntity
 		End Function
 		Public Sub RemoveEntity(Entity As Entity)
 			SpawnedEntities.Remove(Entity)
 		End Sub
-		Public Sub AnimationChangeTexture(ByVal Entity As Entity, ByVal Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
+		Public Sub ChangeEntityTexture(ByVal Entity As Entity, RemoveEntityAfter As Boolean, ByVal Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
 			Dim TextureChangeEntity As Entity
 
 			If Entity Is Nothing Then
@@ -106,19 +111,29 @@
 
 			Dim baEntityTextureChange As BAEntityTextureChange = New BAEntityTextureChange(TextureChangeEntity, Texture, startDelay, endDelay)
 			AnimationSequence.Add(baEntityTextureChange)
+
+			If RemoveEntityAfter = True Then
+				If baEntityTextureChange.CanRemove = True Then
+					RemoveEntity(Entity)
+				End If
+			End If
 		End Sub
 
-		Public Sub AnimationMoveEntity(ByVal Entity As Entity, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
+		Public Sub MoveEntity(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
 			Dim MoveEntity As Entity
 			Dim Destination As Vector3
 
-			If Entity Is Nothing Then
-				MoveEntity = CurrentEntity
-				If BAFlipped Then
+			If Not BattleFlipped = Nothing Then
+				If BattleFlipped = True Then
 					DestinationX -= DestinationX * 2.0F
 					DestinationZ -= DestinationZ * 2.0F
-					Destination = New Vector3(CurrentEntity.Position.X + DestinationX, CurrentEntity.Position.Y + DestinationY, CurrentEntity.Position.Z + DestinationZ)
 				End If
+				If Entity Is Nothing Then
+					MoveEntity = CurrentEntity
+				Else
+					MoveEntity = Entity
+				End If
+				Destination = CurrentEntity.Position + New Vector3(DestinationX, DestinationY, DestinationZ)
 			Else
 				MoveEntity = Entity
 				Destination = New Vector3(DestinationX, DestinationY, DestinationZ)
@@ -131,9 +146,15 @@
 				Dim baModelMove As BAEntityMove = New BAEntityMove(CType(CurrentModel, Entity), Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
 				AnimationSequence.Add(baModelMove)
 			End If
+
+			If RemoveEntityAfter = True Then
+				If baEntityMove.CanRemove = True Then
+					RemoveEntity(Entity)
+				End If
+			End If
 		End Sub
 
-		Public Sub AnimationFadeEntity(ByVal Entity As Entity, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = -1.0F)
+		Public Sub FadeEntity(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = -1.0F)
 			Dim FadeEntity As Entity
 			If Entity Is Nothing Then
 				FadeEntity = CurrentEntity
@@ -148,8 +169,14 @@
 				Dim baModelOpacity As BAEntityOpacity = New BAEntityOpacity(CType(CurrentModel, Entity), TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
 				AnimationSequence.Add(baModelOpacity)
 			End If
+
+			If RemoveEntityAfter = True Then
+				If baEntityOpacity.CanRemove = True Then
+					RemoveEntity(Entity)
+				End If
+			End If
 		End Sub
-		Public Sub AnimationRotateEntity(Entity As Entity, ByVal RotationSpeedX As Single, ByVal RotationSpeedY As Single, ByVal RotationSpeedZ As Single, ByVal EndRotationX As Single, ByVal EndRotationY As Single, ByVal EndRotationZ As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
+		Public Sub RotateEntity(Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal RotationSpeedX As Single, ByVal RotationSpeedY As Single, ByVal RotationSpeedZ As Single, ByVal EndRotationX As Single, ByVal EndRotationY As Single, ByVal EndRotationZ As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
 			Dim RotateEntity As Entity
 			If Entity Is Nothing Then
 				RotateEntity = CurrentEntity
@@ -161,8 +188,13 @@
 			Dim EndRotation As Vector3 = New Vector3(EndRotationX, EndRotationY, EndRotationZ)
 			Dim baEntityRotate As BAEntityRotate = New BAEntityRotate(RotateEntity, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation, DoReturn)
 			AnimationSequence.Add(baEntityRotate)
+			If RemoveEntityAfter = True Then
+				If baEntityRotate.CanRemove = True Then
+					RemoveEntity(Entity)
+				End If
+			End If
 		End Sub
-		Public Sub AnimationScaleEntity(ByVal Entity As Entity, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
+		Public Sub ScaleEntity(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
 			Dim ScaleEntity As Entity
 			If Entity Is Nothing Then
 				ScaleEntity = CurrentEntity
@@ -175,6 +207,11 @@
 			Dim EndSize As Vector3 = New Vector3(EndSizeX, EndSizeY, EndSizeZ)
 			Dim baBillSize As BAEntityScale = New BAEntityScale(ScaleEntity, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
 			AnimationSequence.Add(baBillSize)
+			If RemoveEntityAfter = True Then
+				If baBillSize.CanRemove = True Then
+					RemoveEntity(Entity)
+				End If
+			End If
 		End Sub
 
 		Public Sub AnimationSpawnFadingEntity(ByVal PositionX As Single, ByVal PositionY As Single, ByVal PositionZ As Single, ByVal Texture As String, ByVal ScaleX As Single, ByVal ScaleY As Single, ByVal ScaleZ As Single, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = 1.0F)
@@ -193,7 +230,7 @@
 					texture2D = TextureManager.GetTexture(stringArray(0), r, "")
 				End If
 
-				If BAFlipped Then
+				If BattleFlipped Then
 					PositionX -= PositionX * 2.0F
 					PositionZ -= PositionZ * 2.0F
 				End If
@@ -222,7 +259,7 @@
 					texture2D = TextureManager.GetTexture(stringArray(0), r, "")
 				End If
 
-				If BAFlipped Then
+				If BattleFlipped Then
 					PositionX -= PositionX * 2.0F
 					PositionZ -= PositionZ * 2.0F
 					DestinationX -= DestinationX * 2.0F
@@ -239,7 +276,7 @@
 				AnimationSequence.Add(baMove)
 			End If
 		End Sub
-		Public Sub AnimationPlaySound(ByVal sound As String, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal stopMusic As Boolean = False, Optional ByVal IsPokemon As Boolean = False)
+		Public Sub PlaySound(ByVal sound As String, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal stopMusic As Boolean = False, Optional ByVal IsPokemon As Boolean = False)
 			If CurrentEntity Is Nothing Then
 				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationPlaySound OUTSIDE OF ATTACK ANIMATION DELEGATE")
 			ElseIf Not AnimationStarted Then
diff --git a/P3D/Content/Textures/Battle/Cloud.png b/P3D/Content/Textures/Battle/Smoke.png
similarity index 100%
rename from P3D/Content/Textures/Battle/Cloud.png
rename to P3D/Content/Textures/Battle/Smoke.png
diff --git a/P3D/Entites/Entity.vb b/P3D/Entites/Entity.vb
index 998344643..99d766dfc 100644
--- a/P3D/Entites/Entity.vb
+++ b/P3D/Entites/Entity.vb
@@ -22,6 +22,7 @@
     Public Visible As Boolean = True
     Public Shader As New Vector3(1.0F)
     Public Shaders As New List(Of Vector3)
+    Public Color As Vector3 = New Vector3(1.0F)
 
     Public CameraDistanceDelta As Single = 0.0F
 
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index ec16b862f..a3208c826 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -15403,6 +15403,9 @@
     <Content Include="Content\Textures\Battle\Poison\Stinger.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\Smoke.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\chess.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -26269,9 +26272,6 @@
     <Content Include="Content\Textures\battletower.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Textures\Battle\Cloud.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
     <Content Include="Content\Textures\Battle\Fighting\forcepalmhand.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -27545,6 +27545,7 @@
     <Content Include="credits.txt">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Compile Include="Battle\BattleAnimations\BAEntityColor.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityRotate.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityMove.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityOpacity.vb" />
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index 6719f780d..03a9cfffc 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -66,7 +66,7 @@
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
+            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
@@ -82,7 +82,7 @@
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
             Next
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
+            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index a63495b58..6b8075175 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -96,7 +96,7 @@
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             Dim maxAmount As Integer = 8
             Dim currentAmount As Integer = 0
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
+            MoveAnimation.PlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
             While currentAmount <= maxAmount
                 Dim yPos As Single = CSng(Random.NextDouble() * 0.5)
                 Dim zPos As Single = CSng(Random.Next(-5, 5) * 0.15)
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index 5c35961e3..e01dafc73 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -64,7 +64,7 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
+            MoveAnimation.PlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 25785556e..5cf85b3e2 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -57,7 +57,7 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
+            MoveAnimation.PlaySound("Battle\Attacks\Pound", 0.5, 2.5)
             MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 4d53f749d..99e61e709 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,15 +54,16 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.AnimationMoveEntity(Nothing, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.AnimationMoveEntity(Nothing, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.MoveEntity(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.MoveEntity(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
-            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Tackle", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 2)
+            MoveAnimation.PlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
+            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(1.0F), 1.0F)
+            MoveAnimation.FadeEntity(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 9684f8379..3cc76f0a4 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -67,30 +67,38 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
+
+            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
+            MoveAnimation.MoveEntity(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
 
-            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
 
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.MoveEntity(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.ChangeEntityTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 2)
+            Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+            MoveAnimation.ChangeEntityTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.ChangeEntityTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+            Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 3, 1)
+
+            MoveAnimation.ChangeEntityTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+            MoveAnimation.ChangeEntityTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
+
+            MoveAnimation.ChangeEntityTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Resources/Models/BaseModel.vb b/P3D/Resources/Models/BaseModel.vb
index 92ae430c2..c10890d7d 100644
--- a/P3D/Resources/Models/BaseModel.vb
+++ b/P3D/Resources/Models/BaseModel.vb
@@ -15,7 +15,7 @@
         Screen.Effect.TextureEnabled = True
         Screen.Effect.Alpha = Entity.Opacity
 
-        Screen.Effect.DiffuseColor = effectDiffuseColor * Entity.Shader
+        Screen.Effect.DiffuseColor = effectDiffuseColor * Entity.Shader * Entity.Color
 
         If Screen.Level.IsDark = True Then
             Screen.Effect.DiffuseColor *= New Vector3(0.5, 0.5, 0.5)
@@ -70,7 +70,9 @@
         End If
 
         Screen.Effect.DiffuseColor = effectDiffuseColor
-        If DebugDisplay.MaxDistance < Entity.CameraDistance Then DebugDisplay.MaxDistance = CInt(Entity.CameraDistance)
+        If DebugDisplay.MaxDistance < Entity.CameraDistance Then
+            DebugDisplay.MaxDistance = CInt(Entity.CameraDistance)
+        End If
     End Sub
 
     Private Sub ApplyTexture(ByVal texture As Texture2D)
diff --git a/P3D/Screens/Battle/BattleCatchScreen.vb b/P3D/Screens/Battle/BattleCatchScreen.vb
index 787d1e9b0..75ea37b7a 100644
--- a/P3D/Screens/Battle/BattleCatchScreen.vb
+++ b/P3D/Screens/Battle/BattleCatchScreen.vb
@@ -4,9 +4,11 @@
 
     Dim Ball As Item
 
-    Dim Animations As BattleSystem.AnimationQueryObject = New BattleSystem.AnimationQueryObject(Nothing, False, Nothing)
-    Dim BallStartPosition As Vector3 = New Vector3(Camera.Position.X - 1.0F, Camera.Position.Y, Camera.Position.Z - 0.5F) + BattleScreen.BattleMapOffset
-    Dim BallEntity As Entity = Animations.SpawnEntity(BallStartPosition, Ball.Texture, New Vector3(0.3F), 1.0F)
+    Dim Animations As BattleSystem.AnimationQueryObject = New BattleSystem.AnimationQueryObject(BattleScreen.OppPokemonNPC, Nothing, BattleScreen.OppPokemonModel)
+    Dim BallStartPosition As Vector3 = New Vector3(Camera.Position.X - 1.0F, Camera.Position.Y, Camera.Position.Z - 1.0F) + BattleScreen.BattleMapOffset
+    Dim BallEntity As Entity = Nothing
+
+    Dim PokemonScale As Vector3
 
     Dim AnimationStarted As Boolean = False
     Dim caught As Boolean = False
@@ -104,15 +106,15 @@
 
         If TextBox.Showing = False Then
 
-            If Me._playIntroSound = False Then
-                Me._playIntroSound = True
-                SoundManager.PlaySound("Battle\Pokeball\throw")
-            End If
-
             UpdateAnimations()
 
             If Me.IsCurrentScreen() = True Then
                 If AnimationStarted = False Then
+                    If Me._playIntroSound = False Then
+                        Me._playIntroSound = True
+                        SoundManager.PlaySound("Battle\Pokeball\throw")
+                    End If
+                    BallEntity = Animations.SpawnEntity(BallStartPosition, Ball.Texture, New Vector3(0.3F), 1.0F)
                     SetupAnimation()
                 Else
                     Select Case Me.AnimationIndex
@@ -131,7 +133,7 @@
                                 SoundManager.PlaySound("Battle\Pokeball\shake")
                                 AnimationIndex += 1
                             Else
-                                SoundManager.PlaySound("Battle\Pokeball\open")
+                                SoundManager.PlaySound("Battle\Pokeball\break")
                                 AnimationIndex = 21
                                 InBall = False
                             End If
@@ -177,7 +179,7 @@
                             ResetVisibility()
                             Core.SetScreen(Me.PreScreen)
                         Case 21 ' After Break
-                            ResetVisibility()
+                            SetupAnimation()
                             Core.SetScreen(Me.PreScreen)
                             CType(Core.CurrentScreen, BattleSystem.BattleScreen).Battle.InitializeRound(CType(Core.CurrentScreen, BattleSystem.BattleScreen), New BattleSystem.Battle.RoundConst() With {.StepType = BattleSystem.Battle.RoundConst.StepTypes.Text, .Argument = "It broke free!"})
                     End Select
@@ -255,52 +257,68 @@
 
         Select Case Me.AnimationIndex
             Case 0
-                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z, 0.04F, True, True, 1.0F, 0.0F,,, 3)
+                PokemonScale = BattleScreen.OppPokemonNPC.Scale
+                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
             Case 1
-                Dim SmokeReturned As Integer = 0
+                Dim SmokeParticles As Integer = 0
                 Do
-                    Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-                    Dim SmokeDestination = New Vector3(0, 0, 0)
+                    Dim SmokePosition = BattleScreen.OwnPokemonNPC.Position + New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                    Dim SmokeDestination = BattleScreen.OwnPokemonNPC.Position
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Cloud")
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
                     Dim SmokeEntity As Entity = Animations.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    Animations.AnimationMoveEntity(SmokeEntity, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
-                    If SmokeEntity.Position = SmokeDestination Then
-                        Animations.RemoveEntity(SmokeEntity)
-                    End If
-                    Threading.Interlocked.Increment(SmokeReturned)
-                Loop While SmokeReturned <= 38
+                    Animations.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
 
-                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z, 0.01F, False, False, 0.0F, 6.0F,,, 3)
+                    Threading.Interlocked.Increment(SmokeParticles)
+                Loop While SmokeParticles <= 38
 
-                Animations.AnimationScaleEntity(BattleScreen.OppPokemonNPC, False, 0.05F, 0.05F, 0.05F, 0.02F, 0.0F, 0.0F, "1")
-                Animations.AnimationFadeEntity(BattleScreen.OppPokemonNPC, 1, False, 0.0F, 0.0F, 0.0F)
+                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OppPokemonNPC.Position.Z, 0.01F, False, False, 0.0F, 6.0F,,, 3)
+
+                Animations.ScaleEntity(Nothing, False, False, 0.05F, 0.05F, 0.05F, 0.02F, 0.0F, 0.0F, "1")
+                Animations.FadeEntity(Nothing, False, 1, False, 0.0F, 0.0F, 0.0F)
             Case 2
-                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
-
+                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y - 0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
             Case 3, 5
-                Animations.AnimationRotateEntity(BallEntity, 0, 0, 0.05F, 0, 0, 1.0F, 0.0F, 4.0F, False, False, True, True)
+                Animations.RotateEntity(BallEntity, False, 0, 0, 0.05F, 0, 0, 1.0F, 0.0F, 4.0F, False, False, True, True)
             Case 4, 6
-                Animations.AnimationRotateEntity(BallEntity, 0, 0, -0.05F, 0, 0, -1.0F, 0.0F, 4.0F, False, False, True, True)
+                Animations.RotateEntity(BallEntity, False, 0, 0, -0.05F, 0, 0, -1.0F, 0.0F, 4.0F, False, False, True, True)
             Case 7 ' Catch Animation
                 For i = 0 To 2
                     Dim StarPosition As Vector3 = New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z)
                     Dim StarDestination As Vector3 = New Vector3(StarPosition.X, StarPosition.Y + 0.4F, StarPosition.Z - ((1 - i) * 0.4F))
                     Dim StarEntity As Entity = Animations.SpawnEntity(StarPosition, TextureManager.GetTexture("Textures\Battle\BallCatchStar"), New Vector3(0.1F), 1.0F)
-                    Animations.AnimationMoveEntity(StarEntity, StarDestination.X, StarDestination.Y, StarDestination.Z, 0.01F, False, False, 0.0F, 0.0F,,, 3)
-                    If StarEntity.Position = StarDestination Then
-                        Animations.RemoveEntity(StarEntity)
-                    End If
+                    Animations.MoveEntity(StarEntity, True, StarDestination.X, StarDestination.Y, StarDestination.Z, 0.01F, False, False, 0.0F, 0.0F,,, 3)
                 Next
-                Animations.AnimationMoveEntity(BallEntity, BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
+                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y - 0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
             Case 8
-                Animations.AnimationFadeEntity(BallEntity, 0.01F, False, 0.0F, 0.0F, 0.0F)
+                Animations.FadeEntity(BallEntity, True, 0.01F, False, 0.0F, 0.0F, 0.0F)
             Case 21 ' Break Animation
+                ' Ball Opens
+                Dim SmokeParticles As Integer = 0
+                Do
+                    Dim SmokePosition = BattleScreen.OwnPokemonNPC.Position
+                    Dim SmokeDestination = BattleScreen.OwnPokemonNPC.Position + New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+
+                    Dim SmokeEntity As Entity = Animations.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
+
+                    Animations.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+
+                    Threading.Interlocked.Increment(SmokeParticles)
+                Loop While SmokeParticles <= 38
+
+                ' Pokemon appears
+                Animations.FadeEntity(Nothing, False, 1, False, 1, 0.0F, 0.0F)
+                Animations.ScaleEntity(Nothing, False, True, PokemonScale.X, PokemonScale.Y, PokemonScale.Z, 0.02F, 0.0F, 0.0F, "1")
 
         End Select
     End Sub

From 2c3f46cd2e7aa0ecf827eefea50ee56cfc92255c Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 21 Oct 2021 20:42:40 +0200
Subject: [PATCH 06/57] Updated everything to the new Battle Animations system
 and the newest commands
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Updated Attacks:
Ember, Absorb, Growl, Pound

Updated status effects & shared animations:
Poisoned, Switching Pokémon (own and opponent's)
---
 P3D/Battle/BattleAnimations/BAPlaySound.vb    |  28 +++
 P3D/Battle/BattleSystemV2/Battle.vb           | 217 ++++++++++--------
 .../QueryObjects/AnimationQueryObject.vb      |  91 +-------
 P3D/P3D.vbproj                                |   5 +-
 P3D/Pokemon/Attacks/Fire/Ember.vb             |  51 ++--
 P3D/Pokemon/Attacks/Grass/Absorb.vb           |   6 +-
 P3D/Pokemon/Attacks/Normal/Growl.vb           |  13 +-
 P3D/Pokemon/Attacks/Normal/Pound.vb           |   5 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb          |   8 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb     |  20 +-
 P3D/Screens/Battle/BattleCatchScreen.vb       |  28 +--
 11 files changed, 229 insertions(+), 243 deletions(-)
 create mode 100644 P3D/Battle/BattleAnimations/BAPlaySound.vb

diff --git a/P3D/Battle/BattleAnimations/BAPlaySound.vb b/P3D/Battle/BattleAnimations/BAPlaySound.vb
new file mode 100644
index 000000000..120ec1106
--- /dev/null
+++ b/P3D/Battle/BattleAnimations/BAPlaySound.vb
@@ -0,0 +1,28 @@
+Public Class BAPlaySound
+
+    Inherits BattleAnimation3D
+
+    Private soundfile As String
+    Private stopMusic As Boolean
+    Private IsPokemon As Boolean
+
+
+    Public Sub New(ByVal sound As String, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal stopMusic As Boolean = False, Optional ByVal IsPokemon As Boolean = False)
+        MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
+        Me.Scale = New Vector3(1.0F)
+        soundfile = sound
+        Me.Visible = False
+        Me.stopMusic = stopMusic
+        Me.IsPokemon = IsPokemon
+        AnimationType = AnimationTypes.Sound
+    End Sub
+
+    Public Overrides Sub DoActionActive()
+        If IsPokemon = True Then
+            SoundManager.PlayPokemonCry(CInt(soundfile))
+        Else
+            SoundManager.PlaySound(soundfile, stopMusic)
+        End If
+        Me.Ready = True
+    End Sub
+End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index a93c5e4bc..058885f11 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2706,12 +2706,12 @@
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                                BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
+                                BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
                                 Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
 
                                 Select Case message
@@ -3427,7 +3427,7 @@
                 Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
 
-                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
@@ -3708,10 +3708,10 @@
                 Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
 
-                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
-            StatAnimation.PlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
+            StatAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
             BattleScreen.BattleQuery.Add(StatAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
@@ -3998,10 +3998,10 @@
                 End If
 
                 Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 0, 0)
-                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 1, 0)
-                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 2, 0)
-                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 3, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 0, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 1, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 2, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
                 BattleScreen.BattleQuery.Add(HitAnimation)
 
                 If own = True Then
@@ -5357,20 +5357,22 @@
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP / 8), True, True, BattleScreen, "The poison hurt " & .OwnPokemon.GetDisplayName() & ".", "poison")
@@ -5381,20 +5383,22 @@
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP * multiplier), True, True, BattleScreen, "The toxic hurt " & .OwnPokemon.GetDisplayName() & ".", "badpoison")
@@ -5413,13 +5417,13 @@
 
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
-                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
                             'Actual damage
@@ -6151,21 +6155,24 @@
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
+
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP / 8), False, False, BattleScreen, "The poison hurt " & .OppPokemon.GetDisplayName() & ".", "poison")
                             End If
@@ -6175,20 +6182,22 @@
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
@@ -6206,13 +6215,13 @@
                             End If
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
                             'Actual damage
@@ -6783,7 +6792,7 @@
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
 
                 ' Ball Closes
-                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
@@ -6796,19 +6805,19 @@
 
                     Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    BallReturn.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
 
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.FadeEntity(Nothing, False, 1, False, 0, 1, 0)
-                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
+                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                 ' Ball returns
-                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
                 Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position, TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallReturn.MoveEntity(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
+                BallReturn.AnimationMove(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
@@ -6847,13 +6856,13 @@
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
 
-                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
 
                 Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position + New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallThrow.MoveEntity(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
+                BallThrow.AnimationMove(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
-                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
 
                 Dim SmokeSpawned As Integer = 0
                 Do
@@ -6867,17 +6876,17 @@
 
                     Dim SmokeEntity As Entity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    BallThrow.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
 
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.FadeEntity(Nothing, False, 1, True, 1, 4, 0)
-                BallThrow.PlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
+                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
@@ -7125,8 +7134,8 @@
             If BattleScreen.IsTrainerBattle = False Then
                 ChangeCameraAngle(1, False, BattleScreen)
                 Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
-                Faint.PlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.MoveEntity(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
+                Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                Faint.AnimationMove(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
                 BattleScreen.BattleQuery.Add(Faint)
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
@@ -7155,28 +7164,29 @@
                     Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                     ' Ball Closes
-                    BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
                     Dim SmokeReturned As Integer = 0
                     Do
                         Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                         Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                        Dim SmokeTexture As String = "Textures\Battle\Smoke"
+                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                         Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-
-                        BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                        Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                        BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                         Threading.Interlocked.Increment(SmokeReturned)
                     Loop While SmokeReturned <= 38
 
                     ' Pokemon disappears
-                    BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                    BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
+                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                     ' Ball returns
-                    BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
-                    BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                    Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                    BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                     BattleScreen.BattleQuery.Add(BallReturn)
 
@@ -7216,28 +7226,29 @@
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                 ' Ball Closes
-                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                     Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-
-                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
+                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
-                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
-                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                 BattleScreen.BattleQuery.Add(BallReturn)
 
@@ -7267,31 +7278,33 @@
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
-                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
-                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
-                ' Ball Opens
-                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
+                ' Ball opens
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
 
-                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
-                BallThrow.PlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.BattleQuery.Add(BallThrow)
             End If
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index 84eca1a23..ff0d88d2f 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -100,7 +100,7 @@
 		Public Sub RemoveEntity(Entity As Entity)
 			SpawnedEntities.Remove(Entity)
 		End Sub
-		Public Sub ChangeEntityTexture(ByVal Entity As Entity, RemoveEntityAfter As Boolean, ByVal Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
+		Public Sub AnimationChangeTexture(ByVal Entity As Entity, RemoveEntityAfter As Boolean, ByVal Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
 			Dim TextureChangeEntity As Entity
 
 			If Entity Is Nothing Then
@@ -119,7 +119,7 @@
 			End If
 		End Sub
 
-		Public Sub MoveEntity(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
+		Public Sub AnimationMove(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
 			Dim MoveEntity As Entity
 			Dim Destination As Vector3
 
@@ -149,12 +149,12 @@
 
 			If RemoveEntityAfter = True Then
 				If baEntityMove.CanRemove = True Then
-					RemoveEntity(Entity)
+					RemoveEntity(MoveEntity)
 				End If
 			End If
 		End Sub
 
-		Public Sub FadeEntity(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = -1.0F)
+		Public Sub AnimationFade(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = -1.0F)
 			Dim FadeEntity As Entity
 			If Entity Is Nothing Then
 				FadeEntity = CurrentEntity
@@ -172,11 +172,11 @@
 
 			If RemoveEntityAfter = True Then
 				If baEntityOpacity.CanRemove = True Then
-					RemoveEntity(Entity)
+					RemoveEntity(FadeEntity)
 				End If
 			End If
 		End Sub
-		Public Sub RotateEntity(Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal RotationSpeedX As Single, ByVal RotationSpeedY As Single, ByVal RotationSpeedZ As Single, ByVal EndRotationX As Single, ByVal EndRotationY As Single, ByVal EndRotationZ As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
+		Public Sub AnimationRotate(Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal RotationSpeedX As Single, ByVal RotationSpeedY As Single, ByVal RotationSpeedZ As Single, ByVal EndRotationX As Single, ByVal EndRotationY As Single, ByVal EndRotationZ As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
 			Dim RotateEntity As Entity
 			If Entity Is Nothing Then
 				RotateEntity = CurrentEntity
@@ -190,11 +190,11 @@
 			AnimationSequence.Add(baEntityRotate)
 			If RemoveEntityAfter = True Then
 				If baEntityRotate.CanRemove = True Then
-					RemoveEntity(Entity)
+					RemoveEntity(RotateEntity)
 				End If
 			End If
 		End Sub
-		Public Sub ScaleEntity(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
+		Public Sub AnimationScale(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
 			Dim ScaleEntity As Entity
 			If Entity Is Nothing Then
 				ScaleEntity = CurrentEntity
@@ -202,89 +202,22 @@
 				ScaleEntity = Entity
 			End If
 
-			Dim Position As Vector3 = ScaleEntity.Position
 			Dim Scale As Vector3 = ScaleEntity.Scale
 			Dim EndSize As Vector3 = New Vector3(EndSizeX, EndSizeY, EndSizeZ)
 			Dim baBillSize As BAEntityScale = New BAEntityScale(ScaleEntity, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
 			AnimationSequence.Add(baBillSize)
 			If RemoveEntityAfter = True Then
 				If baBillSize.CanRemove = True Then
-					RemoveEntity(Entity)
+					RemoveEntity(ScaleEntity)
 				End If
 			End If
 		End Sub
 
-		Public Sub AnimationSpawnFadingEntity(ByVal PositionX As Single, ByVal PositionY As Single, ByVal PositionZ As Single, ByVal Texture As String, ByVal ScaleX As Single, ByVal ScaleY As Single, ByVal ScaleZ As Single, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = 1.0F)
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation BEFORE CALLING AnimationSequenceBegin")
-			Else
-				Dim stringArray = Texture.Split(","c)
-				Dim texture2D As Texture2D = Nothing
-
-				If stringArray.Length = 1 Then
-					texture2D = TextureManager.GetTexture(Texture)
-				ElseIf stringArray.Length = 5 Then
-					Dim r As Rectangle = New Rectangle(CInt(stringArray(1)), CInt(stringArray(2)), CInt(stringArray(3)), CInt(stringArray(4)))
-					texture2D = TextureManager.GetTexture(stringArray(0), r, "")
-				End If
-
-				If BattleFlipped Then
-					PositionX -= PositionX * 2.0F
-					PositionZ -= PositionZ * 2.0F
-				End If
-
-				Dim Position As Vector3 = New Vector3(CurrentEntity.Position.X + PositionX, CurrentEntity.Position.Y + PositionY, CurrentEntity.Position.Z + PositionZ)
-				Dim Scale As Vector3 = New Vector3(ScaleX, ScaleY, ScaleZ)
-
-				Dim baOpacity As BAOpacity = New BAOpacity(Position, texture2D, Scale, TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
-				AnimationSequence.Add(baOpacity)
-			End If
+		Public Sub AnimationPlaySound(ByVal sound As String, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal stopMusic As Boolean = False, Optional ByVal IsPokemon As Boolean = False)
+			Dim baSound As BAPlaySound = New BAPlaySound(sound, startDelay, endDelay, stopMusic, IsPokemon)
+			AnimationSequence.Add(baSound)
 		End Sub
 
-		Public Sub AnimationSpawnMovingEntity(ByVal PositionX As Single, ByVal PositionY As Single, ByVal PositionZ As Single, ByVal Texture As String, ByVal ScaleX As Single, ByVal ScaleY As Single, ByVal ScaleZ As Single, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AttackSpawnMovingAnimation BEFORE CALLING AnimationSequenceBegin")
-			Else
-				Dim stringArray = Texture.Split(","c)
-				Dim texture2D As Texture2D = Nothing
-
-				If stringArray.Length = 1 Then
-					texture2D = TextureManager.GetTexture(Texture)
-				ElseIf stringArray.Length = 5 Then
-					Dim r As Rectangle = New Rectangle(CInt(stringArray(1)), CInt(stringArray(2)), CInt(stringArray(3)), CInt(stringArray(4)))
-					texture2D = TextureManager.GetTexture(stringArray(0), r, "")
-				End If
-
-				If BattleFlipped Then
-					PositionX -= PositionX * 2.0F
-					PositionZ -= PositionZ * 2.0F
-					DestinationX -= DestinationX * 2.0F
-					DestinationZ -= DestinationZ * 2.0F
-					SpinXSpeed -= SpinXSpeed * 2.0F
-					SpinZSpeed -= SpinZSpeed * 2.0F
-				End If
-
-				Dim Position As Vector3 = New Vector3(CurrentEntity.Position.X + PositionX, CurrentEntity.Position.Y + PositionY, CurrentEntity.Position.Z + PositionZ)
-				Dim Scale As Vector3 = New Vector3(ScaleX, ScaleY, ScaleZ)
-				Dim Destination As Vector3 = New Vector3(CurrentEntity.Position.X + DestinationX, CurrentEntity.Position.Y + DestinationY, CurrentEntity.Position.Z + DestinationZ)
-
-				Dim baMove As BAMove = New BAMove(Position, texture2D, Scale, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
-				AnimationSequence.Add(baMove)
-			End If
-		End Sub
-		Public Sub PlaySound(ByVal sound As String, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal stopMusic As Boolean = False, Optional ByVal IsPokemon As Boolean = False)
-			If CurrentEntity Is Nothing Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationPlaySound OUTSIDE OF ATTACK ANIMATION DELEGATE")
-			ElseIf Not AnimationStarted Then
-				Logger.Log(Logger.LogTypes.Warning, "ATTEMPT TO USE AnimationPlaySound BEFORE CALLING AnimationSequenceBegin")
-			Else
-				Dim baSound As BASound = New BASound(sound, startDelay, endDelay, stopMusic, IsPokemon)
-				AnimationSequence.Add(baSound)
-			End If
 		End Sub
 
 	End Class
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index a3208c826..892230fc9 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -27551,7 +27551,7 @@
     <Compile Include="Battle\BattleAnimations\BAEntityOpacity.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityTextureChange.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityScale.vb" />
-    <Compile Include="Battle\BattleAnimations\BASound.vb" />
+    <Compile Include="Battle\BattleAnimations\BAPlaySound.vb" />
     <Compile Include="Battle\BattleSystemV2\QueryObjects\AnimationQueryObject.vb" />
     <Compile Include="Dialogues\ImageView.vb" />
     <Compile Include="Overworld\NotificationPopup.vb" />
@@ -29229,9 +29229,6 @@
     <None Include="README.md" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Battle\BattleAnimations\BAMove.vb" />
-    <Compile Include="Battle\BattleAnimations\BAOpacity.vb" />
-    <Compile Include="Battle\BattleAnimations\BARotation.vb" />
     <Compile Include="Battle\BattleAnimations\BattleAnimation3D.vb" />
     <Compile Include="Battle\BattleStats.vb" />
     <Compile Include="Battle\BattleSystemV2\Battle.vb" />
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index 03a9cfffc..1356505d9 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -65,10 +65,14 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
-            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
+            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
+
+            MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
-                MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
+                MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+
                 i += 1
             Next
             BattleScreen.BattleQuery.Add(MoveAnimation)
@@ -76,32 +80,37 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
+
+            MoveAnimation.AnimationMove(FireballEntity, True, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
 
-            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0, 0.1, 0.5, 0)
             For i = 0 To 12
-                MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(3.0 - i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
+                MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+
                 i += 1
             Next
-            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            Dim FireEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+            Dim FireEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+            Dim FireEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+
+            MoveAnimation.AnimationChangeTexture(FireEntity1, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index 6b8075175..9590c3d18 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -96,11 +96,13 @@
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             Dim maxAmount As Integer = 8
             Dim currentAmount As Integer = 0
-            MoveAnimation.PlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
             While currentAmount <= maxAmount
                 Dim yPos As Single = CSng(Random.NextDouble() * 0.5)
                 Dim zPos As Single = CSng(Random.Next(-5, 5) * 0.15)
-                MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Grass\Absorb", 0.35, 0.35, 0.35, 1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount), 0.0, 0.1, 0.5)
+                Dim AbsorbEntity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Grass\Absorb"), New Vector3(0.35F), 1)
+                MoveAnimation.AnimationMove(AbsorbEntity, True, 1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount), 0.0, 0.1, 0.5)
+
                 Threading.Interlocked.Increment(currentAmount)
             End While
 
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index e01dafc73..369515629 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -64,11 +64,14 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.PlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+            MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
+            Dim SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+
+            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, True, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 5cf85b3e2..d14a3c279 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -57,8 +57,9 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.PlaySound("Battle\Attacks\Pound", 0.5, 2.5)
-            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
+            Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 3)
+            MoveAnimation.AnimationFade(PoundEntity, True, 1.0F, False, 0.0F, 3, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 99e61e709..668b4b545 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,16 +54,16 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.MoveEntity(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.MoveEntity(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.AnimationMove(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.AnimationMove(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.PlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
             Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(1.0F), 1.0F)
-            MoveAnimation.FadeEntity(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
+            MoveAnimation.AnimationFade(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 3cc76f0a4..fa0fb7abe 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -69,8 +69,8 @@
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
 
-            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
-            MoveAnimation.MoveEntity(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
@@ -80,25 +80,25 @@
 
             Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
 
-            MoveAnimation.MoveEntity(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
-            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 
             Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
 
             Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.ChangeEntityTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
 
             Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 3, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
-            MoveAnimation.ChangeEntityTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Screens/Battle/BattleCatchScreen.vb b/P3D/Screens/Battle/BattleCatchScreen.vb
index 75ea37b7a..9de11a298 100644
--- a/P3D/Screens/Battle/BattleCatchScreen.vb
+++ b/P3D/Screens/Battle/BattleCatchScreen.vb
@@ -258,7 +258,7 @@
         Select Case Me.AnimationIndex
             Case 0
                 PokemonScale = BattleScreen.OppPokemonNPC.Scale
-                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
+                Animations.AnimationMove(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X - 0.05F, 0.0F, BattleScreen.OppPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
             Case 1
                 Dim SmokeParticles As Integer = 0
                 Do
@@ -272,31 +272,31 @@
 
                     Dim SmokeEntity As Entity = Animations.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    Animations.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Animations.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
 
                     Threading.Interlocked.Increment(SmokeParticles)
                 Loop While SmokeParticles <= 38
 
-                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OppPokemonNPC.Position.Z, 0.01F, False, False, 0.0F, 6.0F,,, 3)
+                Animations.AnimationMove(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OppPokemonNPC.Position.Z, 0.01F, False, False, 0.0F, 6.0F,,, 3)
 
-                Animations.ScaleEntity(Nothing, False, False, 0.05F, 0.05F, 0.05F, 0.02F, 0.0F, 0.0F, "1")
-                Animations.FadeEntity(Nothing, False, 1, False, 0.0F, 0.0F, 0.0F)
+                Animations.AnimationScale(Nothing, False, False, 0.05F, 0.05F, 0.05F, 0.02F, 0.0F, 0.0F, "1")
+                Animations.AnimationFade(Nothing, False, 1, False, 0.0F, 0.0F, 0.0F)
             Case 2
-                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y - 0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
+                Animations.AnimationMove(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y - 0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
             Case 3, 5
-                Animations.RotateEntity(BallEntity, False, 0, 0, 0.05F, 0, 0, 1.0F, 0.0F, 4.0F, False, False, True, True)
+                Animations.AnimationRotate(BallEntity, False, 0, 0, 0.05F, 0, 0, 1.0F, 0.0F, 4.0F, False, False, True, True)
             Case 4, 6
-                Animations.RotateEntity(BallEntity, False, 0, 0, -0.05F, 0, 0, -1.0F, 0.0F, 4.0F, False, False, True, True)
+                Animations.AnimationRotate(BallEntity, False, 0, 0, -0.05F, 0, 0, -1.0F, 0.0F, 4.0F, False, False, True, True)
             Case 7 ' Catch Animation
                 For i = 0 To 2
                     Dim StarPosition As Vector3 = New Vector3(BattleScreen.OppPokemonNPC.Position.X - 0.05F, -0.35F, BattleScreen.OppPokemonNPC.Position.Z)
                     Dim StarDestination As Vector3 = New Vector3(StarPosition.X, StarPosition.Y + 0.4F, StarPosition.Z - ((1 - i) * 0.4F))
                     Dim StarEntity As Entity = Animations.SpawnEntity(StarPosition, TextureManager.GetTexture("Textures\Battle\BallCatchStar"), New Vector3(0.1F), 1.0F)
-                    Animations.MoveEntity(StarEntity, True, StarDestination.X, StarDestination.Y, StarDestination.Z, 0.01F, False, False, 0.0F, 0.0F,,, 3)
+                    Animations.AnimationMove(StarEntity, True, StarDestination.X, StarDestination.Y, StarDestination.Z, 0.01F, False, False, 0.0F, 0.0F,,, 3)
                 Next
-                Animations.MoveEntity(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y - 0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
+                Animations.AnimationMove(BallEntity, False, BattleScreen.OppPokemonNPC.Position.X, BattleScreen.OwnPokemonNPC.Position.Y - 0.35F, BattleScreen.OppPokemonNPC.Position.Z, 0.02F, False, False, 0.0F, 6.0F,,, 3)
             Case 8
-                Animations.FadeEntity(BallEntity, True, 0.01F, False, 0.0F, 0.0F, 0.0F)
+                Animations.AnimationFade(BallEntity, True, 0.01F, False, 0.0F, 0.0F, 0.0F)
             Case 21 ' Break Animation
                 ' Ball Opens
                 Dim SmokeParticles As Integer = 0
@@ -311,14 +311,14 @@
 
                     Dim SmokeEntity As Entity = Animations.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    Animations.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Animations.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
 
                     Threading.Interlocked.Increment(SmokeParticles)
                 Loop While SmokeParticles <= 38
 
                 ' Pokemon appears
-                Animations.FadeEntity(Nothing, False, 1, False, 1, 0.0F, 0.0F)
-                Animations.ScaleEntity(Nothing, False, True, PokemonScale.X, PokemonScale.Y, PokemonScale.Z, 0.02F, 0.0F, 0.0F, "1")
+                Animations.AnimationFade(Nothing, False, 1, False, 1, 0.0F, 0.0F)
+                Animations.AnimationScale(Nothing, False, True, PokemonScale.X, PokemonScale.Y, PokemonScale.Z, 0.02F, 0.0F, 0.0F, "1")
 
         End Select
     End Sub

From 673178616f721e46739d09e81846981788c5693d Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 21 Oct 2021 20:44:38 +0200
Subject: [PATCH 07/57] =?UTF-8?q?Added=20Battle=20Animation=20type=20Backg?=
 =?UTF-8?q?round=20to=20temporarily=20draw=20a=20texture=20to=20the=20scre?=
 =?UTF-8?q?en=20behind=20the=20Pok=C3=A9mon=20but=20in=20front=20of=20the?=
 =?UTF-8?q?=20world?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 P3D/Battle/BattleAnimations/BABackground.vb   | 60 +++++++++++++++++
 .../BattleAnimations/BattleAnimation3D.vb     |  1 +
 P3D/Battle/BattleSystemV2/BattleScreen.vb     | 65 ++++++++++++++++++-
 .../QueryObjects/AnimationQueryObject.vb      | 19 +++++-
 P3D/P3D.vbproj                                |  1 +
 5 files changed, 142 insertions(+), 4 deletions(-)
 create mode 100644 P3D/Battle/BattleAnimations/BABackground.vb

diff --git a/P3D/Battle/BattleAnimations/BABackground.vb b/P3D/Battle/BattleAnimations/BABackground.vb
new file mode 100644
index 000000000..929acc114
--- /dev/null
+++ b/P3D/Battle/BattleAnimations/BABackground.vb
@@ -0,0 +1,60 @@
+Public Class BABackground
+
+    Inherits BattleAnimation3D
+
+    Public TransitionSpeed As Single = 0.01F
+    Public FadeIn As Boolean = False
+    Public FadeOut As Boolean = False
+    Public BackgroundOpacity As Single = 1.0F
+    Public EndState As Single = 0.0F
+    Public Texture As Texture2D
+
+    Public Sub New(ByVal Texture As Texture2D, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, FadeOut As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal StartState As Single = 0.0F)
+        MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
+        Me.Texture = Texture
+        Me.EndState = EndState
+        Me.FadeIn = FadeIn
+        Me.FadeOut = FadeOut
+        Me.TransitionSpeed = TransitionSpeed
+
+        Me.BackgroundOpacity = StartState
+        Me.Visible = False
+
+        Me.AnimationType = AnimationTypes.Background
+    End Sub
+
+    Public Overrides Sub Render()
+        If startDelay = 0.0F AndAlso Me.BackgroundOpacity > 0.0F Then
+            Core.SpriteBatch.Draw(Me.Texture, New Rectangle(0, 0, windowSize.Width, windowSize.Height), New Color(255, 255, 255, CInt(255 * Me.BackgroundOpacity)))
+        End If
+    End Sub
+
+    Public Overrides Sub DoActionActive()
+        If Me.FadeIn = True Then
+            If Me.EndState > Me.BackgroundOpacity Then
+                Me.BackgroundOpacity += Me.TransitionSpeed
+                If Me.BackgroundOpacity >= Me.EndState Then
+                    Me.BackgroundOpacity = Me.EndState
+                    Me.FadeIn = False
+                    Me.EndState = 0
+                End If
+            End If
+        Else
+            If Me.FadeOut = True Then
+                If Me.EndState < Me.BackgroundOpacity Then
+                    Me.BackgroundOpacity -= Me.TransitionSpeed
+                    If Me.BackgroundOpacity <= Me.EndState Then
+                        Me.BackgroundOpacity = Me.EndState
+                    End If
+                End If
+                If Me.BackgroundOpacity = Me.EndState Then
+                    Me.Ready = True
+                End If
+            Else
+                Me.BackgroundOpacity = Me.EndState
+                Me.Ready = True
+            End If
+        End If
+    End Sub
+
+End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
index 1aeb45e27..8011ce1d2 100644
--- a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
+++ b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
@@ -17,6 +17,7 @@
         Wait
         ViewPokeBill
         Sound
+        Background
     End Enum
 
     Public AnimationType As AnimationTypes = AnimationTypes.Nothing
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index 4cc142822..a4dcf7821 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -768,7 +768,33 @@
 
         Public Overrides Sub Draw()
             SkyDome.Draw(45.0F)
+
+            Dim ForegroundEntities As New List(Of Entity)
+            For Each e As Entity In Level.Entities
+                If e Is OwnPokemonNPC Then
+                    ForegroundEntities.Add(e)
+                End If
+                If e Is OppPokemonNPC Then
+                    ForegroundEntities.Add(e)
+                End If
+                If e Is OwnTrainerNPC Then
+                    ForegroundEntities.Add(e)
+                End If
+                If e Is OppTrainerNPC Then
+                    ForegroundEntities.Add(e)
+                End If
+                If e Is OwnPokemonModel Then
+                    ForegroundEntities.Add(e)
+                End If
+                If e Is OppPokemonModel Then
+                    ForegroundEntities.Add(e)
+                End If
+            Next
+            If ForegroundEntities.Count > 0 Then
+                ForegroundEntities = (From f In ForegroundEntities Order By f.CameraDistance Descending).ToList()
+            End If
             Level.Draw()
+
             World.DrawWeather(Screen.Level.World.CurrentMapWeather)
 
             If HasToWaitPVP() = True Then
@@ -781,13 +807,25 @@
                 End If
             End If
 
+            Dim ForegroundAnimationList As New List(Of AnimationQueryObject)
             If BattleQuery.Count > 0 Then
                 Dim cIndex As Integer = 0
                 Dim cQuery As New List(Of QueryObject)
 nextIndex:
                 If BattleQuery.Count > cIndex Then
                     Dim cQueryObject As QueryObject = BattleQuery(cIndex)
-                    cQuery.Add(cQueryObject)
+                    If cQueryObject.QueryType = QueryObject.QueryTypes.MoveAnimation Then
+                        If CType(cQueryObject, AnimationQueryObject).DrawBeforeEntities = False Then
+                            cQuery.Add(cQueryObject)
+                        Else
+                            ForegroundAnimationList.Add(CType(cQueryObject, AnimationQueryObject))
+                            cIndex += 1
+                            GoTo nextIndex
+                        End If
+                    Else
+                        cQuery.Add(cQueryObject)
+                    End If
+
 
                     If cQueryObject.PassThis = True Then
                         cIndex += 1
@@ -802,6 +840,31 @@ nextIndex:
                 Next
             End If
 
+            If ForegroundAnimationList.Count > 0 Then
+                For i = 0 To ForegroundEntities.Count - 1
+                    ForegroundEntities(i).Render()
+                    DebugDisplay.MaxVertices += ForegroundEntities(i).VertexCount
+                Next
+
+                Dim cIndex As Integer = 0
+                Dim cQuery As New List(Of QueryObject)
+nextIndexForeground:
+                If ForegroundAnimationList.Count > cIndex Then
+                    Dim cQueryObject As QueryObject = ForegroundAnimationList(cIndex)
+                    cQuery.Add(cQueryObject)
+
+                    If cQueryObject.PassThis = True Then
+                        cIndex += 1
+                        GoTo nextIndexForeground
+                    End If
+                End If
+
+                cQuery.Reverse()
+
+                For Each cQueryObject As QueryObject In cQuery
+                    cQueryObject.Draw(Me)
+                Next
+            End If
             'Core.SpriteBatch.DrawString(FontManager.MiniFont, "Battle system not final!", New Vector2(0, Core.windowSize.Height - 20), Color.White)
 
             TextBox.Draw()
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index ff0d88d2f..fba7a46b3 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -10,6 +10,7 @@
 		Public SpawnedEntities As List(Of Entity)
 		Public CurrentEntity As Entity
 		Public CurrentModel As ModelEntity
+		Public DrawBeforeEntities As Boolean
 
 		Public Overrides ReadOnly Property IsReady As Boolean
 			Get
@@ -17,9 +18,10 @@
 			End Get
 		End Property
 
-		Public Sub New(ByVal entity As Entity, ByVal BattleFlipped As Boolean, Optional ByVal model As ModelEntity = Nothing)
+		Public Sub New(ByVal entity As Entity, ByVal BattleFlipped As Boolean, Optional ByVal model As ModelEntity = Nothing, Optional DrawBeforeEntities As Boolean = False)
 			MyBase.New(QueryTypes.MoveAnimation)
 			Me.AnimationSequence = New List(Of BattleAnimation3D)
+			Me.DrawBeforeEntities = DrawBeforeEntities
 			If BattleFlipped <> Nothing Then
 				Me.BattleFlipped = BattleFlipped
 			End If
@@ -28,14 +30,22 @@
 			AnimationSequenceBegin()
 		End Sub
 		Public Overrides Sub Draw(ByVal BV2Screen As BattleScreen)
+			Dim Backgrounds As New List(Of Entity)
+
 			Dim RenderObjects As New List(Of Entity)
 			For Each a As BattleAnimation3D In Me.AnimationSequence
-				RenderObjects.Add(a)
+				If a.AnimationType = BattleAnimation3D.AnimationTypes.Background Then
+					Backgrounds.Add(a)
+				Else
+					RenderObjects.Add(a)
+				End If
 			Next
 			If RenderObjects.Count > 0 Then
 				RenderObjects = (From r In RenderObjects Order By r.CameraDistance Descending).ToList()
 			End If
-
+			For Each [Object] As Entity In Backgrounds
+				[Object].Render()
+			Next
 			For Each [Object] As Entity In RenderObjects
 				[Object].Render()
 			Next
@@ -218,6 +228,9 @@
 			AnimationSequence.Add(baSound)
 		End Sub
 
+		Public Sub AnimationBackground(Texture As Texture2D, ByVal RemoveEntityAfter As Boolean, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal FadeOut As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = 0.0F)
+			Dim baBackground As BABackground = New BABackground(Texture, TransitionSpeed, FadeIn, FadeOut, EndState, startDelay, endDelay, startState)
+			AnimationSequence.Add(baBackground)
 		End Sub
 
 	End Class
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 892230fc9..28784aeb7 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -27546,6 +27546,7 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Compile Include="Battle\BattleAnimations\BAEntityColor.vb" />
+    <Compile Include="Battle\BattleAnimations\BABackground.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityRotate.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityMove.vb" />
     <Compile Include="Battle\BattleAnimations\BAEntityOpacity.vb" />

From 758154551bde1e99a56e36eeae2e4fd9a13dac80 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com>
Date: Sun, 22 Aug 2021 20:17:36 +0200
Subject: [PATCH 08/57] Battle Animations 22-08-2021

Made the Battle Animation implementation functional
Added animations for:
Stats Increasing
Stats Decreasing
Status Effects
- Poisoned
- Burned
Attacks
- Ember
- Growl
- Pound
- Tackle
- Poison Sting
---
 P3D/Battle/BattleSystemV2/Battle.vb       | 1112 ++++++++++-----------
 P3D/Pokemon/Attacks/Fire/Ember.vb         |   51 +-
 P3D/Pokemon/Attacks/Normal/Growl.vb       |   11 +-
 P3D/Pokemon/Attacks/Normal/Pound.vb       |    5 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb      |    9 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb |   34 +-
 6 files changed, 582 insertions(+), 640 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 058885f11..2b322aaa2 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2707,13 +2707,12 @@
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
-
                                 Select Case message
                                     Case "" 'Print default message only
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
@@ -3412,26 +3411,27 @@
             End If
 
             '***STAT INCREASE ANIMATION***
-            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
-                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statUp")
+                Dim Texture As String = "Textures\Battle\StatChange\statDown"
+                Dim Position As Vector3 = New Vector3(0, -0.4, 0)
+                Dim Destination As Vector3 = New Vector3(0, 0.8, 0)
+                Dim Scale As Vector3 = New Vector3(0.2F)
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), pNPC.Position.Z + zPos)
-                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), zPos + pNPC.Position.Z)
-                Dim Scale As New Vector3(0.2F)
-
-                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
+                Position.X = xPos
+                Position.Z = zPos
+                Destination.X = xPos
+                Destination.Z = zPos
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-
-                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
-            BattleScreen.BattleQuery.Add(StatAnimation)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -3693,26 +3693,27 @@
                 End If
             End If
             '***STAT DECREASE ANIMATION***
-            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
-                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statDown")
+                Dim Texture As String = "Textures\Battle\StatChange\statDown"
+                Dim Position As Vector3 = New Vector3(0, 0.8, 0)
+                Dim Destination As Vector3 = New Vector3(0, -0.4, 0)
+                Dim Scale As Vector3 = New Vector3(0.2F)
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), pNPC.Position.Z + zPos)
-                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), zPos + pNPC.Position.Z)
-                Dim Scale As New Vector3(0.2F)
-
-                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
+                Position.X = xPos
+                Position.Z = zPos
+                Destination.X = xPos
+                Destination.Z = zPos
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-
-                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
-            StatAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
-            BattleScreen.BattleQuery.Add(StatAnimation)
+            MoveAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -3977,10 +3978,8 @@
 
         Public Sub ReduceHP(ByVal HPAmount As Integer, ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String, ByVal sound As String)
             Dim p As Pokemon = BattleScreen.OwnPokemon
-            Dim pNPC As Entity = BattleScreen.OwnPokemonNPC
             If own = False Then
                 p = BattleScreen.OppPokemon
-                pNPC = BattleScreen.OppPokemonNPC
             End If
 
             If p.HP > 0 And p.Status <> Pokemon.StatusProblems.Fainted Then
@@ -3997,13 +3996,6 @@
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(sound, False, 0.0F))
                 End If
 
-                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 0, 0)
-                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 1, 0)
-                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 2, 0)
-                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
-                BattleScreen.BattleQuery.Add(HitAnimation)
-
                 If own = True Then
                     BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, HPAmount, New Vector2(200, 256)))
                 Else
@@ -4756,14 +4748,14 @@
 
 #End Region
 
-        ''' <summary>
-        ''' Switches camera to angle
-        ''' </summary>
-        ''' <param name="direction">0=main battle/1=own pokemon/2=opp pokemon</param>
-        ''' <param name="own">If the code comes from the own player or not.</param>
-        ''' <param name="BattleScreen">Battlescreen reference</param>
-        ''' <param name="AddPVP">If the call should get added the PVP list or the own queue.</param>
-        Public Sub ChangeCameraAngle(ByVal direction As Integer, ByVal own As Boolean, ByVal BattleScreen As BattleScreen, Optional ByVal AddPVP As Boolean = False)
+		''' <summary>
+		''' Switches camera to angle
+		''' </summary>
+		''' <param name="direction">0=main battle/1=own pokemon/2=opp pokemon</param>
+		''' <param name="own">If the code comes from the own player or not.</param>
+		''' <param name="BattleScreen">Battlescreen reference</param>
+		''' <param name="AddPVP">If the call should get added the PVP list or the own queue.</param>
+		Public Sub ChangeCameraAngle(ByVal direction As Integer, ByVal own As Boolean, ByVal BattleScreen As BattleScreen, Optional ByVal AddPVP As Boolean = False)
             Dim q As CameraQueryObject = Nothing
 
             Select Case direction
@@ -5357,22 +5349,20 @@
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-
                                 PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
-
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
 
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP / 8), True, True, BattleScreen, "The poison hurt " & .OwnPokemon.GetDisplayName() & ".", "poison")
@@ -5383,22 +5373,20 @@
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-
                                 PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
-
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
 
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP * multiplier), True, True, BattleScreen, "The toxic hurt " & .OwnPokemon.GetDisplayName() & ".", "badpoison")
@@ -5418,14 +5406,12 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-
-                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
-
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6155,24 +6141,21 @@
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-
                                 PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
-
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
 
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
-
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP / 8), False, False, BattleScreen, "The poison hurt " & .OppPokemon.GetDisplayName() & ".", "poison")
                             End If
@@ -6182,22 +6165,20 @@
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-
                                 PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
-
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
 
+                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
@@ -6216,14 +6197,12 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-
-                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
-
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6748,38 +6727,38 @@
                     End If
                 Else
                     If BattleScreen.IsTrainerBattle = True Then
-                        EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, False)
-                        If BattleScreen.IsRemoteBattle = True Then
-                            EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, True)
-                        End If
-                    Else
-                        EndBattle(EndBattleReasons.LoseWild, BattleScreen, False)
-                    End If
-                End If
-            End With
-        End Sub
+						EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, False)
+						If BattleScreen.IsRemoteBattle = True Then
+							EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, True)
+						End If
+					Else
+						EndBattle(EndBattleReasons.LoseWild, BattleScreen, False)
+					End If
+				End If
+			End With
+		End Sub
 
-        Public Sub ApplyOwnBatonPass(ByVal BattleScreen As BattleScreen)
-            If BattleScreen.FieldEffects.OwnUsedBatonPass = True Then
-                BattleScreen.FieldEffects.OwnUsedBatonPass = False
+		Public Sub ApplyOwnBatonPass(ByVal BattleScreen As BattleScreen)
+			If BattleScreen.FieldEffects.OwnUsedBatonPass = True Then
+				BattleScreen.FieldEffects.OwnUsedBatonPass = False
 
-                BattleScreen.OwnPokemon.StatAttack = BattleScreen.FieldEffects.OwnBatonPassStats(0)
-                BattleScreen.OwnPokemon.StatDefense = BattleScreen.FieldEffects.OwnBatonPassStats(1)
-                BattleScreen.OwnPokemon.StatSpAttack = BattleScreen.FieldEffects.OwnBatonPassStats(2)
-                BattleScreen.OwnPokemon.StatSpDefense = BattleScreen.FieldEffects.OwnBatonPassStats(3)
-                BattleScreen.OwnPokemon.StatSpeed = BattleScreen.FieldEffects.OwnBatonPassStats(4)
-                BattleScreen.OwnPokemon.Evasion = BattleScreen.FieldEffects.OwnBatonPassStats(5)
-                BattleScreen.OwnPokemon.Accuracy = BattleScreen.FieldEffects.OwnBatonPassStats(6)
+				BattleScreen.OwnPokemon.StatAttack = BattleScreen.FieldEffects.OwnBatonPassStats(0)
+				BattleScreen.OwnPokemon.StatDefense = BattleScreen.FieldEffects.OwnBatonPassStats(1)
+				BattleScreen.OwnPokemon.StatSpAttack = BattleScreen.FieldEffects.OwnBatonPassStats(2)
+				BattleScreen.OwnPokemon.StatSpDefense = BattleScreen.FieldEffects.OwnBatonPassStats(3)
+				BattleScreen.OwnPokemon.StatSpeed = BattleScreen.FieldEffects.OwnBatonPassStats(4)
+				BattleScreen.OwnPokemon.Evasion = BattleScreen.FieldEffects.OwnBatonPassStats(5)
+				BattleScreen.OwnPokemon.Accuracy = BattleScreen.FieldEffects.OwnBatonPassStats(6)
 
-                If BattleScreen.FieldEffects.OwnBatonPassConfusion = True Then
-                    BattleScreen.FieldEffects.OwnBatonPassConfusion = False
-                    BattleScreen.OwnPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
-                End If
-            End If
-        End Sub
+				If BattleScreen.FieldEffects.OwnBatonPassConfusion = True Then
+					BattleScreen.FieldEffects.OwnBatonPassConfusion = False
+					BattleScreen.OwnPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
+				End If
+			End If
+		End Sub
 
-        Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
-            HasSwitchedInOwn = True
+		Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
+			HasSwitchedInOwn = True
             If FirstTime = False Then
                 Dim insertMessage As String = message
 
@@ -6796,28 +6775,24 @@
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-                    Dim SmokeDestination As Vector3 = New Vector3(0, 0, 0)
+                    Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
-                    Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
-
-                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
-
+                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
-                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
+                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
                 BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position, TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallReturn.AnimationMove(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
+                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
@@ -6855,311 +6830,304 @@
 
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
-
                 BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-
-                Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position + New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallThrow.AnimationMove(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
+                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
                 BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
-
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
-                    Dim SmokeEntity As Entity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
-
-                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
-
+                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
 
             With BattleScreen
-                If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
-                    .FieldEffects.UsedPokemon.Add(NewPokemonIndex)
-                End If
+				If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
+					.FieldEffects.UsedPokemon.Add(NewPokemonIndex)
+				End If
 
-                If Not .OwnPokemon.Item Is Nothing Then
-                    If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
-                        If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
-                            BattleScreen.FieldEffects.AmuletCoin += 1
-                        End If
-                    End If
-                End If
+				If Not .OwnPokemon.Item Is Nothing Then
+					If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
+						If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
+							BattleScreen.FieldEffects.AmuletCoin += 1
+						End If
+					End If
+				End If
 
-                Dim p As Pokemon = .OwnPokemon
-                Dim op As Pokemon = .OppPokemon
+				Dim p As Pokemon = .OwnPokemon
+				Dim op As Pokemon = .OppPokemon
 
-                Dim spikeAffected As Boolean = True
-                Dim rockAffected As Boolean = True
+				Dim spikeAffected As Boolean = True
+				Dim rockAffected As Boolean = True
 
-                spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
+				spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
 
-                'Spikes
-                If spikeAffected = True Then
-                    If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-                        Dim spikeDamage As Double = 1D
-                        Select Case .FieldEffects.OppSpikes
-                            Case 1
-                                spikeDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2
-                                spikeDamage = (p.MaxHP / 100) * 16.7D
-                            Case 3
-                                spikeDamage = (p.MaxHP / 100) * 25D
-                        End Select
-                        ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-                    End If
-                End If
+				'Spikes
+				If spikeAffected = True Then
+					If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+						Dim spikeDamage As Double = 1D
+						Select Case .FieldEffects.OppSpikes
+							Case 1
+								spikeDamage = (p.MaxHP / 100) * 12.5D
+							Case 2
+								spikeDamage = (p.MaxHP / 100) * 16.7D
+							Case 3
+								spikeDamage = (p.MaxHP / 100) * 25D
+						End Select
+						ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+					End If
+				End If
 
-                'Sticky Web
-                If spikeAffected = True Then
-                    If .FieldEffects.OppStickyWeb > 0 Then
+				'Sticky Web
+				If spikeAffected = True Then
+					If .FieldEffects.OppStickyWeb > 0 Then
 
-                        LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
+						LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-                    End If
-                End If
+					End If
+				End If
 
-                'Toxic Spikes
-                If spikeAffected = True Then
-                    If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-                        Select Case .FieldEffects.OppToxicSpikes
-                            Case 1
-                                InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                            Case 2
-                                InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                        End Select
-                    End If
-                    If .FieldEffects.OppToxicSpikes > 0 Then
-                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-                            .AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-                            .FieldEffects.OppToxicSpikes = 0
-                        End If
-                    End If
-                End If
+				'Toxic Spikes
+				If spikeAffected = True Then
+					If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+						Select Case .FieldEffects.OppToxicSpikes
+							Case 1
+								InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+							Case 2
+								InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+						End Select
+					End If
+					If .FieldEffects.OppToxicSpikes > 0 Then
+						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+							.AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+							.FieldEffects.OppToxicSpikes = 0
+						End If
+					End If
+				End If
 
-                'Stealth Rock
-                If rockAffected = True Then
-                    If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-                        Dim rocksDamage As Double = 1D
+				'Stealth Rock
+				If rockAffected = True Then
+					If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+						Dim rocksDamage As Double = 1D
 
-                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-                        Select Case effectiveness
-                            Case 0.25F
-                                rocksDamage = (p.MaxHP / 100) * 3.125D
-                            Case 0.5F
-                                rocksDamage = (p.MaxHP / 100) * 6.25D
-                            Case 1.0F
-                                rocksDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2.0F
-                                rocksDamage = (p.MaxHP / 100) * 25D
-                            Case 4.0F
-                                rocksDamage = (p.MaxHP / 100) * 50D
-                        End Select
+						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+						Select Case effectiveness
+							Case 0.25F
+								rocksDamage = (p.MaxHP / 100) * 3.125D
+							Case 0.5F
+								rocksDamage = (p.MaxHP / 100) * 6.25D
+							Case 1.0F
+								rocksDamage = (p.MaxHP / 100) * 12.5D
+							Case 2.0F
+								rocksDamage = (p.MaxHP / 100) * 25D
+							Case 4.0F
+								rocksDamage = (p.MaxHP / 100) * 50D
+						End Select
 
-                        ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-                    End If
-                End If
+						ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+					End If
+				End If
 
-                TriggerAbilityEffect(BattleScreen, True)
-                TriggerItemEffect(BattleScreen, True)
+				TriggerAbilityEffect(BattleScreen, True)
+				TriggerItemEffect(BattleScreen, True)
 
-                If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
-                    .FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
-                End If
+				If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
+					.FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
+				End If
 
-                If BattleScreen.FieldEffects.OwnHealingWish = True Then
-                    BattleScreen.FieldEffects.OwnHealingWish = False
+				If BattleScreen.FieldEffects.OwnHealingWish = True Then
+					BattleScreen.FieldEffects.OwnHealingWish = False
 
-                    If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
-                        GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
-                        CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
-                    End If
-                End If
-            End With
-        End Sub
+					If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
+						GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
+						CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
+					End If
+				End If
+			End With
+		End Sub
 
-        Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
-            With BattleScreen
-                'Natural cure cures status problems
-                If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
-                    If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-                        .OppPokemon.Status = Pokemon.StatusProblems.None
-                        .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
-                    End If
-                End If
-                'Regenerator ability heals 1/3 of it's max HP
-                If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
-                    If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
-                        Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
-                        If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
-                            BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
-                        End If
-                    End If
-                End If
-                'save baton pass stuff:
-                If .FieldEffects.OppUsedBatonPass = True Then
-                    .FieldEffects.OppBatonPassStats = New List(Of Integer)
-                    With .OppPokemon
-                        BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
-                    End With
-                    .FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
-                End If
+		Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
+			With BattleScreen
+				'Natural cure cures status problems
+				If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
+					If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+						.OppPokemon.Status = Pokemon.StatusProblems.None
+						.BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
+					End If
+				End If
+				'Regenerator ability heals 1/3 of it's max HP
+				If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
+					If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
+						Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
+						If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
+							BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
+						End If
+					End If
+				End If
+				'save baton pass stuff:
+				If .FieldEffects.OppUsedBatonPass = True Then
+					.FieldEffects.OppBatonPassStats = New List(Of Integer)
+					With .OppPokemon
+						BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
+					End With
+					.FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
+				End If
 
-                'Set the original objects of Pokemon
-                .OppPokemon.ResetTemp()
+				'Set the original objects of Pokemon
+				.OppPokemon.ResetTemp()
 
-                'Remove volatiles
-                .OppPokemon.ClearAllVolatiles()
+				'Remove volatiles
+				.OppPokemon.ClearAllVolatiles()
 
-                'Resetting FieldEffects
-                With .FieldEffects
-                    .OppSleepTurns = 0
-                    .OppTruantRound = 0
-                    .OppTaunt = 0
-                    .OppSmacked = 0
-                    .OppRageCounter = 0
-                    .OppUproar = 0
-                    If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
-                    .OppEndure = 0
-                    .OppProtectCounter = 0
-                    .OppDetectCounter = 0
-                    .OppKingsShieldCounter = 0
-                    .OppProtectMovesCount = 0
-                    If .OppUsedBatonPass = False Then .OppIngrain = 0
-                    If .OppUsedBatonPass = False Then .OppSubstitute = 0
-                    If .OppUsedBatonPass = False Then .OppMagnetRise = 0
-                    If .OppUsedBatonPass = False Then .OppAquaRing = 0
-                    .OppPoisonCounter = 0
-                    .OppNightmare = 0
-                    If .OppUsedBatonPass = False Then .OppCurse = 0
-                    .OppOutrage = 0
-                    .OppThrash = 0
-                    .OppPetalDance = 0
-                    .OppEncore = 0
-                    .OppEncoreMove = Nothing
-                    If .OppUsedBatonPass = False Then .OppEmbargo = 0
-                    .OppYawn = 0
-                    If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
-                    .OppConfusionTurns = 0
-                    .OppTorment = 0
-                    .OppTormentMove = Nothing
-                    .OppChoiceMove = Nothing
-                    .OppRecharge = 0
-                    .OppRolloutCounter = 0
-                    .OppIceBallCounter = 0
-                    .OppDefenseCurl = 0
-                    .OppCharge = 0
-                    .OppSolarBeam = 0
-                    .OppSolarBlade = 0
-                    If .OppUsedBatonPass = False Then .OppLeechSeed = 0
-                    If .OppUsedBatonPass = False Then .OppLockOn = 0
-                    .OppLansatBerry = 0
-                    .OppCustapBerry = 0
-                    .OppTrappedCounter = 0
-                    .OppFuryCutter = 0
-                    .OppEchoedVoice = 0
-                    .OppPokemonTurns = 0
-                    .OppStockpileCount = 0
-                    .OppDestinyBond = False
-                    .OppGastroAcid = False
+				'Resetting FieldEffects
+				With .FieldEffects
+					.OppSleepTurns = 0
+					.OppTruantRound = 0
+					.OppTaunt = 0
+					.OppSmacked = 0
+					.OppRageCounter = 0
+					.OppUproar = 0
+					If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
+					.OppEndure = 0
+					.OppProtectCounter = 0
+					.OppDetectCounter = 0
+					.OppKingsShieldCounter = 0
+					.OppProtectMovesCount = 0
+					If .OppUsedBatonPass = False Then .OppIngrain = 0
+					If .OppUsedBatonPass = False Then .OppSubstitute = 0
+					If .OppUsedBatonPass = False Then .OppMagnetRise = 0
+					If .OppUsedBatonPass = False Then .OppAquaRing = 0
+					.OppPoisonCounter = 0
+					.OppNightmare = 0
+					If .OppUsedBatonPass = False Then .OppCurse = 0
+					.OppOutrage = 0
+					.OppThrash = 0
+					.OppPetalDance = 0
+					.OppEncore = 0
+					.OppEncoreMove = Nothing
+					If .OppUsedBatonPass = False Then .OppEmbargo = 0
+					.OppYawn = 0
+					If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
+					.OppConfusionTurns = 0
+					.OppTorment = 0
+					.OppTormentMove = Nothing
+					.OppChoiceMove = Nothing
+					.OppRecharge = 0
+					.OppRolloutCounter = 0
+					.OppIceBallCounter = 0
+					.OppDefenseCurl = 0
+					.OppCharge = 0
+					.OppSolarBeam = 0
+					.OppSolarBlade = 0
+					If .OppUsedBatonPass = False Then .OppLeechSeed = 0
+					If .OppUsedBatonPass = False Then .OppLockOn = 0
+					.OppLansatBerry = 0
+					.OppCustapBerry = 0
+					.OppTrappedCounter = 0
+					.OppFuryCutter = 0
+					.OppEchoedVoice = 0
+					.OppPokemonTurns = 0
+					.OppStockpileCount = 0
+					.OppDestinyBond = False
+					.OppGastroAcid = False
 
-                    .OppFlyCounter = 0
-                    .OppDigCounter = 0
-                    .OppBounceCounter = 0
-                    .OppDiveCounter = 0
-                    .OppShadowForceCounter = 0
-                    .OppPhantomForceCounter = 0
-                    .OppSkyDropCounter = 0
-                    .OppGeomancyCounter = 0
-                    .OppSkyAttackCounter = 0
-                    .OppRazorWindCounter = 0
-                    .OppSkullBashCounter = 0
+					.OppFlyCounter = 0
+					.OppDigCounter = 0
+					.OppBounceCounter = 0
+					.OppDiveCounter = 0
+					.OppShadowForceCounter = 0
+					.OppPhantomForceCounter = 0
+					.OppSkyDropCounter = 0
+					.OppGeomancyCounter = 0
+					.OppSkyAttackCounter = 0
+					.OppRazorWindCounter = 0
+					.OppSkullBashCounter = 0
 
-                    .OppForesight = 0
-                    .OppOdorSleuth = 0
-                    .OppMiracleEye = 0
+					.OppForesight = 0
+					.OppOdorSleuth = 0
+					.OppMiracleEye = 0
 
-                    .OppWrap = 0
-                    .OppWhirlpool = 0
-                    .OppBind = 0
-                    .OppClamp = 0
-                    .OppFireSpin = 0
-                    .OppMagmaStorm = 0
-                    .OppSandTomb = 0
-                    .OppInfestation = 0
+					.OppWrap = 0
+					.OppWhirlpool = 0
+					.OppBind = 0
+					.OppClamp = 0
+					.OppFireSpin = 0
+					.OppMagmaStorm = 0
+					.OppSandTomb = 0
+					.OppInfestation = 0
 
-                    .OppBideCounter = 0
-                    .OppBideDamage = 0
+					.OppBideCounter = 0
+					.OppBideDamage = 0
 
-                    .OppRoostUsed = False
+					.OppRoostUsed = False
 
-                    'Own stuff that depends on opp pokemon presence
-                    .OwnTrappedCounter = 0
-                    .OwnWrap = 0
-                    .OwnWhirlpool = 0
-                    .OwnBind = 0
-                    .OwnClamp = 0
-                    .OwnFireSpin = 0
-                    .OwnMagmaStorm = 0
-                    .OwnSandTomb = 0
-                    .OwnInfestation = 0
+					'Own stuff that depends on opp pokemon presence
+					.OwnTrappedCounter = 0
+					.OwnWrap = 0
+					.OwnWhirlpool = 0
+					.OwnBind = 0
+					.OwnClamp = 0
+					.OwnFireSpin = 0
+					.OwnMagmaStorm = 0
+					.OwnSandTomb = 0
+					.OwnInfestation = 0
 
-                    If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
-                        BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
-                    End If
-                End With
-            End With
+					If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
+						BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
+					End If
+				End With
+			End With
 
-            BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
+			BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
 
-            If BattleScreen.IsTrainerBattle = False Then
+			If BattleScreen.IsTrainerBattle = False Then
                 ChangeCameraAngle(1, False, BattleScreen)
                 Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
                 Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.AnimationMove(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
+                Faint.AnimationMovePokemonEntity(0, -1, 0, 0.1, False, False, 2, 0,,, 4)
                 BattleScreen.BattleQuery.Add(Faint)
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
 
-                EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
-            Else
-                If BattleScreen.TrainerHasFightablePokemon() = True Then
-                    If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
-                        GainEXP(BattleScreen)
-                    End If
+				EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
+			Else
+				If BattleScreen.TrainerHasFightablePokemon() = True Then
+					If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
+						GainEXP(BattleScreen)
+					End If
 
                     If BattleScreen.IsRemoteBattle And BattleScreen.OppFaint Then
-                        'Next pokemon is selected by the opponent.
-                    Else
-                        SwitchInOpp(BattleScreen, False, index)
-                    End If
-                Else
-                    GainEXP(BattleScreen)
+						'Next pokemon is selected by the opponent.
+					Else
+						SwitchInOpp(BattleScreen, False, index)
+					End If
+				Else
+					GainEXP(BattleScreen)
 
                     If message = "" Then
-                        message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
-                    End If
+						message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
+					End If
 
-                    BattleScreen.BattleQuery.Add(New TextQueryObject(message))
+					BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
                     Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
@@ -7170,57 +7138,56 @@
                         Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                         Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                        Dim SmokeTexture As String = "Textures\Battle\Cloud"
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                         Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-                        Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
-                        BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+
+                        BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                         Threading.Interlocked.Increment(SmokeReturned)
                     Loop While SmokeReturned <= 38
 
                     ' Pokemon disappears
-                    BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
-                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
+                    BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                     ' Ball returns
                     BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                    Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                    BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                    BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                     BattleScreen.BattleQuery.Add(BallReturn)
 
                     EndBattle(EndBattleReasons.WinTrainer, BattleScreen, False)
-                    If BattleScreen.IsRemoteBattle = True Then
-                        EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
-                    End If
-                End If
-            End If
-        End Sub
+					If BattleScreen.IsRemoteBattle = True Then
+						EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
+					End If
+				End If
+			End If
+		End Sub
 
-        Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
-            If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
-                BattleScreen.FieldEffects.OppUsedBatonPass = False
+		Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
+			If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
+				BattleScreen.FieldEffects.OppUsedBatonPass = False
 
-                BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
-                BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
-                BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
-                BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
-                BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
-                BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
-                BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
+				BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
+				BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
+				BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
+				BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
+				BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
+				BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
+				BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
 
-                If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
-                    BattleScreen.FieldEffects.OppBatonPassConfusion = False
-                    BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
-                End If
-            End If
-        End Sub
+				If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
+					BattleScreen.FieldEffects.OppBatonPassConfusion = False
+					BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
+				End If
+			End If
+		End Sub
 
-        Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
+		Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
 
-            If FirstTime = False Then
-                HasSwitchedInOpp = True
+			If FirstTime = False Then
+				HasSwitchedInOpp = True
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
@@ -7232,249 +7199,246 @@
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                     Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
-                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+
+                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
-                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
+                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
                 BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.BattleQuery.Add(BallReturn)
 
                 BattleScreen.SendInNewTrainerPokemon(index)
-                Me.ApplyOppBatonPass(BattleScreen)
+				Me.ApplyOppBatonPass(BattleScreen)
 
-                If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
-                    BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
-                End If
+				If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
+					BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
+				End If
 
-                Dim oppShiny As String = "N"
-                If BattleScreen.OppPokemon.IsShiny = True Then
-                    oppShiny = "S"
-                End If
+				Dim oppShiny As String = "N"
+				If BattleScreen.OppPokemon.IsShiny = True Then
+					oppShiny = "S"
+				End If
 
-                Dim oppModel As String = BattleScreen.GetModelName(False)
+				Dim oppModel As String = BattleScreen.GetModelName(False)
 
-                If oppModel = "" Then
-                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
-                Else
-                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
-                End If
+				If oppModel = "" Then
+					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
+				Else
+					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
+				End If
 
-                BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
+				BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Go, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                 BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
-                ' Ball opens
+                ' Ball Opens
                 BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
 
-                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.BattleQuery.Add(BallThrow)
             End If
 
-            With BattleScreen
-                Dim p As Pokemon = .OppPokemon
-                Dim op As Pokemon = .OwnPokemon
+			With BattleScreen
+				Dim p As Pokemon = .OppPokemon
+				Dim op As Pokemon = .OwnPokemon
 
-                Dim spikeAffected As Boolean = True
-                Dim rockAffected As Boolean = True
+				Dim spikeAffected As Boolean = True
+				Dim rockAffected As Boolean = True
 
-                spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
+				spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
 
-                If spikeAffected = True Then
-                    If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-                        Dim spikeDamage As Double = 1D
-                        Select Case .FieldEffects.OwnSpikes
-                            Case 1
-                                spikeDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2
-                                spikeDamage = (p.MaxHP / 100) * 16.7D
-                            Case 3
-                                spikeDamage = (p.MaxHP / 100) * 25D
-                        End Select
-                        ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-                    End If
-                End If
-                'Sticky Web
-                If spikeAffected = True Then
-                    If .FieldEffects.OwnStickyWeb > 0 Then
+				If spikeAffected = True Then
+					If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+						Dim spikeDamage As Double = 1D
+						Select Case .FieldEffects.OwnSpikes
+							Case 1
+								spikeDamage = (p.MaxHP / 100) * 12.5D
+							Case 2
+								spikeDamage = (p.MaxHP / 100) * 16.7D
+							Case 3
+								spikeDamage = (p.MaxHP / 100) * 25D
+						End Select
+						ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+					End If
+				End If
+				'Sticky Web
+				If spikeAffected = True Then
+					If .FieldEffects.OwnStickyWeb > 0 Then
 
-                        LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
+						LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-                    End If
-                End If
-                If spikeAffected = True Then
-                    If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-                        Select Case .FieldEffects.OwnToxicSpikes
-                            Case 1
-                                InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                            Case 2
-                                InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-                        End Select
-                    End If
-                    If .FieldEffects.OwnToxicSpikes > 0 Then
-                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-                            .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-                            .FieldEffects.OwnToxicSpikes = 0
-                        End If
-                    End If
-                End If
+					End If
+				End If
+				If spikeAffected = True Then
+					If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+						Select Case .FieldEffects.OwnToxicSpikes
+							Case 1
+								InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+							Case 2
+								InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+						End Select
+					End If
+					If .FieldEffects.OwnToxicSpikes > 0 Then
+						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+							.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+							.FieldEffects.OwnToxicSpikes = 0
+						End If
+					End If
+				End If
 
-                If rockAffected = True Then
-                    If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-                        Dim rocksDamage As Double = 1D
+				If rockAffected = True Then
+					If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+						Dim rocksDamage As Double = 1D
 
-                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-                        Select Case effectiveness
-                            Case 0.25F
-                                rocksDamage = (p.MaxHP / 100) * 3.125D
-                            Case 0.5F
-                                rocksDamage = (p.MaxHP / 100) * 6.25D
-                            Case 1.0F
-                                rocksDamage = (p.MaxHP / 100) * 12.5D
-                            Case 2.0F
-                                rocksDamage = (p.MaxHP / 100) * 25D
-                            Case 4.0F
-                                rocksDamage = (p.MaxHP / 100) * 50D
-                        End Select
+						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+						Select Case effectiveness
+							Case 0.25F
+								rocksDamage = (p.MaxHP / 100) * 3.125D
+							Case 0.5F
+								rocksDamage = (p.MaxHP / 100) * 6.25D
+							Case 1.0F
+								rocksDamage = (p.MaxHP / 100) * 12.5D
+							Case 2.0F
+								rocksDamage = (p.MaxHP / 100) * 25D
+							Case 4.0F
+								rocksDamage = (p.MaxHP / 100) * 50D
+						End Select
 
-                        ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-                    End If
-                End If
+						ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+					End If
+				End If
 
-                TriggerAbilityEffect(BattleScreen, False)
-                TriggerItemEffect(BattleScreen, False)
+				TriggerAbilityEffect(BattleScreen, False)
+				TriggerItemEffect(BattleScreen, False)
 
-                If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
-                    .FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
-                End If
+				If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
+					.FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
+				End If
 
-                If BattleScreen.FieldEffects.OppHealingWish = True Then
-                    BattleScreen.FieldEffects.OppHealingWish = False
+				If BattleScreen.FieldEffects.OppHealingWish = True Then
+					BattleScreen.FieldEffects.OppHealingWish = False
 
-                    If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-                        GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
-                        CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
-                    End If
-                End If
-            End With
-        End Sub
+					If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+						GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
+						CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
+					End If
+				End If
+			End With
+		End Sub
 
 #End Region
 
 #Region "EndBattle"
 
-        Enum EndBattleReasons
-            WinWild
-            LoseWild
-            WinTrainer
-            LoseTrainer
-            WinPvP
-            LosePvP
-        End Enum
+		Enum EndBattleReasons
+			WinWild
+			LoseWild
+			WinTrainer
+			LoseTrainer
+			WinPvP
+			LosePvP
+		End Enum
 
-        Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean)
-            BattleScreen.OwnFaint = False
-            BattleScreen.OppFaint = False
-            IsAfterFaint = False
-            If AddPVP = True Then
-                Select Case reason
-                    Case EndBattleReasons.WinTrainer 'Lost
-                        Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
-                        q.ApplyCurrentCamera = True
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 5, q)
+		Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean)
+			BattleScreen.OwnFaint = False
+			BattleScreen.OppFaint = False
+			IsAfterFaint = False
+			If AddPVP = True Then
+				Select Case reason
+					Case EndBattleReasons.WinTrainer 'Lost
+						Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
+						q.ApplyCurrentCamera = True
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 5, q)
 
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 4, New TextQueryObject("You lost the battle!"))
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, New TextQueryObject(""))
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject(""))
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 4, New TextQueryObject("You lost the battle!"))
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, New TextQueryObject(""))
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject(""))
 
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
-                    Case EndBattleReasons.LoseTrainer 'Won
-                        Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
-                        q.ApplyCurrentCamera = True
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, q)
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
+					Case EndBattleReasons.LoseTrainer 'Won
+						Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
+						q.ApplyCurrentCamera = True
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, q)
 
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject("Pokémon Trainer " & Core.Player.Name & " was defeated!"))
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject("Pokémon Trainer " & Core.Player.Name & " was defeated!"))
 
-                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
-                End Select
-            Else
-                Select Case reason
-                    Case EndBattleReasons.WinWild
-                        Won = True
-                        Core.Player.AddPoints(1, "Won against wild Pokémon.")
+						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
+				End Select
+			Else
+				Select Case reason
+					Case EndBattleReasons.WinWild
+						Won = True
+						Core.Player.AddPoints(1, "Won against wild Pokémon.")
 
-                        BattleScreen.BattleQuery.Add(New PlayMusicQueryObject("wild_defeat"))
-                        ChangeCameraAngle(1, True, BattleScreen)
+						BattleScreen.BattleQuery.Add(New PlayMusicQueryObject("wild_defeat"))
+						ChangeCameraAngle(1, True, BattleScreen)
 
-                        GainEXP(BattleScreen)
+						GainEXP(BattleScreen)
 
-                        If BattleScreen.FieldEffects.OwnPayDayCounter > 0 Then
-                            Core.Player.Money += BattleScreen.FieldEffects.OwnPayDayCounter
-                            BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " picked up $" & BattleScreen.FieldEffects.OwnPayDayCounter & "!"))
-                        End If
+						If BattleScreen.FieldEffects.OwnPayDayCounter > 0 Then
+							Core.Player.Money += BattleScreen.FieldEffects.OwnPayDayCounter
+							BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " picked up $" & BattleScreen.FieldEffects.OwnPayDayCounter & "!"))
+						End If
 
-                        BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
-                    Case EndBattleReasons.WinTrainer
-                        Won = True
-                        Core.Player.AddPoints(3, "Won against trainer.")
+						BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
+					Case EndBattleReasons.WinTrainer
+						Won = True
+						Core.Player.AddPoints(3, "Won against trainer.")
 
-                        Core.Player.Money += BattleScreen.GetTrainerMoney()
+						Core.Player.Money += BattleScreen.GetTrainerMoney()
 
-                        BattleScreen.BattleQuery.Add(New PlayMusicQueryObject(BattleScreen.Trainer.GetDefeatMusic()))
+						BattleScreen.BattleQuery.Add(New PlayMusicQueryObject(BattleScreen.Trainer.GetDefeatMusic()))
 
-                        Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.04F, 0.02F)
-                        q.ApplyCurrentCamera = True
-                        BattleScreen.BattleQuery.Add(q)
+						Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.04F, 0.02F)
+						q.ApplyCurrentCamera = True
+						BattleScreen.BattleQuery.Add(q)
 
-                        BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.TrainerType & " " & BattleScreen.Trainer.Name & " was defeated!"))
-                        BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.OutroMessage))
+						BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.TrainerType & " " & BattleScreen.Trainer.Name & " was defeated!"))
+						BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.OutroMessage))
 
-                        If BattleScreen.GetTrainerMoney() > 0 Then
-                            BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " got $" & BattleScreen.GetTrainerMoney() & "!"))
-                        End If
+						If BattleScreen.GetTrainerMoney() > 0 Then
+							BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " got $" & BattleScreen.GetTrainerMoney() & "!"))
+						End If
 
-                        BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
-                    Case EndBattleReasons.LoseTrainer, EndBattleReasons.LoseWild
-                        Won = False
+						BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
+					Case EndBattleReasons.LoseTrainer, EndBattleReasons.LoseWild
+						Won = False
                         Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
                         q.ApplyCurrentCamera = True
                         BattleScreen.BattleQuery.Add(q)
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index 1356505d9..bb5fae6fe 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -65,14 +65,10 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
-
-            MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
+            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Start", 0, 0)
             For i = 0 To 12
-                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
-                MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
-
+                MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
             Next
             BattleScreen.BattleQuery.Add(MoveAnimation)
@@ -80,37 +76,32 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
-
-            MoveAnimation.AnimationMove(FireballEntity, True, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
 
+            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0, 0.1, 0.5, 0)
             For i = 0 To 12
-                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(3.0 - i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
-                MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
-
+                MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
             Next
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Hit", 2, 0)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
-            Dim FireEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
-            Dim FireEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
-            Dim FireEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-
-            MoveAnimation.AnimationChangeTexture(FireEntity1, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index 369515629..5c35961e3 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -64,14 +64,11 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-
             MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
-            Dim SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
-
-            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), 2, 1)
-            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, True, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 3, 1)
-
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index d14a3c279..467c5891d 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -55,11 +55,10 @@
             Me.AIField2 = AIField.Nothing
         End Sub
 
-        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
-            Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 3)
-            MoveAnimation.AnimationFade(PoundEntity, True, 1.0F, False, 0.0F, 3, 0)
+            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 668b4b545..6d8954700 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,16 +54,15 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.AnimationMove(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.AnimationMove(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.AnimationMovePokemonEntity(0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.AnimationMovePokemonEntity(0, 0, 0, 0.3, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
-            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(1.0F), 1.0F)
-            MoveAnimation.AnimationFade(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Tackle", 0, 2)
+            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Tackle", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index fa0fb7abe..36622416b 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -67,38 +67,30 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
-
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
-            MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
-
+            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Start", 0, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
 
-            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
+            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
-            MoveAnimation.AnimationMove(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Hit", 1, 0)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
 
-            Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
 
-            Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
-
-            MoveAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
-
-            Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 3, 1)
-
-            MoveAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
-            MoveAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
-
-            MoveAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
+            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 2)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub

From 79edf72d1ce3ce3b5221d6d472805bd259bfa1d5 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sat, 2 Oct 2021 17:40:48 +0200
Subject: [PATCH 09/57] Fix Burned animation error

---
 P3D/Battle/BattleSystemV2/Battle.vb | 32 ++++++++++++++---------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 2b322aaa2..2b69ba9cc 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2705,13 +2705,13 @@
                                 p.Status = Pokemon.StatusProblems.Burn
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
-                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                                MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
                                 Select Case message
                                     Case "" 'Print default message only
@@ -5406,11 +5406,11 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
@@ -6197,11 +6197,11 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")

From d20abdf6df6fb09c3c6923ae6a5166ae6c16a7f0 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sun, 3 Oct 2021 11:02:18 +0200
Subject: [PATCH 10/57] Hit Animation + Restructure of attack sound effects +
 Absorb animation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Attack sound effects are now in the folder of the type of their attack

Pokémon flicker briefly when hit
---
 P3D/Battle/BattleSystemV2/Battle.vb       | 9 +++++++++
 P3D/Pokemon/Attacks/Fire/Ember.vb         | 4 ++--
 P3D/Pokemon/Attacks/Normal/Pound.vb       | 2 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb      | 2 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb | 4 ++--
 5 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 2b69ba9cc..6247835f1 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -3978,8 +3978,10 @@
 
         Public Sub ReduceHP(ByVal HPAmount As Integer, ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String, ByVal sound As String)
             Dim p As Pokemon = BattleScreen.OwnPokemon
+            Dim pNPC As Entity = BattleScreen.OwnPokemonNPC
             If own = False Then
                 p = BattleScreen.OppPokemon
+                pNPC = BattleScreen.OppPokemonNPC
             End If
 
             If p.HP > 0 And p.Status <> Pokemon.StatusProblems.Fainted Then
@@ -3996,6 +3998,13 @@
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(sound, False, 0.0F))
                 End If
 
+                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
+                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 0, 0)
+                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 1, 0)
+                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 2, 0)
+                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 3, 0)
+                BattleScreen.BattleQuery.Add(HitAnimation)
+
                 If own = True Then
                     BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, HPAmount, New Vector2(200, 256)))
                 Else
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index bb5fae6fe..6719f780d 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -66,7 +66,7 @@
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Start", 0, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
@@ -82,7 +82,7 @@
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
             Next
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Ember_Hit", 2, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 467c5891d..25785556e 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -55,7 +55,7 @@
             Me.AIField2 = AIField.Nothing
         End Sub
 
-        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
             MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 6d8954700..c3a075d95 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -61,7 +61,7 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Tackle", 0, 2)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
             MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Tackle", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 36622416b..9684f8379 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -68,7 +68,7 @@
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Start", 0, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
@@ -77,7 +77,7 @@
 
             MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\PoisonSting_Hit", 1, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
 
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)

From 02ed129c85e0394cb8443a0ca48b44ff7b04d0c1 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 14 Oct 2021 01:21:10 +0200
Subject: [PATCH 11/57] Battle Animation System Rework about halfway done

Updated to work with the new animation system:
- Catch animation
- Burn animation
- Attack: Tackle
---
 P3D/Battle/BattleSystemV2/Battle.vb  | 122 ++++++++++++++++-----------
 P3D/Pokemon/Attacks/Normal/Tackle.vb |   4 +-
 2 files changed, 73 insertions(+), 53 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 6247835f1..823bea6f1 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2705,14 +2705,20 @@
                                 p.Status = Pokemon.StatusProblems.Burn
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
-                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                                BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+                                BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
+
+                                If FlameEntity.Opacity = 0.0F Then
+                                    BurnAnimation.RemoveEntity(FlameEntity)
+                                End If
+
                                 Select Case message
                                     Case "" 'Print default message only
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
@@ -2723,30 +2729,30 @@
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
                                 End Select
                                 If p.Ability.Name.ToLower() = "synchronize" AndAlso from <> own Then
-                                    Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
-                                End If
+                                        Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
+                                    End If
 
-                                If Not p.Item Is Nothing Then
-                                    If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
-                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                            CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
+                                    If Not p.Item Is Nothing Then
+                                        If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
+                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                                CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
+                                            End If
                                         End If
                                     End If
-                                End If
 
-                                If Not p.Item Is Nothing Then
-                                    If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
-                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                            CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
+                                    If Not p.Item Is Nothing Then
+                                        If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
+                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                                CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
+                                            End If
                                         End If
                                     End If
-                                End If
 
-                                Return True
+                                    Return True
+                                End If
                             End If
-                        End If
                     End If
                 End If
             End If
@@ -3411,7 +3417,7 @@
             End If
 
             '***STAT INCREASE ANIMATION***
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
@@ -3427,11 +3433,11 @@
                 Destination.X = xPos
                 Destination.Z = zPos
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                StatAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
-            BattleScreen.BattleQuery.Add(MoveAnimation)
+            BattleScreen.BattleQuery.Add(StatAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -3998,11 +4004,11 @@
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(sound, False, 0.0F))
                 End If
 
-                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(CType(pNPC, NPC), own)
-                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 0, 0)
-                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 1, 0)
-                HitAnimation.AnimationFadePokemonEntity(1, False, 0, 2, 0)
-                HitAnimation.AnimationFadePokemonEntity(1, True, 1, 3, 0)
+                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 0, 0)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 1, 0)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 2, 0)
+                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 3, 0)
                 BattleScreen.BattleQuery.Add(HitAnimation)
 
                 If own = True Then
@@ -5415,12 +5421,19 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+
+                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
+
+                            If FlameEntity.Opacity = 0.0F Then
+                                BurnAnimation.RemoveEntity(FlameEntity)
+                            End If
+
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6206,12 +6219,19 @@
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-                            BurnAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+
+                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
+
+                            If FlameEntity.Opacity = 0.0F Then
+                                BurnAnimation.RemoveEntity(FlameEntity)
+                            End If
+
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6796,8 +6816,8 @@
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
-                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
+                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                 ' Ball returns
                 BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -6859,11 +6879,11 @@
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
+                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
@@ -7112,7 +7132,7 @@
                 ChangeCameraAngle(1, False, BattleScreen)
                 Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
                 Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.AnimationMovePokemonEntity(0, -1, 0, 0.1, False, False, 2, 0,,, 4)
+                Faint.AnimationMoveEntity(Nothing, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
                 BattleScreen.BattleQuery.Add(Faint)
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
@@ -7157,8 +7177,8 @@
                     Loop While SmokeReturned <= 38
 
                     ' Pokemon disappears
-                    BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
-                    BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
+                    BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                     ' Ball returns
                     BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -7218,8 +7238,8 @@
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadePokemonEntity(1, False, 0, 1, 0)
-                BallReturn.AnimationMovePokemonEntity(0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
+                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
                 BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -7273,11 +7293,11 @@
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadePokemonEntity(1, True, 1, 4, 0)
+                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMovePokemonEntity(0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.BattleQuery.Add(BallThrow)
             End If
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index c3a075d95..4d53f749d 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,8 +54,8 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.AnimationMovePokemonEntity(0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.AnimationMovePokemonEntity(0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.AnimationMoveEntity(Nothing, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.AnimationMoveEntity(Nothing, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 

From ea12c8f5f4d1aa966154e22a8012d6f2e589bc3b Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 14 Oct 2021 17:50:44 +0200
Subject: [PATCH 12/57] I was not halfway done
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

I've updated Poison Sting, through which I realized I hadn't taken some usage cases into consideration, so the system should be more robust and useful now
I've also updated the animation for Switching In your own Pokémon
and I've added an animation for when the Pokémon breaks out of the ball when you're trying to catch it
---
 P3D/Battle/BattleSystemV2/Battle.vb       | 1086 ++++++++++-----------
 P3D/Pokemon/Attacks/Fire/Ember.vb         |    4 +-
 P3D/Pokemon/Attacks/Grass/Absorb.vb       |    2 +-
 P3D/Pokemon/Attacks/Normal/Growl.vb       |    2 +-
 P3D/Pokemon/Attacks/Normal/Pound.vb       |    2 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb      |    9 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb |   34 +-
 7 files changed, 571 insertions(+), 568 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 823bea6f1..a93c5e4bc 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2706,19 +2706,14 @@
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                                BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                                BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
                                 Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-                                BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
 
-                                If FlameEntity.Opacity = 0.0F Then
-                                    BurnAnimation.RemoveEntity(FlameEntity)
-                                End If
-
                                 Select Case message
                                     Case "" 'Print default message only
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
@@ -2729,30 +2724,30 @@
                                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " got burned!"))
                                 End Select
                                 If p.Ability.Name.ToLower() = "synchronize" AndAlso from <> own Then
-                                        Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
-                                    End If
-
-                                    If Not p.Item Is Nothing Then
-                                        If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
-                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                                CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
-                                            End If
-                                        End If
-                                    End If
-
-                                    If Not p.Item Is Nothing Then
-                                        If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
-                                            If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
-                                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-                                                CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
-                                            End If
-                                        End If
-                                    End If
-
-                                    Return True
+                                    Me.InflictBurn(Not own, Not own, BattleScreen, "Synchronize passed over the burn.", "synchronize")
                                 End If
+
+                                If Not p.Item Is Nothing Then
+                                    If p.Item.Name.ToLower() = "rawst" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:rawst") = True Then
+                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                            CureStatusProblem(own, own, BattleScreen, "The Rawst Berry cured the burn of " & p.GetDisplayName() & "!", "berry:rawst")
+                                        End If
+                                    End If
+                                End If
+
+                                If Not p.Item Is Nothing Then
+                                    If p.Item.Name.ToLower() = "lum" AndAlso BattleScreen.FieldEffects.CanUseItem(own) = True AndAlso BattleScreen.FieldEffects.CanUseOwnItem(own, BattleScreen) = True Then
+                                        If RemoveHeldItem(own, own, BattleScreen, "", "berry:lum") = True Then
+                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
+                                            CureStatusProblem(own, own, BattleScreen, "The Lum Berry cured the burn of " & p.GetDisplayName() & "!", "berry:lum")
+                                        End If
+                                    End If
+                                End If
+
+                                Return True
                             End If
+                        End If
                     End If
                 End If
             End If
@@ -3421,19 +3416,18 @@
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
-                Dim Texture As String = "Textures\Battle\StatChange\statDown"
-                Dim Position As Vector3 = New Vector3(0, -0.4, 0)
-                Dim Destination As Vector3 = New Vector3(0, 0.8, 0)
-                Dim Scale As Vector3 = New Vector3(0.2F)
+                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statUp")
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Position.X = xPos
-                Position.Z = zPos
-                Destination.X = xPos
-                Destination.Z = zPos
+                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), pNPC.Position.Z + zPos)
+                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), zPos + pNPC.Position.Z)
+                Dim Scale As New Vector3(0.2F)
+
+                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-                StatAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+
+                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
@@ -3699,27 +3693,26 @@
                 End If
             End If
             '***STAT DECREASE ANIMATION***
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
             Dim maxAmount As Integer = 20 * val
             Dim currentAmount As Integer = 0
             While currentAmount <= maxAmount
-                Dim Texture As String = "Textures\Battle\StatChange\statDown"
-                Dim Position As Vector3 = New Vector3(0, 0.8, 0)
-                Dim Destination As Vector3 = New Vector3(0, -0.4, 0)
-                Dim Scale As Vector3 = New Vector3(0.2F)
+                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statDown")
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Position.X = xPos
-                Position.Z = zPos
-                Destination.X = xPos
-                Destination.Z = zPos
+                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), pNPC.Position.Z + zPos)
+                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), zPos + pNPC.Position.Z)
+                Dim Scale As New Vector3(0.2F)
+
+                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
-                MoveAnimation.AnimationSpawnMovingEntity(Position.X, Position.Y, Position.Z, Texture, Scale.X, Scale.Y, Scale.Z, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+
+                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
-            MoveAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
-            BattleScreen.BattleQuery.Add(MoveAnimation)
+            StatAnimation.PlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
+            BattleScreen.BattleQuery.Add(StatAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -4005,10 +3998,10 @@
                 End If
 
                 Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 0, 0)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 1, 0)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, False, 0, 2, 0)
-                HitAnimation.AnimationFadeEntity(Nothing, 1, True, 1, 3, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 0, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 1, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 2, 0)
+                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 3, 0)
                 BattleScreen.BattleQuery.Add(HitAnimation)
 
                 If own = True Then
@@ -4763,14 +4756,14 @@
 
 #End Region
 
-		''' <summary>
-		''' Switches camera to angle
-		''' </summary>
-		''' <param name="direction">0=main battle/1=own pokemon/2=opp pokemon</param>
-		''' <param name="own">If the code comes from the own player or not.</param>
-		''' <param name="BattleScreen">Battlescreen reference</param>
-		''' <param name="AddPVP">If the call should get added the PVP list or the own queue.</param>
-		Public Sub ChangeCameraAngle(ByVal direction As Integer, ByVal own As Boolean, ByVal BattleScreen As BattleScreen, Optional ByVal AddPVP As Boolean = False)
+        ''' <summary>
+        ''' Switches camera to angle
+        ''' </summary>
+        ''' <param name="direction">0=main battle/1=own pokemon/2=opp pokemon</param>
+        ''' <param name="own">If the code comes from the own player or not.</param>
+        ''' <param name="BattleScreen">Battlescreen reference</param>
+        ''' <param name="AddPVP">If the call should get added the PVP list or the own queue.</param>
+        Public Sub ChangeCameraAngle(ByVal direction As Integer, ByVal own As Boolean, ByVal BattleScreen As BattleScreen, Optional ByVal AddPVP As Boolean = False)
             Dim q As CameraQueryObject = Nothing
 
             Select Case direction
@@ -5364,7 +5357,7 @@
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -5388,7 +5381,7 @@
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -5420,20 +5413,15 @@
 
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
-                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
-                            If FlameEntity.Opacity = 0.0F Then
-                                BurnAnimation.RemoveEntity(FlameEntity)
-                            End If
-
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6163,7 +6151,7 @@
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -6187,7 +6175,7 @@
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
                                 PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
@@ -6218,20 +6206,15 @@
                             End If
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-                            BurnAnimation.AnimationFadeEntity(FlameEntity, 1, False, 0.0F, 6, 1, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
-                            If FlameEntity.Opacity = 0.0F Then
-                                BurnAnimation.RemoveEntity(FlameEntity)
-                            End If
-
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6756,38 +6739,38 @@
                     End If
                 Else
                     If BattleScreen.IsTrainerBattle = True Then
-						EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, False)
-						If BattleScreen.IsRemoteBattle = True Then
-							EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, True)
-						End If
-					Else
-						EndBattle(EndBattleReasons.LoseWild, BattleScreen, False)
-					End If
-				End If
-			End With
-		End Sub
+                        EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, False)
+                        If BattleScreen.IsRemoteBattle = True Then
+                            EndBattle(EndBattleReasons.LoseTrainer, BattleScreen, True)
+                        End If
+                    Else
+                        EndBattle(EndBattleReasons.LoseWild, BattleScreen, False)
+                    End If
+                End If
+            End With
+        End Sub
 
-		Public Sub ApplyOwnBatonPass(ByVal BattleScreen As BattleScreen)
-			If BattleScreen.FieldEffects.OwnUsedBatonPass = True Then
-				BattleScreen.FieldEffects.OwnUsedBatonPass = False
+        Public Sub ApplyOwnBatonPass(ByVal BattleScreen As BattleScreen)
+            If BattleScreen.FieldEffects.OwnUsedBatonPass = True Then
+                BattleScreen.FieldEffects.OwnUsedBatonPass = False
 
-				BattleScreen.OwnPokemon.StatAttack = BattleScreen.FieldEffects.OwnBatonPassStats(0)
-				BattleScreen.OwnPokemon.StatDefense = BattleScreen.FieldEffects.OwnBatonPassStats(1)
-				BattleScreen.OwnPokemon.StatSpAttack = BattleScreen.FieldEffects.OwnBatonPassStats(2)
-				BattleScreen.OwnPokemon.StatSpDefense = BattleScreen.FieldEffects.OwnBatonPassStats(3)
-				BattleScreen.OwnPokemon.StatSpeed = BattleScreen.FieldEffects.OwnBatonPassStats(4)
-				BattleScreen.OwnPokemon.Evasion = BattleScreen.FieldEffects.OwnBatonPassStats(5)
-				BattleScreen.OwnPokemon.Accuracy = BattleScreen.FieldEffects.OwnBatonPassStats(6)
+                BattleScreen.OwnPokemon.StatAttack = BattleScreen.FieldEffects.OwnBatonPassStats(0)
+                BattleScreen.OwnPokemon.StatDefense = BattleScreen.FieldEffects.OwnBatonPassStats(1)
+                BattleScreen.OwnPokemon.StatSpAttack = BattleScreen.FieldEffects.OwnBatonPassStats(2)
+                BattleScreen.OwnPokemon.StatSpDefense = BattleScreen.FieldEffects.OwnBatonPassStats(3)
+                BattleScreen.OwnPokemon.StatSpeed = BattleScreen.FieldEffects.OwnBatonPassStats(4)
+                BattleScreen.OwnPokemon.Evasion = BattleScreen.FieldEffects.OwnBatonPassStats(5)
+                BattleScreen.OwnPokemon.Accuracy = BattleScreen.FieldEffects.OwnBatonPassStats(6)
 
-				If BattleScreen.FieldEffects.OwnBatonPassConfusion = True Then
-					BattleScreen.FieldEffects.OwnBatonPassConfusion = False
-					BattleScreen.OwnPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
-				End If
-			End If
-		End Sub
+                If BattleScreen.FieldEffects.OwnBatonPassConfusion = True Then
+                    BattleScreen.FieldEffects.OwnBatonPassConfusion = False
+                    BattleScreen.OwnPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
+                End If
+            End If
+        End Sub
 
-		Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
-			HasSwitchedInOwn = True
+        Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
+            HasSwitchedInOwn = True
             If FirstTime = False Then
                 Dim insertMessage As String = message
 
@@ -6800,28 +6783,32 @@
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
 
                 ' Ball Closes
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-                    Dim SmokeDestination = New Vector3(0, 0, 0)
+                    Dim SmokeDestination As Vector3 = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
-                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
+
+                    BallReturn.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+                BallReturn.FadeEntity(Nothing, False, 1, False, 0, 1, 0)
+                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                 ' Ball returns
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
+                Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position, TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallReturn.MoveEntity(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
@@ -6859,315 +6846,322 @@
 
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+
+                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
+
+                Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position + New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallThrow.MoveEntity(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
+
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
-                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    Dim SmokeEntity As Entity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
+
+                    BallThrow.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
-                BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
+                BallThrow.FadeEntity(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.PlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
 
             With BattleScreen
-				If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
-					.FieldEffects.UsedPokemon.Add(NewPokemonIndex)
-				End If
+                If .FieldEffects.UsedPokemon.Contains(NewPokemonIndex) = False Then
+                    .FieldEffects.UsedPokemon.Add(NewPokemonIndex)
+                End If
 
-				If Not .OwnPokemon.Item Is Nothing Then
-					If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
-						If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
-							BattleScreen.FieldEffects.AmuletCoin += 1
-						End If
-					End If
-				End If
+                If Not .OwnPokemon.Item Is Nothing Then
+                    If .OwnPokemon.Item.Name.ToLower() = "amulet coin" Or .OwnPokemon.Item.Name.ToLower() = "luck incense" Then
+                        If .FieldEffects.CanUseItem(True) = True And .FieldEffects.CanUseOwnItem(True, BattleScreen) = True Then
+                            BattleScreen.FieldEffects.AmuletCoin += 1
+                        End If
+                    End If
+                End If
 
-				Dim p As Pokemon = .OwnPokemon
-				Dim op As Pokemon = .OppPokemon
+                Dim p As Pokemon = .OwnPokemon
+                Dim op As Pokemon = .OppPokemon
 
-				Dim spikeAffected As Boolean = True
-				Dim rockAffected As Boolean = True
+                Dim spikeAffected As Boolean = True
+                Dim rockAffected As Boolean = True
 
-				spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
+                spikeAffected = BattleScreen.FieldEffects.IsGrounded(True, BattleScreen)
 
-				'Spikes
-				If spikeAffected = True Then
-					If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-						Dim spikeDamage As Double = 1D
-						Select Case .FieldEffects.OppSpikes
-							Case 1
-								spikeDamage = (p.MaxHP / 100) * 12.5D
-							Case 2
-								spikeDamage = (p.MaxHP / 100) * 16.7D
-							Case 3
-								spikeDamage = (p.MaxHP / 100) * 25D
-						End Select
-						ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-					End If
-				End If
+                'Spikes
+                If spikeAffected = True Then
+                    If .FieldEffects.OppSpikes > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+                        Dim spikeDamage As Double = 1D
+                        Select Case .FieldEffects.OppSpikes
+                            Case 1
+                                spikeDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2
+                                spikeDamage = (p.MaxHP / 100) * 16.7D
+                            Case 3
+                                spikeDamage = (p.MaxHP / 100) * 25D
+                        End Select
+                        ReduceHP(CInt(spikeDamage), True, False, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+                    End If
+                End If
 
-				'Sticky Web
-				If spikeAffected = True Then
-					If .FieldEffects.OppStickyWeb > 0 Then
+                'Sticky Web
+                If spikeAffected = True Then
+                    If .FieldEffects.OppStickyWeb > 0 Then
 
-						LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
+                        LowerStat(True, True, BattleScreen, "Speed", 1, "Your pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-					End If
-				End If
+                    End If
+                End If
 
-				'Toxic Spikes
-				If spikeAffected = True Then
-					If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-						Select Case .FieldEffects.OppToxicSpikes
-							Case 1
-								InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-							Case 2
-								InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-						End Select
-					End If
-					If .FieldEffects.OppToxicSpikes > 0 Then
-						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-							.AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-							.FieldEffects.OppToxicSpikes = 0
-						End If
-					End If
-				End If
+                'Toxic Spikes
+                If spikeAffected = True Then
+                    If .FieldEffects.OppToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+                        Select Case .FieldEffects.OppToxicSpikes
+                            Case 1
+                                InflictPoison(True, False, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                            Case 2
+                                InflictPoison(True, False, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                        End Select
+                    End If
+                    If .FieldEffects.OppToxicSpikes > 0 Then
+                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+                            .AddToQuery(InsertIndex, New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+                            .FieldEffects.OppToxicSpikes = 0
+                        End If
+                    End If
+                End If
 
-				'Stealth Rock
-				If rockAffected = True Then
-					If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
-						Dim rocksDamage As Double = 1D
+                'Stealth Rock
+                If rockAffected = True Then
+                    If .FieldEffects.OppStealthRock > 0 And (p.Ability.Name.ToLower() <> "magic guard" Or BattleScreen.FieldEffects.CanUseAbility(True, BattleScreen, 1) = False) Then
+                        Dim rocksDamage As Double = 1D
 
-						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-						Select Case effectiveness
-							Case 0.25F
-								rocksDamage = (p.MaxHP / 100) * 3.125D
-							Case 0.5F
-								rocksDamage = (p.MaxHP / 100) * 6.25D
-							Case 1.0F
-								rocksDamage = (p.MaxHP / 100) * 12.5D
-							Case 2.0F
-								rocksDamage = (p.MaxHP / 100) * 25D
-							Case 4.0F
-								rocksDamage = (p.MaxHP / 100) * 50D
-						End Select
+                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+                        Select Case effectiveness
+                            Case 0.25F
+                                rocksDamage = (p.MaxHP / 100) * 3.125D
+                            Case 0.5F
+                                rocksDamage = (p.MaxHP / 100) * 6.25D
+                            Case 1.0F
+                                rocksDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2.0F
+                                rocksDamage = (p.MaxHP / 100) * 25D
+                            Case 4.0F
+                                rocksDamage = (p.MaxHP / 100) * 50D
+                        End Select
 
-						ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-					End If
-				End If
+                        ReduceHP(CInt(rocksDamage), True, False, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+                    End If
+                End If
 
-				TriggerAbilityEffect(BattleScreen, True)
-				TriggerItemEffect(BattleScreen, True)
+                TriggerAbilityEffect(BattleScreen, True)
+                TriggerItemEffect(BattleScreen, True)
 
-				If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
-					.FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
-				End If
+                If .OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
+                    .FieldEffects.OwnSleepTurns = Core.Random.Next(1, 4)
+                End If
 
-				If BattleScreen.FieldEffects.OwnHealingWish = True Then
-					BattleScreen.FieldEffects.OwnHealingWish = False
+                If BattleScreen.FieldEffects.OwnHealingWish = True Then
+                    BattleScreen.FieldEffects.OwnHealingWish = False
 
-					If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
-						GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
-						CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
-					End If
-				End If
-			End With
-		End Sub
+                    If .OwnPokemon.HP < .OwnPokemon.MaxHP Or .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
+                        GainHP(.OwnPokemon.MaxHP - .OwnPokemon.HP, True, True, BattleScreen, "The Healing Wish came true for " & .OwnPokemon.GetDisplayName() & "!", "move:healingwish")
+                        CureStatusProblem(True, True, BattleScreen, "", "move:healingwish")
+                    End If
+                End If
+            End With
+        End Sub
 
-		Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
-			With BattleScreen
-				'Natural cure cures status problems
-				If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
-					If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-						.OppPokemon.Status = Pokemon.StatusProblems.None
-						.BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
-					End If
-				End If
-				'Regenerator ability heals 1/3 of it's max HP
-				If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
-					If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
-						Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
-						If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
-							BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
-						End If
-					End If
-				End If
-				'save baton pass stuff:
-				If .FieldEffects.OppUsedBatonPass = True Then
-					.FieldEffects.OppBatonPassStats = New List(Of Integer)
-					With .OppPokemon
-						BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
-					End With
-					.FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
-				End If
+        Public Sub SwitchOutOpp(ByVal BattleScreen As BattleScreen, ByVal index As Integer, Optional ByVal message As String = "")
+            With BattleScreen
+                'Natural cure cures status problems
+                If .OppPokemon.Ability.Name.ToLower() = "natural cure" Then
+                    If .OppPokemon.Status <> Pokemon.StatusProblems.Fainted And .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+                        .OppPokemon.Status = Pokemon.StatusProblems.None
+                        .BattleQuery.Add(New TextQueryObject(.OppPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
+                    End If
+                End If
+                'Regenerator ability heals 1/3 of it's max HP
+                If .OppPokemon.Ability.Name.ToLower() = "regenerator" Then
+                    If Not (.OppPokemon.Status = Pokemon.StatusProblems.Fainted Or .OppPokemon.HP = 0) Then
+                        Dim restoreHP = CInt(.OppPokemon.MaxHP / 3)
+                        If restoreHP > 0 And .OppPokemon.HP < .OppPokemon.MaxHP And .OppPokemon.HP > 0 Then
+                            BattleScreen.Battle.GainHP(restoreHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & "'s HP was restored!", "ability:regenerator")
+                        End If
+                    End If
+                End If
+                'save baton pass stuff:
+                If .FieldEffects.OppUsedBatonPass = True Then
+                    .FieldEffects.OppBatonPassStats = New List(Of Integer)
+                    With .OppPokemon
+                        BattleScreen.FieldEffects.OppBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
+                    End With
+                    .FieldEffects.OppBatonPassConfusion = .OppPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Confusion) = True
+                End If
 
-				'Set the original objects of Pokemon
-				.OppPokemon.ResetTemp()
+                'Set the original objects of Pokemon
+                .OppPokemon.ResetTemp()
 
-				'Remove volatiles
-				.OppPokemon.ClearAllVolatiles()
+                'Remove volatiles
+                .OppPokemon.ClearAllVolatiles()
 
-				'Resetting FieldEffects
-				With .FieldEffects
-					.OppSleepTurns = 0
-					.OppTruantRound = 0
-					.OppTaunt = 0
-					.OppSmacked = 0
-					.OppRageCounter = 0
-					.OppUproar = 0
-					If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
-					.OppEndure = 0
-					.OppProtectCounter = 0
-					.OppDetectCounter = 0
-					.OppKingsShieldCounter = 0
-					.OppProtectMovesCount = 0
-					If .OppUsedBatonPass = False Then .OppIngrain = 0
-					If .OppUsedBatonPass = False Then .OppSubstitute = 0
-					If .OppUsedBatonPass = False Then .OppMagnetRise = 0
-					If .OppUsedBatonPass = False Then .OppAquaRing = 0
-					.OppPoisonCounter = 0
-					.OppNightmare = 0
-					If .OppUsedBatonPass = False Then .OppCurse = 0
-					.OppOutrage = 0
-					.OppThrash = 0
-					.OppPetalDance = 0
-					.OppEncore = 0
-					.OppEncoreMove = Nothing
-					If .OppUsedBatonPass = False Then .OppEmbargo = 0
-					.OppYawn = 0
-					If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
-					.OppConfusionTurns = 0
-					.OppTorment = 0
-					.OppTormentMove = Nothing
-					.OppChoiceMove = Nothing
-					.OppRecharge = 0
-					.OppRolloutCounter = 0
-					.OppIceBallCounter = 0
-					.OppDefenseCurl = 0
-					.OppCharge = 0
-					.OppSolarBeam = 0
-					.OppSolarBlade = 0
-					If .OppUsedBatonPass = False Then .OppLeechSeed = 0
-					If .OppUsedBatonPass = False Then .OppLockOn = 0
-					.OppLansatBerry = 0
-					.OppCustapBerry = 0
-					.OppTrappedCounter = 0
-					.OppFuryCutter = 0
-					.OppEchoedVoice = 0
-					.OppPokemonTurns = 0
-					.OppStockpileCount = 0
-					.OppDestinyBond = False
-					.OppGastroAcid = False
+                'Resetting FieldEffects
+                With .FieldEffects
+                    .OppSleepTurns = 0
+                    .OppTruantRound = 0
+                    .OppTaunt = 0
+                    .OppSmacked = 0
+                    .OppRageCounter = 0
+                    .OppUproar = 0
+                    If .OppUsedBatonPass = False Then .OppFocusEnergy = 0
+                    .OppEndure = 0
+                    .OppProtectCounter = 0
+                    .OppDetectCounter = 0
+                    .OppKingsShieldCounter = 0
+                    .OppProtectMovesCount = 0
+                    If .OppUsedBatonPass = False Then .OppIngrain = 0
+                    If .OppUsedBatonPass = False Then .OppSubstitute = 0
+                    If .OppUsedBatonPass = False Then .OppMagnetRise = 0
+                    If .OppUsedBatonPass = False Then .OppAquaRing = 0
+                    .OppPoisonCounter = 0
+                    .OppNightmare = 0
+                    If .OppUsedBatonPass = False Then .OppCurse = 0
+                    .OppOutrage = 0
+                    .OppThrash = 0
+                    .OppPetalDance = 0
+                    .OppEncore = 0
+                    .OppEncoreMove = Nothing
+                    If .OppUsedBatonPass = False Then .OppEmbargo = 0
+                    .OppYawn = 0
+                    If .OppUsedBatonPass = False Then .OppPerishSongCount = 0
+                    .OppConfusionTurns = 0
+                    .OppTorment = 0
+                    .OppTormentMove = Nothing
+                    .OppChoiceMove = Nothing
+                    .OppRecharge = 0
+                    .OppRolloutCounter = 0
+                    .OppIceBallCounter = 0
+                    .OppDefenseCurl = 0
+                    .OppCharge = 0
+                    .OppSolarBeam = 0
+                    .OppSolarBlade = 0
+                    If .OppUsedBatonPass = False Then .OppLeechSeed = 0
+                    If .OppUsedBatonPass = False Then .OppLockOn = 0
+                    .OppLansatBerry = 0
+                    .OppCustapBerry = 0
+                    .OppTrappedCounter = 0
+                    .OppFuryCutter = 0
+                    .OppEchoedVoice = 0
+                    .OppPokemonTurns = 0
+                    .OppStockpileCount = 0
+                    .OppDestinyBond = False
+                    .OppGastroAcid = False
 
-					.OppFlyCounter = 0
-					.OppDigCounter = 0
-					.OppBounceCounter = 0
-					.OppDiveCounter = 0
-					.OppShadowForceCounter = 0
-					.OppPhantomForceCounter = 0
-					.OppSkyDropCounter = 0
-					.OppGeomancyCounter = 0
-					.OppSkyAttackCounter = 0
-					.OppRazorWindCounter = 0
-					.OppSkullBashCounter = 0
+                    .OppFlyCounter = 0
+                    .OppDigCounter = 0
+                    .OppBounceCounter = 0
+                    .OppDiveCounter = 0
+                    .OppShadowForceCounter = 0
+                    .OppPhantomForceCounter = 0
+                    .OppSkyDropCounter = 0
+                    .OppGeomancyCounter = 0
+                    .OppSkyAttackCounter = 0
+                    .OppRazorWindCounter = 0
+                    .OppSkullBashCounter = 0
 
-					.OppForesight = 0
-					.OppOdorSleuth = 0
-					.OppMiracleEye = 0
+                    .OppForesight = 0
+                    .OppOdorSleuth = 0
+                    .OppMiracleEye = 0
 
-					.OppWrap = 0
-					.OppWhirlpool = 0
-					.OppBind = 0
-					.OppClamp = 0
-					.OppFireSpin = 0
-					.OppMagmaStorm = 0
-					.OppSandTomb = 0
-					.OppInfestation = 0
+                    .OppWrap = 0
+                    .OppWhirlpool = 0
+                    .OppBind = 0
+                    .OppClamp = 0
+                    .OppFireSpin = 0
+                    .OppMagmaStorm = 0
+                    .OppSandTomb = 0
+                    .OppInfestation = 0
 
-					.OppBideCounter = 0
-					.OppBideDamage = 0
+                    .OppBideCounter = 0
+                    .OppBideDamage = 0
 
-					.OppRoostUsed = False
+                    .OppRoostUsed = False
 
-					'Own stuff that depends on opp pokemon presence
-					.OwnTrappedCounter = 0
-					.OwnWrap = 0
-					.OwnWhirlpool = 0
-					.OwnBind = 0
-					.OwnClamp = 0
-					.OwnFireSpin = 0
-					.OwnMagmaStorm = 0
-					.OwnSandTomb = 0
-					.OwnInfestation = 0
+                    'Own stuff that depends on opp pokemon presence
+                    .OwnTrappedCounter = 0
+                    .OwnWrap = 0
+                    .OwnWhirlpool = 0
+                    .OwnBind = 0
+                    .OwnClamp = 0
+                    .OwnFireSpin = 0
+                    .OwnMagmaStorm = 0
+                    .OwnSandTomb = 0
+                    .OwnInfestation = 0
 
-					If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
-						BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
-					End If
-				End With
-			End With
+                    If BattleScreen.OwnPokemon.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) Then
+                        BattleScreen.OwnPokemon.RemoveVolatileStatus(Pokemon.VolatileStatus.Infatuation)
+                    End If
+                End With
+            End With
 
-			BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
+            BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
 
-			If BattleScreen.IsTrainerBattle = False Then
+            If BattleScreen.IsTrainerBattle = False Then
                 ChangeCameraAngle(1, False, BattleScreen)
                 Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
-                Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.AnimationMoveEntity(Nothing, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
+                Faint.PlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                Faint.MoveEntity(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
                 BattleScreen.BattleQuery.Add(Faint)
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
 
-				EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
-			Else
-				If BattleScreen.TrainerHasFightablePokemon() = True Then
-					If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
-						GainEXP(BattleScreen)
-					End If
+                EndBattle(EndBattleReasons.WinWild, BattleScreen, False)
+            Else
+                If BattleScreen.TrainerHasFightablePokemon() = True Then
+                    If BattleScreen.OppPokemon.HP <= 0 Or BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Fainted Then
+                        GainEXP(BattleScreen)
+                    End If
 
                     If BattleScreen.IsRemoteBattle And BattleScreen.OppFaint Then
-						'Next pokemon is selected by the opponent.
-					Else
-						SwitchInOpp(BattleScreen, False, index)
-					End If
-				Else
-					GainEXP(BattleScreen)
+                        'Next pokemon is selected by the opponent.
+                    Else
+                        SwitchInOpp(BattleScreen, False, index)
+                    End If
+                Else
+                    GainEXP(BattleScreen)
 
                     If message = "" Then
-						message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
-					End If
+                        message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
+                    End If
 
-					BattleScreen.BattleQuery.Add(New TextQueryObject(message))
+                    BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
                     Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                     ' Ball Closes
-                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                    BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
                     Dim SmokeReturned As Integer = 0
                     Do
                         Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                         Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                        Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                        Dim SmokeTexture As String = "Textures\Battle\Smoke"
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                         Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
@@ -7178,57 +7172,57 @@
 
                     ' Pokemon disappears
                     BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                    BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                     ' Ball returns
-                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                    BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
                     BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                     BattleScreen.BattleQuery.Add(BallReturn)
 
                     EndBattle(EndBattleReasons.WinTrainer, BattleScreen, False)
-					If BattleScreen.IsRemoteBattle = True Then
-						EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
-					End If
-				End If
-			End If
-		End Sub
+                    If BattleScreen.IsRemoteBattle = True Then
+                        EndBattle(EndBattleReasons.WinTrainer, BattleScreen, True)
+                    End If
+                End If
+            End If
+        End Sub
 
-		Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
-			If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
-				BattleScreen.FieldEffects.OppUsedBatonPass = False
+        Public Sub ApplyOppBatonPass(ByVal BattleScreen As BattleScreen)
+            If BattleScreen.FieldEffects.OppUsedBatonPass = True Then
+                BattleScreen.FieldEffects.OppUsedBatonPass = False
 
-				BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
-				BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
-				BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
-				BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
-				BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
-				BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
-				BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
+                BattleScreen.OppPokemon.StatAttack = BattleScreen.FieldEffects.OppBatonPassStats(0)
+                BattleScreen.OppPokemon.StatDefense = BattleScreen.FieldEffects.OppBatonPassStats(1)
+                BattleScreen.OppPokemon.StatSpAttack = BattleScreen.FieldEffects.OppBatonPassStats(2)
+                BattleScreen.OppPokemon.StatSpDefense = BattleScreen.FieldEffects.OppBatonPassStats(3)
+                BattleScreen.OppPokemon.StatSpeed = BattleScreen.FieldEffects.OppBatonPassStats(4)
+                BattleScreen.OppPokemon.Evasion = BattleScreen.FieldEffects.OppBatonPassStats(5)
+                BattleScreen.OppPokemon.Accuracy = BattleScreen.FieldEffects.OppBatonPassStats(6)
 
-				If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
-					BattleScreen.FieldEffects.OppBatonPassConfusion = False
-					BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
-				End If
-			End If
-		End Sub
+                If BattleScreen.FieldEffects.OppBatonPassConfusion = True Then
+                    BattleScreen.FieldEffects.OppBatonPassConfusion = False
+                    BattleScreen.OppPokemon.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
+                End If
+            End If
+        End Sub
 
-		Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
+        Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
 
-			If FirstTime = False Then
-				HasSwitchedInOpp = True
+            If FirstTime = False Then
+                HasSwitchedInOpp = True
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                 ' Ball Closes
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                     Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
@@ -7239,51 +7233,51 @@
 
                 ' Pokemon disappears
                 BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                BallReturn.AnimationMoveEntity(Nothing, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
                 BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.BattleQuery.Add(BallReturn)
 
                 BattleScreen.SendInNewTrainerPokemon(index)
-				Me.ApplyOppBatonPass(BattleScreen)
+                Me.ApplyOppBatonPass(BattleScreen)
 
-				If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
-					BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
-				End If
+                If BattleScreen.ParticipatedPokemon.Contains(BattleScreen.OwnPokemonIndex) = False Then
+                    BattleScreen.ParticipatedPokemon.Add(BattleScreen.OwnPokemonIndex)
+                End If
 
-				Dim oppShiny As String = "N"
-				If BattleScreen.OppPokemon.IsShiny = True Then
-					oppShiny = "S"
-				End If
+                Dim oppShiny As String = "N"
+                If BattleScreen.OppPokemon.IsShiny = True Then
+                    oppShiny = "S"
+                End If
 
-				Dim oppModel As String = BattleScreen.GetModelName(False)
+                Dim oppModel As String = BattleScreen.GetModelName(False)
 
-				If oppModel = "" Then
-					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
-				Else
-					BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
-				End If
+                If oppModel = "" Then
+                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, PokemonForms.GetOverworldSpriteName(BattleScreen.OppPokemon), -1, -1, 0, 1))
+                Else
+                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(False, oppModel, -1, -1, 1, 0))
+                End If
 
-				BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
+                BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Go, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
                 BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As String = "Textures\Battle\Cloud"
+                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
@@ -7294,180 +7288,180 @@
 
                 ' Pokemon appears
                 BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
-                BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+                BallThrow.PlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.AnimationMoveEntity(Nothing, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.BattleQuery.Add(BallThrow)
             End If
 
-			With BattleScreen
-				Dim p As Pokemon = .OppPokemon
-				Dim op As Pokemon = .OwnPokemon
+            With BattleScreen
+                Dim p As Pokemon = .OppPokemon
+                Dim op As Pokemon = .OwnPokemon
 
-				Dim spikeAffected As Boolean = True
-				Dim rockAffected As Boolean = True
+                Dim spikeAffected As Boolean = True
+                Dim rockAffected As Boolean = True
 
-				spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
+                spikeAffected = BattleScreen.FieldEffects.IsGrounded(False, BattleScreen)
 
-				If spikeAffected = True Then
-					If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-						Dim spikeDamage As Double = 1D
-						Select Case .FieldEffects.OwnSpikes
-							Case 1
-								spikeDamage = (p.MaxHP / 100) * 12.5D
-							Case 2
-								spikeDamage = (p.MaxHP / 100) * 16.7D
-							Case 3
-								spikeDamage = (p.MaxHP / 100) * 25D
-						End Select
-						ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
-					End If
-				End If
-				'Sticky Web
-				If spikeAffected = True Then
-					If .FieldEffects.OwnStickyWeb > 0 Then
+                If spikeAffected = True Then
+                    If .FieldEffects.OwnSpikes > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+                        Dim spikeDamage As Double = 1D
+                        Select Case .FieldEffects.OwnSpikes
+                            Case 1
+                                spikeDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2
+                                spikeDamage = (p.MaxHP / 100) * 16.7D
+                            Case 3
+                                spikeDamage = (p.MaxHP / 100) * 25D
+                        End Select
+                        ReduceHP(CInt(spikeDamage), False, True, BattleScreen, "The Spikes hurt " & p.GetDisplayName() & "!", "spikes")
+                    End If
+                End If
+                'Sticky Web
+                If spikeAffected = True Then
+                    If .FieldEffects.OwnStickyWeb > 0 Then
 
-						LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
+                        LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
 
 
-					End If
-				End If
-				If spikeAffected = True Then
-					If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
-						Select Case .FieldEffects.OwnToxicSpikes
-							Case 1
-								InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-							Case 2
-								InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
-						End Select
-					End If
-					If .FieldEffects.OwnToxicSpikes > 0 Then
-						If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
-							.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
-							.FieldEffects.OwnToxicSpikes = 0
-						End If
-					End If
-				End If
+                    End If
+                End If
+                If spikeAffected = True Then
+                    If .FieldEffects.OwnToxicSpikes > 0 And p.Status = Pokemon.StatusProblems.None And p.Type1.Type <> Element.Types.Poison And p.Type2.Type <> Element.Types.Poison Then
+                        Select Case .FieldEffects.OwnToxicSpikes
+                            Case 1
+                                InflictPoison(False, True, BattleScreen, False, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                            Case 2
+                                InflictPoison(False, True, BattleScreen, True, "The Toxic Spikes hurt " & p.GetDisplayName() & "!", "toxicspikes")
+                        End Select
+                    End If
+                    If .FieldEffects.OwnToxicSpikes > 0 Then
+                        If p.Type1.Type = Element.Types.Poison Or p.Type2.Type = Element.Types.Poison Then
+                            .BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " removed the Toxic Spikes!"))
+                            .FieldEffects.OwnToxicSpikes = 0
+                        End If
+                    End If
+                End If
 
-				If rockAffected = True Then
-					If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
-						Dim rocksDamage As Double = 1D
+                If rockAffected = True Then
+                    If .FieldEffects.OwnStealthRock > 0 And p.Ability.Name.ToLower() <> "magic guard" Then
+                        Dim rocksDamage As Double = 1D
 
-						Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
-						Select Case effectiveness
-							Case 0.25F
-								rocksDamage = (p.MaxHP / 100) * 3.125D
-							Case 0.5F
-								rocksDamage = (p.MaxHP / 100) * 6.25D
-							Case 1.0F
-								rocksDamage = (p.MaxHP / 100) * 12.5D
-							Case 2.0F
-								rocksDamage = (p.MaxHP / 100) * 25D
-							Case 4.0F
-								rocksDamage = (p.MaxHP / 100) * 50D
-						End Select
+                        Dim effectiveness As Single = BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type1)) * BattleCalculation.ReverseTypeEffectiveness(Element.GetElementMultiplier(New Element(Element.Types.Rock), p.Type2))
+                        Select Case effectiveness
+                            Case 0.25F
+                                rocksDamage = (p.MaxHP / 100) * 3.125D
+                            Case 0.5F
+                                rocksDamage = (p.MaxHP / 100) * 6.25D
+                            Case 1.0F
+                                rocksDamage = (p.MaxHP / 100) * 12.5D
+                            Case 2.0F
+                                rocksDamage = (p.MaxHP / 100) * 25D
+                            Case 4.0F
+                                rocksDamage = (p.MaxHP / 100) * 50D
+                        End Select
 
-						ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
-					End If
-				End If
+                        ReduceHP(CInt(rocksDamage), False, True, BattleScreen, "The Stealth Rocks hurt " & p.GetDisplayName() & "!", "stealthrocks")
+                    End If
+                End If
 
-				TriggerAbilityEffect(BattleScreen, False)
-				TriggerItemEffect(BattleScreen, False)
+                TriggerAbilityEffect(BattleScreen, False)
+                TriggerItemEffect(BattleScreen, False)
 
-				If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
-					.FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
-				End If
+                If .OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
+                    .FieldEffects.OppSleepTurns = Core.Random.Next(1, 4)
+                End If
 
-				If BattleScreen.FieldEffects.OppHealingWish = True Then
-					BattleScreen.FieldEffects.OppHealingWish = False
+                If BattleScreen.FieldEffects.OppHealingWish = True Then
+                    BattleScreen.FieldEffects.OppHealingWish = False
 
-					If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
-						GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
-						CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
-					End If
-				End If
-			End With
-		End Sub
+                    If .OppPokemon.HP < .OppPokemon.MaxHP Or .OppPokemon.Status <> Pokemon.StatusProblems.None Then
+                        GainHP(.OppPokemon.MaxHP - .OppPokemon.HP, False, False, BattleScreen, "The Healing Wish came true for " & .OppPokemon.GetDisplayName() & "!", "move:healingwish")
+                        CureStatusProblem(False, False, BattleScreen, "", "move:healingwish")
+                    End If
+                End If
+            End With
+        End Sub
 
 #End Region
 
 #Region "EndBattle"
 
-		Enum EndBattleReasons
-			WinWild
-			LoseWild
-			WinTrainer
-			LoseTrainer
-			WinPvP
-			LosePvP
-		End Enum
+        Enum EndBattleReasons
+            WinWild
+            LoseWild
+            WinTrainer
+            LoseTrainer
+            WinPvP
+            LosePvP
+        End Enum
 
-		Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean)
-			BattleScreen.OwnFaint = False
-			BattleScreen.OppFaint = False
-			IsAfterFaint = False
-			If AddPVP = True Then
-				Select Case reason
-					Case EndBattleReasons.WinTrainer 'Lost
-						Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
-						q.ApplyCurrentCamera = True
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 5, q)
+        Public Sub EndBattle(ByVal reason As EndBattleReasons, ByVal BattleScreen As BattleScreen, ByVal AddPVP As Boolean)
+            BattleScreen.OwnFaint = False
+            BattleScreen.OppFaint = False
+            IsAfterFaint = False
+            If AddPVP = True Then
+                Select Case reason
+                    Case EndBattleReasons.WinTrainer 'Lost
+                        Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
+                        q.ApplyCurrentCamera = True
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 5, q)
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 4, New TextQueryObject("You lost the battle!"))
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, New TextQueryObject(""))
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject(""))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 4, New TextQueryObject("You lost the battle!"))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, New TextQueryObject(""))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject(""))
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
-					Case EndBattleReasons.LoseTrainer 'Won
-						Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
-						q.ApplyCurrentCamera = True
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, q)
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
+                    Case EndBattleReasons.LoseTrainer 'Won
+                        Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
+                        q.ApplyCurrentCamera = True
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 3, q)
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject("Pokémon Trainer " & Core.Player.Name & " was defeated!"))
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 2, New TextQueryObject("Pokémon Trainer " & Core.Player.Name & " was defeated!"))
 
-						BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
-				End Select
-			Else
-				Select Case reason
-					Case EndBattleReasons.WinWild
-						Won = True
-						Core.Player.AddPoints(1, "Won against wild Pokémon.")
+                        BattleScreen.TempPVPBattleQuery.Add(BattleScreen.BattleQuery.Count - 1, New EndBattleQueryObject(True))
+                End Select
+            Else
+                Select Case reason
+                    Case EndBattleReasons.WinWild
+                        Won = True
+                        Core.Player.AddPoints(1, "Won against wild Pokémon.")
 
-						BattleScreen.BattleQuery.Add(New PlayMusicQueryObject("wild_defeat"))
-						ChangeCameraAngle(1, True, BattleScreen)
+                        BattleScreen.BattleQuery.Add(New PlayMusicQueryObject("wild_defeat"))
+                        ChangeCameraAngle(1, True, BattleScreen)
 
-						GainEXP(BattleScreen)
+                        GainEXP(BattleScreen)
 
-						If BattleScreen.FieldEffects.OwnPayDayCounter > 0 Then
-							Core.Player.Money += BattleScreen.FieldEffects.OwnPayDayCounter
-							BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " picked up $" & BattleScreen.FieldEffects.OwnPayDayCounter & "!"))
-						End If
+                        If BattleScreen.FieldEffects.OwnPayDayCounter > 0 Then
+                            Core.Player.Money += BattleScreen.FieldEffects.OwnPayDayCounter
+                            BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " picked up $" & BattleScreen.FieldEffects.OwnPayDayCounter & "!"))
+                        End If
 
-						BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
-					Case EndBattleReasons.WinTrainer
-						Won = True
-						Core.Player.AddPoints(3, "Won against trainer.")
+                        BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
+                    Case EndBattleReasons.WinTrainer
+                        Won = True
+                        Core.Player.AddPoints(3, "Won against trainer.")
 
-						Core.Player.Money += BattleScreen.GetTrainerMoney()
+                        Core.Player.Money += BattleScreen.GetTrainerMoney()
 
-						BattleScreen.BattleQuery.Add(New PlayMusicQueryObject(BattleScreen.Trainer.GetDefeatMusic()))
+                        BattleScreen.BattleQuery.Add(New PlayMusicQueryObject(BattleScreen.Trainer.GetDefeatMusic()))
 
-						Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.04F, 0.02F)
-						q.ApplyCurrentCamera = True
-						BattleScreen.BattleQuery.Add(q)
+                        Dim q As New CameraQueryObject(New Vector3(15, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, -(MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.04F, 0.02F)
+                        q.ApplyCurrentCamera = True
+                        BattleScreen.BattleQuery.Add(q)
 
-						BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.TrainerType & " " & BattleScreen.Trainer.Name & " was defeated!"))
-						BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.OutroMessage))
+                        BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.TrainerType & " " & BattleScreen.Trainer.Name & " was defeated!"))
+                        BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.OutroMessage))
 
-						If BattleScreen.GetTrainerMoney() > 0 Then
-							BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " got $" & BattleScreen.GetTrainerMoney() & "!"))
-						End If
+                        If BattleScreen.GetTrainerMoney() > 0 Then
+                            BattleScreen.BattleQuery.Add(New TextQueryObject(Core.Player.Name & " got $" & BattleScreen.GetTrainerMoney() & "!"))
+                        End If
 
-						BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
-					Case EndBattleReasons.LoseTrainer, EndBattleReasons.LoseWild
-						Won = False
+                        BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False))
+                    Case EndBattleReasons.LoseTrainer, EndBattleReasons.LoseWild
+                        Won = False
                         Dim q As New CameraQueryObject(New Vector3(12, 0, 13), Screen.Camera.Position, 0.03F, 0.03F, (MathHelper.Pi * 0.5F), Screen.Camera.Yaw, 0.0F, Screen.Camera.Pitch, 0.02F, 0.02F)
                         q.ApplyCurrentCamera = True
                         BattleScreen.BattleQuery.Add(q)
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index 6719f780d..03a9cfffc 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -66,7 +66,7 @@
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
+            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
@@ -82,7 +82,7 @@
                 MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
                 i += 1
             Next
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
+            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
             MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index 9590c3d18..318503d28 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -96,7 +96,7 @@
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             Dim maxAmount As Integer = 8
             Dim currentAmount As Integer = 0
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
+            MoveAnimation.PlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
             While currentAmount <= maxAmount
                 Dim yPos As Single = CSng(Random.NextDouble() * 0.5)
                 Dim zPos As Single = CSng(Random.Next(-5, 5) * 0.15)
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index 5c35961e3..e01dafc73 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -64,7 +64,7 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
+            MoveAnimation.PlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
             MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 25785556e..5cf85b3e2 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -57,7 +57,7 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
+            MoveAnimation.PlaySound("Battle\Attacks\Pound", 0.5, 2.5)
             MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 4d53f749d..99e61e709 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,15 +54,16 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.AnimationMoveEntity(Nothing, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.AnimationMoveEntity(Nothing, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.MoveEntity(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.MoveEntity(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
-            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Tackle", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 2)
+            MoveAnimation.PlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
+            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(1.0F), 1.0F)
+            MoveAnimation.FadeEntity(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 9684f8379..3cc76f0a4 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -67,30 +67,38 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
+
+            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
+            MoveAnimation.MoveEntity(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
 
-            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Poison\Stinger", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
 
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.MoveEntity(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.ChangeEntityTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 2)
+            Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+            MoveAnimation.ChangeEntityTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.ChangeEntityTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+            Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 3, 1)
+
+            MoveAnimation.ChangeEntityTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+            MoveAnimation.ChangeEntityTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
+
+            MoveAnimation.ChangeEntityTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub

From 944cf6ae712dfdc2961a74cd062e1bf7f4ae31a8 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 21 Oct 2021 20:42:40 +0200
Subject: [PATCH 13/57] Updated everything to the new Battle Animations system
 and the newest commands
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Updated Attacks:
Ember, Absorb, Growl, Pound

Updated status effects & shared animations:
Poisoned, Switching Pokémon (own and opponent's)
---
 P3D/Battle/BattleSystemV2/Battle.vb       | 217 ++++++++++++----------
 P3D/Pokemon/Attacks/Fire/Ember.vb         |  51 ++---
 P3D/Pokemon/Attacks/Grass/Absorb.vb       |   2 +-
 P3D/Pokemon/Attacks/Normal/Growl.vb       |  13 +-
 P3D/Pokemon/Attacks/Normal/Pound.vb       |   5 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb      |   8 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb |  20 +-
 7 files changed, 171 insertions(+), 145 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index a93c5e4bc..058885f11 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2706,12 +2706,12 @@
                                 ChangeCameraAngle(1, own, BattleScreen)
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                                BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
+                                BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
                                 Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
 
                                 Select Case message
@@ -3427,7 +3427,7 @@
                 Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
 
-                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
@@ -3708,10 +3708,10 @@
                 Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                 Dim startDelay As Double = 5.0 * Random.NextDouble()
 
-                StatAnimation.MoveEntity(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                 Threading.Interlocked.Increment(currentAmount)
             End While
-            StatAnimation.PlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
+            StatAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
             BattleScreen.BattleQuery.Add(StatAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
@@ -3998,10 +3998,10 @@
                 End If
 
                 Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 0, 0)
-                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 1, 0)
-                HitAnimation.FadeEntity(Nothing, False, 1, False, 0, 2, 0)
-                HitAnimation.FadeEntity(Nothing, False, 1, True, 1, 3, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 0, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 1, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 2, 0)
+                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
                 BattleScreen.BattleQuery.Add(HitAnimation)
 
                 If own = True Then
@@ -5357,20 +5357,22 @@
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP / 8), True, True, BattleScreen, "The poison hurt " & .OwnPokemon.GetDisplayName() & ".", "poison")
@@ -5381,20 +5383,22 @@
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP * multiplier), True, True, BattleScreen, "The toxic hurt " & .OwnPokemon.GetDisplayName() & ".", "badpoison")
@@ -5413,13 +5417,13 @@
 
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
-                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
                             'Actual damage
@@ -6151,21 +6155,24 @@
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
+
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP / 8), False, False, BattleScreen, "The poison hurt " & .OppPokemon.GetDisplayName() & ".", "poison")
                             End If
@@ -6175,20 +6182,22 @@
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
                                 'Poison animation
                                 Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                                PoisonAnimation.PlaySound("Battle\Effects\Poisoned", 0, 0)
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+
+                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                PoisonAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Poison\Bubble,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 2)
                                 BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
@@ -6206,13 +6215,13 @@
                             End If
                             'Burn animation
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
-                            BurnAnimation.PlaySound("Battle\Effects\Burned", 0, 0)
+                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
                             Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.ChangeEntityTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
                             BattleScreen.BattleQuery.Add(BurnAnimation)
 
                             'Actual damage
@@ -6783,7 +6792,7 @@
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
 
                 ' Ball Closes
-                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
@@ -6796,19 +6805,19 @@
 
                     Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    BallReturn.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
 
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.FadeEntity(Nothing, False, 1, False, 0, 1, 0)
-                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
+                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                 ' Ball returns
-                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
                 Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position, TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallReturn.MoveEntity(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
+                BallReturn.AnimationMove(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
@@ -6847,13 +6856,13 @@
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
 
-                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
 
                 Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position + New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallThrow.MoveEntity(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
+                BallThrow.AnimationMove(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
-                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
 
                 Dim SmokeSpawned As Integer = 0
                 Do
@@ -6867,17 +6876,17 @@
 
                     Dim SmokeEntity As Entity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    BallThrow.MoveEntity(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
 
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.FadeEntity(Nothing, False, 1, True, 1, 4, 0)
-                BallThrow.PlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
+                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
@@ -7125,8 +7134,8 @@
             If BattleScreen.IsTrainerBattle = False Then
                 ChangeCameraAngle(1, False, BattleScreen)
                 Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
-                Faint.PlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.MoveEntity(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
+                Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                Faint.AnimationMove(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
                 BattleScreen.BattleQuery.Add(Faint)
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
@@ -7155,28 +7164,29 @@
                     Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                     ' Ball Closes
-                    BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
                     Dim SmokeReturned As Integer = 0
                     Do
                         Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                         Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                        Dim SmokeTexture As String = "Textures\Battle\Smoke"
+                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                         Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-
-                        BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                        Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                        BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                         Threading.Interlocked.Increment(SmokeReturned)
                     Loop While SmokeReturned <= 38
 
                     ' Pokemon disappears
-                    BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                    BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
+                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                     ' Ball returns
-                    BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
-                    BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                    Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                    BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                     BattleScreen.BattleQuery.Add(BallReturn)
 
@@ -7216,28 +7226,29 @@
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                 ' Ball Closes
-                BallReturn.PlaySound("Battle\Pokeball\Open", 0, 0)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
                 Dim SmokeReturned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
                     Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-
-                    BallReturn.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeReturned)
                 Loop While SmokeReturned <= 38
 
                 ' Pokemon disappears
-                BallReturn.AnimationFadeEntity(Nothing, 1, False, 0, 1, 0)
-                BallReturn.MoveEntity(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
+                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
                 ' Ball returns
-                BallReturn.PlaySound("Battle\Pokeball\Throw", 1, 0)
-                BallReturn.AnimationSpawnMovingEntity(0, 0, 0, BattleScreen.OppPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                 BattleScreen.BattleQuery.Add(BallReturn)
 
@@ -7267,31 +7278,33 @@
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
-                BallThrow.PlaySound("Battle\Pokeball\Throw", 0, 0)
-                BallThrow.AnimationSpawnMovingEntity(-2, -0.15, 0, BattleScreen.OwnPokemon.CatchBall.TextureSource, 0.3F, 0.3F, 0.3F, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
-                ' Ball Opens
-                BallThrow.PlaySound("Battle\Pokeball\Open", 3, 0)
+                ' Ball opens
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
                 Dim SmokeSpawned As Integer = 0
                 Do
                     Dim SmokePosition = New Vector3(0, 0.35, 0)
                     Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As String = "Textures\Battle\Smoke"
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                     Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
                     Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
 
-                    BallThrow.AnimationSpawnMovingEntity(SmokePosition.X, SmokePosition.Y, SmokePosition.Z, SmokeTexture, SmokeScale.X, SmokeScale.Y, SmokeScale.Z, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
 
                 ' Pokemon appears
-                BallThrow.AnimationFadeEntity(Nothing, 1, True, 1, 4, 0)
-                BallThrow.PlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                 '  Pokémon falls down
-                BallThrow.MoveEntity(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
                 BattleScreen.BattleQuery.Add(BallThrow)
             End If
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index 03a9cfffc..1356505d9 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -65,10 +65,14 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationSpawnMovingEntity(0.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
-            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
+            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
+
+            MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
-                MoveAnimation.AnimationSpawnFadingEntity(CSng(i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
+                MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+
                 i += 1
             Next
             BattleScreen.BattleQuery.Add(MoveAnimation)
@@ -76,32 +80,37 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
+
+            MoveAnimation.AnimationMove(FireballEntity, True, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
 
-            MoveAnimation.AnimationSpawnMovingEntity(2.0, 0, 0.0, "Textures\Battle\Fire\FireBall", 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0, 0.1, 0.5, 0)
             For i = 0 To 12
-                MoveAnimation.AnimationSpawnFadingEntity(CSng(3.0 - i * 0.2), 0.0, 0.0, "Textures\Battle\Fire\Smoke", 0.2, 0.2, 0.2, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(3.0 - i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
+                MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
+
                 i += 1
             Next
-            MoveAnimation.PlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
+            Dim FireEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+            Dim FireEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+            Dim FireEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,64,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,96,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
 
-            MoveAnimation.AnimationSpawnFadingEntity(-0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, 0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Fire\Ember,0,128,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+
+            MoveAnimation.AnimationChangeTexture(FireEntity1, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index 318503d28..9590c3d18 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -96,7 +96,7 @@
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             Dim maxAmount As Integer = 8
             Dim currentAmount As Integer = 0
-            MoveAnimation.PlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
             While currentAmount <= maxAmount
                 Dim yPos As Single = CSng(Random.NextDouble() * 0.5)
                 Dim zPos As Single = CSng(Random.Next(-5, 5) * 0.15)
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index e01dafc73..369515629 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -64,11 +64,14 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.PlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 1, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,0,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 2, 1)
-            MoveAnimation.AnimationSpawnFadingEntity(0.25, -0.25, -0.25, "Textures\Battle\Normal\Growl,0,32,32,32", 0.5, 0.5, 0.5, 0.02, False, 1.0, 3, 1)
+
+            MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
+            Dim SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+
+            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, True, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 5cf85b3e2..d14a3c279 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -57,8 +57,9 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.PlaySound("Battle\Attacks\Pound", 0.5, 2.5)
-            MoveAnimation.AnimationSpawnFadingEntity(0, -0.25, 0, "Textures\Battle\Normal\Pound", 0.5, 0.5, 0.5, 0.02, False, 1.0, 0, 3)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
+            Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 3)
+            MoveAnimation.AnimationFade(PoundEntity, True, 1.0F, False, 0.0F, 3, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 99e61e709..668b4b545 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,16 +54,16 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.MoveEntity(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.MoveEntity(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.AnimationMove(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
+            MoveAnimation.AnimationMove(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.PlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
             Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(1.0F), 1.0F)
-            MoveAnimation.FadeEntity(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
+            MoveAnimation.AnimationFade(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 3cc76f0a4..fa0fb7abe 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -69,8 +69,8 @@
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
             Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
 
-            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
-            MoveAnimation.MoveEntity(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
@@ -80,25 +80,25 @@
 
             Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
 
-            MoveAnimation.MoveEntity(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
-            MoveAnimation.PlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 
             Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
 
             Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.ChangeEntityTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
 
             Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 3, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
-            MoveAnimation.ChangeEntityTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
 
-            MoveAnimation.ChangeEntityTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub

From 7fba875d024200ad9a6bbba367d9bc429c4bc370 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Sun, 24 Oct 2021 01:56:29 +0200
Subject: [PATCH 14/57] Fixed a lot of animation system bugs

Fixed:
* Spawned entities not appearing
* Animations getting removed too soon
* Incorrect relative positioning
* Ember textures being searched for in the wrong place
---
 P3D/Battle/BattleAnimations/BAEntityMove.vb   |  3 +-
 .../BattleAnimations/BattleAnimation3D.vb     | 11 +++---
 P3D/Battle/BattleSystemV2/Battle.vb           | 26 +++++++-------
 P3D/Battle/BattleSystemV2/BattleScreen.vb     |  2 +-
 .../QueryObjects/AnimationQueryObject.vb      | 36 ++++++++++---------
 P3D/Pokemon/Attacks/Attack.vb                 |  2 ++
 P3D/Pokemon/Attacks/Fire/Ember.vb             | 24 ++++++-------
 P3D/Pokemon/Attacks/Grass/Absorb.vb           |  2 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb          | 10 +++---
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb     |  2 +-
 10 files changed, 60 insertions(+), 58 deletions(-)

diff --git a/P3D/Battle/BattleAnimations/BAEntityMove.vb b/P3D/Battle/BattleAnimations/BAEntityMove.vb
index 8e7685f6f..cb5fa1e0e 100644
--- a/P3D/Battle/BattleAnimations/BAEntityMove.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityMove.vb
@@ -59,8 +59,7 @@
 
 	Private Sub Spin()
 		If Me.SpinX = True Then
-			Dim targetEntity = Me.TargetEntity
-			targetEntity.Rotation.X += SpinSpeedX
+			TargetEntity.Rotation.X += SpinSpeedX
 		End If
 		If Me.SpinZ = True Then
 			TargetEntity.Rotation.Z += SpinSpeedZ
diff --git a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
index 8011ce1d2..48e63f3a0 100644
--- a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
+++ b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
@@ -25,18 +25,15 @@
     Public Ready As Boolean = False
     Public startDelay As Single
     Public endDelay As Single
-    Public SpawnedEntity As Entity = Nothing
+    Public SpawnedEntity As Boolean = False
 
-    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, Optional SpawnedEntity As Entity = Nothing)
+    Public Sub New(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, Optional SpawnedEntity As Boolean = False)
         MyBase.New(Position.X, Position.Y, Position.Z, "BattleAnimation", {Texture}, {0, 0}, False, 0, Scale, BaseModel.BillModel, 0, "", New Vector3(1.0F))
 
-        Me.Visible = Visible
         Me.startDelay = startDelay
         Me.endDelay = endDelay
 
-        If SpawnedEntity IsNot Nothing Then
-            Me.SpawnedEntity = SpawnedEntity
-        End If
+        Me.SpawnedEntity = SpawnedEntity
 
         Me.CreateWorldEveryFrame = True
         Me.DropUpdateUnlessDrawn = False
@@ -62,7 +59,7 @@
                         startDelay = 0.0F
                     End If
                 Else
-                    If SpawnedEntity IsNot Nothing Then
+                    If SpawnedEntity = True Then
                         Ready = True
                     End If
                     DoActionActive()
diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 058885f11..63e067b6f 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1496,7 +1496,7 @@
             End If
 
             'Own Pokémon move animation! This displays any effects that should display on the user of the move.
-            moveUsed.UserPokemonMoveAnimation(BattleScreen, own)
+            moveUsed.UserPokemonMoveAnimation(BattleScreen, Not own)
 
             If moveUsed.Target <> Attack.Targets.Self And moveUsed.FocusOppPokemon = True Then
                 If own = True Then
@@ -2707,7 +2707,7 @@
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(pNPC.Position.X - 0.25), CSng(pNPC.Position.Y - 0.25), CSng(pNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(-0.25), CSng(-0.25), CSng(-0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
                                 BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
                                 BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
                                 BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
@@ -3420,8 +3420,8 @@
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), pNPC.Position.Z + zPos)
-                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), zPos + pNPC.Position.Z)
+                Dim Position As New Vector3(xPos, -0.4, zPos)
+                Dim Destination As New Vector3(xPos, 0.8, zPos)
                 Dim Scale As New Vector3(0.2F)
 
                 Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
@@ -3701,8 +3701,8 @@
                 Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
                 Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Dim Position As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y + 0.8), pNPC.Position.Z + zPos)
-                Dim Destination As New Vector3(xPos + pNPC.Position.X, CSng(pNPC.Position.Y - 0.4), zPos + pNPC.Position.Z)
+                Dim Position As New Vector3(xPos, 0.8, zPos)
+                Dim Destination As New Vector3(xPos, -0.4, zPos)
                 Dim Scale As New Vector3(0.2F)
 
                 Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
@@ -5419,7 +5419,7 @@
                             Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
-                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OwnPokemonNPC.Position.X + 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z + 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25F, 0.25F, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
                             BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
                             BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
                             BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
@@ -6214,10 +6214,10 @@
                                 reduceAmount = CInt(.OppPokemon.MaxHP / 16)
                             End If
                             'Burn animation
-                            Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
+                            Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True)
                             BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
-                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(BattleScreen.OppPokemonNPC.Position.X - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Y - 0.25), CSng(BattleScreen.OwnPokemonNPC.Position.Z - 0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
                             BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
                             BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
                             BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
@@ -6816,8 +6816,8 @@
 
                 ' Ball returns
                 BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position, TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallReturn.AnimationMove(BallReturnEntity, True, BattleScreen.OwnPokemonNPC.Position.X - 2, BattleScreen.OwnPokemonNPC.Position.Y, BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 1, 0,, 0.3)
+                Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(New Vector3(0.0F), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
 
                 BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
@@ -6858,8 +6858,8 @@
 
                 BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
 
-                Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(BattleScreen.OwnPokemonNPC.Position + New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallThrow.AnimationMove(BallThrowEntity, True, BattleScreen.OwnPokemonNPC.Position.X, CSng(BattleScreen.OwnPokemonNPC.Position.Y + 0.35), BattleScreen.OwnPokemonNPC.Position.Z, 0.1, False, True, 0F, 0F,, 0.3)
+                Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
+                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
                 ' Ball Opens
                 BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index a4dcf7821..f96d4e96d 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -815,7 +815,7 @@ nextIndex:
                 If BattleQuery.Count > cIndex Then
                     Dim cQueryObject As QueryObject = BattleQuery(cIndex)
                     If cQueryObject.QueryType = QueryObject.QueryTypes.MoveAnimation Then
-                        If CType(cQueryObject, AnimationQueryObject).DrawBeforeEntities = False Then
+                        If CType(cQueryObject, AnimationQueryObject).DrawBeforeEntities = True Then
                             cQuery.Add(cQueryObject)
                         Else
                             ForegroundAnimationList.Add(CType(cQueryObject, AnimationQueryObject))
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index fba7a46b3..919bc52ce 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -21,6 +21,7 @@
 		Public Sub New(ByVal entity As Entity, ByVal BattleFlipped As Boolean, Optional ByVal model As ModelEntity = Nothing, Optional DrawBeforeEntities As Boolean = False)
 			MyBase.New(QueryTypes.MoveAnimation)
 			Me.AnimationSequence = New List(Of BattleAnimation3D)
+			Me.SpawnedEntities = New List(Of Entity)
 			Me.DrawBeforeEntities = DrawBeforeEntities
 			If BattleFlipped <> Nothing Then
 				Me.BattleFlipped = BattleFlipped
@@ -40,6 +41,9 @@
 					RenderObjects.Add(a)
 				End If
 			Next
+			For Each entity As BattleAnimation3D In Me.SpawnedEntities
+				RenderObjects.Add(entity)
+			Next
 			If RenderObjects.Count > 0 Then
 				RenderObjects = (From r In RenderObjects Order By r.CameraDistance Descending).ToList()
 			End If
@@ -60,9 +64,6 @@
 							i -= 1
 							AnimationSequence.Remove(a)
 						Else
-							If a.SpawnedEntity IsNot Nothing And a.Ready = True Then
-								SpawnedEntities.Add(a.SpawnedEntity)
-							End If
 							a.Update()
 						End If
 					End If
@@ -75,6 +76,7 @@
 					Animation.UpdateEntity()
 				Next
 				For Each Entity As Entity In SpawnedEntities
+					Entity.Update()
 					Entity.UpdateEntity()
 				Next
 			End If
@@ -89,21 +91,23 @@
 		End Sub
 
 		Public Function SpawnEntity(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Opacity As Single, Optional ByVal startDelay As Single = 0.0F, Optional ByVal endDelay As Single = 0.0F) As Entity
-			If Not BattleFlipped = Nothing Then
-				If BattleFlipped = True Then
-					Position.X = CurrentEntity.Position.X - Position.X * 2.0F
-					Position.Z = CurrentEntity.Position.Z - Position.Z * 2.0F
-				Else
-					Position.X = CurrentEntity.Position.X + Position.X * 2.0F
-					Position.Z = CurrentEntity.Position.Z + Position.Z * 2.0F
-				End If
-			End If
-
-			Dim SpawnedEntity As Entity = New Entity(Position.X, Position.Y, Position.Z, "BattleAnimation", {Texture}, {0, 0}, False, 0, Scale, BaseModel.BillModel, 0, "", New Vector3(1.0F))
+			Dim SpawnedEntity = New BattleAnimation3D(Position, Texture, Scale, 0, 0, False)
 			SpawnedEntity.Opacity = Opacity
 
-			Dim SpawnDelayEntity As BattleAnimation3D = New BattleAnimation3D(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay, SpawnedEntity)
+			If Not BattleFlipped = Nothing Then
+				If BattleFlipped = True Then
+					SpawnedEntity.Position.X = CurrentEntity.Position.X - Position.X
+					SpawnedEntity.Position.Y = CurrentEntity.Position.Y + Position.Y
+					SpawnedEntity.Position.Z = CurrentEntity.Position.Z - Position.Z
+				Else
+					SpawnedEntity.Position.X = CurrentEntity.Position.X + Position.X
+					SpawnedEntity.Position.Y = CurrentEntity.Position.Y + Position.Y
+					SpawnedEntity.Position.Z = CurrentEntity.Position.Z + Position.Z
+				End If
+			End If
+			SpawnedEntities.Add(SpawnedEntity)
 
+			Dim SpawnDelayEntity As BattleAnimation3D = New BattleAnimation3D(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay, True)
 			AnimationSequence.Add(SpawnDelayEntity)
 			Return SpawnedEntity
 		End Function
@@ -124,7 +128,7 @@
 
 			If RemoveEntityAfter = True Then
 				If baEntityTextureChange.CanRemove = True Then
-					RemoveEntity(Entity)
+					RemoveEntity(TextureChangeEntity)
 				End If
 			End If
 		End Sub
diff --git a/P3D/Pokemon/Attacks/Attack.vb b/P3D/Pokemon/Attacks/Attack.vb
index cf379b4c5..4c6f982c4 100644
--- a/P3D/Pokemon/Attacks/Attack.vb
+++ b/P3D/Pokemon/Attacks/Attack.vb
@@ -2169,6 +2169,7 @@
                 Dim CurrentEntity As NPC = BattleScreen.OwnPokemonNPC
                 Dim CurrentModel As ModelEntity = BattleScreen.OwnPokemonModel
                 If own = False Then
+                    CurrentPokemon = BattleScreen.OppPokemon
                     CurrentEntity = BattleScreen.OppPokemonNPC
                     CurrentModel = BattleScreen.OppPokemonModel
                 End If
@@ -2186,6 +2187,7 @@
                 Dim CurrentEntity As NPC = BattleScreen.OppPokemonNPC
                 Dim CurrentModel As ModelEntity = BattleScreen.OppPokemonModel
                 If own = False Then
+                    CurrentPokemon = BattleScreen.OwnPokemon
                     CurrentEntity = BattleScreen.OwnPokemonNPC
                     CurrentModel = BattleScreen.OwnPokemonModel
                 End If
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index 1356505d9..bcc8306f3 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -96,21 +96,21 @@
             Dim FireEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
             Dim FireEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index 9590c3d18..f895c3cf2 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -101,7 +101,7 @@
                 Dim yPos As Single = CSng(Random.NextDouble() * 0.5)
                 Dim zPos As Single = CSng(Random.Next(-5, 5) * 0.15)
                 Dim AbsorbEntity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Grass\Absorb"), New Vector3(0.35F), 1)
-                MoveAnimation.AnimationMove(AbsorbEntity, True, 1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount), 0.0, 0.1, 0.5)
+                MoveAnimation.AnimationMove(AbsorbEntity, True, -1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount), 0.0, 0.1, 0.5)
 
                 Threading.Interlocked.Increment(currentAmount)
             End While
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 668b4b545..e0d981ea9 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -54,16 +54,16 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
-            MoveAnimation.AnimationMove(Nothing, False, 0.5, 0, 0, 0.3, False, False, 0, 0,,, 2)
-            MoveAnimation.AnimationMove(Nothing, False, 0, 0, 0, 0.3, False, False, 1, 0,,, 2)
+            MoveAnimation.AnimationMove(Nothing, False, -0.5F, 0, 0, 0.3F, False, False, 0, 0,,, 2)
+            MoveAnimation.AnimationMove(Nothing, False, 0, 0, 0, 0.3F, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 2)
-            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(1.0F), 1.0F)
-            MoveAnimation.AnimationFade(SpawnEntity, True, 0.02, False, 1.0F, 0, 2)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 0)
+            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(0.5F), 1.0F, 0, 2)
+            MoveAnimation.AnimationFade(SpawnEntity, True, 1.0F, False, 0.0F, 2, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index fa0fb7abe..f270a269e 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -67,7 +67,7 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
 
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
             MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)

From 72599bfd168ba29ef06c6246b1c1445d99612b72 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Fri, 29 Oct 2021 15:58:28 +0200
Subject: [PATCH 15/57] Fixed spawned animation entities not being
 positioned/moved correctly + Added Heal animation + Made other animations be
 affected by battleanimations option

---
 P3D/Battle/BattleSystemV2/Battle.vb           | 504 ++++++++++--------
 .../QueryObjects/AnimationQueryObject.vb      |  45 +-
 P3D/Content/Sounds/Battle/Effects/Heal.wav    | Bin 0 -> 83280 bytes
 P3D/Pokemon/Attacks/Attack.vb                 |  16 +-
 P3D/Pokemon/Attacks/Fire/Ember.vb             |  18 +-
 P3D/Pokemon/Attacks/Grass/Absorb.vb           |   4 +-
 P3D/Pokemon/Attacks/Normal/Growl.vb           |   4 +-
 P3D/Pokemon/Attacks/Normal/Pound.vb           |   6 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb          |   8 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb     |  14 +-
 10 files changed, 339 insertions(+), 280 deletions(-)
 create mode 100644 P3D/Content/Sounds/Battle/Effects/Heal.wav

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 63e067b6f..bc3d6609f 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1496,7 +1496,7 @@
             End If
 
             'Own Pokémon move animation! This displays any effects that should display on the user of the move.
-            moveUsed.UserPokemonMoveAnimation(BattleScreen, Not own)
+            moveUsed.UserPokemonMoveAnimation(BattleScreen, own)
 
             If moveUsed.Target <> Attack.Targets.Self And moveUsed.FocusOppPokemon = True Then
                 If own = True Then
@@ -3412,26 +3412,28 @@
             End If
 
             '***STAT INCREASE ANIMATION***
-            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
-            Dim maxAmount As Integer = 20 * val
-            Dim currentAmount As Integer = 0
-            While currentAmount <= maxAmount
-                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statUp")
-                Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
-                Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+                Dim maxAmount As Integer = 20 * val
+                Dim currentAmount As Integer = 0
+                While currentAmount <= maxAmount
+                    Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statUp")
+                    Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+                    Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Dim Position As New Vector3(xPos, -0.4, zPos)
-                Dim Destination As New Vector3(xPos, 0.8, zPos)
-                Dim Scale As New Vector3(0.2F)
+                    Dim Position As New Vector3(xPos, -0.4, zPos)
+                    Dim Destination As New Vector3(xPos, 0.8, zPos)
+                    Dim Scale As New Vector3(0.2F)
 
-                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
-                Dim startDelay As Double = 5.0 * Random.NextDouble()
+                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
+                    Dim startDelay As Double = 5.0 * Random.NextDouble()
 
-                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
-                Threading.Interlocked.Increment(currentAmount)
-            End While
+                    StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                    Threading.Interlocked.Increment(currentAmount)
+                End While
+                BattleScreen.BattleQuery.Add(StatAnimation)
+            End If
             BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
-            BattleScreen.BattleQuery.Add(StatAnimation)
 
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
@@ -3693,27 +3695,28 @@
                 End If
             End If
             '***STAT DECREASE ANIMATION***
-            Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
-            Dim maxAmount As Integer = 20 * val
-            Dim currentAmount As Integer = 0
-            While currentAmount <= maxAmount
-                Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statDown")
-                Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
-                Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+                Dim maxAmount As Integer = 20 * val
+                Dim currentAmount As Integer = 0
+                While currentAmount <= maxAmount
+                    Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\statDown")
+                    Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+                    Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
-                Dim Position As New Vector3(xPos, 0.8, zPos)
-                Dim Destination As New Vector3(xPos, -0.4, zPos)
-                Dim Scale As New Vector3(0.2F)
+                    Dim Position As New Vector3(xPos, 0.8, zPos)
+                    Dim Destination As New Vector3(xPos, -0.4, zPos)
+                    Dim Scale As New Vector3(0.2F)
 
-                Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
-                Dim startDelay As Double = 5.0 * Random.NextDouble()
-
-                StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
-                Threading.Interlocked.Increment(currentAmount)
-            End While
-            StatAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0.0F, 10.0F)
-            BattleScreen.BattleQuery.Add(StatAnimation)
+                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
+                    Dim startDelay As Double = 5.0 * Random.NextDouble()
 
+                    StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                    Threading.Interlocked.Increment(currentAmount)
+                End While
+                BattleScreen.BattleQuery.Add(StatAnimation)
+            End If
+            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Lower", False))
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
                 Case 2
@@ -3941,8 +3944,10 @@
 
         Public Sub GainHP(ByVal HPAmount As Integer, ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String)
             Dim p As Pokemon = BattleScreen.OwnPokemon
+            Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
             If own = False Then
                 p = BattleScreen.OppPokemon
+                pNPC = BattleScreen.OppPokemonNPC
             End If
 
             If p.HP < p.MaxHP And p.HP > 0 And p.Status <> Pokemon.StatusProblems.Fainted Then
@@ -3962,6 +3967,30 @@
                     BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, -HPAmount, New Vector2(300, 256)))
                 End If
 
+                '***HP INCREASE ANIMATION***
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+                    Dim maxAmount As Integer = 20
+                    Dim currentAmount As Integer = 0
+                    While currentAmount <= maxAmount
+                        Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatChange\Heal")
+                        Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+                        Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+
+                        Dim Position As New Vector3(xPos, -0.4, zPos)
+                        Dim Destination As New Vector3(xPos, 0.8, zPos)
+                        Dim Scale As New Vector3(0.2F)
+
+                        Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
+                        Dim startDelay As Double = 5.0 * Random.NextDouble()
+
+                        StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                        Threading.Interlocked.Increment(currentAmount)
+                    End While
+                    BattleScreen.BattleQuery.Add(StatAnimation)
+                End If
+                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Heal", False))
+
                 If message <> "" Then
                     BattleScreen.BattleQuery.Add(New TextQueryObject(message))
                 End If
@@ -3996,14 +4025,14 @@
                     End If
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(sound, False, 0.0F))
                 End If
-
-                Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
-                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 0, 0)
-                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 1, 0)
-                HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 2, 0)
-                HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
-                BattleScreen.BattleQuery.Add(HitAnimation)
-
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    Dim HitAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+                    HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 0, 0)
+                    HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 1, 0)
+                    HitAnimation.AnimationFade(Nothing, False, 1, False, 0, 2, 0)
+                    HitAnimation.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
+                    BattleScreen.BattleQuery.Add(HitAnimation)
+                End If
                 If own = True Then
                     BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, HPAmount, New Vector2(200, 256)))
                 Else
@@ -5356,24 +5385,26 @@
                         If .OwnPokemon.Ability.Name.ToLower() <> "magic guard" Then
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
                                 'Poison animation
-                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
+                                If Core.Player.ShowBattleAnimations <> 0 Then
+                                    Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
 
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                    BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                End If
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP / 8), True, True, BattleScreen, "The poison hurt " & .OwnPokemon.GetDisplayName() & ".", "poison")
                             End If
@@ -5382,24 +5413,26 @@
                                 .FieldEffects.OwnPoisonCounter += 1
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
                                 'Poison animation
-                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
+                                If Core.Player.ShowBattleAnimations <> 0 Then
+                                    Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
 
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                    BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                End If
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP * multiplier), True, True, BattleScreen, "The toxic hurt " & .OwnPokemon.GetDisplayName() & ".", "badpoison")
                             End If
@@ -5416,16 +5449,17 @@
                             End If
 
                             'Burn animation
-                            Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
-                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-
-                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25F, 0.25F, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
-                            BattleScreen.BattleQuery.Add(BurnAnimation)
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
+                                BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25F, 0.25F, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                BattleScreen.BattleQuery.Add(BurnAnimation)
+                            End If
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6154,25 +6188,26 @@
                         If .OppPokemon.Ability.Name.ToLower() <> "magic guard" Then
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
                                 'Poison animation
-                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
+                                If Core.Player.ShowBattleAnimations <> 0 Then
+                                    Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
 
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
-
-                                BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
+                                    BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                End If
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP / 8), False, False, BattleScreen, "The poison hurt " & .OppPokemon.GetDisplayName() & ".", "poison")
                             End If
@@ -6180,27 +6215,29 @@
                             If .OppPokemon.Status = Pokemon.StatusProblems.BadPoison Then 'Opp Toxic
                                 .FieldEffects.OppPoisonCounter += 1
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
-                                'Poison animation
-                                Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
+                                If Core.Player.ShowBattleAnimations <> 0 Then
+                                    'Poison animation
+                                    Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
 
-                                PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
 
-                                PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
 
-                                BattleScreen.BattleQuery.Add(PoisonAnimation)
-                                'Actual damage
-                                ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
+                                    BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                    'Actual damage
+                                    ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
+                                End If
                             End If
                         End If
                     End If
@@ -6214,16 +6251,17 @@
                                 reduceAmount = CInt(.OppPokemon.MaxHP / 16)
                             End If
                             'Burn animation
-                            Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True)
-                            BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-
-                            Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                            BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
-                            BattleScreen.BattleQuery.Add(BurnAnimation)
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True)
+                                BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                BattleScreen.BattleQuery.Add(BurnAnimation)
+                            End If
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
                         End If
@@ -6790,35 +6828,37 @@
                 BattleScreen.AddToQuery(InsertIndex, New TextQueryObject(insertMessage))
 
                 Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    ' Ball Closes
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                    Dim SmokeReturned As Integer = 0
+                    Do
+                        Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                        Dim SmokeDestination As Vector3 = New Vector3(0, 0, 0)
 
-                ' Ball Closes
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
-                Dim SmokeReturned As Integer = 0
-                Do
-                    Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-                    Dim SmokeDestination As Vector3 = New Vector3(0, 0, 0)
+                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                        Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
 
-                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                        Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
 
-                    Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
-
-                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
-
-                    Threading.Interlocked.Increment(SmokeReturned)
-                Loop While SmokeReturned <= 38
+                        BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
 
+                        Threading.Interlocked.Increment(SmokeReturned)
+                    Loop While SmokeReturned <= 38
+                End If
                 ' Pokemon disappears
+
                 BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
-                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
-
-                ' Ball returns
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(New Vector3(0.0F), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
+                    ' Ball returns
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                    Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(Nothing, BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                    BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                End If
                 BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
                 Dim index As Integer = NewPokemonIndex
@@ -6856,37 +6896,40 @@
                 ' Ball is thrown
                 Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False, BattleScreen.OwnPokemonModel)
 
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
 
-                Dim BallThrowEntity As Entity = BallReturn.SpawnEntity(New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                    Dim BallThrowEntity As Entity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
-                ' Ball Opens
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                    ' Ball Opens
+                    BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
 
-                Dim SmokeSpawned As Integer = 0
-                Do
-                    Dim SmokePosition = New Vector3(0, 0.35, 0)
-                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                    Dim SmokeSpawned As Integer = 0
+                    Do
+                        Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
-                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                        Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
 
-                    Dim SmokeEntity As Entity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
+                        Dim SmokeEntity As Entity = BallThrow.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F)
 
-                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                        BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
 
-                    Threading.Interlocked.Increment(SmokeSpawned)
-                Loop While SmokeSpawned <= 38
+                        Threading.Interlocked.Increment(SmokeSpawned)
+                    Loop While SmokeSpawned <= 38
+                End If
 
                 ' Pokemon appears
                 BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
-                '  Pokémon falls down
-                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    '  Pokémon falls down
+                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                End If
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
             End If
@@ -7133,10 +7176,12 @@
 
             If BattleScreen.IsTrainerBattle = False Then
                 ChangeCameraAngle(1, False, BattleScreen)
-                Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
-                Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                Faint.AnimationMove(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
-                BattleScreen.BattleQuery.Add(Faint)
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+                    Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                    Faint.AnimationMove(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
+                    BattleScreen.BattleQuery.Add(Faint)
+                End If
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
 
@@ -7161,34 +7206,38 @@
 
                     BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
-                    Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
-                    ' Ball Closes
-                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
-                    Dim SmokeReturned As Integer = 0
-                    Do
-                        Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-                        Dim SmokeDestination = New Vector3(0, 0, 0)
+                    If Core.Player.ShowBattleAnimations <> 0 Then
+                        Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+                        ' Ball Closes
+                        BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                        Dim SmokeReturned As Integer = 0
+                        Do
+                            Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                            Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                            Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
-                        Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-                        Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
-                        BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
-                        Threading.Interlocked.Increment(SmokeReturned)
-                    Loop While SmokeReturned <= 38
+                            Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                            Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                            Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                            BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                            Threading.Interlocked.Increment(SmokeReturned)
+                        Loop While SmokeReturned <= 38
 
-                    ' Pokemon disappears
-                    BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
-                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                        ' Pokemon disappears
+                        BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
 
-                    ' Ball returns
-                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                    Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                    BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                        BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
-                    BattleScreen.BattleQuery.Add(BallReturn)
+                        ' Ball returns
+                        BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                        Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), BattleScreen.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                        BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                        BattleScreen.BattleQuery.Add(BallReturn)
+                    Else
+                        BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
+                    End If
 
                     EndBattle(EndBattleReasons.WinTrainer, BattleScreen, False)
                     If BattleScreen.IsRemoteBattle = True Then
@@ -7223,35 +7272,38 @@
                 HasSwitchedInOpp = True
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
-                Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
-                ' Ball Closes
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
-                Dim SmokeReturned As Integer = 0
-                Do
-                    Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-                    Dim SmokeDestination = New Vector3(0, 0, 0)
+                    ' Ball Closes
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Open", 0, 0)
+                    Dim SmokeReturned As Integer = 0
+                    Do
+                        Dim SmokePosition = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                        Dim SmokeDestination = New Vector3(0, 0, 0)
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
-                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
-                    BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
-                    Threading.Interlocked.Increment(SmokeReturned)
-                Loop While SmokeReturned <= 38
+                        Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                        Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                        BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+                        Threading.Interlocked.Increment(SmokeReturned)
+                    Loop While SmokeReturned <= 38
 
-                ' Pokemon disappears
-                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
-                BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    ' Pokemon disappears
+                    BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
+                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
 
-                ' Ball returns
-                BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
-                Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture(BattleScreen.OppPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
-
-                BattleScreen.BattleQuery.Add(BallReturn)
+                    ' Ball returns
+                    BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
+                    Dim BallReturnEntity = BallReturn.SpawnEntity(New Vector3(0, 0, 0), BattleScreen.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                    BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
+                    BattleScreen.BattleQuery.Add(BallReturn)
+                Else
+                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
+                End If
                 BattleScreen.SendInNewTrainerPokemon(index)
                 Me.ApplyOppBatonPass(BattleScreen)
 
@@ -7275,38 +7327,40 @@
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Go, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
-                ' Ball is thrown
-                Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    ' Ball is thrown
+                    Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), TextureManager.GetTexture(BattleScreen.OwnPokemon.CatchBall.TextureSource), New Vector3(0.3F), 1.0F)
-                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                    BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                    Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
 
-                ' Ball opens
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
-                Dim SmokeSpawned As Integer = 0
-                Do
-                    Dim SmokePosition = New Vector3(0, 0.35, 0)
-                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+                    ' Ball opens
+                    BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                    Dim SmokeSpawned As Integer = 0
+                    Do
+                        Dim SmokePosition = New Vector3(0, 0.35, 0)
+                        Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
 
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+                        Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
-                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-                    Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                        Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                        Dim SmokeEntity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
 
-                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
-                    Threading.Interlocked.Increment(SmokeSpawned)
-                Loop While SmokeSpawned <= 38
+                        BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+                        Threading.Interlocked.Increment(SmokeSpawned)
+                    Loop While SmokeSpawned <= 38
 
-                ' Pokemon appears
-                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
-                BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+                    ' Pokemon appears
+                    BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                    BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
-                '  Pokémon falls down
-                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                    '  Pokémon falls down
+                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
 
-                BattleScreen.BattleQuery.Add(BallThrow)
+                    BattleScreen.BattleQuery.Add(BallThrow)
+                End If
             End If
 
             With BattleScreen
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index 919bc52ce..5e1b293b4 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -91,20 +91,15 @@
 		End Sub
 
 		Public Function SpawnEntity(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Opacity As Single, Optional ByVal startDelay As Single = 0.0F, Optional ByVal endDelay As Single = 0.0F) As Entity
-			Dim SpawnedEntity = New BattleAnimation3D(Position, Texture, Scale, 0, 0, False)
+			Dim NewPosition As Vector3
+			If Not Position = Nothing Then
+				NewPosition = CurrentEntity.Position + Position
+			Else
+				NewPosition = CurrentEntity.Position
+			End If
+			Dim SpawnedEntity = New BattleAnimation3D(NewPosition, Texture, Scale, 0, 0, False)
 			SpawnedEntity.Opacity = Opacity
 
-			If Not BattleFlipped = Nothing Then
-				If BattleFlipped = True Then
-					SpawnedEntity.Position.X = CurrentEntity.Position.X - Position.X
-					SpawnedEntity.Position.Y = CurrentEntity.Position.Y + Position.Y
-					SpawnedEntity.Position.Z = CurrentEntity.Position.Z - Position.Z
-				Else
-					SpawnedEntity.Position.X = CurrentEntity.Position.X + Position.X
-					SpawnedEntity.Position.Y = CurrentEntity.Position.Y + Position.Y
-					SpawnedEntity.Position.Z = CurrentEntity.Position.Z + Position.Z
-				End If
-			End If
 			SpawnedEntities.Add(SpawnedEntity)
 
 			Dim SpawnDelayEntity As BattleAnimation3D = New BattleAnimation3D(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay, True)
@@ -135,28 +130,34 @@
 
 		Public Sub AnimationMove(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
 			Dim MoveEntity As Entity
+			Dim ModelEntity As Entity = Nothing
 			Dim Destination As Vector3
 
+			If Entity Is Nothing Then
+				MoveEntity = CurrentEntity
+				If Me.CurrentModel IsNot Nothing Then
+					ModelEntity = Me.CurrentModel
+				End If
+			Else
+					MoveEntity = Entity
+			End If
+
 			If Not BattleFlipped = Nothing Then
 				If BattleFlipped = True Then
 					DestinationX -= DestinationX * 2.0F
 					DestinationZ -= DestinationZ * 2.0F
 				End If
-				If Entity Is Nothing Then
-					MoveEntity = CurrentEntity
-				Else
-					MoveEntity = Entity
-				End If
-				Destination = CurrentEntity.Position + New Vector3(DestinationX, DestinationY, DestinationZ)
+			End If
+			If CurrentEntity Is Nothing Then
+				Destination = MoveEntity.Position + New Vector3(DestinationX, DestinationY, DestinationZ)
 			Else
-				MoveEntity = Entity
-				Destination = New Vector3(DestinationX, DestinationY, DestinationZ)
+				Destination = CurrentEntity.Position + New Vector3(DestinationX, DestinationY, DestinationZ)
 			End If
 
 			Dim baEntityMove As BAEntityMove = New BAEntityMove(MoveEntity, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
 			AnimationSequence.Add(baEntityMove)
 
-			If Me.CurrentModel IsNot Nothing Then
+			If ModelEntity IsNot Nothing Then
 				Dim baModelMove As BAEntityMove = New BAEntityMove(CType(CurrentModel, Entity), Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
 				AnimationSequence.Add(baModelMove)
 			End If
@@ -232,7 +233,7 @@
 			AnimationSequence.Add(baSound)
 		End Sub
 
-		Public Sub AnimationBackground(Texture As Texture2D, ByVal RemoveEntityAfter As Boolean, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal FadeOut As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = 0.0F)
+		Public Sub AnimationBackground(Texture As Texture2D, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal FadeOut As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = 0.0F)
 			Dim baBackground As BABackground = New BABackground(Texture, TransitionSpeed, FadeIn, FadeOut, EndState, startDelay, endDelay, startState)
 			AnimationSequence.Add(baBackground)
 		End Sub
diff --git a/P3D/Content/Sounds/Battle/Effects/Heal.wav b/P3D/Content/Sounds/Battle/Effects/Heal.wav
new file mode 100644
index 0000000000000000000000000000000000000000..6e952de6dad7a40b4ea42386f074fc8e8bb996f3
GIT binary patch
literal 83280
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
NvDJo+s8TWD{{lOAuD}2Q

literal 0
HcmV?d00001

diff --git a/P3D/Pokemon/Attacks/Attack.vb b/P3D/Pokemon/Attacks/Attack.vb
index 4c6f982c4..cdddaf3ee 100644
--- a/P3D/Pokemon/Attacks/Attack.vb
+++ b/P3D/Pokemon/Attacks/Attack.vb
@@ -2164,38 +2164,42 @@
 #Region "Animation"
 
         Public Sub UserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean)
-            If Core.Player.ShowBattleAnimations = 1 Then
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                Dim BattleFlip As Boolean = False
                 Dim CurrentPokemon As Pokemon = BattleScreen.OwnPokemon
                 Dim CurrentEntity As NPC = BattleScreen.OwnPokemonNPC
                 Dim CurrentModel As ModelEntity = BattleScreen.OwnPokemonModel
                 If own = False Then
+                    BattleFlip = True
                     CurrentPokemon = BattleScreen.OppPokemon
                     CurrentEntity = BattleScreen.OppPokemonNPC
                     CurrentModel = BattleScreen.OppPokemonModel
                 End If
-                Me.InternalUserPokemonMoveAnimation(BattleScreen, own, CurrentPokemon, CurrentEntity, CurrentModel)
+                Me.InternalUserPokemonMoveAnimation(BattleScreen, BattleFlip, CurrentPokemon, CurrentEntity, CurrentModel)
             End If
         End Sub
 
-        Public Overridable Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+        Public Overridable Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             'Override this method in the attack class to insert the move animation query objects into the queue.
         End Sub
 
         Public Sub OpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean)
-            If Core.Player.ShowBattleAnimations = 1 Then
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                Dim BattleFlip As Boolean = False
                 Dim CurrentPokemon As Pokemon = BattleScreen.OppPokemon
                 Dim CurrentEntity As NPC = BattleScreen.OppPokemonNPC
                 Dim CurrentModel As ModelEntity = BattleScreen.OppPokemonModel
                 If own = False Then
+                    BattleFlip = True
                     CurrentPokemon = BattleScreen.OwnPokemon
                     CurrentEntity = BattleScreen.OwnPokemonNPC
                     CurrentModel = BattleScreen.OwnPokemonModel
                 End If
-                Me.InternalOpponentPokemonMoveAnimation(BattleScreen, own, CurrentPokemon, CurrentEntity, CurrentModel)
+                Me.InternalOpponentPokemonMoveAnimation(BattleScreen, BattleFlip, CurrentPokemon, CurrentEntity, CurrentModel)
             End If
         End Sub
 
-        Public Overridable Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+        Public Overridable Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             'Override this method in the attack class to insert the move animation query objects into the queue.
         End Sub
 
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index bcc8306f3..a1dbe0b35 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -63,14 +63,14 @@
             End If
         End Sub
 
-        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            Dim FireballEntity = MoveAnimation.SpawnEntity(Nothing, TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
 
             MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
-                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
+                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1, CSng(i * 0.2))
                 MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
 
                 i += 1
@@ -78,14 +78,14 @@
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
-        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            Dim FireballEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            Dim FireballEntity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
 
-            MoveAnimation.AnimationMove(FireballEntity, True, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
 
             For i = 0 To 12
-                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(3.0 - i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1)
+                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(-2.0 + i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1, CSng(i * 0.2))
                 MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
 
                 i += 1
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index f895c3cf2..b728851a3 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -92,8 +92,8 @@
             End If
         End Sub
 
-        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
             Dim maxAmount As Integer = 8
             Dim currentAmount As Integer = 0
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index 369515629..9558524c9 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -62,8 +62,8 @@
             End If
         End Sub
 
-        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
 
             MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
             Dim SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index d14a3c279..b3441945a 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -55,10 +55,10 @@
             Me.AIField2 = AIField.Nothing
         End Sub
 
-        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
-            Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 3)
+            Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 3)
             MoveAnimation.AnimationFade(PoundEntity, True, 1.0F, False, 0.0F, 3, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index e0d981ea9..9179a9538 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -52,15 +52,15 @@
             '#End
         End Sub
 
-        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own, CurrentModel)
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip, CurrentModel)
             MoveAnimation.AnimationMove(Nothing, False, -0.5F, 0, 0, 0.3F, False, False, 0, 0,,, 2)
             MoveAnimation.AnimationMove(Nothing, False, 0, 0, 0, 0.3F, False, False, 1, 0,,, 2)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
-        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 0)
             Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(0.5F), 1.0F, 0, 2)
             MoveAnimation.AnimationFade(SpawnEntity, True, 1.0F, False, 0.0F, 2, 0)
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index f270a269e..7c872fc53 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -65,9 +65,9 @@
             End If
         End Sub
 
-        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
-            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(Nothing, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
 
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
             MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
@@ -75,12 +75,12 @@
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 
-        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal own As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, own)
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
 
-            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
 
-            MoveAnimation.AnimationMove(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 

From 3900fe7191ccb456606ba2d836fbc300a7e4bf58 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Fri, 29 Oct 2021 18:54:00 +0200
Subject: [PATCH 16/57] =?UTF-8?q?Fixed=20Spawned=20Entities=20not=20being?=
 =?UTF-8?q?=20removed=20after=20the=20animation=20is=20done=20+=20Made=20t?=
 =?UTF-8?q?he=20switch=20Pok=C3=A9mon=20animation=20look=20better?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 P3D/Battle/BattleAnimations/BAEntityMove.vb   | 19 ++++-
 .../BattleAnimations/BAEntityOpacity.vb       | 10 ++-
 P3D/Battle/BattleAnimations/BAEntityRotate.vb | 18 +++--
 P3D/Battle/BattleAnimations/BAEntityScale.vb  | 10 ++-
 .../BattleAnimations/BAEntityTextureChange.vb | 10 ++-
 .../BattleAnimations/BattleAnimation3D.vb     |  6 ++
 P3D/Battle/BattleSystemV2/Battle.vb           | 27 +++----
 .../QueryObjects/AnimationQueryObject.vb      | 80 ++++++++++---------
 P3D/Pokemon/Attacks/Fire/Ember.vb             |  4 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb     |  2 +-
 10 files changed, 117 insertions(+), 69 deletions(-)

diff --git a/P3D/Battle/BattleAnimations/BAEntityMove.vb b/P3D/Battle/BattleAnimations/BAEntityMove.vb
index cb5fa1e0e..daf6a2eba 100644
--- a/P3D/Battle/BattleAnimations/BAEntityMove.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityMove.vb
@@ -5,6 +5,7 @@
 	Public TargetEntity As Entity
 	Public Destination As Vector3
 	Public MoveSpeed As Single
+	Public MoveYSpeed As Single
 	Public InterpolationSpeed As Single
 	Public SpinX As Boolean = False
 	Public SpinZ As Boolean = False
@@ -13,6 +14,7 @@
 	Public MovementCurve As Integer = 3
 	Private EasedIn As Boolean = False
 	Private EasedOut As Boolean = False
+	Public RemoveEntityAfter As Boolean
 	Public Enum Curves As Integer
 		EaseIn
 		EaseOut
@@ -20,11 +22,17 @@
 		Linear
 	End Enum
 
-	Public Sub New(ByRef Entity As Entity, ByVal Destination As Vector3, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
+	Public Sub New(ByRef Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Destination As Vector3, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3, Optional MoveYSpeed As Single = 0.0F)
 		MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
 
+		Me.RemoveEntityAfter = RemoveEntityAfter
 		Me.Destination = Destination
 		Me.MoveSpeed = Speed
+		If MoveYSpeed = 0F Then
+			Me.MoveYSpeed = MoveSpeed
+		Else
+			Me.MoveYSpeed = MoveYSpeed
+		End If
 		Me.MovementCurve = CType(MovementCurve, Curves)
 
 		Me.SpinX = SpinX
@@ -121,13 +129,13 @@
 				End If
 			End If
 			If TargetEntity.Position.Y < Me.Destination.Y Then
-				TargetEntity.Position.Y += Me.MoveSpeed
+				TargetEntity.Position.Y += Me.MoveYSpeed
 
 				If TargetEntity.Position.Y >= Me.Destination.Y Then
 					TargetEntity.Position.Y = Me.Destination.Y
 				End If
 			ElseIf TargetEntity.Position.Y > Me.Destination.Y Then
-				TargetEntity.Position.Y -= Me.MoveSpeed
+				TargetEntity.Position.Y -= Me.MoveYSpeed
 
 				If TargetEntity.Position.Y <= Me.Destination.Y Then
 					TargetEntity.Position.Y = Me.Destination.Y
@@ -185,5 +193,10 @@
 			Me.Ready = True
 		End If
 	End Sub
+	Public Overrides Sub DoRemoveEntity()
+		If Me.RemoveEntityAfter = True Then
+			TargetEntity.CanBeRemoved = True
+		End If
+	End Sub
 
 End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BAEntityOpacity.vb b/P3D/Battle/BattleAnimations/BAEntityOpacity.vb
index 959d733b5..0f6fe5f55 100644
--- a/P3D/Battle/BattleAnimations/BAEntityOpacity.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityOpacity.vb
@@ -6,9 +6,11 @@
     Public TransitionSpeed As Single = 0.01F
     Public FadeIn As Boolean = False
     Public EndState As Single = 0.0F
+    Public RemoveEntityAfter As Boolean
 
-    Public Sub New(ByVal entity As Entity, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal StartState As Single = 1.0F)
+    Public Sub New(ByVal entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal StartState As Single = 1.0F)
         MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
+        Me.RemoveEntityAfter = RemoveEntityAfter
         Me.EndState = EndState
         Me.FadeIn = FadeIn
         Me.TransitionSpeed = TransitionSpeed
@@ -41,5 +43,9 @@
             Me.Ready = True
         End If
     End Sub
-
+    Public Overrides Sub DoRemoveEntity()
+        If Me.RemoveEntityAfter = True Then
+            TargetEntity.CanBeRemoved = True
+        End If
+    End Sub
 End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BAEntityRotate.vb b/P3D/Battle/BattleAnimations/BAEntityRotate.vb
index cbcda0f7b..2ac3c8b7e 100644
--- a/P3D/Battle/BattleAnimations/BAEntityRotate.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityRotate.vb
@@ -9,18 +9,19 @@
     Dim ReturnVector As Vector3
     Dim hasReturned As Boolean = False
     Dim DoRotation As Vector3 = New Vector3(1.0F)
+    Public RemoveEntityAfter As Boolean = False
 
-    Public Sub New(ByVal Entity As Entity, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single)
+    Public Sub New(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single)
         MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
-
+        Me.RemoveEntityAfter = RemoveEntityAfter
         Me.RotationSpeedVector = RotationSpeedVector
         Me.EndRotation = EndRotation
         Me.ReturnVector = Me.Rotation
         Me.TargetEntity = Entity
     End Sub
 
-    Public Sub New(ByVal Entity As Entity, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean)
-        Me.New(Entity, RotationSpeedVector, EndRotation, startDelay, endDelay)
+    Public Sub New(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean)
+        Me.New(Entity, RemoveEntityAfter, RotationSpeedVector, EndRotation, startDelay, endDelay)
 
         If DoXRotation = False Then
             DoRotation.X = 0.0F
@@ -33,8 +34,8 @@
         End If
     End Sub
 
-    Public Sub New(ByVal Entity As Entity, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
-        Me.New(Entity, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation)
+    Public Sub New(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal RotationSpeedVector As Vector3, ByVal EndRotation As Vector3, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
+        Me.New(Entity, RemoveEntityAfter, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation)
 
         Me.DoReturn = DoReturn
     End Sub
@@ -128,4 +129,9 @@
         Return True
     End Function
 
+    Public Overrides Sub DoRemoveEntity()
+        If Me.RemoveEntityAfter = True Then
+            TargetEntity.CanBeRemoved = True
+        End If
+    End Sub
 End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BAEntityScale.vb b/P3D/Battle/BattleAnimations/BAEntityScale.vb
index 1e687de4c..a99c261dd 100644
--- a/P3D/Battle/BattleAnimations/BAEntityScale.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityScale.vb
@@ -9,10 +9,11 @@
     Public Anchors As String '1 = Bottom, 2 = Top, 3 = Left, 4 = Right. Combinations are possible.
 
     Public Change As New Vector3(1)
+    Public RemoveEntityAfter As Boolean
 
-    Public Sub New(ByVal Entity As Entity, ByVal Scale As Vector3, ByVal Grow As Boolean, ByVal EndSize As Vector3, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal Anchors As String)
+    Public Sub New(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Scale As Vector3, ByVal Grow As Boolean, ByVal EndSize As Vector3, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal Anchors As String)
         MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, Scale, startDelay, endDelay)
-
+        Me.RemoveEntityAfter = RemoveEntityAfter
         Me.Anchors = Anchors
         Me.Grow = Grow
         Me.EndSize = EndSize
@@ -104,5 +105,10 @@
     Public Sub SetChange(ByVal changeX As Single, ByVal changeY As Single, ByVal changeZ As Single)
         Me.Change = New Vector3(changeX, changeY, changeZ)
     End Sub
+    Public Overrides Sub DoRemoveEntity()
+        If Me.RemoveEntityAfter = True Then
+            TargetEntity.CanBeRemoved = True
+        End If
+    End Sub
 
 End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BAEntityTextureChange.vb b/P3D/Battle/BattleAnimations/BAEntityTextureChange.vb
index 4b266b706..ced0d473b 100644
--- a/P3D/Battle/BattleAnimations/BAEntityTextureChange.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityTextureChange.vb
@@ -4,10 +4,11 @@
 
     Public Texture As Texture2D
     Public TargetEntity As Entity
+    Public RemoveEntityAfter As Boolean
 
-    Public Sub New(ByVal Entity As Entity, Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
+    Public Sub New(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, Texture As Texture2D, ByVal startDelay As Single, ByVal endDelay As Single)
         MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
-
+        Me.RemoveEntityAfter = RemoveEntityAfter
         Me.TargetEntity = Entity
         Me.Texture = Texture
         Me.AnimationType = AnimationTypes.Texture
@@ -18,4 +19,9 @@
         Me.Ready = True
     End Sub
 
+    Public Overrides Sub DoRemoveEntity()
+        If Me.RemoveEntityAfter = True Then
+            TargetEntity.CanBeRemoved = True
+        End If
+    End Sub
 End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
index 48e63f3a0..1eb6bfeb2 100644
--- a/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
+++ b/P3D/Battle/BattleAnimations/BattleAnimation3D.vb
@@ -50,6 +50,7 @@
                     End If
                 Else
                     CanRemove = True
+                    DoRemoveEntity()
                 End If
             Else
                 If startDelay > 0.0F Then
@@ -61,6 +62,8 @@
                 Else
                     If SpawnedEntity = True Then
                         Ready = True
+                    Else
+                        Me.Visible = True
                     End If
                     DoActionActive()
                 End If
@@ -87,6 +90,9 @@
     Public Overridable Sub DoActionActive()
         'Insert code in Inherits class here.
     End Sub
+    Public Overridable Sub DoRemoveEntity()
+        'Insert code in Inherits class here.
+    End Sub
 
     Public Overrides Sub Render()
         If Me.startDelay <= 0.0F Then
diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index bc3d6609f..6efb7304a 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -6842,7 +6842,6 @@
                         Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
 
                         Dim SmokeEntity As Entity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1.0F)
-
                         BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
 
                         Threading.Interlocked.Increment(SmokeReturned)
@@ -6900,7 +6899,7 @@
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
 
                     Dim BallThrowEntity As Entity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
-                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
 
                     ' Ball Opens
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
@@ -6912,10 +6911,9 @@
                         Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-
-                        Dim SmokeEntity As Entity = BallThrow.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F)
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
 
+                        Dim SmokeEntity As Entity = BallThrow.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F, 3)
                         BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
 
                         Threading.Interlocked.Increment(SmokeSpawned)
@@ -6923,12 +6921,12 @@
                 End If
 
                 ' Pokemon appears
-                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OwnPokemon.Number), 4, 0,, True)
 
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     '  Pokémon falls down
-                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
+                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 3)
                 End If
 
                 BattleScreen.AddToQuery(InsertIndex, BallThrow)
@@ -7219,9 +7217,10 @@
                             Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                             Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                            Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                            Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
                             Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
                             BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
+
                             Threading.Interlocked.Increment(SmokeReturned)
                         Loop While SmokeReturned <= 38
 
@@ -7285,7 +7284,7 @@
                         Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
                         Dim SmokeEntity = BallReturn.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
                         BallReturn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 0.0F, 0.0F)
                         Threading.Interlocked.Increment(SmokeReturned)
@@ -7333,7 +7332,7 @@
 
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
                     Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
-                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0F,, 0.3)
+                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
 
                     ' Ball opens
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
@@ -7345,19 +7344,19 @@
                         Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
 
                         Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 10.0F)
-                        Dim SmokeEntity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1)
+                        Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
+                        Dim SmokeEntity = BallThrow.SpawnEntity(SmokePosition, SmokeTexture, SmokeScale, 1, 3)
 
                         BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
                         Threading.Interlocked.Increment(SmokeSpawned)
                     Loop While SmokeSpawned <= 38
 
                     ' Pokemon appears
-                    BallThrow.AnimationFade(Nothing, False, 1, True, 1, 4, 0)
+                    BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
                     BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
 
                     '  Pokémon falls down
-                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 4)
+                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 4)
 
                     BattleScreen.BattleQuery.Add(BallThrow)
                 End If
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index 5e1b293b4..5dda41573 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -79,6 +79,16 @@
 					Entity.Update()
 					Entity.UpdateEntity()
 				Next
+				For i = 0 To Me.SpawnedEntities.Count - 1
+					If i <= SpawnedEntities.Count - 1 Then
+						Dim entity As Entity = SpawnedEntities(i)
+
+						If entity.CanBeRemoved = True Then
+							i -= 1
+							RemoveEntity(entity)
+						End If
+					End If
+				Next
 			End If
 		End Sub
 
@@ -97,13 +107,12 @@
 			Else
 				NewPosition = CurrentEntity.Position
 			End If
-			Dim SpawnedEntity = New BattleAnimation3D(NewPosition, Texture, Scale, 0, 0, False)
+			Dim SpawnedEntity = New BattleAnimation3D(NewPosition, Texture, Scale, startDelay, endDelay, False)
 			SpawnedEntity.Opacity = Opacity
+			SpawnedEntity.Visible = False
 
 			SpawnedEntities.Add(SpawnedEntity)
 
-			Dim SpawnDelayEntity As BattleAnimation3D = New BattleAnimation3D(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay, True)
-			AnimationSequence.Add(SpawnDelayEntity)
 			Return SpawnedEntity
 		End Function
 		Public Sub RemoveEntity(Entity As Entity)
@@ -118,17 +127,12 @@
 				TextureChangeEntity = Entity
 			End If
 
-			Dim baEntityTextureChange As BAEntityTextureChange = New BAEntityTextureChange(TextureChangeEntity, Texture, startDelay, endDelay)
+			Dim baEntityTextureChange As BAEntityTextureChange = New BAEntityTextureChange(TextureChangeEntity, RemoveEntityAfter, Texture, startDelay, endDelay)
 			AnimationSequence.Add(baEntityTextureChange)
 
-			If RemoveEntityAfter = True Then
-				If baEntityTextureChange.CanRemove = True Then
-					RemoveEntity(TextureChangeEntity)
-				End If
-			End If
 		End Sub
 
-		Public Sub AnimationMove(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3)
+		Public Sub AnimationMove(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3, Optional MoveYSpeed As Single = 0.0F)
 			Dim MoveEntity As Entity
 			Dim ModelEntity As Entity = Nothing
 			Dim Destination As Vector3
@@ -139,7 +143,7 @@
 					ModelEntity = Me.CurrentModel
 				End If
 			Else
-					MoveEntity = Entity
+				MoveEntity = Entity
 			End If
 
 			If Not BattleFlipped = Nothing Then
@@ -154,77 +158,79 @@
 				Destination = CurrentEntity.Position + New Vector3(DestinationX, DestinationY, DestinationZ)
 			End If
 
-			Dim baEntityMove As BAEntityMove = New BAEntityMove(MoveEntity, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
+			Dim baEntityMove As BAEntityMove = New BAEntityMove(MoveEntity, RemoveEntityAfter, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve, MoveYSpeed)
 			AnimationSequence.Add(baEntityMove)
 
 			If ModelEntity IsNot Nothing Then
-				Dim baModelMove As BAEntityMove = New BAEntityMove(CType(CurrentModel, Entity), Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve)
+				Dim baModelMove As BAEntityMove = New BAEntityMove(CType(CurrentModel, Entity), False, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve, MoveYSpeed)
 				AnimationSequence.Add(baModelMove)
 			End If
 
-			If RemoveEntityAfter = True Then
-				If baEntityMove.CanRemove = True Then
-					RemoveEntity(MoveEntity)
-				End If
-			End If
 		End Sub
 
 		Public Sub AnimationFade(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal TransitionSpeed As Single, ByVal FadeIn As Boolean, ByVal EndState As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal startState As Single = -1.0F)
 			Dim FadeEntity As Entity
+			Dim FadeModel As Entity = Nothing
 			If Entity Is Nothing Then
 				FadeEntity = CurrentEntity
+				If Me.CurrentModel IsNot Nothing Then
+					FadeModel = Me.CurrentModel
+				End If
 			Else
 				FadeEntity = Entity
 			End If
 			If startState = -1.0F Then startState = FadeEntity.Opacity
-			Dim baEntityOpacity As BAEntityOpacity = New BAEntityOpacity(FadeEntity, TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
+			Dim baEntityOpacity As BAEntityOpacity = New BAEntityOpacity(FadeEntity, RemoveEntityAfter, TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
 			AnimationSequence.Add(baEntityOpacity)
 
-			If Me.CurrentModel IsNot Nothing Then
-				Dim baModelOpacity As BAEntityOpacity = New BAEntityOpacity(CType(CurrentModel, Entity), TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
+			If FadeModel IsNot Nothing Then
+				Dim baModelOpacity As BAEntityOpacity = New BAEntityOpacity(CType(FadeModel, Entity), False, TransitionSpeed, FadeIn, EndState, startDelay, endDelay, startState)
 				AnimationSequence.Add(baModelOpacity)
 			End If
 
-			If RemoveEntityAfter = True Then
-				If baEntityOpacity.CanRemove = True Then
-					RemoveEntity(FadeEntity)
-				End If
-			End If
 		End Sub
 		Public Sub AnimationRotate(Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal RotationSpeedX As Single, ByVal RotationSpeedY As Single, ByVal RotationSpeedZ As Single, ByVal EndRotationX As Single, ByVal EndRotationY As Single, ByVal EndRotationZ As Single, ByVal startDelay As Single, ByVal endDelay As Single, ByVal DoXRotation As Boolean, ByVal DoYRotation As Boolean, ByVal DoZRotation As Boolean, ByVal DoReturn As Boolean)
 			Dim RotateEntity As Entity
+			Dim RotateModel As Entity = Nothing
 			If Entity Is Nothing Then
 				RotateEntity = CurrentEntity
+				If Me.CurrentModel IsNot Nothing Then
+					RotateModel = Me.CurrentModel
+				End If
 			Else
 				RotateEntity = Entity
 			End If
 
 			Dim RotationSpeedVector As Vector3 = New Vector3(RotationSpeedX, RotationSpeedY, RotationSpeedZ)
 			Dim EndRotation As Vector3 = New Vector3(EndRotationX, EndRotationY, EndRotationZ)
-			Dim baEntityRotate As BAEntityRotate = New BAEntityRotate(RotateEntity, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation, DoReturn)
+			Dim baEntityRotate As BAEntityRotate = New BAEntityRotate(RotateEntity, RemoveEntityAfter, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation, DoReturn)
 			AnimationSequence.Add(baEntityRotate)
-			If RemoveEntityAfter = True Then
-				If baEntityRotate.CanRemove = True Then
-					RemoveEntity(RotateEntity)
-				End If
+
+			If RotateModel IsNot Nothing Then
+				Dim baModelOpacity As BAEntityRotate = New BAEntityRotate(CType(RotateModel, Entity), False, RotationSpeedVector, EndRotation, startDelay, endDelay, DoXRotation, DoYRotation, DoZRotation, DoReturn)
+				AnimationSequence.Add(baModelOpacity)
 			End If
+
 		End Sub
 		Public Sub AnimationScale(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
 			Dim ScaleEntity As Entity
+			Dim ScaleModel As Entity = Nothing
 			If Entity Is Nothing Then
 				ScaleEntity = CurrentEntity
+				If Me.CurrentModel IsNot Nothing Then
+					ScaleModel = Me.CurrentModel
+				End If
 			Else
 				ScaleEntity = Entity
 			End If
 
 			Dim Scale As Vector3 = ScaleEntity.Scale
 			Dim EndSize As Vector3 = New Vector3(EndSizeX, EndSizeY, EndSizeZ)
-			Dim baBillSize As BAEntityScale = New BAEntityScale(ScaleEntity, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
-			AnimationSequence.Add(baBillSize)
-			If RemoveEntityAfter = True Then
-				If baBillSize.CanRemove = True Then
-					RemoveEntity(ScaleEntity)
-				End If
+			Dim baEntityScale As BAEntityScale = New BAEntityScale(ScaleEntity, RemoveEntityAfter, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
+			AnimationSequence.Add(baEntityScale)
+
+			If ScaleModel IsNot Nothing Then
+				Dim baModelScale As BAEntityScale = New BAEntityScale(CType(ScaleModel, Entity), False, Scale, Grow, EndSize, SizeSpeed, startDelay, endDelay, Anchors)
 			End If
 		End Sub
 
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index a1dbe0b35..d8e04c15a 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -82,10 +82,10 @@
             Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
             Dim FireballEntity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
 
-            MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationMove(FireballEntity, True, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
 
             For i = 0 To 12
-                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(-2.0 + i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1, CSng(i * 0.2))
+                Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(-3.0 + i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1, CSng(i * 0.2))
                 MoveAnimation.AnimationFade(SmokeEntity, True, 0.02, False, 0.0, CSng(i * 0.2), 0.0)
 
                 i += 1
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 7c872fc53..8104dbcd4 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -80,7 +80,7 @@
 
             Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
 
-            MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
 
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 

From 4b3b900e40202ada7463191f6b8a1e1852f3cb88 Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Fri, 5 Nov 2021 23:09:33 +0100
Subject: [PATCH 17/57] Start of battle pokeball throw animation

and some little fixes
---
 P3D/Battle/BattleSystemV2/Battle.vb       |  16 +-
 P3D/Battle/BattleSystemV2/BattleScreen.vb | 232 +++++++++++++++++++---
 2 files changed, 208 insertions(+), 40 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 6efb7304a..0a74526d1 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -7227,7 +7227,7 @@
                         ' Pokemon disappears
                         BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
 
-                        BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                        BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                         ' Ball returns
                         BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -7292,7 +7292,7 @@
 
                     ' Pokemon disappears
                     BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
-                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 4)
+                    BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                     ' Ball returns
                     BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
@@ -7326,12 +7326,12 @@
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Go, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
+                Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     ' Ball is thrown
-                    Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
 
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                    Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                    Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
                     BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
 
                     ' Ball opens
@@ -7350,11 +7350,11 @@
                         BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
                         Threading.Interlocked.Increment(SmokeSpawned)
                     Loop While SmokeSpawned <= 38
-
-                    ' Pokemon appears
-                    BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
+                End If
+                ' Pokemon appears
+                BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
                     BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
-
+                If Core.Player.ShowBattleAnimations <> 0 Then
                     '  Pokémon falls down
                     BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 4)
 
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index f96d4e96d..e2d56b0df 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -225,12 +225,17 @@
             Dim ownModel As String = GetModelName(True)
             Dim oppModel As String = GetModelName(False)
 
+            Dim InitiallyVisibleOwn As Integer = 1
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                InitiallyVisibleOwn = 0
+            End If
+
             If ownModel = "" Then
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}, InitiallyVisibleOwn), NPC)
                 OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 13) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
                 OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
-                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 13) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
+                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 13) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, InitiallyVisibleOwn), ModelEntity)
             End If
 
             Screen.Level.Entities.Add(OwnPokemonNPC)
@@ -276,9 +281,50 @@
             Dim q3 As CameraQueryObject = New CameraQueryObject(New Vector3(14, 0, 11), New Vector3(14, 0, 15), 0.01F, 0.01F, MathHelper.PiOver2, MathHelper.PiOver2, 0.0F, 0.0F)
             q3.PassThis = True
 
-            Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
             Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
 
+            Me.BattleQuery.AddRange({cq, q1, q, q2, q22, q3, q4})
+
+            ' Ball is thrown
+            Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(Me.OwnPokemonNPC, False, Me.OwnPokemonModel)
+
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrow.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+
+                Dim BallThrowEntity As Entity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
+
+                ' Ball Opens
+                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+
+                Dim SmokeSpawned As Integer = 0
+                Do
+                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
+
+                    Dim SmokeEntity As Entity = BallThrow.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F, 3)
+                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+
+                    Threading.Interlocked.Increment(SmokeSpawned)
+                Loop While SmokeSpawned <= 38
+            End If
+
+            ' Pokemon appears
+            BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
+            BallThrow.AnimationPlaySound(CStr(Me.OwnPokemon.Number), 4, 0,, True)
+
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                '  Pokémon falls down
+                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 3)
+            End If
+
+            Me.BattleQuery.Add(BallThrow)
+
             Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
 
             Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16)
@@ -286,8 +332,6 @@
 
             cq2.PassThis = True
 
-            Me.BattleQuery.AddRange({cq, q1, q, q2, q22, q3, q31, q4})
-
             Battle.SwitchInOwn(Me, meIndex, True, -1)
             Battle.SwitchInOpp(Me, True, 0)
 
@@ -359,23 +403,33 @@
             Dim ownModel As String = GetModelName(True)
             Dim oppModel As String = GetModelName(False)
 
+            Dim InitiallyVisibleOwn As Integer = 1
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                InitiallyVisibleOwn = 0
+            End If
+
             If ownModel = "" Then
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}, InitiallyVisibleOwn), NPC)
                 OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
-                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
+                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, InitiallyVisibleOwn), ModelEntity)
             End If
 
             Screen.Level.Entities.Add(OwnPokemonNPC)
             Screen.Level.Entities.Add(OwnPokemonModel)
 
+            Dim InitiallyVisibleOpp As Integer = 1
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                InitiallyVisibleOpp = 0
+            End If
+
             If oppModel = "" Then
-                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OppPokemon), 1, OppPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
+                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OppPokemon), 1, OppPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}, InitiallyVisibleOpp), NPC)
                 OppPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(15, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 1.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
-                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OppPokemon), 1, OppPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
-                OppPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(15, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 1.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, oppModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
+                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OppPokemon), 1, OppPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
+                OppPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(15, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 1.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, oppModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, InitiallyVisibleOpp), ModelEntity)
             End If
 
             Screen.Level.Entities.Add(OppPokemonNPC)
@@ -401,22 +455,93 @@
             Dim q As CameraQueryObject = New CameraQueryObject(New Vector3(13, 0, 15), New Vector3(21, 0, 15), 0.05F, 0.05F, -0.8F, 1.4F, 0.0F, 0.0F, 0.016F, 0.016F)
             q.PassThis = True
 
-            Dim hisher As String = "his"
-            If Trainer.Gender = 1 Then
-                hisher = "her"
+            Dim q1 As TextQueryObject = New TextQueryObject(Trainer.Name & " wants to battle!")
+
+            ' Ball is thrown
+            Dim BallThrowOpp As AnimationQueryObject = New AnimationQueryObject(OppPokemonNPC, True, OppPokemonModel)
+
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                BallThrowOpp.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrowOpp.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+                Dim BallThrowEntity As Entity = BallThrowOpp.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                BallThrowOpp.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
+
+                ' Ball Opens
+                BallThrowOpp.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+                Dim SmokeSpawnedOpp As Integer = 0
+                Do
+                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
+
+                    Dim SmokeEntity As Entity = BallThrowOpp.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F, 3)
+                    BallThrowOpp.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+
+                    Threading.Interlocked.Increment(SmokeSpawnedOpp)
+                Loop While SmokeSpawnedOpp <= 38
+            End If
+            ' Pokemon appears
+            BallThrowOpp.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
+            BallThrowOpp.AnimationPlaySound(CStr(Me.OppPokemon.Number), 4, 0,, True)
+
+            '  Pokémon falls down
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                '  Pokémon falls down
+                BallThrowOpp.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 4, 0,,, 3)
             End If
 
-            Dim q1 As New PlaySoundQueryObject(OppPokemon.Number.ToString(), True, 5.0F)
-            Dim q2 As TextQueryObject = New TextQueryObject(Trainer.Name & " and " & hisher & " " & Me.OppPokemon.GetDisplayName() & " want to battle!")
-
-            Dim q22 As CameraQueryObject = New CameraQueryObject(New Vector3(14, 0, 15), New Vector3(13, 0, 15), 0.05F, 0.05F, MathHelper.PiOver2, -0.8F, 0.0F, 0.0F, 0.05F, 0.05F)
+            Dim q2 As CameraQueryObject = New CameraQueryObject(New Vector3(14, 0, 15), New Vector3(13, 0, 15), 0.05F, 0.05F, MathHelper.PiOver2, -0.8F, 0.0F, 0.0F, 0.05F, 0.05F)
 
             Dim q3 As CameraQueryObject = New CameraQueryObject(New Vector3(14, 0, 11), New Vector3(14, 0, 15), 0.01F, 0.01F, MathHelper.PiOver2, MathHelper.PiOver2, 0.0F, 0.0F)
             q3.PassThis = True
 
-            Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
             Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
 
+            Me.BattleQuery.AddRange({cq, q, q1, BallThrowOpp, q2, q3, q4})
+
+            ' Ball is thrown
+            Dim BallThrowOwn As AnimationQueryObject = New AnimationQueryObject(Me.OwnPokemonNPC, False, Me.OwnPokemonModel)
+
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrowOwn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+
+                Dim BallThrowEntity As Entity = BallThrowOwn.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                BallThrowOwn.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
+
+                ' Ball Opens
+                BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+
+                Dim SmokeSpawned As Integer = 0
+                Do
+                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
+
+                    Dim SmokeEntity As Entity = BallThrowOwn.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F, 3)
+                    BallThrowOwn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+
+                    Threading.Interlocked.Increment(SmokeSpawned)
+                Loop While SmokeSpawned <= 38
+            End If
+
+            ' Pokemon appears
+            BallThrowOwn.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
+            BallThrowOwn.AnimationPlaySound(CStr(Me.OwnPokemon.Number), 4, 0,, True)
+
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                '  Pokémon falls down
+                BallThrowOwn.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 3)
+            End If
+
+            Me.BattleQuery.Add(BallThrowOwn)
+
             Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
 
             Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16)
@@ -424,8 +549,6 @@
 
             cq2.PassThis = True
 
-            Me.BattleQuery.AddRange({cq, q, q1, q2, q22, q3, q31, q4})
-
             Battle.SwitchInOwn(Me, meIndex, True, OwnPokemonIndex)
             Battle.SwitchInOpp(Me, True, OppPokemonIndex)
             TempPVPBattleQuery.Clear()
@@ -496,10 +619,10 @@
             Dim oppModel As String = GetModelName(False)
 
             If ownModel = "" Then
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
                 OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
                 OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             End If
 
@@ -507,10 +630,10 @@
             Screen.Level.Entities.Add(OwnPokemonModel)
 
             If oppModel = "" Then
-                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
+                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
                 OppPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(15, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 1.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
-                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
+                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
                 OppPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(15, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 1.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, oppModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             End If
 
@@ -607,22 +730,27 @@
             Dim ownModel As String = GetModelName(True)
             Dim oppModel As String = GetModelName(False)
 
+            Dim InitiallyVisibleOwn As Integer = 1
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                InitiallyVisibleOwn = 0
+            End If
+
             If ownModel = "" Then
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}, InitiallyVisibleOwn), NPC)
                 OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
-                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
+                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, InitiallyVisibleOwn), ModelEntity)
             End If
 
             Screen.Level.Entities.Add(OwnPokemonNPC)
             Screen.Level.Entities.Add(OwnPokemonModel)
 
             If oppModel = "" Then
-                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
+                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
                 OppPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(15, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 1.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
-                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 12.5F) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
+                OppPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(15, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(WildPokemon), 1, WildPokemon.GetDisplayName(), 1, True, "Still", New List(Of Rectangle)}), NPC)
                 OppPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(15, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 1.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, oppModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             End If
 
@@ -657,6 +785,48 @@
             Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
             Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
 
+            Me.BattleQuery.AddRange({cq, q1, q, q2, q22, q3, q4})
+
+            ' Ball is thrown
+            Dim BallThrowOwn As AnimationQueryObject = New AnimationQueryObject(Me.OwnPokemonNPC, False, Me.OwnPokemonModel)
+
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
+                BallThrowOwn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
+
+                Dim BallThrowEntity As Entity = BallThrowOwn.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                BallThrowOwn.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
+
+                ' Ball Opens
+                BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
+
+                Dim SmokeSpawned As Integer = 0
+                Do
+                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
+
+                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
+
+                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
+                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
+
+                    Dim SmokeEntity As Entity = BallThrowOwn.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F, 3)
+                    BallThrowOwn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
+
+                    Threading.Interlocked.Increment(SmokeSpawned)
+                Loop While SmokeSpawned <= 38
+            End If
+
+            ' Pokemon appears
+            BallThrowOwn.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
+            BallThrowOwn.AnimationPlaySound(CStr(Me.OwnPokemon.Number), 4, 0,, True)
+
+            If Core.Player.ShowBattleAnimations <> 0 Then
+                '  Pokémon falls down
+                BallThrowOwn.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 3)
+            End If
+
+            Me.BattleQuery.Add(BallThrowOwn)
+
             Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
 
             Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16)
@@ -664,8 +834,6 @@
 
             cq2.PassThis = True
 
-            Me.BattleQuery.AddRange({cq, q, q1, q2, q22, q3, q31, q4})
-
             Battle.SwitchInOwn(Me, meIndex, True, -1)
             Battle.SwitchInOpp(Me, True, 0)
 

From c1ec08fe7f3f40f3c16ac3c32113cb3cd27dd814 Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Sat, 6 Nov 2021 11:26:34 +0100
Subject: [PATCH 18/57] Various Battle Improvements and Fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Improved timing BlockIn & BlockOut BattleIntro animations
* Removed player ball throw animations at the start of the battle for battles that are not pvp
* Fixed absorb animation
* Improved the faint animation and removed the unnecessary camera angle changes when a pokémon faints
---
 P3D/Battle/BattleSystemV2/Battle.vb       |  39 ++++---
 P3D/Battle/BattleSystemV2/BattleScreen.vb | 130 ++++------------------
 P3D/Pokemon/Attacks/Grass/Absorb.vb       |  10 +-
 P3D/Screens/BattleIntroScreen.vb          |   6 +-
 4 files changed, 49 insertions(+), 136 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 0a74526d1..3e1b9971a 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2543,13 +2543,19 @@
             p.HP = 0
             p.Status = Pokemon.StatusProblems.Fainted
             Me.ChangeCameraAngle(1, own, BattleScreen)
-            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject(p.Number.ToString(), True))
 
             If message = "" Then
                 message = p.GetDisplayName() & " fainted!"
             End If
             BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
+            If BattleScreen.IsTrainerBattle = False AndAlso Core.Player.ShowBattleAnimations <> 0 Then
+                Dim FaintAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+                FaintAnimation.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                FaintAnimation.AnimationMove(Nothing, False, 0, -1, 0, 0.05, False, False, 2, 0,,, 3)
+                BattleScreen.BattleQuery.Add(FaintAnimation)
+            End If
+
             Dim str = p.AdditionalData.ToLower()
             Select Case str
                 Case "mega", "mega_x", "mega_y", "primal", "blade"
@@ -3424,9 +3430,9 @@
                     Dim Position As New Vector3(xPos, -0.4, zPos)
                     Dim Destination As New Vector3(xPos, 0.8, zPos)
                     Dim Scale As New Vector3(0.2F)
-
-                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                     Dim startDelay As Double = 5.0 * Random.NextDouble()
+                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+
 
                     StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                     Threading.Interlocked.Increment(currentAmount)
@@ -3707,9 +3713,9 @@
                     Dim Position As New Vector3(xPos, 0.8, zPos)
                     Dim Destination As New Vector3(xPos, -0.4, zPos)
                     Dim Scale As New Vector3(0.2F)
-
-                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                     Dim startDelay As Double = 5.0 * Random.NextDouble()
+                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+
 
                     StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                     Threading.Interlocked.Increment(currentAmount)
@@ -3969,7 +3975,7 @@
 
                 '***HP INCREASE ANIMATION***
                 If Core.Player.ShowBattleAnimations <> 0 Then
-                    Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+                    Dim HealAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
                     Dim maxAmount As Integer = 20
                     Dim currentAmount As Integer = 0
                     While currentAmount <= maxAmount
@@ -3980,14 +3986,14 @@
                         Dim Position As New Vector3(xPos, -0.4, zPos)
                         Dim Destination As New Vector3(xPos, 0.8, zPos)
                         Dim Scale As New Vector3(0.2F)
-
-                        Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F)
                         Dim startDelay As Double = 5.0 * Random.NextDouble()
+                        Dim HealEntity As Entity = HealAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
 
-                        StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+
+                        HealAnimation.AnimationMove(HealEntity, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                         Threading.Interlocked.Increment(currentAmount)
                     End While
-                    BattleScreen.BattleQuery.Add(StatAnimation)
+                    BattleScreen.BattleQuery.Add(HealAnimation)
                 End If
                 BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Heal", False))
 
@@ -6847,18 +6853,18 @@
                         Threading.Interlocked.Increment(SmokeReturned)
                     Loop While SmokeReturned <= 38
                 End If
-                ' Pokemon disappears
 
-                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
                 If Core.Player.ShowBattleAnimations <> 0 Then
+                    ' Pokemon disappears
+                    BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
                     BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                     ' Ball returns
                     BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
                     Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(Nothing, BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
                     BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
+                    BattleScreen.AddToQuery(InsertIndex, BallReturn)
                 End If
-                BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
                 Dim index As Integer = NewPokemonIndex
                 If index <= -1 Then
@@ -7173,13 +7179,6 @@
             BattleScreen.OppPokemon.Ability.SwitchOut(BattleScreen.OppPokemon)
 
             If BattleScreen.IsTrainerBattle = False Then
-                ChangeCameraAngle(1, False, BattleScreen)
-                If Core.Player.ShowBattleAnimations <> 0 Then
-                    Dim Faint As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
-                    Faint.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                    Faint.AnimationMove(Nothing, False, 0, -1, 0, 0.1, False, False, 2, 0,,, 3)
-                    BattleScreen.BattleQuery.Add(Faint)
-                End If
 
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 2, -1, -1, -1, -1))
 
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index e2d56b0df..2dbd82486 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -225,17 +225,12 @@
             Dim ownModel As String = GetModelName(True)
             Dim oppModel As String = GetModelName(False)
 
-            Dim InitiallyVisibleOwn As Integer = 1
-            If Core.Player.ShowBattleAnimations <> 0 Then
-                InitiallyVisibleOwn = 0
-            End If
-
             If ownModel = "" Then
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}, InitiallyVisibleOwn), NPC)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}, 1), NPC)
                 OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 13) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
                 OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, WildPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
-                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 13) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, InitiallyVisibleOwn), ModelEntity)
+                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 13) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, 1), ModelEntity)
             End If
 
             Screen.Level.Entities.Add(OwnPokemonNPC)
@@ -281,49 +276,10 @@
             Dim q3 As CameraQueryObject = New CameraQueryObject(New Vector3(14, 0, 11), New Vector3(14, 0, 15), 0.01F, 0.01F, MathHelper.PiOver2, MathHelper.PiOver2, 0.0F, 0.0F)
             q3.PassThis = True
 
+            Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
             Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
 
-            Me.BattleQuery.AddRange({cq, q1, q, q2, q22, q3, q4})
-
-            ' Ball is thrown
-            Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(Me.OwnPokemonNPC, False, Me.OwnPokemonModel)
-
-            If Core.Player.ShowBattleAnimations <> 0 Then
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                BallThrow.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
-
-                Dim BallThrowEntity As Entity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
-                BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
-
-                ' Ball Opens
-                BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
-
-                Dim SmokeSpawned As Integer = 0
-                Do
-                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
-
-                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
-
-                    Dim SmokeEntity As Entity = BallThrow.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F, 3)
-                    BallThrow.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
-
-                    Threading.Interlocked.Increment(SmokeSpawned)
-                Loop While SmokeSpawned <= 38
-            End If
-
-            ' Pokemon appears
-            BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
-            BallThrow.AnimationPlaySound(CStr(Me.OwnPokemon.Number), 4, 0,, True)
-
-            If Core.Player.ShowBattleAnimations <> 0 Then
-                '  Pokémon falls down
-                BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 3)
-            End If
-
-            Me.BattleQuery.Add(BallThrow)
+            Me.BattleQuery.AddRange({cq, q1, q, q2, q22, q3, q31, q4})
 
             Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
 
@@ -404,7 +360,7 @@
             Dim oppModel As String = GetModelName(False)
 
             Dim InitiallyVisibleOwn As Integer = 1
-            If Core.Player.ShowBattleAnimations <> 0 Then
+            If IsPVPBattle = True AndAlso Core.Player.ShowBattleAnimations <> 0 Then
                 InitiallyVisibleOwn = 0
             End If
 
@@ -420,7 +376,7 @@
             Screen.Level.Entities.Add(OwnPokemonModel)
 
             Dim InitiallyVisibleOpp As Integer = 1
-            If Core.Player.ShowBattleAnimations <> 0 Then
+            If IsPVPBattle = True AndAlso Core.Player.ShowBattleAnimations <> 0 Then
                 InitiallyVisibleOpp = 0
             End If
 
@@ -500,12 +456,17 @@
 
             Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
 
-            Me.BattleQuery.AddRange({cq, q, q1, BallThrowOpp, q2, q3, q4})
+            If IsPVPBattle = True AndAlso Core.Player.ShowBattleAnimations = 0 Then
+                Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
+                Me.BattleQuery.AddRange({cq, q, q1, BallThrowOpp, q2, q3, q31, q4})
+            Else
+                Me.BattleQuery.AddRange({cq, q, q1, BallThrowOpp, q2, q3, q4})
+            End If
 
-            ' Ball is thrown
-            Dim BallThrowOwn As AnimationQueryObject = New AnimationQueryObject(Me.OwnPokemonNPC, False, Me.OwnPokemonModel)
+            If IsPVPBattle = True AndAlso Core.Player.ShowBattleAnimations <> 0 Then
+                ' Ball is thrown
+                Dim BallThrowOwn As AnimationQueryObject = New AnimationQueryObject(Me.OwnPokemonNPC, False, Me.OwnPokemonModel)
 
-            If Core.Player.ShowBattleAnimations <> 0 Then
                 BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
                 BallThrowOwn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
@@ -529,19 +490,17 @@
 
                     Threading.Interlocked.Increment(SmokeSpawned)
                 Loop While SmokeSpawned <= 38
-            End If
 
-            ' Pokemon appears
-            BallThrowOwn.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
-            BallThrowOwn.AnimationPlaySound(CStr(Me.OwnPokemon.Number), 4, 0,, True)
 
-            If Core.Player.ShowBattleAnimations <> 0 Then
+                ' Pokemon appears
+                BallThrowOwn.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
+                BallThrowOwn.AnimationPlaySound(CStr(Me.OwnPokemon.Number), 4, 0,, True)
+
                 '  Pokémon falls down
                 BallThrowOwn.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 3)
+                Me.BattleQuery.Add(BallThrowOwn)
             End If
 
-            Me.BattleQuery.Add(BallThrowOwn)
-
             Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
 
             Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16)
@@ -730,17 +689,12 @@
             Dim ownModel As String = GetModelName(True)
             Dim oppModel As String = GetModelName(False)
 
-            Dim InitiallyVisibleOwn As Integer = 1
-            If Core.Player.ShowBattleAnimations <> 0 Then
-                InitiallyVisibleOwn = 0
-            End If
-
             If ownModel = "" Then
-                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}, InitiallyVisibleOwn), NPC)
+                OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", True, New Vector3(1), 1, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}, 1), NPC)
                 OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 0, "Models\Bulbasaur\Normal", False, New Vector3(1), 0, "", "", New Vector3(0), Nothing), ModelEntity)
             Else
                 OwnPokemonNPC = CType(Entity.GetNewEntity("NPC", New Vector3(12, 0, 13) + BattleMapOffset, {Nothing}, {0, 0}, False, New Vector3(0), New Vector3(1), BaseModel.BillModel, 0, "", False, New Vector3(1), 0, "", "", New Vector3(0), {PokemonForms.GetOverworldSpriteName(OwnPokemon), 3, OwnPokemon.GetDisplayName(), 0, True, "Still", New List(Of Rectangle)}), NPC)
-                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, InitiallyVisibleOwn), ModelEntity)
+                OwnPokemonModel = CType(Entity.GetNewEntity("ModelEntity", New Vector3(12, -0.5F, 12.5F) + BattleMapOffset, {}, {}, False, New Vector3(MathHelper.Pi * 0.5F, MathHelper.Pi * 0.5F, 0), New Vector3(0.07F), BaseModel.BlockModel, 1, ownModel, True, New Vector3(1), 0, "", "", New Vector3(0), Nothing, 1), ModelEntity)
             End If
 
             Screen.Level.Entities.Add(OwnPokemonNPC)
@@ -787,46 +741,6 @@
 
             Me.BattleQuery.AddRange({cq, q1, q, q2, q22, q3, q4})
 
-            ' Ball is thrown
-            Dim BallThrowOwn As AnimationQueryObject = New AnimationQueryObject(Me.OwnPokemonNPC, False, Me.OwnPokemonModel)
-
-            If Core.Player.ShowBattleAnimations <> 0 Then
-                BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                BallThrowOwn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
-
-                Dim BallThrowEntity As Entity = BallThrowOwn.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
-                BallThrowOwn.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
-
-                ' Ball Opens
-                BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
-
-                Dim SmokeSpawned As Integer = 0
-                Do
-                    Dim SmokeDestination = New Vector3(CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10), CSng(Random.Next(-10, 10) / 10))
-
-                    Dim SmokeTexture As Texture2D = TextureManager.GetTexture("Textures\Battle\Smoke")
-
-                    Dim SmokeScale = New Vector3(CSng(Random.Next(2, 6) / 10))
-                    Dim SmokeSpeed = CSng(Random.Next(1, 3) / 20.0F)
-
-                    Dim SmokeEntity As Entity = BallThrowOwn.SpawnEntity(Nothing, SmokeTexture, SmokeScale, 1.0F, 3)
-                    BallThrowOwn.AnimationMove(SmokeEntity, True, SmokeDestination.X, SmokeDestination.Y, SmokeDestination.Z, SmokeSpeed, False, False, 3.0F, 0.0F)
-
-                    Threading.Interlocked.Increment(SmokeSpawned)
-                Loop While SmokeSpawned <= 38
-            End If
-
-            ' Pokemon appears
-            BallThrowOwn.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
-            BallThrowOwn.AnimationPlaySound(CStr(Me.OwnPokemon.Number), 4, 0,, True)
-
-            If Core.Player.ShowBattleAnimations <> 0 Then
-                '  Pokémon falls down
-                BallThrowOwn.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 3)
-            End If
-
-            Me.BattleQuery.Add(BallThrowOwn)
-
             Dim q5 As ToggleMenuQueryObject = New ToggleMenuQueryObject(Me.BattleMenu.Visible)
 
             Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16)
diff --git a/P3D/Pokemon/Attacks/Grass/Absorb.vb b/P3D/Pokemon/Attacks/Grass/Absorb.vb
index b728851a3..efd2552a5 100644
--- a/P3D/Pokemon/Attacks/Grass/Absorb.vb
+++ b/P3D/Pokemon/Attacks/Grass/Absorb.vb
@@ -94,14 +94,14 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
-            Dim maxAmount As Integer = 8
+            Dim maxAmount As Integer = 12
             Dim currentAmount As Integer = 0
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Grass\Absorb", 0, 0)
             While currentAmount <= maxAmount
-                Dim yPos As Single = CSng(Random.NextDouble() * 0.5)
-                Dim zPos As Single = CSng(Random.Next(-5, 5) * 0.15)
-                Dim AbsorbEntity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Grass\Absorb"), New Vector3(0.35F), 1)
-                MoveAnimation.AnimationMove(AbsorbEntity, True, -1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount), 0.0, 0.1, 0.5)
+                Dim yPos As Single = CSng(Random.Next(-1, 3) * 0.15)
+                Dim zPos As Single = CSng(Random.Next(-3, 3) * 0.15)
+                Dim AbsorbEntity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Grass\Absorb"), New Vector3(0.35F), 1, CSng(currentAmount * 0.8))
+                MoveAnimation.AnimationMove(AbsorbEntity, True, -1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount * 0.8), 0.0, 0.1, 0.5,, 0.005F)
 
                 Threading.Interlocked.Increment(currentAmount)
             End While
diff --git a/P3D/Screens/BattleIntroScreen.vb b/P3D/Screens/BattleIntroScreen.vb
index 3e5bd3c49..121fdaeb2 100644
--- a/P3D/Screens/BattleIntroScreen.vb
+++ b/P3D/Screens/BattleIntroScreen.vb
@@ -455,7 +455,7 @@
         If Animations.Count = 0 Then
             Animations.Add(New Rectangle(CInt(Core.windowSize.Width / 2 - (Core.windowSize.Width / 100 / 2)), CInt(Core.windowSize.Height / 2 - (Core.windowSize.Height / 100 / 2)), CInt(Core.windowSize.Width / 100), CInt(Core.windowSize.Height / 100)))
         Else
-            Dim Speed As Integer = CInt(Me.duration.TotalMilliseconds / Core.windowSize.Height * 6)
+            Dim Speed As Integer = CInt(Me.duration.TotalMilliseconds / Core.windowSize.Height * 3)
             If Animations(0).Height >= Core.windowSize.Height + 128 Then
                 ready = True
             End If
@@ -476,10 +476,10 @@
         If Animations.Count = 0 Then
             Animations.Add(New Rectangle(0, 0, Core.windowSize.Width, Core.windowSize.Height))
         Else
-            If value >= Core.windowSize.Height / 2 - 4 Then
+            If value >= Core.windowSize.Height / 2 + 4 Then
                 ready = True
             Else
-                value += CInt(Math.Ceiling(Me.duration.TotalMilliseconds / Core.windowSize.Height * 3))
+                value += CInt(Math.Ceiling(Me.duration.TotalMilliseconds / Core.windowSize.Height))
             End If
         End If
     End Sub

From dc9ec6bd23a11838b663fb1cbf3192f4ad52e819 Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Sat, 6 Nov 2021 12:03:55 +0100
Subject: [PATCH 19/57] Fixed mistakes in Stat Animations + Updated Pound
 animation + Improved Tackle animation

---
 P3D/Battle/BattleSystemV2/Battle.vb     | 4 ++--
 P3D/Battle/BattleSystemV2/BattleMenu.vb | 8 ++++----
 P3D/Pokemon/Attacks/Normal/Pound.vb     | 2 +-
 P3D/Pokemon/Attacks/Normal/Tackle.vb    | 2 +-
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 3e1b9971a..d01e74b6c 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -3434,7 +3434,7 @@
                     Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
 
 
-                    StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                    StatAnimation.AnimationMove(StatEntity, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                     Threading.Interlocked.Increment(currentAmount)
                 End While
                 BattleScreen.BattleQuery.Add(StatAnimation)
@@ -3717,7 +3717,7 @@
                     Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
 
 
-                    StatAnimation.AnimationMove(Nothing, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                    StatAnimation.AnimationMove(StatEntity, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                     Threading.Interlocked.Increment(currentAmount)
                 End While
                 BattleScreen.BattleQuery.Add(StatAnimation)
diff --git a/P3D/Battle/BattleSystemV2/BattleMenu.vb b/P3D/Battle/BattleSystemV2/BattleMenu.vb
index 870ecb4e9..16b265fa8 100644
--- a/P3D/Battle/BattleSystemV2/BattleMenu.vb
+++ b/P3D/Battle/BattleSystemV2/BattleMenu.vb
@@ -384,7 +384,7 @@
                 Core.SpriteBatch.Draw(Me.IconUnselected, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 132 + Index * 96, 48, 48), Color.White)
                 If isSelected = True Then
                     Core.SpriteBatch.Draw(Me.IconSelected, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 132 + Index * 96, 48, 48), New Color(255, 255, 255, (SelExtended + AllExtended)))
-                    Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Text, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 86, 144 + Index * 96), New Color(0, 0, 0, (SelExtended + AllExtended)))
+                    Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Text, New Vector2(CInt(Core.ScreenSize.Width - (AllExtended + extraExtended) + 86), CInt(144 + Index * 96)), New Color(0, 0, 0, (SelExtended + AllExtended)))
                 Else
                     If IconFading > 0 Then
                         Core.SpriteBatch.Draw(Me.IconSelected, New Rectangle(Core.ScreenSize.Width - (AllExtended) + 28, 132 + Index * 96, 48, 48), New Color(255, 255, 255, IconFading))
@@ -471,10 +471,10 @@
                     Dim ppColor As Color = GetPPColor()
                     ppColor.A = CByte((extraExtended + AllExtended - deductAlpha).Clamp(0, 255))
 
-                    Core.SpriteBatch.DrawString(FontManager.MiniFont, Me.Move.CurrentPP & "/" & Me.Move.MaxPP, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 150 + Index * 96), ppColor)
-                    Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.Name, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 86, 144 + Index * 96), New Color(0, 0, 0, (SelExtended + AllExtended) - deductAlpha))
+                    Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.CurrentPP & "/" & Me.Move.MaxPP, New Vector2(CInt(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28), CInt(152 + Index * 96)), ppColor)
+                    Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.Name, New Vector2(CInt(Core.ScreenSize.Width - (AllExtended + extraExtended) + 86), CInt(132 + Index * 96)), New Color(0, 0, 0, (SelExtended + AllExtended) - deductAlpha))
                 Else
-                    Core.SpriteBatch.DrawString(FontManager.MiniFont, Me.Move.Name, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 150 + Index * 96), New Color(0, 0, 0, 255 - (extraExtended + AllExtended) - deductAlpha))
+                    Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.Name, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 152 + Index * 96), New Color(0, 0, 0, 255 - (extraExtended + AllExtended) - deductAlpha))
                 End If
             End Sub
 
diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index b3441945a..8b4525c2b 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -58,7 +58,7 @@
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
-            Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 3)
+            Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Pound"), New Vector3(0.5F), 1, 0, 3)
             MoveAnimation.AnimationFade(PoundEntity, True, 1.0F, False, 0.0F, 3, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Normal/Tackle.vb b/P3D/Pokemon/Attacks/Normal/Tackle.vb
index 9179a9538..9db1f6f88 100644
--- a/P3D/Pokemon/Attacks/Normal/Tackle.vb
+++ b/P3D/Pokemon/Attacks/Normal/Tackle.vb
@@ -62,7 +62,7 @@
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Tackle", 0, 0)
-            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, 0, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(0.5F), 1.0F, 0, 2)
+            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(0.5F), 1.0F, 0, 2)
             MoveAnimation.AnimationFade(SpawnEntity, True, 1.0F, False, 0.0F, 2, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub

From 71cdb5e0c04e28532a3e0715e41480d7de28bd1b Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Sat, 6 Nov 2021 18:22:17 +0100
Subject: [PATCH 20/57] Added Paralysis Animation

---
 P3D/Battle/BattleSystemV2/Battle.vb           |  72 +++++++++++++++++-
 .../Textures/Battle/Electric/Sparks.png       | Bin 0 -> 395 bytes
 P3D/P3D.vbproj                                |   3 +
 3 files changed, 72 insertions(+), 3 deletions(-)
 create mode 100644 P3D/Content/Textures/Battle/Electric/Sparks.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index d01e74b6c..6cef7836a 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1122,14 +1122,20 @@
             'p: the attacking pokemon
             'op: the target pokemon
             Dim p As Pokemon
+            Dim pNPC As NPC
             Dim op As Pokemon
+            Dim opNPC As NPC
             If own Then
                 p = BattleScreen.OwnPokemon
                 op = BattleScreen.OppPokemon
+                pNPC = BattleScreen.OwnPokemonNPC
+                opNPC = BattleScreen.OppPokemonNPC
                 BattleScreen.FieldEffects.OwnLastMove = moveUsed
             Else
                 p = BattleScreen.OppPokemon
                 op = BattleScreen.OwnPokemon
+                pNPC = BattleScreen.OppPokemonNPC
+                opNPC = BattleScreen.OwnPokemonNPC
                 BattleScreen.FieldEffects.OppLastMove = moveUsed
             End If
             If WildHasEscaped Then
@@ -1405,7 +1411,36 @@
 
             If p.Status = Pokemon.StatusProblems.Paralyzed Then
                 If Core.Random.Next(0, 4) = 0 Then
-                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+                    If Core.Player.ShowBattleAnimations <> 0 Then
+                        Dim ParalyzedAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+
+                        ParalyzedAnimation.AnimationPlaySound("Battle\Effects\Paralyzed", 0, 0)
+                        Dim maxAmount As Integer = 4
+                        Dim currentAmount As Integer = 0
+                        While currentAmount <= maxAmount
+                            Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(0, 0, 16, 16), "")
+                            Dim xPos = CSng(Random.Next(-4, 4) / 8)
+                            Dim zPos = CSng(Random.Next(-4, 4) / 8)
+
+                            Dim Position As New Vector3(xPos, -0.25, zPos)
+                            Dim Destination As New Vector3(xPos - xPos * 2, 0, zPos - zPos * 2)
+                            Dim Scale As New Vector3(0.25F)
+                            Dim startDelay As Double = 5.0 * Random.NextDouble()
+                            Dim ShockEntity = ParalyzedAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+                            ParalyzedAnimation.AnimationMove(ShockEntity, True, Destination.X, Destination.Y, Destination.Z, 0.025F, False, True, CSng(startDelay), 0.0F)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 1)
+
+                            Threading.Interlocked.Increment(currentAmount)
+                        End While
+
+                        BattleScreen.BattleQuery.Add(ParalyzedAnimation)
+                    Else
+                        BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+                    End If
                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is fully paralyzed!" & Environment.NewLine & "It cannot move!"))
                     Exit Sub
                 End If
@@ -2873,7 +2908,9 @@
         Public Function InflictParalysis(ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String) As Boolean
             Dim p As Pokemon = BattleScreen.OwnPokemon
             Dim op As Pokemon = BattleScreen.OppPokemon
+            Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
             If own = False Then
+                pNPC = BattleScreen.OppPokemonNPC
                 p = BattleScreen.OppPokemon
                 op = BattleScreen.OwnPokemon
             End If
@@ -2934,7 +2971,36 @@
                             'Works!
                             p.Status = Pokemon.StatusProblems.Paralyzed
                             ChangeCameraAngle(1, own, BattleScreen)
-                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                Dim ParalyzedAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+
+                                ParalyzedAnimation.AnimationPlaySound("Battle\Effects\Paralyzed", 0, 0)
+                                Dim maxAmount As Integer = 4
+                                Dim currentAmount As Integer = 0
+                                While currentAmount <= maxAmount
+                                    Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(0, 0, 16, 16), "")
+                                    Dim xPos = CSng(Random.Next(-4, 4) / 8)
+                                    Dim zPos = CSng(Random.Next(-4, 4) / 8)
+
+                                    Dim Position As New Vector3(xPos, -0.25, zPos)
+                                    Dim Destination As New Vector3(xPos - xPos * 2, 0, zPos - zPos * 2)
+                                    Dim Scale As New Vector3(0.25F)
+                                    Dim startDelay As Double = 5.0 * Random.NextDouble()
+                                    Dim ShockEntity = ParalyzedAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+                                    ParalyzedAnimation.AnimationMove(ShockEntity, False, Destination.X, Destination.Y, Destination.Z, 0.025F, False, True, CSng(startDelay), 0.0F)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, True, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 0)
+
+                                    Threading.Interlocked.Increment(currentAmount)
+                                End While
+
+                                BattleScreen.BattleQuery.Add(ParalyzedAnimation)
+                            Else
+                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+                            End If
                             Select Case message
                                 Case "" 'Print default message only
                                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is paralyzed!" & Environment.NewLine & "It can't move!"))
@@ -7352,7 +7418,7 @@
                 End If
                 ' Pokemon appears
                 BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
-                    BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+                BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     '  Pokémon falls down
                     BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 4)
diff --git a/P3D/Content/Textures/Battle/Electric/Sparks.png b/P3D/Content/Textures/Battle/Electric/Sparks.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c0bd76cbcf60d508a167d8028fd663d8814364f
GIT binary patch
literal 395
zcmV;60d)R}P)<h;3K|Lk000e1NJLTq003YB000mO1^@s6>AHIP00009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT0003N
zNkl<ZSi|j@K@x)?3`LujXYmxC-BWlLS9H~mwIL?(KhTaW9U<YrBtRsk^tgvU_I3Uc
zXIeHv+Ylsxqr*pMbKj%uUd=_>KMP+n_x10U?=S#4r*p&FjJ8%pe3boZ*(Bmi?q3Un
zv?@WKbgs=5R5{t#Iawlm0ccrxo-3`-04o}p0HXGzK6uKcwm%a9LlBPuEb&<YygIo7
zuugw(l=O)H7PlVF{ucmd6neyE1MnW^EyQmMAeyE<?X!aK5&*jfk5~ej06hD71E@Jj
z{sjOs0KGaD11Py6L?2*iA(+7hYei@R*Iv&`GNt4pgbbE$0BWA%sCqhzeRd<xe27Jx
pO2{&TXofM$*zn!Z9{r<VA5ZIKr|=CXV-^4a002ovPDHLkV1j2Ioh<+W

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 28784aeb7..10cad480f 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -15373,6 +15373,9 @@
     <Content Include="Content\Sounds\Use_Repel.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\Electric\Sparks.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\Fire\Ember.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

From 51b9eb649a50cabebbb4e5cf71886c5fc6b6b2c2 Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Sun, 21 Nov 2021 12:59:21 +0100
Subject: [PATCH 21/57] Fix for missing texture in Poisoned & Burned animations
 as well as poison sting.

---
 P3D/Battle/BattleSystemV2/Battle.vb       | 100 +++++++++++-----------
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb |  18 ++--
 2 files changed, 59 insertions(+), 59 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 6cef7836a..6599327ce 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2748,11 +2748,11 @@
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(-0.25), CSng(-0.25), CSng(-0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(-0.25), CSng(-0.25), CSng(-0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
 
                                 Select Case message
@@ -5461,19 +5461,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 End If
@@ -5489,19 +5489,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 End If
@@ -5526,10 +5526,10 @@
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
                                 Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25F, 0.25F, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
                             End If
                             'Actual damage
@@ -6264,19 +6264,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 End If
@@ -6292,19 +6292,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                     'Actual damage
@@ -6327,11 +6327,11 @@
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
-                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32)), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32)), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32)), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32)), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32)), 5, 2)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
                             End If
                             'Actual damage
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 8104dbcd4..9393f3042 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -84,21 +84,21 @@
 
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 
-            Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 1, 1)
+            Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 2, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
 
-            Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 2, 1)
+            Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 3, 1)
-            MoveAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 3, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-            Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32)), New Vector3(0.5F), 1, 3, 1)
+            Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 3, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 4, 1)
-            MoveAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32)), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 4, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32)), 5, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 5, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub

From e9d4cacd3c41c50bc588898f0d8c1581154e93e4 Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Sun, 21 Nov 2021 15:00:39 +0100
Subject: [PATCH 22/57] Fix for faint animation

---
 P3D/Battle/BattleSystemV2/Battle.vb | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 6599327ce..b3c1bedc4 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2585,10 +2585,12 @@
             BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
             If BattleScreen.IsTrainerBattle = False AndAlso Core.Player.ShowBattleAnimations <> 0 Then
-                Dim FaintAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
-                FaintAnimation.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                FaintAnimation.AnimationMove(Nothing, False, 0, -1, 0, 0.05, False, False, 2, 0,,, 3)
-                BattleScreen.BattleQuery.Add(FaintAnimation)
+                If own = False Then
+                    Dim FaintAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True, BattleScreen.OppPokemonModel)
+                    FaintAnimation.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
+                    FaintAnimation.AnimationMove(Nothing, False, 0, -1, 0, 0.05, False, False, 2, 0,,, 3)
+                    BattleScreen.BattleQuery.Add(FaintAnimation)
+                End If
             End If
 
             Dim str = p.AdditionalData.ToLower()

From bac3d2b2929527c63f64ebd2a12f11b62956ebc7 Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Sun, 21 Nov 2021 15:01:38 +0100
Subject: [PATCH 23/57] Gave status effect textures a separate folder not
 related to a specific type.

---
 P3D/Battle/BattleSystemV2/Battle.vb           | 142 ++++++++++++------
 .../Textures/Battle/StatusEffect/Confused.png | Bin 0 -> 712 bytes
 .../Battle/StatusEffect/Paralyzed.png         | Bin 0 -> 395 bytes
 .../Textures/Battle/StatusEffect/Poisoned.png | Bin 0 -> 372 bytes
 P3D/P3D.vbproj                                |   9 ++
 5 files changed, 103 insertions(+), 48 deletions(-)
 create mode 100644 P3D/Content/Textures/Battle/StatusEffect/Confused.png
 create mode 100644 P3D/Content/Textures/Battle/StatusEffect/Paralyzed.png
 create mode 100644 P3D/Content/Textures/Battle/StatusEffect/Poisoned.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index b3c1bedc4..84eb2270d 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1418,7 +1418,7 @@
                         Dim maxAmount As Integer = 4
                         Dim currentAmount As Integer = 0
                         While currentAmount <= maxAmount
-                            Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(0, 0, 16, 16), "")
+                            Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(0, 0, 16, 16), "")
                             Dim xPos = CSng(Random.Next(-4, 4) / 8)
                             Dim zPos = CSng(Random.Next(-4, 4) / 8)
 
@@ -1428,11 +1428,11 @@
                             Dim startDelay As Double = 5.0 * Random.NextDouble()
                             Dim ShockEntity = ParalyzedAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
                             ParalyzedAnimation.AnimationMove(ShockEntity, True, Destination.X, Destination.Y, Destination.Z, 0.025F, False, True, CSng(startDelay), 0.0F)
-                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 1)
-                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 1)
-                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 1)
-                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 1)
-                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 1)
+                            ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 1)
 
                             Threading.Interlocked.Increment(currentAmount)
                         End While
@@ -2980,7 +2980,7 @@
                                 Dim maxAmount As Integer = 4
                                 Dim currentAmount As Integer = 0
                                 While currentAmount <= maxAmount
-                                    Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(0, 0, 16, 16), "")
+                                    Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(0, 0, 16, 16), "")
                                     Dim xPos = CSng(Random.Next(-4, 4) / 8)
                                     Dim zPos = CSng(Random.Next(-4, 4) / 8)
 
@@ -2990,11 +2990,11 @@
                                     Dim startDelay As Double = 5.0 * Random.NextDouble()
                                     Dim ShockEntity = ParalyzedAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
                                     ParalyzedAnimation.AnimationMove(ShockEntity, False, Destination.X, Destination.Y, Destination.Z, 0.025F, False, True, CSng(startDelay), 0.0F)
-                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 0)
-                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 0)
-                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 0)
-                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 0)
-                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, True, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 0)
+                                    ParalyzedAnimation.AnimationChangeTexture(ShockEntity, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Paralyzed", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 0)
 
                                     Threading.Interlocked.Increment(currentAmount)
                                 End While
@@ -3304,10 +3304,14 @@
 
         Public Function InflictConfusion(ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String) As Boolean
             Dim p As Pokemon = BattleScreen.OwnPokemon
+            Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
             Dim op As Pokemon = BattleScreen.OppPokemon
+            Dim opNPC As NPC = BattleScreen.OppPokemonNPC
             If own = False Then
                 p = BattleScreen.OppPokemon
+                pNPC = BattleScreen.OppPokemonNPC
                 op = BattleScreen.OwnPokemon
+                opNPC = BattleScreen.OwnPokemonNPC
             End If
 
             If p.HP <= 0 OrElse p.Status = Pokemon.StatusProblems.Fainted Then
@@ -3340,6 +3344,48 @@
                 Return False
             Else
                 'Works!
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    Dim ConfusionAnimation As New AnimationQueryObject(pNPC, Not own)
+
+                    ConfusionAnimation.AnimationPlaySound("Battle\Effects\Confused", 0, 0)
+                    Dim DuckEntity1 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
+                    Dim DuckEntity2 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
+                    Dim DuckEntity3 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 2, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 2, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 2, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 1)
+
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 4, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 4, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 4, 1)
+
+                    BattleScreen.BattleQuery.Add(ConfusionAnimation)
+                End If
                 p.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
                 Select Case message
                     Case "" 'Print default message only
@@ -5463,19 +5509,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 End If
@@ -5491,19 +5537,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 End If
@@ -6266,19 +6312,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 End If
@@ -6294,19 +6340,19 @@
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                     'Actual damage
diff --git a/P3D/Content/Textures/Battle/StatusEffect/Confused.png b/P3D/Content/Textures/Battle/StatusEffect/Confused.png
new file mode 100644
index 0000000000000000000000000000000000000000..be3416b85b26d883e2e43787729a8e8d1b10553a
GIT binary patch
literal 712
zcmV;(0yq7MP)<h;3K|Lk000e1NJLTq000mG002M;1^@s66MgrV00009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT00070
zNkl<ZSi|j?KX#lj5XQf$Xx+snT{uFHz*eD57nR;B9KlCmE8|Y?QsOEcAxFR+W!!DK
zRFh&QGy)0Ow@#j4UexScV161j|2~MBam}JP1q`oG?$1#H9guux+63^7<@%`>Au~X6
ztI+(??umPa<Y5Ic9EkDdY;-Z;RDsa}xYzT$M+H<E0mBQO-4$o!Ug3opH+l}R*NzI-
zSl586wnSmNIsi3*%Ki5N*2U230JH!~c%JxxXJTX#Kno!EJxP8r%`$NjB0b4~<Xa4Y
z^8;(f(OMV|#7HBrA&ggxX*jsJ0|+J*y{~e9Q^1&&D}5mx1!*io7=q06;Pr`%TZN|c
zA1pGUY37h+Kx;0hKv7%(u#Lo9rVh3P%;8Nlahgo?a=y{=USKLxdT|+`25=VvjAh)#
zD^b^g%1uZgraf^_j2u8O8i(Ay2Xwmt7$MmTAoUM&7KO(hvC1dyD`Ff?<;NYd5)DQ7
zVdH<jAI#dk7<<WwuN#}{Gci8t;5`dj2JDID)Rv?FY5=|~e=^CDmV7jNU{8$Fe}5@F
zkO6e+zyP32K;4N#lDZ(E8|)@@YT$-xc`nyrHO8V)=U{K=%GANagtogok+mcCc5VX|
z8ENlMrFH8&hh~F|!WyL8(3L&NboIV2SRQSAU!{Z$|LcQ4sSifLbi7>!h$PWAfSr|_
zB~D1O3!Si>%2VSK&@dkt5l9?RIoEYBAbmtDk3F$+#e>`d>{{0cwJ~gcfJ)8psy>hq
uaex*wRqeqKj#0`40Gsr|2uc5fKKKpc^)`nk-`D>D0000<MNUMnLSTY~=rwu(

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/StatusEffect/Paralyzed.png b/P3D/Content/Textures/Battle/StatusEffect/Paralyzed.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c0bd76cbcf60d508a167d8028fd663d8814364f
GIT binary patch
literal 395
zcmV;60d)R}P)<h;3K|Lk000e1NJLTq003YB000mO1^@s6>AHIP00009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT0003N
zNkl<ZSi|j@K@x)?3`LujXYmxC-BWlLS9H~mwIL?(KhTaW9U<YrBtRsk^tgvU_I3Uc
zXIeHv+Ylsxqr*pMbKj%uUd=_>KMP+n_x10U?=S#4r*p&FjJ8%pe3boZ*(Bmi?q3Un
zv?@WKbgs=5R5{t#Iawlm0ccrxo-3`-04o}p0HXGzK6uKcwm%a9LlBPuEb&<YygIo7
zuugw(l=O)H7PlVF{ucmd6neyE1MnW^EyQmMAeyE<?X!aK5&*jfk5~ej06hD71E@Jj
z{sjOs0KGaD11Py6L?2*iA(+7hYei@R*Iv&`GNt4pgbbE$0BWA%sCqhzeRd<xe27Jx
pO2{&TXofM$*zn!Z9{r<VA5ZIKr|=CXV-^4a002ovPDHLkV1j2Ioh<+W

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/StatusEffect/Poisoned.png b/P3D/Content/Textures/Battle/StatusEffect/Poisoned.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d45ad64df28e72f33b40a89d48e972860d3cf0c
GIT binary patch
literal 372
zcmeAS@N?(olHy`uVBq!ia0vp^3P7B|!3HF2lnQ15Db50q$YKTtZXpn6ymYtj4^U9L
z#5JNMI6tkVJh3R1!8tXjxUyIwxTG{CGhZPjKR@T-@`p7*W&b^0978hhy}fS8*Q_AY
z@bLJv7cWkncou4tbi6O7_3TAugIyOFZseSL?1RuoHGAdG%K6MK_m@n0aw-+584B)*
z3HY3_lewHRi?N9_vw}yc_RpKOb)kx@7;hH{o@BTdJu`Kk+X{xeSKfYOG-1x+P}jSC
znP>ld!zXGiP!j~ymbPbJHYi*@`A1LWj10lhhPUT`ue?8X;<wCoOn;&n{MaX?Es=!T
z$I!69LO8G4yKq%wNPB1W{qrA#=9p<NKFx4HHD*;Z?;@#!EqbgG`KyiJ+BGP*r0sYo
y(lI$Ts;qhI)HVA$yejK{xw_0_1{!ui@-=JBi9Z3KyCy||%=UEkb6Mw<&;$U#(T+U;

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 10cad480f..3e257df4f 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -15409,6 +15409,15 @@
     <Content Include="Content\Textures\Battle\Smoke.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\StatusEffect\Confused.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\Textures\Battle\StatusEffect\Paralyzed.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\Textures\Battle\StatusEffect\Poisoned.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\chess.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

From 3bdc124a997e34e94505b042f0a18f4b0c08e8a0 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Fri, 26 Nov 2021 21:56:38 +0100
Subject: [PATCH 24/57] Bugfixes & Tweaks

* Growl displays correctly now
* The sound played with stat change animations is now timed correctly
* Stat change particles now fall straight down as intended
* Fixed incorrect texture for Confusion
* Stat Down texture is now blue and Stat Up texture is now orange/yellow
---
 P3D/Battle/BattleSystemV2/Battle.vb           |  82 +++++++++---------
 .../QueryObjects/AnimationQueryObject.vb      |  12 ++-
 .../Textures/Battle/StatChange/statDown.png   | Bin 234 -> 241 bytes
 .../Textures/Battle/StatChange/statUp.png     | Bin 241 -> 234 bytes
 P3D/Pokemon/Attacks/Normal/Growl.vb           |   8 +-
 5 files changed, 55 insertions(+), 47 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 84eb2270d..b1f6a348f 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -3348,41 +3348,37 @@
                     Dim ConfusionAnimation As New AnimationQueryObject(pNPC, Not own)
 
                     ConfusionAnimation.AnimationPlaySound("Battle\Effects\Confused", 0, 0)
-                    Dim DuckEntity1 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
-                    Dim DuckEntity2 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
-                    Dim DuckEntity3 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
+                    Dim DuckEntity1 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
+                    Dim DuckEntity2 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
+                    Dim DuckEntity3 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 2, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 2, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 2, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 1)
-
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 4, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 4, 1)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 64, 16, 16), ""), 4, 1)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
+                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
 
                     BattleScreen.BattleQuery.Add(ConfusionAnimation)
                 End If
@@ -3533,7 +3529,7 @@
 
             '***STAT INCREASE ANIMATION***
             If Core.Player.ShowBattleAnimations <> 0 Then
-                Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+                Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(Nothing, Not own)
                 Dim maxAmount As Integer = 20 * val
                 Dim currentAmount As Integer = 0
                 While currentAmount <= maxAmount
@@ -3542,19 +3538,19 @@
                     Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
                     Dim Position As New Vector3(xPos, -0.4, zPos)
-                    Dim Destination As New Vector3(xPos, 0.8, zPos)
+                    Dim Destination As New Vector3(xPos, 1.2, zPos)
                     Dim Scale As New Vector3(0.2F)
                     Dim startDelay As Double = 5.0 * Random.NextDouble()
-                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
-
+                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(pNPC.Position + Position, Texture, Scale, 1.0F, CSng(startDelay))
 
                     StatAnimation.AnimationMove(StatEntity, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                     Threading.Interlocked.Increment(currentAmount)
                 End While
+                StatAnimation.AnimationPlaySound("Battle\Effects\Stat_Raise", 0, 0)
                 BattleScreen.BattleQuery.Add(StatAnimation)
+            Else
+                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
             End If
-            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Raise", False))
-
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
                 Case 2
@@ -3816,7 +3812,7 @@
             End If
             '***STAT DECREASE ANIMATION***
             If Core.Player.ShowBattleAnimations <> 0 Then
-                Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+                Dim StatAnimation As AnimationQueryObject = New AnimationQueryObject(Nothing, Not own)
                 Dim maxAmount As Integer = 20 * val
                 Dim currentAmount As Integer = 0
                 While currentAmount <= maxAmount
@@ -3825,18 +3821,18 @@
                     Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
                     Dim Position As New Vector3(xPos, 0.8, zPos)
-                    Dim Destination As New Vector3(xPos, -0.4, zPos)
+                    Dim Destination As New Vector3(0, -1.2, 0)
                     Dim Scale As New Vector3(0.2F)
                     Dim startDelay As Double = 5.0 * Random.NextDouble()
-                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
-
-
+                    Dim StatEntity As Entity = StatAnimation.SpawnEntity(pNPC.Position + Position, Texture, Scale, 1.0F, CSng(startDelay))
                     StatAnimation.AnimationMove(StatEntity, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                     Threading.Interlocked.Increment(currentAmount)
                 End While
+                StatAnimation.AnimationPlaySound("Battle\Effects\Stat_Lower", 0, 0)
                 BattleScreen.BattleQuery.Add(StatAnimation)
+            Else
+                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Lower", False))
             End If
-            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Stat_Lower", False))
             Dim printMessage As String = p.GetDisplayName() & "'s " & statString
             Select Case val
                 Case 2
@@ -4103,14 +4099,14 @@
                         Dim startDelay As Double = 5.0 * Random.NextDouble()
                         Dim HealEntity As Entity = HealAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
 
-
                         HealAnimation.AnimationMove(HealEntity, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
                         Threading.Interlocked.Increment(currentAmount)
                     End While
+                    HealAnimation.AnimationPlaySound("Battle\Effects\Heal", 0, 0)
                     BattleScreen.BattleQuery.Add(HealAnimation)
+                Else
+                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Heal", False))
                 End If
-                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Heal", False))
-
                 If message <> "" Then
                     BattleScreen.BattleQuery.Add(New TextQueryObject(message))
                 End If
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index 5dda41573..b40f6f933 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -103,9 +103,17 @@
 		Public Function SpawnEntity(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Opacity As Single, Optional ByVal startDelay As Single = 0.0F, Optional ByVal endDelay As Single = 0.0F) As Entity
 			Dim NewPosition As Vector3
 			If Not Position = Nothing Then
-				NewPosition = CurrentEntity.Position + Position
+				If CurrentEntity IsNot Nothing Then
+					NewPosition = CurrentEntity.Position + Position
+				Else
+					NewPosition = Position
+				End If
 			Else
-				NewPosition = CurrentEntity.Position
+				If CurrentEntity IsNot Nothing Then
+					NewPosition = CurrentEntity.Position
+				Else
+					NewPosition = New Vector3(0, 0, 0)
+				End If
 			End If
 			Dim SpawnedEntity = New BattleAnimation3D(NewPosition, Texture, Scale, startDelay, endDelay, False)
 			SpawnedEntity.Opacity = Opacity
diff --git a/P3D/Content/Textures/Battle/StatChange/statDown.png b/P3D/Content/Textures/Battle/StatChange/statDown.png
index 44e7ba0409242e345a0af8a67b1a45622c3b066c..5b4326ff03cc65211babc811b91090390e76dc75 100644
GIT binary patch
delta 153
zcmV;K0A~N{0r3HlV1Il`L_t(I%VYfi|33pIfRUyKcsB0*zrEg_k!%ApH{Sd|-CunG
z4LJDn=YM-~cJd6!+<5bUfrA3WgaZ#4@VNrT0MEvq{}l`r7$Phb7$i6t7!)`d7#{p!
zV0iI^fnmjo2MiA`JYYZ%RO-5bs$noVqLJd1IPjT?7ytm2&=PCmj2|la00000NkvXX
Hu0mjf7xF<%

delta 146
zcmV;D0B!&A0qOyeV1IQ<L_t(I%VYfi|33pIfRUyK{50hJ&wl<pBl!kQl>E=0|9l_~
zIH>ra-Tpp#2K<~T`JW*pfq`Mh0tS4pKr!H_A?JUF1OWyH0}ciTiwFh=h6V^ev4Vl&
z!Vd<91s@pD1C_ciplTQll4ztfB@TRMA_f2exvOU3-CD-d01E&B07*qoM6N<$f&x@K
A?EnA(

diff --git a/P3D/Content/Textures/Battle/StatChange/statUp.png b/P3D/Content/Textures/Battle/StatChange/statUp.png
index 5b4326ff03cc65211babc811b91090390e76dc75..44e7ba0409242e345a0af8a67b1a45622c3b066c 100644
GIT binary patch
delta 146
zcmV;D0B!&A0qOyeV1IQ<L_t(I%VYfi|33pIfRUyK{50hJ&wl<pBl!kQl>E=0|9l_~
zIH>ra-Tpp#2K<~T`JW*pfq`Mh0tS4pKr!H_A?JUF1OWyH0}ciTiwFh=h6V^ev4Vl&
z!Vd<91s@pD1C_ciplTQll4ztfB@TRMA_f2exvOU3-CD-d01E&B07*qoM6N<$f&x@K
A?EnA(

delta 153
zcmV;K0A~N{0r3HlV1Il`L_t(I%VYfi|33pIfRUyKcsB0*zrEg_k!%ApH{Sd|-CunG
z4LJDn=YM-~cJd6!+<5bUfrA3WgaZ#4@VNrT0MEvq{}l`r7$Phb7$i6t7!)`d7#{p!
zV0iI^fnmjo2MiA`JYYZ%RO-5bs$noVqLJd1IPjT?7ytm2&=PCmj2|la00000NkvXX
Hu0mjf7xF<%

diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index 9558524c9..7ab2ed77b 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -66,8 +66,12 @@
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
 
             MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
-            Dim SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
-
+            Dim SoundwaveEntity As Entity
+            If BattleFlip = False Then
+                SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+            Else
+                SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+            End If
             MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 1, 1)
             MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), 2, 1)
             MoveAnimation.AnimationChangeTexture(SoundwaveEntity, True, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 3, 1)

From 8bbbb729a75ad22cb49f2505a61c455511d7e7a4 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Fri, 26 Nov 2021 21:59:52 +0100
Subject: [PATCH 25/57] Fix for a bug where you couldn't use certain items
 outside of battle

---
 P3D/Screens/Inventory/NewInventoryScreen.vb | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/P3D/Screens/Inventory/NewInventoryScreen.vb b/P3D/Screens/Inventory/NewInventoryScreen.vb
index 9d6c66594..425d907a0 100644
--- a/P3D/Screens/Inventory/NewInventoryScreen.vb
+++ b/P3D/Screens/Inventory/NewInventoryScreen.vb
@@ -821,16 +821,23 @@ Public Class NewInventoryScreen
         If Controls.Accept() AndAlso _items.Length > 0 Then
             Dim cItem As Item = Item.GetItemByID(_items(ItemIndex + PageIndex * 10).ItemID)
             SoundManager.PlaySound("select")
-            If cItem.CanBeUsedInBattle = True Then
+            If Me.PreScreen.Identification = Screen.Identifications.BattleScreen Then
+                If cItem.CanBeUsedInBattle = True Then
+                    _infoItemOptionSelection = 0
+                    _isInfoShowing = True
+                    SetInfoSettings()
+                    SetItemOptions()
+                Else
+                    TextBox.Show("This item can't~be used in Battle.")
+                End If
+            Else
                 _infoItemOptionSelection = 0
                 _isInfoShowing = True
                 SetInfoSettings()
                 SetItemOptions()
-            Else
-                TextBox.Show("This item can't~be used in Battle.")
             End If
-        End If
 
+        End If
         If Controls.Dismiss() Then
             SoundManager.PlaySound("select")
             _tabInControl = True

From 1ea2da7bb7324cd5a30cd19e4b81e0ed9c517deb Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Sun, 28 Nov 2021 11:03:55 +0100
Subject: [PATCH 26/57] Added Asleep animation, fixed some code errors I made.
 Also added sound effects when animations are disabled.

---
 P3D/Battle/BattleSystemV2/Battle.vb           |  97 +++++++++++++++++-
 P3D/Content/Sounds/Battle/Effects/Asleep.wav  | Bin 0 -> 99812 bytes
 .../Textures/Battle/StatusEffect/Asleep.png   | Bin 0 -> 290 bytes
 3 files changed, 95 insertions(+), 2 deletions(-)
 create mode 100644 P3D/Content/Sounds/Battle/Effects/Asleep.wav
 create mode 100644 P3D/Content/Textures/Battle/StatusEffect/Asleep.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index b1f6a348f..7bd5483c0 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1239,6 +1239,23 @@
                         End If
                     Else
                         If sleepTurns > 0 Then
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                Dim SleepAnimation As New AnimationQueryObject(pNPC, Not own)
+
+                                SleepAnimation.AnimationPlaySound("Battle\Effects\Asleep", 0, 0)
+                                Dim SleepEntity1 As Entity = SleepAnimation.SpawnEntity(New Vector3(0, 0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
+                                SleepAnimation.AnimationChangeTexture(SleepEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 16, 16, 16), ""), 1, 1)
+                                SleepAnimation.AnimationMove(SleepEntity1, True, 0, 0.5, 0.25, 0.01, False, False, 0, 0)
+
+                                Dim SleepEntity2 As Entity = SleepAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 1.5, 1)
+
+                                SleepAnimation.AnimationChangeTexture(SleepEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 16, 16, 16), ""), 2.5, 1)
+                                SleepAnimation.AnimationMove(SleepEntity2, True, 0, 0.5, 0.25, 0.01, False, False, 2, 0)
+
+                                BattleScreen.BattleQuery.Add(SleepAnimation)
+                            Else
+                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Asleep", False))
+                            End If
                             BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is fast asleep."))
                             Exit Sub
                         Else
@@ -1357,6 +1374,46 @@
                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is no longer confused!"))
                     p.RemoveVolatileStatus(Pokemon.VolatileStatus.Confusion)
                 Else
+                    If Core.Player.ShowBattleAnimations <> 0 Then
+                        Dim ConfusionAnimation As New AnimationQueryObject(pNPC, Not own)
+
+                        ConfusionAnimation.AnimationPlaySound("Battle\Effects\Confused", 0, 0)
+                        Dim DuckEntity1 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
+                        Dim DuckEntity2 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
+                        Dim DuckEntity3 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
+
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
+
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
+
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
+
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
+
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
+
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
+
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
+                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
+
+                        BattleScreen.BattleQuery.Add(ConfusionAnimation)
+                    Else
+                        BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Confused", False))
+                    End If
                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is confused!"))
                     'Previously 'If Core.Random.Next(0, 2) = 0 Then' (Updated to gen 7's 33% instead of 50%)
                     If Core.Random.Next(0, 3) = 0 Then
@@ -3043,10 +3100,14 @@
 
         Public Function InflictSleep(ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal turnsPreset As Integer, ByVal message As String, ByVal cause As String) As Boolean
             Dim p As Pokemon = BattleScreen.OwnPokemon
+            Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
             Dim op As Pokemon = BattleScreen.OppPokemon
+            Dim opNPC As NPC = BattleScreen.OppPokemonNPC
             If own = False Then
                 p = BattleScreen.OppPokemon
+                pNPC = BattleScreen.OppPokemonNPC
                 op = BattleScreen.OwnPokemon
+                opNPC = BattleScreen.OwnPokemonNPC
             End If
 
             If p.HP <= 0 OrElse p.Status = Pokemon.StatusProblems.Fainted Then
@@ -3132,6 +3193,23 @@
                                         Return False
                                     Else
                                         'Works!
+                                        If Core.Player.ShowBattleAnimations <> 0 Then
+                                            Dim SleepAnimation As New AnimationQueryObject(pNPC, Not own)
+
+                                            SleepAnimation.AnimationPlaySound("Battle\Effects\Asleep", 0, 0)
+                                            Dim SleepEntity1 As Entity = SleepAnimation.SpawnEntity(New Vector3(0, 0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 1)
+                                            SleepAnimation.AnimationChangeTexture(SleepEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 16, 16, 16), ""), 1, 1)
+                                            SleepAnimation.AnimationMove(SleepEntity1, True, 0, 0.5, 0.25, 0.01, False, False, 0, 0)
+
+                                            Dim SleepEntity2 As Entity = SleepAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 1.5, 1)
+
+                                            SleepAnimation.AnimationChangeTexture(SleepEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Asleep", New Rectangle(0, 16, 16, 16), ""), 2.5, 1)
+                                            SleepAnimation.AnimationMove(SleepEntity2, True, 0, 0.5, 0.25, 0.01, False, False, 2, 0)
+
+                                            BattleScreen.BattleQuery.Add(SleepAnimation)
+                                        Else
+                                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Asleep", False))
+                                        End If
                                         If own = True Then
                                             BattleScreen.FieldEffects.OwnBideCounter = 0
                                             BattleScreen.FieldEffects.OwnBideDamage = 0
@@ -3381,6 +3459,8 @@
                     ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
 
                     BattleScreen.BattleQuery.Add(ConfusionAnimation)
+                Else
+                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Confused", False))
                 End If
                 p.AddVolatileStatus(Pokemon.VolatileStatus.Confusion)
                 Select Case message
@@ -5520,6 +5600,8 @@
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                Else
+                                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
                                 End If
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP / 8), True, True, BattleScreen, "The poison hurt " & .OwnPokemon.GetDisplayName() & ".", "poison")
@@ -5548,6 +5630,8 @@
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                Else
+                                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
                                 End If
                                 'Actual damage
                                 ReduceHP(CInt(.OwnPokemon.MaxHP * multiplier), True, True, BattleScreen, "The toxic hurt " & .OwnPokemon.GetDisplayName() & ".", "badpoison")
@@ -5575,6 +5659,8 @@
                                 BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
                                 BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
+                            Else
+                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Burned", False))
                             End If
                             'Actual damage
                             ReduceHP(reduceAmount, True, True, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
@@ -6323,6 +6409,8 @@
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                Else
+                                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
                                 End If
                                 'Actual damage
                                 ReduceHP(CInt(.OppPokemon.MaxHP / 8), False, False, BattleScreen, "The poison hurt " & .OppPokemon.GetDisplayName() & ".", "poison")
@@ -6351,9 +6439,12 @@
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
-                                    'Actual damage
-                                    ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
+                                Else
+                                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
                                 End If
+                                'Actual damage
+                                ReduceHP(CInt(.OppPokemon.MaxHP * multiplier), False, False, BattleScreen, "The toxic hurt " & .OppPokemon.GetDisplayName() & ".", "badpoison")
+
                             End If
                         End If
                     End If
@@ -6377,6 +6468,8 @@
                                 BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
                                 BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
+                            Else
+                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Burned", False))
                             End If
                             'Actual damage
                             ReduceHP(reduceAmount, False, False, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by the burn.", "burn")
diff --git a/P3D/Content/Sounds/Battle/Effects/Asleep.wav b/P3D/Content/Sounds/Battle/Effects/Asleep.wav
new file mode 100644
index 0000000000000000000000000000000000000000..2807c5619284d4b8f3fe29e7e696e63fd16a26bd
GIT binary patch
literal 99812
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

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/StatusEffect/Asleep.png b/P3D/Content/Textures/Battle/StatusEffect/Asleep.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a350b9bb0a565c6be795d636c0e602205903636
GIT binary patch
literal 290
zcmeAS@N?(olHy`uVBq!ia0vp^0zj<5!3HFyJAa%3Qk(@Ik;M!Q+(IDCc<FB4ACO#$
zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{LzR)_S@)hIkx*J7uHbAp;)Q
z{aW&}a*cvB6m+#KnZmqIv-BL`xWF2^=p<{h_9R8w^y_u!r!CDF63mIb!n&<NpZ(wu
z28Nc;b7!&6S@c9ezFcUX@ZXRo*59fY8#GTm+_c2(AkV`s?h<)d)HiaQaqe*mYm!+p
z&1h<Of@Ex}@p27``4^hLik(rPetk=V{W-oj%P%&*)%R_*bk&sK^v;PfJND%Lm(Cw@
jxv%G6_#pf@a7Ntz{pSy+KmO?obU1^jtDnm{r-UW|m2hqU

literal 0
HcmV?d00001


From b0c4ade6b19f86c5aa3c7f94e4ea6fedb089d23f Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Sun, 28 Nov 2021 12:13:09 +0100
Subject: [PATCH 27/57] Add the new textures and sounds to the project solution

---
 P3D/P3D.vbproj | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 3e257df4f..7367fed6b 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14704,6 +14704,9 @@
     <Content Include="Content\Sounds\Battle\Damage\SuperEffective.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Effects\Asleep.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Effects\Burned.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -14713,6 +14716,9 @@
     <Content Include="Content\Sounds\Battle\Effects\Frozen.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Effects\Heal.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Effects\Paralyzed.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -15409,6 +15415,9 @@
     <Content Include="Content\Textures\Battle\Smoke.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\StatusEffect\Asleep.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\StatusEffect\Confused.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

From c85ccd89ae9ca444e59605f53903446f7807fca7 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Fri, 3 Dec 2021 16:01:54 +0100
Subject: [PATCH 28/57] Added Frozen animation and Infatuated sound effect

---
 P3D/Battle/BattleSystemV2/Battle.vb           |  28 +++++++++++++++++-
 P3D/Content/Sounds/Battle/Effects/Frozen.wav  | Bin 49474 -> 70728 bytes
 .../Sounds/Battle/Effects/Infatuated.wav      | Bin 0 -> 143648 bytes
 .../Textures/Battle/StatusEffect/Frozen.png   | Bin 0 -> 439 bytes
 P3D/P3D.vbproj                                |   6 ++++
 5 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 P3D/Content/Sounds/Battle/Effects/Infatuated.wav
 create mode 100644 P3D/Content/Textures/Battle/StatusEffect/Frozen.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 7bd5483c0..0f258704f 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2856,7 +2856,9 @@
         Public Function InflictFreeze(ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String) As Boolean
             Dim p As Pokemon = BattleScreen.OwnPokemon
             Dim op As Pokemon = BattleScreen.OppPokemon
+            Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
             If own = False Then
+                pNPC = BattleScreen.OppPokemonNPC
                 p = BattleScreen.OppPokemon
                 op = BattleScreen.OwnPokemon
             End If
@@ -2925,7 +2927,31 @@
                             'Works!
                             p.Status = Pokemon.StatusProblems.Freeze
                             ChangeCameraAngle(1, own, BattleScreen)
-                            BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Frozen", False))
+                            'Frozen animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                Dim FrozenAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+
+                                FrozenAnimation.AnimationPlaySound("Battle\Effects\Frozen", 0, 0)
+                                Dim maxAmount As Integer = 8
+                                Dim currentAmount As Integer = 0
+                                While currentAmount <= maxAmount
+                                    Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatusEffect\Frozen", New Rectangle(0, 0, 32, 32), "")
+                                    Dim xPos = CSng(Random.Next(-4, 4) / 8)
+                                    Dim zPos = CSng(Random.Next(-4, 4) / 8)
+
+                                    Dim Position As New Vector3(xPos, -0.25, zPos)
+                                    Dim Scale As New Vector3(0.25F)
+                                    Dim startDelay As Double = 5.0 * Random.NextDouble()
+                                    Dim SnowflakeEntity = FrozenAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+
+                                    FrozenAnimation.AnimationFade(SnowflakeEntity, True, 0.02, False, 0.0F, CSng(startDelay), 0.0)
+                                    Threading.Interlocked.Increment(currentAmount)
+                                End While
+
+                                BattleScreen.BattleQuery.Add(FrozenAnimation)
+                            Else
+                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Frozen", False))
+                            End If
                             Select Case message
                                 Case "" 'Print default message only
                                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " was frozen solid!"))
diff --git a/P3D/Content/Sounds/Battle/Effects/Frozen.wav b/P3D/Content/Sounds/Battle/Effects/Frozen.wav
index 3634accf62737d6d60271b0bd817c7bd97caeb70..e21fa9775fdaa96752fed82aaeb4494f3e1fdd8b 100644
GIT binary patch
literal 70728
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

literal 49474
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%0D4$y13^nBpu#gtD
zvPk?Ahj2dmJM_GJbRX3#7nIzrnCxdE?ZUUC2ZquhdKX^*2jD;Z0K?8@li3ZqpIk`Y
z=o8erqPTYn-D29teSyB;4_wi1#DE3&Vz=RaxQsmQg)W_qC?5r%!OO7Hi2La=8R^(d
zhyjjXf-6nq9^fl&`Bm_XGUm&9;0hcJQHDGI<Ad(#8x}jm!*ic62PXUio}?07(HtHK
z&!s))sV|sOx@C>XUKr#ZvH>$tZRo9c;q5vO&&nO_WG@F7XOErRzldW2Y<v^gJS!?A
zCIP>f$9&j%^k4^I&3>p`|M7Kv2Q>dgX3si<SE?62E;27=QCb7ct1qD=ha*SE;PVaw
zYac{KUV&U&j=t+;dTVkF>>Scx|55Lay6_eI=Dyg!+>5%=R;bYFeEBtCR2#gDzJ&pW
zpZ$&oCP)vZ3vxF(fW2Ukv4{BtwbKer>11IpT-hVW;1g#VgERZY){Jk$bJ$K`hb@S^
zrMx|Ompvkr1+eX?u?L`qjD)UzE^cDN?=<s_o=SxrNDtFTz<SHs1iY_2@fh#6H@@4B
z?O{E!JAE<2BdV<Mc~M*Jn0V3K)D}B7>CBTo5r<JbpgHklybg5CqLQhlB@sNj#8BPX
z6g-0h9I^p%SA<T#9M_=+uNH{9dkwywtn9*^<I#s=ZK#H>!nKB>pXIY(49-blStuEZ
z@#(Z5J&3J|sfnMG8YVd=UxRn(2fajHp!Y7qtUV9?elK>!7h?Wg2>iPl9;r1E2cjP2
z9m!|fNt#pS40867{0ueG0cSgZ#H4<aPvo~zC!3YeEk6`-A<DXJS6LDEt~Y~sD@Em=
z5ByZYlELk^Kpj|3&7tqt%GKv?i8vm$kW3+;P^-q{On@tFH8`>^@_2A&;qrOp;Sjn6
zoNI7O`?QdRBZ>2|JF^(O{z1TB+ktI5!Rz=H{U{zPLJjcKDb$q?jh-F5KJ#goq#35Z
zK<CiTc;+jx8&(JL-vt=W0y+XmJ=$qJZ5$K6A+mGvv*HcdwY!FUh`}_o4*A#!vs^pm
zcz<BMY4F}REOahh5pgc6>aR&x#c*}JmjLYbH-yLQ5xdM*ATQJCUs@=CkiVtHrvDpz
zGTs*T^*nm{0`OWH%!7SL&+5(V@e|OyhJa^%fzG%wzPavcT44HjI8RUGekLIg<H037
z1V=Jn5YZO%dW<+N=F#T#Pq;BMzUZjF5&RCr@my7?fsy<P9Ip$IH`zEz(VgW$af?H3
zpA~*J@{ZBV_yyXwk^5kVn+J@kMgMBa9|0S`Vn^9u%(&k&e`jSxyT$ea2iO*TX&>||
zJN#@PcsU;6c`N{5p<_3g794qK!rH_`DOsu05X*XIhu%2|J*7D?B=&B29sIu)IEdG5
z2(;w-kwc=-7qlw;i#?OQ&;k6!WziI@!dmP<Tt(ezh*M6i!P0*%Q<V=3TOF~<aLup)
z^(GLr&`IEc9l*k2n7ms6`<Ac=Y%KiB6LOm5T1EAZSwW}K&bZEB=&e`yYG^k#L^%s)
zJ)mjMhGtk7dmkecU6U3kiexkSx9ACtWSDFeH!wTaLqFIHPGOo{DqQF@@IPieEXpb7
zS^kQG3-EOh!*hOw`nwAC_6vL$HF+{-WoNzzGrOv6c$rsdez<*k?Fv_HZA@g1!PQPj
zeVKyFxtA{mHo1UYuK`cqpn{NstjO%>S*A6nrN9em{2opqF|pU!(^-$%@;;u6Bl$zx
z!C%!Xb#L0Xxc&*2(6xi<zw|J$>j3a;L*xp?UnV_@*m_Ji(1Uyg4+7TekliO|1I`5O
zO}da4IFF<=cxt_Pf!_IvwE&J82VQQj@u=};#D}Op`Urh1csE92ChG_d)dlflWCfUe
z--{K{8s~wt-e2^OepJ|#h;^0oDraJLdW!z(g7;tztTzhRVFynYp+(?fy_KbzhqGjO
zfQqq$e4ieoOQG3KKwYT~Ol!*)0;7b2<L}89g1Nk#Ffj3JMn+~ec=Mald@>UE<H!DE
zV^Lf0fTy?)&Gj7OA=cz)3W!LLvc>GRN=X4Od&dO!^0F|Y$UK3$iJhW?deUw1KD(A!
zlr|5W5pmNHYnTPCZaaJ#mFydMlFiVW)-et8F@$>4ba}J<4p>WxwutSA7|Ny3sX@FH
zzTmZPApX;E#>!jtvs1twwxX@LlUP4FJaJ?4dU&HOpl?107q<jjRxpQO2wcGxTx$@2
z1r~KU+Z(kd=6ufT+z)t9Uicgf#PJjKp%;j26SAi&w>N<+I#98`;zgKuL~Zo@df<M}
z@_wi;lb|*D;L7!wDY}Y#cxK12H}p04RNlAn^vI{cPpvU;Mqqxc+VB2?IxrJ8z749v
z7q$g+^#s{DxmD^2U2dW)_I$FDZ#BgyAVA71xdSSGHd}^#ux1f70O!z+j2av>CcAG=
ztc=Y|`ksc1YpAj7*)H&)!N93~1mHR_Lf6VgmE*z>M9weqD;a?qZXIh4F0l=2Wh6^R
zh4~DBLS58Xb7*so3PTGm!UsgQ!C$#H;_RFl_K+p=XNd4sK(O`sMbwO2^cF1z*7=ZX
zoo*hdi?_raY=_=`2HNy7)cE6Kr5McqVFNKIwV`IT%Kx1m`zC&V`q>N$fAMtiuruM0
zY>62@Ks*y;@Z4X46Fb2cv*V`SCcm)8k>mBAdQVkXRU^z&Ey3At!QNqGa8D!gybLUr
zZAHBOQ~a*DN5rzI6^7l03D5<b@@TdfIJPnJ<O&<lhQo((o~$58;OW_#H77eHN*BYy
z{ddAXQWkJ_2h2QboZ*sA6X<NYiCi6gVG{VU=?NveugTR@tAYQlg);~CLf>ux%_|Ik
zq4Sv2=7T@41xy!d3N{Ujm>o4X->hIfc7`X>Iy7Az7Y$JhzrbJ88(ix+>|9&{r(RJq
zzI1um%ZOdr>DYp}c0?Vf(3{R+?%<3<AJoe4$aRvU+M=qJr_1XSxhuLmJU#)`3moPv
zTx%uGMg1?PA#^3qSXxO3&_U4Wbcyql@9DZH?Z-abQ*wp$L$B)%OuPY~TQ$p71KOSn
zv>Zu-$la(%F|Jvj**)N^E27S{2Ii6rh}#Cd4E#!GL6|dDgBQ>kiwt)|E5qlM2A5(3
z5b?hVbvl&Q1^@gKGu&gm-#6gm-(m-AR)KlpgNVSW6=XGO&#EI=n`4e&z!r<4;viej
z4#Mlpu&2$z;SNZBo%S*Qm~N9QMY&2h(nDeZw8ICi2w7+j{`@nphT|-Z*}NV9H}*`t
zXL|Ka7kR2Y6?#fCzlzgfjcgh4-dFU*e|P}PhdTJoblTJ*Y*)nWqJpC1$jdnPoSj2X
zZ@~=RkQX7>?t)ob&HkVsEGsH5sutcXGDHfOHXy53fJ>Z(&$|x~f(CeB4=l4Ao{0(2
zr~=aE%&D<m<5T%}-1}4Z5xBKGa`!nuf$aXo>cbcLoj#;?IKk(7%-Xo(lyzzU0E;An
z`?!vpvl_jkr^w*T!37V2PpA>zUl@rXn<FkqH7O`6Xa$`zipJ16m|tImw+RJftH6)b
z5AmH2mE~?pNlE{ZzhMn3J5~P0p0EzH;4)}|KFG9JU_ehHzLw#fB$NC={*!w=?^?o?
z#Eo<$?E!A|1H4oocn&>;3!e*4&re(wPUHnSg!3Qnr|47P!PgQej)+yjU;g3*W>R;$
z3-6*fX1Z(Wd5NecyXa`TA-<;0x!_^pbeu%c1f0lQ;LQO{1ui;*yP-C&z_muA>J6$m
zT`?iHcl_z{lyV<=uUtR_X*_?;wQvjkWsZ1O0emrLu40^7(xEV+ut$7j-A-wTRLXv`
zNdAMbMy|HRvnq#^#~$BNL>$Ry_;y~T$7T2@uSiV<BQk{cq;KG>45ogxE1oaIEH@W>
zj)9n`$J5sIA8<uO@|xyPz&`x~GK>U*SFXwOsTb-S)F>9o&a&C~JsZPHL+#k~IIGfw
zrM2MA+lIc<3^;5z@X!Fn?@~Mm1IZ)D;OTr@IJoFd?4I~w>AIw+(R47bQ32i<1$V+9
z`jXxPXB|(XNf%%y*DU|+oW%XfTTtWkNI5x!nI{f8)(X63AWf%*Jb_nG4|*T<`AlMi
z<dK=SS)<`WHW59k2fT9>*U=gsu^lgfnm&p(!!y2(na2v}D46NL>Q@5WK4P2jJU_Bk
z&^&DL9@MBJ&1g&758S4C>ETkFIAeSTF_9Pa8jVADsl#;iBX)pYQ8TQNyTfT0>WG;M
zha2TSNtl#)7Mw~x$t0<Ww?=sP^T7@bXD!)WXyi4);m!mOU6<mV+A{r2hC#UF*}tWO
z(E~06Bc~$=oH4__X6M;g_LyA($NDICRlF%bvS2X$X{9ucHspzz(hlIS^d4n0YV%Om
zlpWz+xLaAX^3O4s<GNMOtZaz4vySz``?<@0pk7@>&9Fc=`XP_z;EcXC*-LXK#!XGg
z0B%?UY*oPga6;BjmIBN@02;+ua8a|-PbOo|8Ju!5bwKL3wC7-cPtm({8@h#peU<Ti
zICK{`x*52$h?vpm=;h1eYv{h^Ud>w%-$OTAjXuKc=uLmouJBCC(A;#)8{gKMH8D&z
zoQmEOd#NI%!X7bYhMIhnFX09nPQ5YPp2mC}gxO#d@Zs}<Nrfk355y;!5=_HT$>xEt
zn#CHh3YG{**+m+Hoajx|WIfKK9g;pL<62Uulvb!|oca+LAcCs*^9~-v=CmfQ3;chW
z%pw`gjV;m{6JKV3%Q1(3JcG<56j*WqX40kLmtH{UOk!0kY#-LzIMui>u3y5*Qd0H-
z{`V{74q1dcm_Xy{A>54<a9@Aqd^P!{_)kB#_;&1)cxD`AY=FA97*8_|&!{>2niVvg
zI3CKqC0D5z+_amsZe_1bFzUY3n^3WD5kD|`NhF)xLY+xP{CncsCy>G97ownjqDxYn
z%t=`z;OBTM9hJ&ZAxcOh>5AAs1x^0}B4Rx9>{{i`%GB6D@v92k6wSw3m*M0sdBdKt
zc1(|I^qE?NyFX7ZkhYkA?Mh9h-q9hkuPc%&#sjlnN5t6TvlQ^PdBi|IL4UO-gk)fr
z>Y10DXA{qLlW0A<hfE;*5Yqv`;?seievlM$oUi1g$q=#>aa=3;T*^}TSKHy-+SAf<
z>0iv{T`(iuMLqsS-_T+3Pwiv<*-B}J)E_(iz4JQdPr#ft5_+o*{1NS$6`P53K}whx
z`#_G7F5ttzRHRq%=q9m8E1WAzP^&hgpIig(w*{X%8uLp4_?S<`j@-d_`Q)!DxPf@7
z4g8%%K9C>ig`;Ulx|1zqvuSTy#S2CgchV9$5|CCa<5ZGW%2Mp)e<H8R2FyE`fzfN>
zc|D?gXgQ6eTQPfg2j^T8|3tSsdwI@r<VGHGBMUKa-=veNo)$t+dO=-KmvVr)y$p?w
zTcfwe-Y#xlavS(<3GGB{|DTEa0Oo8b?G5Z=4$oan;F*^NLknZ0zQ;I{holl1d@XuS
zGX8sm^S;l}xwH{Dv8Uu2iGjYqI^$L50eE-cqd)cm{;Lm-zANnu+*OZdks{)NEdL<A
zldfU!%_iZOZg9r+%uPU`Ws*W7&};9JH{=+b!@Lo{Yw-Lp5nJ-3GQV<0j7{95q7C}j
zm@obzwa6JZn;A$f(SYBciffpH?^ugSj?|wlc7@*SZ7>+dK$*M@ZK{Z-!WB9ZDo7(b
zmo;RMBqwPuyze$y6SI%R&(c{FbMldVCOr^edvOlTR&e$0$yibkb8|zfhEyLlx_^>g
z^0Bn^^m(XHtEHt<b<{MI)PUH7`)Psrdxv+NFPRZ1oIC3o?GWo%c&Mlebcp9BJ5ww0
zOM^*EQq^Ns&@v?W<zi9uR+r?IG>NVj`?M^ntcq8QBcWtC@-GZMcr}?$BH1nW!Svi@
z3C(XnUaS1Xn4mZ>lbdM(u_9xUElo)iTx%B=A{9s}sEqxkK~gHaz$T~MPd$^Il~T#x
zvrdv$az)$~ND>(ZEY*$lBpp~P-AR^_Qd7REI(#24Ic~WxkcZ7ACQSwhX-C$RDd1w(
z(qXg#X-c+ZzI{{{T6R3@P|V7bsFJDBZp~;m3CFwgpia~ZXD!*{nFW|Eq<NT$M-&<g
ze?-5FeOCFoGDS*}#<9ArLQ<2VtOW~_qNT&&Lk39wBnMpA%CsBluDX>;O`(2-n&M5z
zp#xb!rw_ple~64A@91WF2k#_V3YCt>ch$AdT$|MmjAA4_7EkGNnn=8eGkH#S;O9CL
zGjbmDeULHTsEukBGfrQq52n{?47A-~{8Ufm)dpxb&oFbxNEy-^Hj-KE&**nVuZWE^
z78$p|i*N&)>r&L-XV9Lz;l6?~?>v&uNl);82W5`WDv$F_xB=woCjBQ}q6g>|a)b0j
zJ-$yKkoL3}9fkMi4efSpVos84TGNbgm|e_CrE~-_`kI`;&(?rr!H-x&yKx|wiDjit
zrG1ohOh*3Of<}ntc6dM2!H56G=O&ZC<R6+uj+3qAE?q|F73+$JMU9WiFsO}>!9SfR
z3&>RX!2-w+qQkjj-SF9FM1@*%n(fYBmE#(BHlaJ>u7Eg^eBe(Xd}e3hrSW78@dTIO
zUg{~$0NXeSXJ$Q0F{b9BI=qxlO9|L(w}zhmhF+#+Qn~aOc>le0U;58vZ*q!x8E2MP
ziABI=?5K25iooyGBn`+VRG?XSUp1jKWsnfksBC4~riceoqI^NQ6L_!gQbS2%;j|0s
zN(Lc%auGd^iA)NCY3vGy73vb_B-b}}HC2$`q#b6lDP%sm41O|LdL_-pthUCq*p!d6
z6i;M4$b6IOo&|P?JvO~C!5PCQNW-Phtc326_DQ`^n`cS`q-Hqh!6B(_%HV>Ef;u?2
z<&EiqX$(H+8Sdjb^vo8d4e5kztVfH9*3jIrR#zt}pk#3Aa`-DAOZTJ&v;kZ=kH}$i
zgq%Q}&5$NY6=3hmimvF}>0%P^8*dq(l8a;(s#{C=M{hw_@{yiMHGxeNO_?S&{JehI
zb~!mIHfec?zH!nRsV=VZiS$59M}Gf6{5FC|e1o)13MKEz-DD~CWX`tS3*a8cn>w22
zVm=O$f}};zI4>Y(eQ+&nQR(J@|5=h)lyqC)s`xKzX#-LrdE@<>(@fHtSR-zq&>m7_
zsTc6q=wi>}HwhaPPZ)JZf@}O2XKqDFnbH<`8ttTSQX;Tnd#Qu;68&U<-q`%z$z>^x
zQS%2&oh2{q`$tK^(h7Qlrbt=RO7w(eDMCs>Kg~|<kv=1HLzV)Kd#uz&+KF75Mn;nu
z<k&Cro-9Po9*X+$$n@Kkth=8yv`|&l2A=sLq#GjtDXN?wnTs<T=i=!np&k@cdpflI
zczIC5nZ${PZH8;)B%!#UEo27K(E7;hmdNipG*q&aEYX+C^1l=;M~^v2r_)5>lo7Nk
z-A&ez2GE>VlEuUZ8c73Ul-zK3LzB$*SzhVZnN5J}C@GX$!XtSD^Qt4V?*iFPRMeex
z!cRM(PE;h?CjZX6m~YN}Xt?AdO~gHn1s7+AGhi>^lkLe(5{H}|U9qtuJYjcYPU+CH
z+jIf#Lz<Hsl+w%K8(hc}^z#_pX>DRa-^nZZR=6lRI^}_MUh=@RyN7RoOU?s1g`?Um
zApK}#x>wpSH3Js3$?BE81wAGZPpB@bPWsZev@blFJ%9}>r8?v&aO6^{zcdm!VN7yh
zO4HmHd0n7y9g!AD9_YmJQlT^%-hDOEOOwD6EP>~r8e1E^FdsfIX;GRDUVAli<r&>i
z>p*)p2llu{P6H{mC#Zz%9AavyE-$f}afI<WVq^+>;79TpwIc?b3KfzIoXTfS|C$oS
zzal=H<aSSamwFHxa#C6+eWyR^6}%r;3YA;BCaK_=@i0Z0UeWLLMrvl-sq9NR-_Y|y
zO`)c0@O13LSrw=0Zu&)vleXi#)P#|Zm0K#u=q!^|`fK`;;IACPu>|2eOC+OIfL`xO
z;!!aS(s`iB4yA8OKkEi2#g@0JIEgrTPIkdnGK-8u|8$bPB@KA8y(U|e3Ap<mb|`d7
z>r%A%-68ldmwu#|q+^l;bi1w6Dv4r8qS7Qu_vjk>Hmyd+!pw_Vd0+--n>LtQGr^un
z|4O##hBa_@ut3MThW<!RrIn+TDwDSsj4wP3EIwPBE7gNv=sco!8D`KSh{?m!ap@f}
z@9*-i70VOaCceeroiU^7!~=cP2HDygwK!D@L+!Xin@dflFYFjI7G5gaoLD0{(UfDl
zB-u(2G0z1`vC?tqx$oeca7AABlA23KutTpif---lTBKitUZz9u3_{<rMxHlC4zD9q
zf&Svq8BUSwcps5T%TkhZBl7M7Ta_W7LxG1sBNmU~xv6M5x<;8~hr0OF7+_3{f2A8&
z`k}NJ=Kf3QJr5DD3Bd95abKf>f8!-TDF9mZ6n&6BOm`tkCw)eAmPwq3kO9zqity82
z;B)VaUQmL1lMTF?nC+AkoH8R#3-5$E-l7FH;C)TPr$&(-@YfcQKqBGV&6y(=sXfvn
zvIBE6F%3k)7u6H}U^I3FC{4lB-Ga=CCfiXz)W(j+vV>=eAN6C3pQ1K4L(gKsR?nbg
zeI&1dwC^Dz#*j^PA<ZwIR$?E&Ti3wU!Q=#o3;q}cX@=*t5<4`0cn)PGop?&VQUu$;
zPUOtWO-o*$+7=$+Iml5X$-&d?fST5r=1ae%SZI20;QxAoGnOu-R-`S>oR!rRb!miT
zBZcGdwB3aEcntmdhxA^0MOV;g(oQMC<ZU{Zs7)SP6jKxce?ljzp7aOTVU+BpM%cBO
zf*HyY&v`V}(t2eF${Hs`>6%nbsQ3-ez*V{}jX^ECLDr$NP6IY;P6tTcrC@MYGxBQ{
z)J%Gpe8Y6bGy$1B3bn$T#7LXz7J32w*+6mbi|LMOCH7VJXMD_Tk+Cn+n)y+KsmRox
zWzgNy2`L!4dr8_Zg(80DNvjd<2c&n2{gdkygciJlZne_1-!v3_%1_+S1bC$TlR=2!
zJ!B`&1J#w=RNT-_N}5{wt@IEuX-!fpg`iHFLl@9X960U~wKu&p&Bo_YV6DkInzX(0
zWTga5v<<$}2-N=<z(!R$RtX)v%#>~F4X$8S*5Yhk>hSdYbUihbDojP-PaLI7z){O^
z9T%m&zy^Mji}V3~>`ii=)cv^~@(x1@PBncoxzh{i$+dx>?xHh3B^IO@IsY&HWe7HW
z(sfFDR@|hd6nw^3(w*GLc@3q=h1$UI$AIG|OWmZ8z&3-6zZI7x+)rF;+-mHATD%nR
zNFwQ|RfDJl;{7vf=zP5I1}vVYXZz=rCT~dH0WXzSYAeCHL34q(r=S+uU?-zK;>-d*
z+mDzNTc)l~^T~RjT>xgp6M4z04xRlXI?-}c#Rb$sk2;L+a5h~v)zmpA{#&dn*#(TT
z4i&=_o#Qut@(AJ}AJ=S!Cwvn7Z@X~bK@HvW!~kQgaR=tx1oXBkz>zAjjuX+_=Fqz6
z-A<^9J~SlnK)y)&H`#^S0=Jh*mBbsTgU!N3{~9QJG-;0d#EHMufdy0VbVEj2M%^q2
zV7uBRRjN+Y;IvplvTzj}k+l{y6i?6^&sQ&5C4NkrtWVHuu~TP<*?%iMA^q`5HIU~k
zkwa0y1;20xb<^_U<((5UbRR1UDm;Oo3y^c&aSp`_G6$dfkwhZ0>JptagPAkG{0#-(
ziA$5qOa@aiy6<sv2`u?c)L?&fEGzPwuA?f+OsWIFPGUx7X5IAF87<L=zesnbbBL2v
z$zR$J%<~;_5`Y?8PpUMvK`rT;d?dxbU{m2R_+fHQF(%GF)7R1&=>%#>xfCEx!+TqU
zt7u{vZ<rDvn^0Ohr|c(mq9hZQf-pl1k}JtH0d?^L-ij6J4}D;8$-R=iw7wa~D=$~7
zfyg~E)33qb0-R2p&`iuOA&7}M;OAoKP80L16?D%UnN9Glw*yyt((Tkmx+PWVZttZp
zk{|lgMrj1zO&amf%*i@b(4&y^C#(_f)dTmDA!Yx+9!x-$bpobn0vuauFf(3F^+?-R
z>Q?Fsf0!3ys~zTnN2vd2@pOk{AL}jVm{jm}4rRq<ztYmut&HuAmUyR$xZ3fElZkj&
zY7&a?x20pykIuk{vc9mQP?Om@t3Uqz1M=<*@~A@kDqTi>$&x++V;#kOv|O5k+4^YK
z*6b5`L-M!4!w_fkF&Qy8NF-hwN2_C&n@YmSPhy4XV3^6qR0d3Tq&UAAj2{~a{1k!M
zmN50;N-={CqqlMHP6+tGqlP<%e^Ljh?KK=Wd_;s=&?r>w@njj^QJeoYcINRlom(G&
zp1qMEHH);A&?>nqjTqWcDiK3SB8^ZknnngvlE~OrXsHfdRjq2xt_n4UniWN2?x1Q&
zj76!+IZ4iZPR@Mp_uRMl^S<}L_m6OL&e?lE!&<-fTfepT4nDh*Ty7nBHHdisjn!@4
zq&-#}&ovH+_raH;N(B8FN$7Ti$u^3??{2b+v9?p9^iLX|)f@HA8tqcAz{TUq%U9wD
zHS#j!`~tpxjF|Mb?1+y9X}i>ZW(l(fsvDKR%WzcITE@Ezi{3;YcL$H0EMF(yPxg%R
zbgs$Q%yE6_>I_f#6&yT)cX`OpJ|p*=pmZju3<VR*mEUcH8)|C?Y8QchtKqCBw4NI9
zs+zqx%`xq<(_wr!7_4q<xNS(Ne@(XtMWq<O?t{N<k?+YT`F|DvPv%*XP31$eS1nct
zXuH)eHjOlg;Oouhb?`Dtc^j{t$oRfOKa3_m`gOc6aJ&gM^EDeBdPg-qNlAF}AoS#4
z{5>H2TT3+hS}v6p)N01qPub7ZJkYH475S>z?{_(0B3#?WD*5%S>DYKjc~68iI;^If
zg3R;lKB`~9et#_I%1k(H5xBA#{pBgp?GZ6%2DYsucX?1(U7utMG?$=DY!vfFTY7(6
z$-CIpKa>~Q+j4S`mpEpcFU$8U&vET#f6Ly1KFC#Kv8YrwDtYjcspP+R80kK8Bptcv
zQHR%2T60XJbwA<Z!H=x%jDN5HQ0zYoE>NxPR|bk+Vg&taKJyorGd$NjS++z0(%_?I
z%%eeEApg~ho1!ZiG+acBIpi)=bp7;3!wzG!M&)Xl=qg@-!wTZcWBj4L{8M}fM#k{_
zo1FWQ=6h{3+gw`&eWw$|OXR)ZGu8oeAok~Dhu6S+dZ{+0r8~ggT{A`->&kYi>epEI
zK2Uv!oW`88<xA2Icm7!9iOKXb<k}3j*EOYDRkRh!_~K=F;Yjf14mtYs@SZNLT_y3c
zrCOov)E67dbSw1}sVb$4Ng@KhXAE|`6^(2KXgq_ei4k8c5wpclT2Yr|sj-aZ-sE2R
z%IDyA0~Yc-Xj}x>8%-uNntH>t-lx0;H5)V$&SK|!VxOD1aRS}t@9>Sqa=yF;ckCeR
z#A0f{_w1^pRP&DZHgO-tL+(JG`#_GAJE<(q#4hfUm$hciM!+ei8ecG-t$k2;fEvst
zo?pHh4!#-xD<sFcPP}-9y6SaoQewA}b<y?7CcSAsJ+(RTrB|`L*4$Tb2f>EZvwQ_>
zoPy5U6YPqpS*>x~3mhlGvRy>^DAwMe?|AUC0o-%*D>bn)Fj?bx!nvnLuj%TG^mV7+
z{1lknMzOP3P0@{Rk#i3r_U6k-)uWs-&$KM5{iM#XFW+achT>BJO0A5=uj|PCa?qD1
zG2aVl)VJ$T>vkC4HeO_(rV*3Zq7PifBWA&wDzVo^%5>Ibl3XfEv6su*^E{idHQlMD
z<Yh~-r7G|+0S&@M)a=B)L$mPxL9VH;qQ{jrE4_!kpL6f)aI};o;P6FqxaY9%5sY~S
zak&}|FxXmY4XK?}cT((zUj~3O16aouXc;q@PrU5OeCCN)#VK+JkM4$kkM1-5Q|e{-
z?L#pb9XVbO!k>OqV$pP3qcf}Um<n*JO53Ea$lBeep{{nBdw;^vG)m=6xed;B6hur?
zqLtz7-5TyWimxfv40ffuLeWZtu-T>5Wdgv(mdXve5&h{BdD>~}wYfH}ZM=3-ZHRFC
z?qgR6v9A?Gf}8l`Gcro{Lpy$t_^d-89&8ZC6S`yiL^Q~6i4mF9ta>oE*34%R*LX#3
z2?sT!Q&h;f+Kjp?bCD&Ed)<bMSHyTe8x13>R8}d+!S`pV{j5g2@OlEh+cdvwdpNc_
zF2c<}1xtn!&tAuF%gIgJaPA#qxiHcXH{Ws75zIYhQ+*SByX89h6aKdbK1K&8v0<bP
zLDOl9A5DV8Zl(9AS$%-61O9&#UNIPLDwEu?ntE;_$5fFkypKOtfurx#mDWE%*XT{(
z^h0q9T)C*6gOg3crrN<DRZxzMPucAI#CMVUw51`@?&lqs@zrjMi5QTj>?VReR!%5g
z$fPc-E7bR06|Ux*SZ$JTly4V#`hGNylX9)xjgGJtR-jYPDSg3^Y4G;-#JBJ1>A43l
zepPmocd^?u*z^ai&u{#{>)*#5k(=?S7+tddj{dOW0M}SX>|044Bp9EV1is*XR1yME
z%*K+*T$4qbt=c`d9t{KNWxB*#F2eo<+HsuHNtviT4|BN-F3nUnx=*>aH9fQ%Pl$Ie
zI%;=xxp+Pug*`pT`TRBH!`QjMo=|KHX!wVwO4}W5h^HU2H~e-iF@798xs&2y%(IpC
z#Km%dP0{e4u~N5F|1I&tkG$*Poc@~BKlx4#nco@4o(nc#;`58z+S(fPK}$Zhzt_mm
zud|jXiQ!)pAMbz#%gMpxl_2G9&vH*{&1Q|+^@MvFeUww-BiHCddPL5dfz6~dq6%W?
zAvAf7^-Wv2W~w$!v=D2RDR^Nckf<H1aw5vpx6G%4{C=|-Prt}9W0EPUK1nx--7dt}
zywt?Y<ZSlo0l4|99E(Qt0Npu~8roH2=TXz!=4yKQeBwtjT<xHKOsq32ca^Wvm2YBW
z_xZmG&$V_xPSzAS&N{ksfAdE2y*H?V>;)$-pcxHiJmHF7E+%(b?YiblCy(mPJ?~qo
z0)0fDsbX6fdHoYuJPa*FkKVS64vYMToejf`txbJc?}aD>J&9-KXbB4TzaE|*rPeF2
zkSCgyY9-KIZeC*@W^2=Ei`pDt9ZX!^3&#II9C$)GFF#a<VHHuzlkoFwV{=ozGthMd
z4!Z~+DFZj7iJHB!h5guK8JWj!YQRPOy|y{}M8gjrljk(+`YP3(9z?ZGSe_A&aw#X3
z&*))~#&?|!S@xY^@ks2tj9AhXjiH)M!a%L@BpfbW{e$%$EIrCE%4g=D7HQdJxku-V
zL0l2s5yaE`56Zp7xAy2EnPC2GEV3g$-qm>9SYdDND4}Lzliv}KMlg>jS<l<l06qs}
z=Ezz89w6U)z9G6!`e;wAXCXEk!#Re-*@~HSTfA#4E4_<V3?rA!aUOA+^hXT+80#-w
zcPIR-F%e@e8rMCz{y)*oDu`!pbf5(5LF;5wuz8L;Ufs;RR^frc;Oh{)$FH%c;)$&o
zODgrcZpN#|sD?ES?a;bz5C;|$5r(o-uM^2*;b<=s$7Z52-0~gv<>+G!TRi(b71R{F
zfkH)mnoP`$Ar8IC?Anp1ZUeiLUCUfn-S2ucc0Zf<o0IosVEcp6!3J>NnMyydz7lQG
zsEp(JQwHN&(`1hB0<uiS_gi71bNQwV?dKM`+<36Q9UVIfre91;`15N)RM$7bt{-wQ
z<wf>u7jf|p@$eiLVJ1HI5}m|0eV*Zv^9N@*e0Me4(2vS{WM*g4i~BIE>+)~PV|gAP
z`J=1GwLw41aLAYG3xR7@!&#PqS!0O#ft-CGd15A<q80hTxrRR*B2AY}+flO&%*|h8
zt%U1TVFP~cxPy8D-R4&`+j4cSxs7FwrK7bO_xVqwZl$WLlpSEY20Yo#o*pNb9Yhg4
zj23f2pJmwLsCP7go4v@iv{X<pfiJo6vFBJ{pFBhyyGra_?Ov%X)mM1-db*L<c)<96
z%;O{M<vTcpSviRAy-#eSf2*S-(b3*;+Ry~9@6V7=!_U_eV;+Lj@3NlH64RT@tMIZ$
zYNaL0dfXgqNl|}?tKAXL!H*YX_ips8PvIi>u&EEw+&9CkFBldW&om6NSJJCyB}e!B
z(|+==eDK|GV?x;?1J!lP9`8rqo%(D;8+RA?v*i9E%qRj)W1cb?%-Ak@>V@(edfy*v
zl3MLlU0wAiy(-T8ZWB9?Q^!BfKK$s{$hdE-j_Z%(yDinz${K5c?JfGt*3#S17ClRg
zj&y)^{gSA0iro53cGoR8!sAM1kZGCeE1S!9pZ?!`=JN>_*q*vsU-H0IV*GjVsFDaW
zNpujw`Um=Uu9sZf`MrtqGx?hq&e9GmILZ3X0K-yb4dYngE^+tQTlDYvM*BJ|`^X(5
zv8#h<@X1_%x!i+Id_wG_Gf=r^o7zxd7-d|*96vy(oWtA&s4;}q@XE);x&VIPz?zIy
zCi1rpcUYgXHB$G$8)nEca5fVeUkJP0oG}jpahobfSh-T!U*FEK(0RpqoNH}G^+_Sd
zU6O~v!aB5~I`Xe`G7Iim<9_V^Lw7`9@6~x1fG-aj=WEO^7{sWh_irp~b&NPt3ESCV
z|Iwaih%#=cN)v_8_XPX<z<EQ7w+=Ydn_$LNa?DNiuO2XuwJhQOn+<4f3&HYv;K4U2
zka?ije#SSCT;WrcCL1c8QGeRd!qMMhRdy(I;f|m3-ScP<ld0c0(KW*qhYSbp%IM91
zRDVG?$s6m<ribTcYS{BZ??-UrNRX~K<6eRNro-<(bX;{L8k!h~!{;Xu=l%Bqeh<f=
zj@K4~?JlJf-Ey`t(GeG9Ew!FAC7QQ`mtD}RTwr@THK6Upj5KWGCb-ZSZoLlf+t|3*
zIE%lpmP0RW3$&&i$_DbYRC10qe6@si?gBa+<yCK$_jlbn{VLZv*ERY=B2l_lVXO7z
z=xwP9%^*I;;q&|H&ARI}J7cKF#Q6sMdf=<081FvpbqkCk4wa}S_j7+kFWGP0dy;Rv
zV)NTU1wMKcO*M$zErfIXV@4dfZ$?`;q4_7Ux3$JH(|v1}Er<T?CDa2n%6TOf4x7Uo
zYzOl@gM@zMJ?Y!yv+K_r6zZ+B@tH6APFHNo2X9%5-!6ea2{g#v#EM3q&YoP|WPO5n
zy4Od|ZZM4K5HVp2IYvImm9bV&^WEmyc4@=oh5%!LX#{>0DF2`yu~3-|J}hSMr&AxA
zOEfEy-MN-Yb~f)br&)}a7R31n;=EYJ`TU$O03WL%@Aa~G5q$5g_(JqC)Ej~v@s9Jv
zv(4~re@@^=vAqe-#`rlFxy^TQwNc&#Zz+6pmM6>89(%3<+kckpIgg|+nkV1j8dG_8
z$5G-@gFV`@OTW-?5Zz$`>RWrfZzp~e01{n-`*mYaO7Ph?z}pW@UCn=(wwSM=QKd4U
zaK?3jm3o4Gy#@j{=KPD;zxmjHpy7Lii`wunaK$|GyD-kXhgf5!E_Rf-REK&~PyD~)
zE%!deUJkf_bC(cXmT;}^%<C2v2_0u|q@193^fq=Dr9AIk<h(?VUW+!_jq`0Iu7u#Z
zKa>BTVlNuwo8wv6r{KFst&z46({<A~tWz<0kw@y~27DwGOU!{M#wbst?^cN&u#-UJ
z3F8fGiLH$IZV^T?g9x4vCJp2odH%eQ82%Mwf5{i-J4TE-=W1~I@m9}%O(AAZWdDPR
zn-|Fw=JUOcXp#?|!nM_~*tncJLQg!SoYnmXJPE|ZONlXA@P>6_ig2n&)U7s$t&LG@
zjKQA!@%N=B!Q1+xV~qx5hs(C$=SXV4=gCPQ%3h{Zrk>XQ)??I4E{jd#E9GUSBXMaW
zEIyuEogdqxWpmk1G!@%)#rmHeTE`GNz(=8(`fYRw8qtd&>qf@8iyU+q5h2*y%ImW%
zvsQSky*=2=FY%G(@JKiMT7POdL&4%odJ5uHuhPer=CWE-Z3W;}7h+^6dp?S~L>O53
z4Cju*4y%MlMB!s2?Vs3l?3MOY*lVRI6Wv++r_lzR!p2e=<9+zZ8=U_Jb&M9aT-)=m
zj;=@4`6ZG6Ph$KM@~m?5gtPKpG7GO5$~uPo8vE{BGOUWX*7FeiT#imqirt@MeV=8m
z9)Wgs<nI}9r3Wt6y}{be){Q!BfIKEFU{J8E7j?w^_N<wW?>fNYTK*qnUu$pQP}1->
zbuV?5^}>opJxxxy5-v4@b^U_cTpFVYlC>g(XW@lAvz<}Q{RNP`lrg>m2F1zF#GriC
zZKt@7KSYRuqNnAoCEb(l@t-G|t4=^qn}e?O0<S;fyF%U;2e4hY+vL7w8Ep*~kA3|Z
z)qL!4I9FRN$6*OBF%KKArLI@Wc?UX{I$q>ilb2Z|54FNvYFJUM{d5^dR@RxS$Rw(+
zcd1t{lliv0wifi2d`o}8eR7@!;CcvrVJ6=VBj<mOBZJYE;^{5AVo9*(yXU!AlLubL
z$Fji)s>mXavA#^5u{ZVREcPTDTnVx4vmEBRO^29`R#b=tYVHypd;}bAl<dYCPY4Y-
zS?FBr^!wsbdN`svM||A4lmkMDxWo}-;}WA2n)zR+XNJaPrseP|DLM9e-bu=vnVFN9
z8#->p#DSsFMMY`pGeZ;dN-_&WM`q@RMurZ{n>8yly(l{`mt&%nQ(AG%=;GY$^cmTq
z32BAJ8EL#fEIGCb??*;NM)2Fn#N;4;8<$s{n^9E233+eah?Gve7oS#=)&Irt{sY4M
zMDz*mIV*cwVQxlN_N>g_VInRic}yd|6V*?M?2Nvlqb0}1_EmXHD6gc%r9|?gDL?<2
zL`rP(Fn(>!kN?Uk6DLmOWe0x7<z*GUl~$1X-`7itj*sEPUi|$3XZ_b%TX0ZJT5g6&
z%+4*!%+1J4NgCdV_geDv-^-DbJZuba`iC9WFJ;)+L|!!K=YN;uuT%P0GAXT~C^RoC
zG%d6+vq(h#^+{_!$w_-NuOM|=f&ZErX@xWX&p|oaxqMWTSy1TTmH*7UBL}7D<;+ei
X%APhW^M8&k6xoG&19E2f>m&XJqG`3%

diff --git a/P3D/Content/Sounds/Battle/Effects/Infatuated.wav b/P3D/Content/Sounds/Battle/Effects/Infatuated.wav
new file mode 100644
index 0000000000000000000000000000000000000000..2ecea357b4330f88c2987ba93ee97505191f7059
GIT binary patch
literal 143648
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
H>T~`d-&zUe

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/StatusEffect/Frozen.png b/P3D/Content/Textures/Battle/StatusEffect/Frozen.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ec075fc550f24c9895a6f7a91366ca36cc24990
GIT binary patch
literal 439
zcmV;o0Z9IdP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT0003(
zNkl<ZSi|jCu@S;B43x`^!3a=NW(8L97+EDNq@+wn$QUV2W$yDx4o-*zcccMwhy4H2
zOR@_g$dQlx1K0w<chmFFO<lR70B+4aoGxc+>Pmb!l?6b|#dnjeRU#VzGiM;X17P;>
zew7MY05ta6_ssy1C9;YD=&;!*DqzJ)0#K@ZChyn}f*?2rO<g&yNG)|t09JspA4Eii
zm0*=D0$B<mJ7l1xA_air<SBqsGXPCqCV=eURv=1@=#5~i%v>K9d(#D)3VfjA{g-qt
zIUosu-)T8t`W*{aM5Ogsm(_?250_Km&>CR&$PW8Jsz+>c!B_Qxl-GCfgjRr<B5fAn
ztoX<*z#-K7>+EoA8uGkY)d}&59?sbZQgJpfB!_N9Y{B9?q2-dITQSZDY(iGQ-}Pd0
h=*?(p(*4Bc^Z^b(7vDNpvLyfj002ovPDHLkV1jp$w3z?^

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 7367fed6b..32cc4e1b4 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14713,12 +14713,18 @@
     <Content Include="Content\Sounds\Battle\Effects\Confused.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\StatusEffect\Frozen.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Effects\Frozen.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Content Include="Content\Sounds\Battle\Effects\Heal.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Effects\Infatuated.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Effects\Paralyzed.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

From 93f1228eb2b1e2d55be1d5b82ee485e40a825735 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Fri, 3 Dec 2021 18:37:19 +0100
Subject: [PATCH 29/57] Possible animation fixes

* Confusion ducks are smaller and they should rotate slower now.
* Fixed the Stat Raise animation from using the wrong destination coordinates.
* Attempted to center the frozen animation more.
* Added the frozen animation to the other place where it was needed.
---
 P3D/Battle/BattleSystemV2/Battle.vb | 158 +++++++++++++++++-----------
 1 file changed, 98 insertions(+), 60 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 0f258704f..f2fa41fc3 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1204,7 +1204,38 @@
                 If Core.Random.Next(0, 100) < 20 Then
                     CureStatusProblem(own, own, BattleScreen, p.GetDisplayName() & " thawed out.", "own defrost")
                 Else
-                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Frozen", False))
+                    'Frozen animation
+                    If Core.Player.ShowBattleAnimations <> 0 Then
+                        Dim FrozenAnimation As AnimationQueryObject = New AnimationQueryObject(Nothing, Not own)
+
+                        FrozenAnimation.AnimationPlaySound("Battle\Effects\Frozen", 0, 0)
+                        Dim maxAmount As Integer = 8
+                        Dim currentAmount As Integer = 0
+                        While currentAmount <= maxAmount
+                            Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatusEffect\Frozen", New Rectangle(0, 0, 32, 32), "")
+                            Dim xPos As Single
+                            Dim zPos As Single
+                            If own = False Then
+                                xPos = CSng(Random.Next(-2, 4) / 8)
+                                zPos = CSng(Random.Next(-2, 4) / 8)
+                            Else
+                                xPos = CSng(Random.Next(-4, 2) / 8)
+                                zPos = CSng(Random.Next(-4, 2) / 8)
+                            End If
+
+                            Dim Position As New Vector3(xPos, -0.25, zPos)
+                            Dim Scale As New Vector3(0.25F)
+                            Dim startDelay As Double = 5.0 * Random.NextDouble()
+                            Dim SnowflakeEntity = FrozenAnimation.SpawnEntity(pNPC.Position + Position, Texture, Scale, 1.0F, CSng(startDelay))
+
+                            FrozenAnimation.AnimationFade(SnowflakeEntity, True, 0.02, False, 0.0F, CSng(startDelay), 0.0)
+                            Threading.Interlocked.Increment(currentAmount)
+                        End While
+
+                        BattleScreen.BattleQuery.Add(FrozenAnimation)
+                    Else
+                        BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Frozen", False))
+                    End If
                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is frozen solid!"))
                     Exit Sub
                 End If
@@ -1375,42 +1406,42 @@
                     p.RemoveVolatileStatus(Pokemon.VolatileStatus.Confusion)
                 Else
                     If Core.Player.ShowBattleAnimations <> 0 Then
-                        Dim ConfusionAnimation As New AnimationQueryObject(pNPC, Not own)
+                        Dim ConfusedAnimation As New AnimationQueryObject(pNPC, Not own)
 
-                        ConfusionAnimation.AnimationPlaySound("Battle\Effects\Confused", 0, 0)
-                        Dim DuckEntity1 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
-                        Dim DuckEntity2 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
-                        Dim DuckEntity3 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
+                        ConfusedAnimation.AnimationPlaySound("Battle\Effects\Confused", 0, 0)
+                        Dim DuckEntity1 As Entity = ConfusedAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.25F), 1, 0, 0)
+                        Dim DuckEntity2 As Entity = ConfusedAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.25F), 1, 0, 0)
+                        Dim DuckEntity3 As Entity = ConfusedAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.25F), 1, 0, 0)
 
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.75F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.75F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.75F, 0)
 
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0)
 
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 2.25F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 2.25F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 2.25F, 0)
 
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 3.0F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 3.0F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 3.0F, 0)
 
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 3.75F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 3.75F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 3.75F, 0)
 
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 4.5F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 4.5F, 0)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 4.5F, 0)
 
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
-                        ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 5.25F, 1)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 5.25F, 1)
+                        ConfusedAnimation.AnimationChangeTexture(DuckEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 5.25F, 1)
 
-                        BattleScreen.BattleQuery.Add(ConfusionAnimation)
+                        BattleScreen.BattleQuery.Add(ConfusedAnimation)
                     Else
                         BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Confused", False))
                     End If
@@ -2929,20 +2960,27 @@
                             ChangeCameraAngle(1, own, BattleScreen)
                             'Frozen animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                Dim FrozenAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+                                Dim FrozenAnimation As AnimationQueryObject = New AnimationQueryObject(Nothing, Not own)
 
                                 FrozenAnimation.AnimationPlaySound("Battle\Effects\Frozen", 0, 0)
                                 Dim maxAmount As Integer = 8
                                 Dim currentAmount As Integer = 0
                                 While currentAmount <= maxAmount
                                     Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\StatusEffect\Frozen", New Rectangle(0, 0, 32, 32), "")
-                                    Dim xPos = CSng(Random.Next(-4, 4) / 8)
-                                    Dim zPos = CSng(Random.Next(-4, 4) / 8)
+                                    Dim xPos As Single
+                                    Dim zPos As Single
+                                    If own = False Then
+                                        xPos = CSng(Random.Next(-2, 4) / 8)
+                                        zPos = CSng(Random.Next(-2, 4) / 8)
+                                    Else
+                                        xPos = CSng(Random.Next(-4, 2) / 8)
+                                        zPos = CSng(Random.Next(-4, 2) / 8)
+                                    End If
 
                                     Dim Position As New Vector3(xPos, -0.25, zPos)
                                     Dim Scale As New Vector3(0.25F)
                                     Dim startDelay As Double = 5.0 * Random.NextDouble()
-                                    Dim SnowflakeEntity = FrozenAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+                                    Dim SnowflakeEntity = FrozenAnimation.SpawnEntity(pNPC.Position + Position, Texture, Scale, 1.0F, CSng(startDelay))
 
                                     FrozenAnimation.AnimationFade(SnowflakeEntity, True, 0.02, False, 0.0F, CSng(startDelay), 0.0)
                                     Threading.Interlocked.Increment(currentAmount)
@@ -3449,42 +3487,42 @@
             Else
                 'Works!
                 If Core.Player.ShowBattleAnimations <> 0 Then
-                    Dim ConfusionAnimation As New AnimationQueryObject(pNPC, Not own)
+                    Dim ConfusedAnimation As New AnimationQueryObject(pNPC, Not own)
 
-                    ConfusionAnimation.AnimationPlaySound("Battle\Effects\Confused", 0, 0)
-                    Dim DuckEntity1 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
-                    Dim DuckEntity2 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
-                    Dim DuckEntity3 As Entity = ConfusionAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1, 0, 0.5)
+                    ConfusedAnimation.AnimationPlaySound("Battle\Effects\Confused", 0, 0)
+                    Dim DuckEntity1 As Entity = ConfusedAnimation.SpawnEntity(New Vector3(-0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.25F), 1, 0, 0)
+                    Dim DuckEntity2 As Entity = ConfusedAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.25F), 1, 0, 0)
+                    Dim DuckEntity3 As Entity = ConfusedAnimation.SpawnEntity(New Vector3(0.25, 0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.25F), 1, 0, 0)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.5, 0.5)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.75F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.75F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 0.75F, 0)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0.5)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 1.5F, 0)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 1.5F, 0.5)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 2.25F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 2.25F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 2.25F, 0)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 2.0F, 0.5)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 3.0F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 3.0F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 0, 16, 16), ""), 3.0F, 0)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 2.5F, 0.5)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 3.75F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 3.75F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 16, 16, 16), ""), 3.75F, 0)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 3, 0.5)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 4.5F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 4.5F, 0)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 32, 16, 16), ""), 4.5F, 0)
 
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
-                    ConfusionAnimation.AnimationChangeTexture(DuckEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 3.5F, 0.5)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 5.25F, 1)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 5.25F, 1)
+                    ConfusedAnimation.AnimationChangeTexture(DuckEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Confused", New Rectangle(0, 48, 16, 16), ""), 5.25F, 1)
 
-                    BattleScreen.BattleQuery.Add(ConfusionAnimation)
+                    BattleScreen.BattleQuery.Add(ConfusedAnimation)
                 Else
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Confused", False))
                 End If
@@ -3644,7 +3682,7 @@
                     Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
 
                     Dim Position As New Vector3(xPos, -0.4, zPos)
-                    Dim Destination As New Vector3(xPos, 1.2, zPos)
+                    Dim Destination As New Vector3(0, 1.2, 0)
                     Dim Scale As New Vector3(0.2F)
                     Dim startDelay As Double = 5.0 * Random.NextDouble()
                     Dim StatEntity As Entity = StatAnimation.SpawnEntity(pNPC.Position + Position, Texture, Scale, 1.0F, CSng(startDelay))

From bf887b0e3a1ef2e7d70c489ec7dd60fb3e0bc90d Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Tue, 14 Dec 2021 22:11:11 +0100
Subject: [PATCH 30/57] =?UTF-8?q?Fixed=20Bug:=20When=20the=20lead=20Pok?=
 =?UTF-8?q?=C3=A9mon=20faints=20and=20you=20switch=20to=20a=20different=20?=
 =?UTF-8?q?Pok=C3=A9mon,=20when=20the=20battle=20ends,=20your=20current=20?=
 =?UTF-8?q?Pok=C3=A9mon=20disappears?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 P3D/Battle/BattleSystemV2/Battle.vb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index f2fa41fc3..9a19a130b 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -2674,7 +2674,7 @@
 
             If BattleScreen.IsTrainerBattle = False AndAlso Core.Player.ShowBattleAnimations <> 0 Then
                 If own = False Then
-                    Dim FaintAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True, BattleScreen.OppPokemonModel)
+                    Dim FaintAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
                     FaintAnimation.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
                     FaintAnimation.AnimationMove(Nothing, False, 0, -1, 0, 0.05, False, False, 2, 0,,, 3)
                     BattleScreen.BattleQuery.Add(FaintAnimation)
@@ -7121,17 +7121,17 @@
                     Loop While SmokeReturned <= 38
                 End If
 
+                ' Pokemon disappears
+                BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
                 If Core.Player.ShowBattleAnimations <> 0 Then
-                    ' Pokemon disappears
-                    BallReturn.AnimationFade(Nothing, False, 1, False, 0, 1, 0)
                     BallReturn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
 
                     ' Ball returns
                     BallReturn.AnimationPlaySound("Battle\Pokeball\Throw", 1, 0)
                     Dim BallReturnEntity As Entity = BallReturn.SpawnEntity(Nothing, BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
                     BallReturn.AnimationMove(BallReturnEntity, True, -2, 0, 0, 0.1, False, True, 1, 0,, 0.3)
-                    BattleScreen.AddToQuery(InsertIndex, BallReturn)
                 End If
+                BattleScreen.AddToQuery(InsertIndex, BallReturn)
 
                 Dim index As Integer = NewPokemonIndex
                 If index <= -1 Then

From 6dcb11c775dd4b7b6707ffca7457515ae43127ac Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Mon, 20 Dec 2021 20:14:26 +0100
Subject: [PATCH 31/57] Mega Evolution Animation - Attempt 1

---
 P3D/Battle/BattleSystemV2/Battle.vb           |  40 +++++++++++++++++-
 .../Sounds/Battle/Effects/MegaEvolution.wav   | Bin 0 -> 514532 bytes
 .../Battle/MegaEvolution/Mega_Phase1.png      | Bin 0 -> 258 bytes
 .../Battle/MegaEvolution/Mega_Phase2.png      | Bin 0 -> 4157 bytes
 P3D/P3D.vbproj                                |   9 ++++
 5 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 P3D/Content/Sounds/Battle/Effects/MegaEvolution.wav
 create mode 100644 P3D/Content/Textures/Battle/MegaEvolution/Mega_Phase1.png
 create mode 100644 P3D/Content/Textures/Battle/MegaEvolution/Mega_Phase2.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 9a19a130b..3800a3759 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -486,8 +486,10 @@
         Sub DoMegaEvolution(ByVal BattleScreen As BattleScreen, ByVal own As Boolean)
 
             Dim p As Pokemon = BattleScreen.OwnPokemon
+            Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
             If Not own Then
                 p = BattleScreen.OppPokemon
+                pNPC = BattleScreen.OppPokemonNPC
             End If
             'Transform a Pokemon into it's Mega Evolution
             Dim _base As String = p.GetDisplayName()
@@ -504,7 +506,43 @@
                 p.CalculateStats()
                 p.LoadAltAbility()
                 Me.ChangeCameraAngle(1, own, BattleScreen)
-                BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(own, ToggleEntityQueryObject.BattleEntities.OwnPokemon, PokemonForms.GetOverworldSpriteName(p), 0, 1, -1, -1))
+                '***Mega Evolution Animation***
+                If Core.Player.ShowBattleAnimations <> 0 Then
+                    Dim MegaAnimation As AnimationQueryObject = New AnimationQueryObject(Nothing, Not own)
+                    MegaAnimation.AnimationPlaySound("Battle\Effects\MegaEvolution", 0, 0)
+
+                    Dim maxAmount As Integer = 16
+                    Dim currentAmount As Integer = 0
+                    While currentAmount <= maxAmount
+                        Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\MegaEvolution\Mega_Phase1")
+                        Dim xPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+                        Dim zPos = CSng((Random.NextDouble() - 0.5) * 1.2)
+
+                        Dim Position As New Vector3(xPos, 0.8, zPos)
+
+                        Dim Scale As New Vector3(0.5F)
+                        Dim startDelay As Double = 5.0 * Random.NextDouble()
+                        Dim Phase1Entity As Entity = MegaAnimation.SpawnEntity(pNPC.Position + Position, Texture, Scale, 1.0F, CSng(startDelay))
+
+                        Dim Destination As New Vector3(CSng(pNPC.Position.X - Phase1Entity.Position.X), -0.8, CSng(pNPC.Position.Z - Phase1Entity.Position.Z))
+                        MegaAnimation.AnimationMove(Phase1Entity, True, Destination.X, Destination.Y, Destination.Z, 0.05F, False, True, CSng(startDelay), 0.0F)
+                        Threading.Interlocked.Increment(currentAmount)
+                    End While
+
+                    Dim Phase2Entity As Entity = MegaAnimation.SpawnEntity(pNPC.Position, TextureManager.GetTexture("Textures\Battle\MegaEvolution\Mega_Phase2"), New Vector3(0.0F), 1.0F, 2.0F, 0.0F)
+                    MegaAnimation.AnimationRotate(Phase2Entity, False, 0, 0, 0.25F, 0, 0, 10.0F, 2, 0F, False, False, True, False)
+                    MegaAnimation.AnimationScale(Phase2Entity, False, True, 1.0F, 1.0F, 1.0F, 0.05F, 2.0F, 0.0F)
+                    BattleScreen.BattleQuery.Add(MegaAnimation)
+                    If pNPC Is BattleScreen.OwnPokemonNPC Then
+                        BattleScreen.OwnPokemonNPC.SetupSprite(PokemonForms.GetOverworldSpriteName(p), "", False)
+                    Else
+                        BattleScreen.OppPokemonNPC.SetupSprite(PokemonForms.GetOverworldSpriteName(p), "", False)
+                    End If
+                Else
+                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\MegaEvolution", False))
+                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(own, ToggleEntityQueryObject.BattleEntities.OwnPokemon, PokemonForms.GetOverworldSpriteName(p), 0, 1, -1, -1))
+                End If
+
                 BattleScreen.BattleQuery.Add(New TextQueryObject(_base & " has Mega Evolved!"))
                 TriggerAbilityEffect(BattleScreen, own)
             End If
diff --git a/P3D/Content/Sounds/Battle/Effects/MegaEvolution.wav b/P3D/Content/Sounds/Battle/Effects/MegaEvolution.wav
new file mode 100644
index 0000000000000000000000000000000000000000..83da982da44c2d5019d4b49338e280797c832559
GIT binary patch
literal 514532
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%0A?~l7~F}
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

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/MegaEvolution/Mega_Phase1.png b/P3D/Content/Textures/Battle/MegaEvolution/Mega_Phase1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1d4a6efbc484f930a32dd82c39506e5d3e8be1e7
GIT binary patch
literal 258
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W
zHKHUqKdq!Zu_%?nIW?!avREOwq%<WnUm+wvKj+}`hc!TDy`C<PArXg@|NQ@Nf7pTP
zSRi|kRl*g<#e53K8STT3lCB<+`!|2$GQNgrnGejqX-qA*0vtCvca$ACKegw-p>EoN
z5{}Nk1^bv6C_09+3#40C_DPf;2q<!3XJ&S0ES$z~&Az~@iLu*RZ9&n>xx9hi2l@VR
uWrhj}KIMoKJKDU+NGg{fYT*J_1_q^_I}gqdn>h{WFa}RoKbLh*2~7aIOjlC?

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/MegaEvolution/Mega_Phase2.png b/P3D/Content/Textures/Battle/MegaEvolution/Mega_Phase2.png
new file mode 100644
index 0000000000000000000000000000000000000000..68cd6e9aa23c3bf288780696e8e34377899fb1e9
GIT binary patch
literal 4157
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
EAAG=UWB>pF

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 32cc4e1b4..dac21a01e 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14713,6 +14713,15 @@
     <Content Include="Content\Sounds\Battle\Effects\Confused.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Effects\MegaEvolution.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\Textures\Battle\MegaEvolution\Mega_Phase1.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\Textures\Battle\MegaEvolution\Mega_Phase2.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\StatusEffect\Frozen.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

From f1ccba7e4569ea87a590817b349aa41480cc78db Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Tue, 28 Dec 2021 13:55:30 +0100
Subject: [PATCH 32/57] Improved Mega Evolution animation and slightly tweaked
 the speed of some of the battle intros

Battle intros need testing still
---
 P3D/Battle/BattleSystemV2/Battle.vb | 14 ++++----------
 P3D/Screens/BattleIntroScreen.vb    |  4 ++--
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 3800a3759..64673f565 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -529,20 +529,14 @@
                         Threading.Interlocked.Increment(currentAmount)
                     End While
 
-                    Dim Phase2Entity As Entity = MegaAnimation.SpawnEntity(pNPC.Position, TextureManager.GetTexture("Textures\Battle\MegaEvolution\Mega_Phase2"), New Vector3(0.0F), 1.0F, 2.0F, 0.0F)
-                    MegaAnimation.AnimationRotate(Phase2Entity, False, 0, 0, 0.25F, 0, 0, 10.0F, 2, 0F, False, False, True, False)
-                    MegaAnimation.AnimationScale(Phase2Entity, False, True, 1.0F, 1.0F, 1.0F, 0.05F, 2.0F, 0.0F)
+                    Dim Phase2Entity As Entity = MegaAnimation.SpawnEntity(pNPC.Position, TextureManager.GetTexture("Textures\Battle\MegaEvolution\Mega_Phase2"), New Vector3(0.0F), 1.0F, 4.0F, 0.0F)
+                    MegaAnimation.AnimationRotate(Phase2Entity, False, 0, 0, 0.1F, 0, 0, 10.0F, 4, 0F, False, False, True, False)
+                    MegaAnimation.AnimationScale(Phase2Entity, False, True, 1.25F, 1.25F, 1.25F, 0.02F, 4.0F, 0.0F)
                     BattleScreen.BattleQuery.Add(MegaAnimation)
-                    If pNPC Is BattleScreen.OwnPokemonNPC Then
-                        BattleScreen.OwnPokemonNPC.SetupSprite(PokemonForms.GetOverworldSpriteName(p), "", False)
-                    Else
-                        BattleScreen.OppPokemonNPC.SetupSprite(PokemonForms.GetOverworldSpriteName(p), "", False)
-                    End If
                 Else
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\MegaEvolution", False))
-                    BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(own, ToggleEntityQueryObject.BattleEntities.OwnPokemon, PokemonForms.GetOverworldSpriteName(p), 0, 1, -1, -1))
                 End If
-
+                BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(own, ToggleEntityQueryObject.BattleEntities.OwnPokemon, PokemonForms.GetOverworldSpriteName(p), 0, 1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(_base & " has Mega Evolved!"))
                 TriggerAbilityEffect(BattleScreen, own)
             End If
diff --git a/P3D/Screens/BattleIntroScreen.vb b/P3D/Screens/BattleIntroScreen.vb
index 121fdaeb2..bf53de80d 100644
--- a/P3D/Screens/BattleIntroScreen.vb
+++ b/P3D/Screens/BattleIntroScreen.vb
@@ -455,7 +455,7 @@
         If Animations.Count = 0 Then
             Animations.Add(New Rectangle(CInt(Core.windowSize.Width / 2 - (Core.windowSize.Width / 100 / 2)), CInt(Core.windowSize.Height / 2 - (Core.windowSize.Height / 100 / 2)), CInt(Core.windowSize.Width / 100), CInt(Core.windowSize.Height / 100)))
         Else
-            Dim Speed As Integer = CInt(Me.duration.TotalMilliseconds / Core.windowSize.Height * 3)
+            Dim Speed As Integer = CInt(Me.duration.TotalMilliseconds / Core.windowSize.Height * 4)
             If Animations(0).Height >= Core.windowSize.Height + 128 Then
                 ready = True
             End If
@@ -479,7 +479,7 @@
             If value >= Core.windowSize.Height / 2 + 4 Then
                 ready = True
             Else
-                value += CInt(Math.Ceiling(Me.duration.TotalMilliseconds / Core.windowSize.Height))
+                value += CInt(Math.Ceiling(Me.duration.TotalMilliseconds / Core.windowSize.Height * 3))
             End If
         End If
     End Sub

From 9468900f9b18cf355822661c74d429be5d2484fd Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Tue, 28 Dec 2021 17:34:19 +0100
Subject: [PATCH 33/57] Removed Attack textures that will never be used

---
 .../Battle/Fighting/forcepalmhand.png         | Bin 1876 -> 0 bytes
 .../Battle/Fighting/forcepalmhandfaded.png    | Bin 1849 -> 0 bytes
 .../Battle/Fighting/forcepalmhandfading.png   | Bin 1863 -> 0 bytes
 .../Battle/Fighting/forcepalmimpact.png       | Bin 1477 -> 0 bytes
 .../Battle/Fighting/forcepalmparticle.png     | Bin 260 -> 0 bytes
 P3D/Content/Textures/Battle/Fire/Hand.png     | Bin 2805 -> 0 bytes
 .../Textures/Battle/Other/RedCircle.png       | Bin 1740 -> 0 bytes
 .../Textures/Battle/Other/YellowCloud.png     | Bin 385 -> 0 bytes
 P3D/Content/Textures/Battle/Status.png        | Bin 3682 -> 0 bytes
 P3D/Content/Textures/Battle/Water/Water.png   | Bin 279 -> 0 bytes
 P3D/Content/Textures/Battle/Water/bubble.png  | Bin 571 -> 0 bytes
 P3D/P3D.vbproj                                |  37 ++----------------
 12 files changed, 3 insertions(+), 34 deletions(-)
 delete mode 100644 P3D/Content/Textures/Battle/Fighting/forcepalmhand.png
 delete mode 100644 P3D/Content/Textures/Battle/Fighting/forcepalmhandfaded.png
 delete mode 100644 P3D/Content/Textures/Battle/Fighting/forcepalmhandfading.png
 delete mode 100644 P3D/Content/Textures/Battle/Fighting/forcepalmimpact.png
 delete mode 100644 P3D/Content/Textures/Battle/Fighting/forcepalmparticle.png
 delete mode 100644 P3D/Content/Textures/Battle/Fire/Hand.png
 delete mode 100644 P3D/Content/Textures/Battle/Other/RedCircle.png
 delete mode 100644 P3D/Content/Textures/Battle/Other/YellowCloud.png
 delete mode 100644 P3D/Content/Textures/Battle/Status.png
 delete mode 100644 P3D/Content/Textures/Battle/Water/Water.png
 delete mode 100644 P3D/Content/Textures/Battle/Water/bubble.png

diff --git a/P3D/Content/Textures/Battle/Fighting/forcepalmhand.png b/P3D/Content/Textures/Battle/Fighting/forcepalmhand.png
deleted file mode 100644
index ca1fa76642b3873e48e4c0090f4a86566927dd97..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1876
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
O0000<MNUMnLSTZQx^_|k

diff --git a/P3D/Content/Textures/Battle/Fighting/forcepalmhandfaded.png b/P3D/Content/Textures/Battle/Fighting/forcepalmhandfaded.png
deleted file mode 100644
index 6d7e52fb2a78da641ff8faaabb7bad0ed7e973c4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1849
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

diff --git a/P3D/Content/Textures/Battle/Fighting/forcepalmhandfading.png b/P3D/Content/Textures/Battle/Fighting/forcepalmhandfading.png
deleted file mode 100644
index 5b3bd33add1cd9fd583aa1e02e40a72acfa796fb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1863
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
BY^MMK

diff --git a/P3D/Content/Textures/Battle/Fighting/forcepalmimpact.png b/P3D/Content/Textures/Battle/Fighting/forcepalmimpact.png
deleted file mode 100644
index dcb19dac53c32f89fa010ad60d863c3068f977f1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1477
zcmV;$1v>hPP)<h;3K|Lk000e1NJLTq0024w001=z1^@s65bgN=00001b5ch_0Itp)
z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1zJf&K~!i%?OI!i
z<5U<PuXxA%6$BAQP(f4>1wj@?K@?vU1Rn$yMSKvv;KPEhAgr(mzNo9nf{M~6>FBuV
zgW$f1tooqB4(N-+4x6OYX-?9amGvIKFa1-~)6+I>)2593!AIMi|NNJnKj;6Gbm9Mi
zIF65zuhWHZtD5hGJLKoqMBNG=M38YpTfG(Ui;tI~tpoo(|5OCm>;&2l_FLZxt`U)u
z;8ixx^PJ!=`8hxEY_+p1NTKJbzdbwLd#KjBQbY&Bw}PvEJN#Vcd2)C@aA+~Sj*giE
zO(~9lv|4FiBGbCy*P{DzvcA#hHQ#TZAtL31yPV0v0Xzcv?Yw@Oo=EQ(dQ!fN!QEo2
zTp-P!Gdnn#SltcZQNNqUx~X=Fsq#=?46e=R?D#~=|03qf1DyE6<lG=4ZU4c%zwr4d
zQua5VD1PTLlRU{iKuqStY9%^*t-5xhUkNYcF33;*#`kmh=~mUHP`oToC>Y<5&nnXF
zbsXE7lE)GnobsITFw*&hx)VO?S<#K|(#E;8&1;h1d5mL}Nn{N=dT6Vsk^u68!I5jV
z=yC=fSL5TjnZz%~$I_8_cYFc@dB<pM2;uYr1~5vKK-uJkV6I7Lhqkh0N^yYVZ9RsD
z5RN`8)5ivNm~@jE^F^#UaCMPZznTo{<Vr9VW$MJBu70b_QY2!<ft`uTn8vTt>#s;q
zCv|JKa8jqx4i2l0JnPd4GDWg!X)BB05w6v@eJi|8#3qO9gx6<{=qxf_`++u0w#jzT
zNk9DLYGw6gnKB-rtkuWJ#2Zgu(3Z)EEZZGc_y#M9Ol#LsriIkg(~^?H62tPMkqvl{
zQlyipni*(Q_oFY7+A=LaJWD;KD`L%);h7<6E;K((WCo6PNv(gpezB(L@F>kdQJ_uQ
z&ic|z)o9qQD`d*(fP$Yo%FwdO;hBTBy94`=Y*$@N-72Ev0R~=96_$~<DF&wRsC}>r
zuDyO$s&E!1r62m08usNPG8yW2bbG3FnhnA*NVn7-q@%uMbr6y9!OaL~Y$a7(#zvHa
zwzENk%PWiFnKGOoom({$b(Ko6)BTuLJ~x5lh66SJ89qimP>oMyXVh>S7x~WS`F!NM
zvS;NanKm2<^22P9WSObU2Lq`e^;&RqAt{S9_DD9slx1#4T)or}1}%rj2NZ3?MQ(gP
zTV{FTGvCw?&xszF!{Y%f`7jh6Nfq|6#D)Qv(q`%h7UEqwJUU!Eybp!<=dQpsmem5T
zS-~xuFUvACK76Zn6YG<vxWh8iH@Vr?eSx1cJQ-X&y3@46Sk;-{rg@9e4JajEuODiU
zh)fP{;l33;07E}?8=1|GH=i>jpnX}}9io=HOYSKmS{zurp!~Dc(6md<z#xU(S46yc
z@ZmR&FombpK;#LsO|@I5Ob0M>P>dD&xRb4?yl2f3Bu@6UUlPN>*CxX<JTlm4vtLDk
zuNw3&V^gfUweT@!)4{#bS=^v->>iBmz>UZ0qNaGj2>*4WJJg|w4Mp9F?npMfJ}X$}
zO+*50N^hDRD~h}m5mV&?&b*{MS0wrHTuhY<UN0sG3!$x=rLQP&a=A0s9d)nK$u6qz
z_)?kkuz9&=88Z`O^8mi&F*!)`(IbM~m3<$ARr=l}Ya;6Nl1wWfdY}vrJLi6UZm)l`
zd4Y&^kjM}Gdrh0XJDQt~i12E`6Nz(Z3Hg*TPZ?maI2nKF!DWd+TOvLm;N3oZU-_9E
zI5E$g0!)cOi+_Dz7I^)df+SH^o))pK0qnw`_5^CH*JOC>fEx~ieFdxA0Btr1EL$>s
f6i3m6g@u0s%eGN*r=wNe00000NkvXXu0mjfk>SrA

diff --git a/P3D/Content/Textures/Battle/Fighting/forcepalmparticle.png b/P3D/Content/Textures/Battle/Fighting/forcepalmparticle.png
deleted file mode 100644
index 3ece9177f0d7f2f6cbf6a3620ef8a87629c40dcd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 260
zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6T7>k44ofy`glX(f`u%tWsIx;Y9
z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f-^l`978mMlO>)!n00;1|MLqaj<j(lv!9>a
zz|}mh>EqrNTMNuWq=aq0&-(m7?$fpZ-#7I;W(crlvUE95RXA|#$<6KqYR;xHtM{=T
zQ?T=pQQ;5eVl3eG=z1vCV3v@<z?dR^z=Y#*kq}1=cT<Jb5{@><nh6#moN5f&OtUx+
zSBNS%FFiR~*s&xrUtc|<Aws~ea+A~)PF5ZshTnVU%Ww5)<pnyD!PC{xWt~$(69Bnf
BRt5k7

diff --git a/P3D/Content/Textures/Battle/Fire/Hand.png b/P3D/Content/Textures/Battle/Fire/Hand.png
deleted file mode 100644
index 51d3171d6c379985e27f14257b7d91cdb621874d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2805
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
Hu0mjf*NGP~

diff --git a/P3D/Content/Textures/Battle/Other/RedCircle.png b/P3D/Content/Textures/Battle/Other/RedCircle.png
deleted file mode 100644
index 277e030d0da320bde6e1e1dea4a4d467dc8d63a7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1740
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

diff --git a/P3D/Content/Textures/Battle/Other/YellowCloud.png b/P3D/Content/Textures/Battle/Other/YellowCloud.png
deleted file mode 100644
index 1e75ef2bbd842dfb19eed47761dbd383440bda83..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 385
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN
z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!1~E?;$B+p3w^JOs4jG8J{7>E69$uioVy(JB
z)b~8CD|$8#;X&fDI|LjrhW+_G`9538O%5-%HXSD`{mUvMK=8$Qm5`LGuvBu$ZO#8q
zH`2VcOQ!~@lqJO6PCa~*_r1ckkWJZT*KUfll&wDaa}M9}DeDZ{&B|;xd!MOfZurbP
zS4C&3^`V<<54}m+#o%!3BU3`wy4;G>kAq`fz9clvW_qyU*3!csS*Z*wr5XHo?1~8L
z7Tacgi~k<O5ygy$JRM4P><@Ob=`vj5Z^&GDOfT>!JI9|{liYXCE4x{6$URV>ZxO?R
z80+>&HZuw&7T7T;@SPA@v|I3*?u+}(^BDxRrZr!)cd6a6_P%z5SF=jU-?bkW0D-;G
aMQ&yOfH^|E(wl(6#^CAd=d#Wzp$Pz42a`1b

diff --git a/P3D/Content/Textures/Battle/Status.png b/P3D/Content/Textures/Battle/Status.png
deleted file mode 100644
index 731861d6cab922265c0be668ac8acf89420206bd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3682
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

diff --git a/P3D/Content/Textures/Battle/Water/Water.png b/P3D/Content/Textures/Battle/Water/Water.png
deleted file mode 100644
index 4722e8b3dfb1099670f48729ff434e6b007c170b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 279
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl
z_H+M9WCij$3p^r=85sBugD~Uq{1quc!8M*Pjv*HQr4x7aHaPG&M^0Nfqy5>k1u4DF
zE_+TG21NW2mR6aTDjmGBZ}X43Ilj#wl)T?6s`Bk)TP5>>p{390!fdluj2D>MPJG}N
z&^2aAcd)Ip{1D1kAD4M*{ez3Mv`-ygaAtDSfp%$y!Y8R`A3S-QXe4mKNOI0cvxb!)
zntn|Q{;e4QF+6NZ_>;PzFN|B7bn2Ct?T@Y9QT1|n<ms{*$G59F@Bh~{&9wP@qoMx3
X=jWFPioGoWx|_k%)z4*}Q$iB}n;~u8

diff --git a/P3D/Content/Textures/Battle/Water/bubble.png b/P3D/Content/Textures/Battle/Water/bubble.png
deleted file mode 100644
index da25aff4aec618793100702ecd39d2280fc40367..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 571
zcmV-B0>u4^P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0nkZAK~y+TeUmXy
z!cY{2F&ZZa;|~zy1cQ^m1R{f7Oz7A_X&0kzu<52h0T$E7g(eO(HZiYZ5F!hS3o$W~
zr9c=ccJX=7>w7{I@gyg&eZA-Fz2%WvCB5>vV^|Ikx_xe4I$Uo5ugPS>;rV<n>;+xk
za07mG=ZSj&VOhS=5xorsn&Ao~G#ZVLXS3O16h+xE{K^C35)kfo2WbexI+1C;j^p@%
zbG{)T{fhQBtxNkG<Dgz{CsF`ve_L+-DeJ<S0+IsYBcbi_c)TmOgz8P^U*EQTd7BbF
zTR_m#&7I5ZE{in7?vwo_-1K#;C00?mBpPQ+HyX((=s>qTUaYcEH@yx*s|*;utOE!#
z$jbRWo^yxqn$h$V+kXO-0niNjG4Z=AK)yNjVO0p2S^-toO^05V95T^Cu@>;0J^Ua)
z=WT+J6=c~oreCbFXYz-2VZT<c9uClr8e^JwK6?tFEJ9>;U8u4iYLO|G?$;Lp(~Ai(
zAhT6~LM>p08XJ@??@P?DBs&n0vgr+S&SzVVBLLJk1>1P0!gQdrGM)$@GYI;ev3^XT
zkiu`|7inCF^uLG^K0CMfWh^ZKU=*o!*(aw@dvuJ}WH~95`2p})2YX#!M0EfF002ov
JPDHLkV1jst??M0o

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index dac21a01e..6edd1715b 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -26308,30 +26308,6 @@
     <Content Include="Content\Textures\battletower.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Textures\Battle\Fighting\forcepalmhand.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Fighting\forcepalmhandfaded.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Fighting\forcepalmhandfading.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Fighting\forcepalmimpact.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Fighting\forcepalmparticle.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Fire\Hand.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Other\RedCircle.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Other\YellowCloud.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
     <Content Include="Content\Textures\Battle\StatChange\Heal.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -26341,15 +26317,6 @@
     <Content Include="Content\Textures\Battle\StatChange\statUp.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="Content\Textures\Battle\Status.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Water\bubble.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="Content\Textures\Battle\Water\Water.png">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
     <Content Include="Content\Textures\Berries.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -30943,7 +30910,9 @@
       <Install>false</Install>
     </BootstrapperPackage>
   </ItemGroup>
-  <ItemGroup />
+  <ItemGroup>
+    <Folder Include="Content\Textures\Battle\Fighting\" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
   <Import Condition=" '$(Configuration)' != 'DebugNoContent' Or '$(Configuration)' != 'ReleaseNoContent' " Project="$(MSBuildExtensionsPath)\MonoGame\v3.0\MonoGame.Content.Builder.targets" />
   <PropertyGroup>

From 92fafb2d63cd106c53b3d878fdfbb96f99f1e06c Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Tue, 28 Dec 2021 17:35:02 +0100
Subject: [PATCH 34/57] Fix Pound sound effect pointing towards the wrong
 location

---
 P3D/Pokemon/Attacks/Normal/Pound.vb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/P3D/Pokemon/Attacks/Normal/Pound.vb b/P3D/Pokemon/Attacks/Normal/Pound.vb
index 8b4525c2b..5acd68c02 100644
--- a/P3D/Pokemon/Attacks/Normal/Pound.vb
+++ b/P3D/Pokemon/Attacks/Normal/Pound.vb
@@ -57,7 +57,7 @@
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Pound", 0.5, 2.5)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Pound", 0.5, 2.5)
             Dim PoundEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Pound"), New Vector3(0.5F), 1, 0, 3)
             MoveAnimation.AnimationFade(PoundEntity, True, 1.0F, False, 0.0F, 3, 0)
             BattleScreen.BattleQuery.Add(MoveAnimation)

From 312e3ed934f821a6ef960c7fa42542e714453c17 Mon Sep 17 00:00:00 2001
From: JappaWakkaP3D <31563291+JappaWakka@users.noreply.github.com>
Date: Tue, 28 Dec 2021 17:35:28 +0100
Subject: [PATCH 35/57] Added Wrap & Whirlpool Animations

---
 P3D/Battle/BattleSystemV2/Battle.vb           |  50 ++++++++++++++++++
 .../Sounds/Battle/Attacks/Normal/Wrap.wav     | Bin 0 -> 243240 bytes
 .../Sounds/Battle/Attacks/Water/Whirlpool.wav | Bin 0 -> 560952 bytes
 P3D/Content/Textures/Battle/Normal/Wrap.png   | Bin 0 -> 1192 bytes
 .../Textures/Battle/Water/Whirlpool.png       | Bin 0 -> 1525 bytes
 P3D/P3D.vbproj                                |  12 +++++
 P3D/Pokemon/Attacks/Normal/Wrap.vb            |  13 +++++
 P3D/Pokemon/Attacks/Water/Whirlpool.vb        |  10 +++-
 8 files changed, 84 insertions(+), 1 deletion(-)
 create mode 100644 P3D/Content/Sounds/Battle/Attacks/Normal/Wrap.wav
 create mode 100644 P3D/Content/Sounds/Battle/Attacks/Water/Whirlpool.wav
 create mode 100644 P3D/Content/Textures/Battle/Normal/Wrap.png
 create mode 100644 P3D/Content/Textures/Battle/Water/Whirlpool.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 64673f565..a5b5d117b 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -5813,6 +5813,20 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Wrap Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, True, BattleScreen)
+                                Dim WrapAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
+                                WrapAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
+                                Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+                                WrapAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, True, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 1)
+                                BattleScreen.BattleQuery.Add(WrapAnimation)
+                            End If
                             ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Wrap!", "wrap")
                         End If
                     End If
@@ -5827,6 +5841,17 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Whirlpool Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, True, BattleScreen)
+                                Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
+                                WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
+                                Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
+                                WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
+                                WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)
+                                BattleScreen.BattleQuery.Add(WhirlpoolAnimation)
+                            End If
                             ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Whirlpool!", "whirlpool")
                         End If
                     End If
@@ -6623,6 +6648,20 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Wrap Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, False, BattleScreen)
+                                Dim WrapAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True)
+                                WrapAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
+                                Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+                                WrapAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, True, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 1)
+                                BattleScreen.BattleQuery.Add(WrapAnimation)
+                            End If
                             ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Wrap!", "wrap")
                         End If
                     End If
@@ -6637,6 +6676,17 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Whirlpool Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, False, BattleScreen)
+                                Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True)
+                                WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
+                                Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
+                                WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
+                                WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)
+                                BattleScreen.BattleQuery.Add(WhirlpoolAnimation)
+                            End If
                             ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Whirlpool!", "whirlpool")
                         End If
                     End If
diff --git a/P3D/Content/Sounds/Battle/Attacks/Normal/Wrap.wav b/P3D/Content/Sounds/Battle/Attacks/Normal/Wrap.wav
new file mode 100644
index 0000000000000000000000000000000000000000..aac7fa92affa59206d3c61594a9c359fef92662b
GIT binary patch
literal 243240
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
BM6v(?

literal 0
HcmV?d00001

diff --git a/P3D/Content/Sounds/Battle/Attacks/Water/Whirlpool.wav b/P3D/Content/Sounds/Battle/Attacks/Water/Whirlpool.wav
new file mode 100644
index 0000000000000000000000000000000000000000..de5b37b3be7231814a5e6877b4931c4a8b302930
GIT binary patch
literal 560952
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%0DH&M_8ATO2Srut%k<X9C=-S+D?Nqj|*Z#aNbV+sb
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

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/Normal/Wrap.png b/P3D/Content/Textures/Battle/Normal/Wrap.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ba4edfe36803424950a83da6825aec436fc8ceb
GIT binary patch
literal 1192
zcmV;Z1XufsP)<h;3K|Lk000e1NJLTq002M$004jp1^@s6yMb?N00009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT000Ct
zNkl<Zc-rlpA$t=+5Qe`~SmN#<(73I_w(g>k6h)#S3hLq@iaJ1nBUMm|BCfSnoTL2*
z>#9+UpcCdcx0k(;OD;DvCV8IrN%Flnx4Spr>?Y1RNRC7SC;$bZ02F`%Pyh-*0Vn_k
zpa6K>{yujA@aVzwL=*rL4gh(c<LTq~asc?^0muR1izfi@UR=rrV6DZMH@~_MAawOb
z1F+V@T8kf_?z#`);`-DXW5kIEfMoLd$Qfhc1L%6{7XScQ004mbw;Vq&?-YP206eU<
z$givj2+8p6flJf0ARd4m0NKlj&KR?l0a73&&N+;x{Y4g7Ymug@taZR(+;eG~q6|WQ
z^*0;3nhA?%fy3jTOAi17K^d^PEpE_B5KHv{0#O!Sgb=I<9Uk{e|IqmikQNF+0Vn_k
zpa2wr0#E=7KmjNK1yK4#D54}*CY)*lB1&RB2IFEKKokI893_)P3;-@(0o;c%Mn;Rw
zVBA|WN60Z2(Iw^sp!Z$B`U*e+1gtUMF(PIV<X7H@u<2}|?`y*pyO;+3EZ`9Mx}Yuy
z66;T~09xTb7gmB*nZSc!`0rzaoaeSIv`WoU07wu1f$(3~h2i%e*qhyZjVsO3?4&vy
zVqp}l_IvR_ivfflkB7tI(sUUU9LQ`oYt1vpS`{H0D|{Gvo-aXZ`%+p<VhTV3C;$bZ
z02F`%Pyh-*0Vn_kpa8tMxIT5Fw$F3n^o%d=00r7cOCbt?FJ9CM5~FF~O(v6q_&m?$
z9H20o_Fa}`;x<t)?HeQjQnt^QZkz-JZJqT25CjF#5&*O&0h;MoNSt#xJnlJjRCI=S
z34t%fcr-CBS9XbQ%ft)`_M=e%Wm({Z0I(4lv4Xkqrf!46O0Wt7pCP!@yRKPUS9qgi
z01tuyAPB+-QWaU2MZ*d87c{vXkJ>!FNg(|Hc=l{lbnSwOzmq%$NEr-1j+DhNW}LMu
zLZPkovC*almX^f24uGcI(3m0yKxl9k1)!|`R{=;E1bMAf0Z6?CL<6WQ^>-RTjL*?o
z0A=FKe2z{6h!x*S0RD)->YUV00iXk-x$r9SD*^0Nf57eUb4Q|M#RmcKG-|s&9ugiS
zz7)W|^at=YepxLs_H5+J{(v?DSS7rU_yT~B-=DcOP0`i{iP5wl+<(Y_Z(ZM_0Dwx^
zix0CFubzBOx+uH=U^MMJV+`5^V3lwZO|fpFH3;DB>}>1ZAyjRya;G*WyZ~S@?zt?>
z769h+Ic6W`TPa`1h~_5kriAYlfbTl(LU;iH`GM3V1pp`6>y3UH7tOch`hpk28x$P{
zfFP{<17ZXNMSpM`Zg6lK3_+ln&1TW&r=QYQCg?6i2UmitAaEF~u4Yv<+3@gR0O~-f
z6T803wE$4iks5Ux9QHx*S_Kh)4hUZ?g<_u?tkoWu4&V<njp{uVoQd230000<MNUMn
GLSTaJSNM?t

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/Water/Whirlpool.png b/P3D/Content/Textures/Battle/Water/Whirlpool.png
new file mode 100644
index 0000000000000000000000000000000000000000..96bdc8c60ba56a4c3ae9cce38b7e93a34fe60861
GIT binary patch
literal 1525
zcmV<R1q%9!P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00009a7bBm000XU
z000XU0RWnu7ytkTr%6OXRCt`tTS2nqAP9Z=H3#BIeFTq^<t+P19Ov&ci;f8*Ag1$w
z&#Ou$EeMEc6w}M!?{9n<+kRg@q5SI;N)>9uH=NG+HT(|_0NURFRY&~!Eky=Kjg<5s
z8y=<u3jdV46Dv)zZ@W!zIl|I;O9ZTR_SV38i{_6|Wv%qO3S+~~(eU;hpc_+-b$WQi
z*_&x7{#)mVI0D!%ULUp*X2TpAMarYGtineW0Kf*Ghy+7^#drwphOBGsdAC;ywiBK>
z3@dxlXkKV^c={~;0a8O?)OcWeQac^PcsYY#4Xl@oN^_#{uqR<NkaR#PSmc$dlLCon
z#>){ASlxva))kv>bjAr&lc1%fp_4=K$}QRxXJkk?zppe}BK;bi63jCupr0pnee$ao
zo^Q0oE$aYx%*t|_ptHCWe1}%Lf^^9Gz*d4cM%n>&>{sFDjO-aYqDeZTZ8XD=fSsq{
z!X&(7DgxG3En*mP!zdxtt51T?Nm&<=p9CMG@r-k_vOu_Qu$DQJ<Jlk(Exi{jA<{II
zalUR6%BChj8q_64^Z4m?C5Aya7mOny+jvg!jOq~V$*|JcC=Za?b3_i<KodPru)~$q
zWr5K*R?@6;U0*=1CPz;29Iyc*q&&re5urn}GAufaXN71P?Uh?^fvq;YsYJHY!x$2L
znl=NAU&@yt^bWE30=Tb1(_>ZmNU2rVl4Hq;>QX}XB(wwiMUDomI~g<!G<cTsEIEug
z3OqXE_Q*M4eyvYNnFSK}{aI#>Rsz<Cpg$6_vWV<L8vzT{<kxwQ9f1QS0NnSqEE5@@
z_riUmo^(JL0j?u}K8zXmIDVXuM_S9tDXi;j0xnXPmN&u-FJ_aXo^ZzSl@}yR4;&k=
z$~)lqbU84cUL#;U{@GE+Xu&<t5lQc6leDfIFpPl0$nW|Lp4rBCX*a_B#Am?U5PczY
zI?LjjoN}uU1@r{2?(ww^LQZ$?SR=q}{L%XrkwI)1XEr34Km+}3@EFJ^L@b4of}QqG
zFE-n93$x`twl9p%+8DPaC9dF7mYG|=paV9bp9GivI>SFwmcZLXAZr65KU~GUXTAlZ
zENU9u8Z<gnkT4Uk6(r<Gpxp5L<OdQRTnF)fCxd2{JyPlxV2}`T!2ykWUYV%KL_w3-
zuyoZj8k8k47XgI12~YCUxfe(c1vYefx}EaF>C};qAwG6MUwNLFPg-??_1y5w-&tK`
zmm7{azBGv)U@3{f!U$HhCmJU-&$507(k?d2#u!IHvp2U4V9dWJCI3^%lJp2#7pwBX
z7Sa378}9zM0LO-;$F+nd&(c$6sq*M`IPU;LYc!i&{=&rL*L)f*=p68&rOQZODS0yF
zdCW~}khn*NAwkz*%%2z5dT55Rxws4S0Zq~}qf{sc5TEdP@>pFSeS}uNyRsc7MBE;i
z<%~88*fE3+nk7F2ElZ-xd}6_1S?_%+yLcIt6bSZd5v#kVYp_#p@sN`9%<X5~2#7XB
zmxcq7KSAPvW`WR5dfCPU@4N<gg-x%LqBHv5)?lYRqg%+lns~kJfNr5g1{0xo5Q*Pj
zT~@zI-GvREU3Dv+bVTTY^2AcV3oZpqw~46+uu++CHku7Sf{%dqcA`|_as*U|$aQ@O
zUC!#+t7p}nz|1h1IvLV}OTm&#QV{GzPY#qhv?#@P<x}2a1nAK36g;tju%&Ya544jb
z<CcRDpwBa8oRJy=LqRN@;29@q1+XW`BxD}J<+)=L1Tft@;Wk?E0OC&*1b^9U==U05
zp6W;~fjbi-3--UmXeUIQtBMi`j(WRUumyY`?*8B4Va)97YUe-BB_wK+R7chw>HGLg
z(d*b|9dOH8!~m8}rUP!o%!cYC{~iA6gOU2((eeF}qJ12{@!#P^-1UEiKaNlQd0IN+
b<4*Vo^IjO63>%v*00000NkvXXu0mjf-|5Ht

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 6edd1715b..35f36949b 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14689,12 +14689,18 @@
     <Content Include="Content\Sounds\Battle\Attacks\Normal\Tackle.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Attacks\Normal\Wrap.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Attacks\Poison\PoisonSting_Hit.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Content Include="Content\Sounds\Battle\Attacks\Poison\PoisonSting_Start.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Attacks\Water\Whirlpool.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Damage\Effective.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -14722,6 +14728,9 @@
     <Content Include="Content\Textures\Battle\MegaEvolution\Mega_Phase2.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\Normal\Wrap.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\StatusEffect\Frozen.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -15442,6 +15451,9 @@
     <Content Include="Content\Textures\Battle\StatusEffect\Poisoned.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\Water\Whirlpool.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\chess.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
diff --git a/P3D/Pokemon/Attacks/Normal/Wrap.vb b/P3D/Pokemon/Attacks/Normal/Wrap.vb
index 199cc4c64..bea93d4e8 100644
--- a/P3D/Pokemon/Attacks/Normal/Wrap.vb
+++ b/P3D/Pokemon/Attacks/Normal/Wrap.vb
@@ -87,6 +87,19 @@
             End If
         End Sub
 
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
+            Dim WrapEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+            MoveAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+            MoveAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
+            MoveAnimation.AnimationScale(WrapEntity, True, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 1)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
+
     End Class
 
 End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Water/Whirlpool.vb b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
index d40914b55..e603e4011 100644
--- a/P3D/Pokemon/Attacks/Water/Whirlpool.vb
+++ b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
@@ -99,7 +99,15 @@ Namespace BattleSystem.Moves.Water
                 End If
             End If
         End Sub
-
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
+            Dim WhirlpoolEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+            MoveAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
+            MoveAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
+            MoveAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
 End Namespace
\ No newline at end of file

From 31e00f72d6e066db8b3e13e9d152bd478285fdab Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 30 Dec 2021 21:53:17 +0100
Subject: [PATCH 36/57] Directional light color at night is now neutral and
 more subtle

---
 P3D/World/Lighting.vb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/P3D/World/Lighting.vb b/P3D/World/Lighting.vb
index 951024204..afbf03a6e 100644
--- a/P3D/World/Lighting.vb
+++ b/P3D/World/Lighting.vb
@@ -48,7 +48,7 @@ Public Class Lighting
                 Case 0 ' Night
                     refEffect.AmbientLightColor = New Vector3(0.8F)
 
-                    refEffect.DirectionalLight0.DiffuseColor = New Vector3(-0.4F, -0.4F, -0.6F)
+                    refEffect.DirectionalLight0.DiffuseColor = New Vector3(-0.2F)
                     refEffect.DirectionalLight0.Direction = Vector3.Normalize(New Vector3(-1.0F, 0.0F, 1.0F))
                     refEffect.DirectionalLight0.SpecularColor = New Vector3(0.0F)
                     refEffect.DirectionalLight0.Enabled = True

From 35aa80b072850ed1ddb89122c565b02eea35ca76 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 30 Dec 2021 21:53:57 +0100
Subject: [PATCH 37/57] =?UTF-8?q?Improved=20Whirlpool=20Animation=20+=20Fi?=
 =?UTF-8?q?xed=20BattleAnimations=20drawn=20behind=20Pok=C3=A9mon?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 P3D/Battle/BattleSystemV2/Battle.vb       | 10 ++++---
 P3D/Battle/BattleSystemV2/BattleScreen.vb | 33 +++++++++++++++++++----
 P3D/Pokemon/Attacks/Water/Whirlpool.vb    |  5 ++--
 3 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index a5b5d117b..85b8faab5 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -5844,9 +5844,10 @@
                             'Whirlpool Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
                                 ChangeCameraAngle(1, True, BattleScreen)
-                                Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
+                                Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False,, True)
                                 WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
-                                Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+                                Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0, -0.3, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 4.71F, 0, 0, 4.71F, 0, 0, 0, 0, True, False, False, False)
                                 WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)
@@ -6679,9 +6680,10 @@
                             'Whirlpool Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
                                 ChangeCameraAngle(1, False, BattleScreen)
-                                Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True)
+                                Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True,, True)
                                 WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
-                                Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+                                Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0, -0.3, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 4.71F, 0, 0, 4.71F, 0, 0, 0, 0, True, False, False, False)
                                 WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index 2dbd82486..7786494ce 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -875,7 +875,7 @@
             If ForegroundEntities.Count > 0 Then
                 ForegroundEntities = (From f In ForegroundEntities Order By f.CameraDistance Descending).ToList()
             End If
-            Level.Draw()
+           Level.Draw()
 
             World.DrawWeather(Screen.Level.World.CurrentMapWeather)
 
@@ -890,6 +890,7 @@
             End If
 
             Dim ForegroundAnimationList As New List(Of AnimationQueryObject)
+            Dim BackgroundAnimationList As New List(Of AnimationQueryObject)
             If BattleQuery.Count > 0 Then
                 Dim cIndex As Integer = 0
                 Dim cQuery As New List(Of QueryObject)
@@ -898,7 +899,9 @@ nextIndex:
                     Dim cQueryObject As QueryObject = BattleQuery(cIndex)
                     If cQueryObject.QueryType = QueryObject.QueryTypes.MoveAnimation Then
                         If CType(cQueryObject, AnimationQueryObject).DrawBeforeEntities = True Then
-                            cQuery.Add(cQueryObject)
+                            BackgroundAnimationList.Add(CType(cQueryObject, AnimationQueryObject))
+                            cIndex += 1
+                            GoTo nextIndex
                         Else
                             ForegroundAnimationList.Add(CType(cQueryObject, AnimationQueryObject))
                             cIndex += 1
@@ -915,19 +918,39 @@ nextIndex:
                     End If
                 End If
 
+                cQuery.Reverse()
+                If cQuery.Count > 0 Then
+                    For Each cQueryObject As QueryObject In cQuery
+                        cQueryObject.Draw(Me)
+                    Next
+                End If
+            End If
+            If BackgroundAnimationList.Count > 0 Then
+                Dim cIndex As Integer = 0
+                Dim cQuery As New List(Of QueryObject)
+nextIndexBackground:
+                If BackgroundAnimationList.Count > cIndex Then
+                    Dim cQueryObject As QueryObject = BackgroundAnimationList(cIndex)
+                    cQuery.Add(cQueryObject)
+
+                    If cQueryObject.PassThis = True Then
+                        cIndex += 1
+                        GoTo nextIndexBackground
+                    End If
+                End If
+
                 cQuery.Reverse()
 
                 For Each cQueryObject As QueryObject In cQuery
                     cQueryObject.Draw(Me)
                 Next
-            End If
 
-            If ForegroundAnimationList.Count > 0 Then
                 For i = 0 To ForegroundEntities.Count - 1
                     ForegroundEntities(i).Render()
                     DebugDisplay.MaxVertices += ForegroundEntities(i).VertexCount
                 Next
-
+            End If
+            If ForegroundAnimationList.Count > 0 Then
                 Dim cIndex As Integer = 0
                 Dim cQuery As New List(Of QueryObject)
 nextIndexForeground:
diff --git a/P3D/Pokemon/Attacks/Water/Whirlpool.vb b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
index e603e4011..f6f10666b 100644
--- a/P3D/Pokemon/Attacks/Water/Whirlpool.vb
+++ b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
@@ -100,9 +100,10 @@ Namespace BattleSystem.Moves.Water
             End If
         End Sub
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
-            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip,, True)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
-            Dim WhirlpoolEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+            Dim WhirlpoolEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0, -0.3F, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
+            MoveAnimation.AnimationRotate(WhirlpoolEntity, False, 4.71F, 0, 0, 4.71F, 0, 0, 0, 0, True, False, False, False)
             MoveAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
             MoveAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
             MoveAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)

From 38f2f0c0f4ea708cb0d35c6aac87ff378ca13aa7 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sun, 2 Jan 2022 22:25:26 +0100
Subject: [PATCH 38/57] Made the light color more neutral

---
 P3D/World/SkyDome.vb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/P3D/World/SkyDome.vb b/P3D/World/SkyDome.vb
index 50f5a879d..9a9a7ecf5 100644
--- a/P3D/World/SkyDome.vb
+++ b/P3D/World/SkyDome.vb
@@ -148,13 +148,13 @@
             End If
             Select Case Screen.Level.DayTime
                 Case 1
-                    Return New Color(48, 200, 248)
+                    Return New Color(128, 128, 128)
                 Case 2
-                    Return New Color(40, 88, 136)
+                    Return New Color(128, 128, 128)
                 Case 3
-                    Return New Color(168, 224, 248)
+                    Return New Color(128, 128, 128)
                 Case 4
-                    Return New Color(192, 152, 184)
+                    Return New Color(128, 128, 128)
             End Select
         End If
     End Function

From ffaf50178c4e26e299bcd265a93f0ef7e3a31463 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Tue, 4 Jan 2022 22:04:14 +0100
Subject: [PATCH 39/57] Revert "Made the light color more neutral"

This reverts commit 38f2f0c0f4ea708cb0d35c6aac87ff378ca13aa7.
---
 P3D/World/SkyDome.vb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/P3D/World/SkyDome.vb b/P3D/World/SkyDome.vb
index 9a9a7ecf5..50f5a879d 100644
--- a/P3D/World/SkyDome.vb
+++ b/P3D/World/SkyDome.vb
@@ -148,13 +148,13 @@
             End If
             Select Case Screen.Level.DayTime
                 Case 1
-                    Return New Color(128, 128, 128)
+                    Return New Color(48, 200, 248)
                 Case 2
-                    Return New Color(128, 128, 128)
+                    Return New Color(40, 88, 136)
                 Case 3
-                    Return New Color(128, 128, 128)
+                    Return New Color(168, 224, 248)
                 Case 4
-                    Return New Color(128, 128, 128)
+                    Return New Color(192, 152, 184)
             End Select
         End If
     End Function

From 35fb69b5fd38174cbfa70a56356adc0316048765 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Tue, 4 Jan 2022 22:37:26 +0100
Subject: [PATCH 40/57] Made the fog colors for outside more neutral

---
 P3D/World/World.vb | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/P3D/World/World.vb b/P3D/World/World.vb
index 39a864436..a4e984d02 100644
--- a/P3D/World/World.vb
+++ b/P3D/World/World.vb
@@ -584,8 +584,19 @@ endsub:
     Private Sub ChangeEnvironment()
         Select Case Me.EnvironmentType
             Case EnvironmentTypes.Outside
+                Dim _fogColor As Color
+                Select Case Screen.Level.DayTime
+                    Case 1
+                        _fogColor = New Color(192, 192, 192)
+                    Case 2
+                        _fogColor = New Color(64, 64, 64)
+                    Case 3
+                        _fogColor = New Color(192, 192, 192)
+                    Case 4
+                        _fogColor = New Color(64, 64, 64)
+                End Select
                 Core.BackgroundColor = GetWeatherBackgroundColor(SkyDome.GetDaytimeColor(False))
-                Screen.Effect.FogColor = Core.BackgroundColor.ToVector3()
+                Screen.Effect.FogColor = _fogColor.ToVector3()
                 Screen.SkyDome.TextureDown = TextureManager.GetTexture("SkyDomeResource\Stars")
             Case EnvironmentTypes.Inside
                 Core.BackgroundColor = New Color(57, 57, 57)

From ae6141b1396ff84904014ec31669706a807e8e79 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Tue, 4 Jan 2022 22:43:22 +0100
Subject: [PATCH 41/57] Made day and morning fog color slightly darker

---
 P3D/World/World.vb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/P3D/World/World.vb b/P3D/World/World.vb
index a4e984d02..4c181068f 100644
--- a/P3D/World/World.vb
+++ b/P3D/World/World.vb
@@ -587,11 +587,11 @@ endsub:
                 Dim _fogColor As Color
                 Select Case Screen.Level.DayTime
                     Case 1
-                        _fogColor = New Color(192, 192, 192)
+                        _fogColor = New Color(168, 168, 168)
                     Case 2
                         _fogColor = New Color(64, 64, 64)
                     Case 3
-                        _fogColor = New Color(192, 192, 192)
+                        _fogColor = New Color(168, 168, 168)
                     Case 4
                         _fogColor = New Color(64, 64, 64)
                 End Select

From 6681a75601c87b1c8c36355a6c42314bd7e70961 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 6 Jan 2022 12:31:46 +0100
Subject: [PATCH 42/57] Whirlpool animation now uses 1.5 * MathHelper.PI
 instead of 4.71F

---
 P3D/Battle/BattleSystemV2/Battle.vb    | 4 ++--
 P3D/Pokemon/Attacks/Water/Whirlpool.vb | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 85b8faab5..25163d4ef 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -5847,7 +5847,7 @@
                                 Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False,, True)
                                 WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
                                 Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0, -0.3, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
-                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 4.71F, 0, 0, 4.71F, 0, 0, 0, 0, True, False, False, False)
+                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, CSng(MathHelper.Pi * 1.5), 0, 0, CSng(MathHelper.Pi * 1.5), 0, 0, 0, 0, True, False, False, False)
                                 WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)
@@ -6683,7 +6683,7 @@
                                 Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True,, True)
                                 WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
                                 Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0, -0.3, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
-                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 4.71F, 0, 0, 4.71F, 0, 0, 0, 0, True, False, False, False)
+                                WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, CSng(MathHelper.Pi * 1.5), 0, 0, CSng(MathHelper.Pi * 1.5), 0, 0, 0, 0, True, False, False, False)
                                 WhirlpoolAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
                                 WhirlpoolAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)
diff --git a/P3D/Pokemon/Attacks/Water/Whirlpool.vb b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
index f6f10666b..88fed6eee 100644
--- a/P3D/Pokemon/Attacks/Water/Whirlpool.vb
+++ b/P3D/Pokemon/Attacks/Water/Whirlpool.vb
@@ -103,7 +103,7 @@ Namespace BattleSystem.Moves.Water
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip,, True)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
             Dim WhirlpoolEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(0, -0.3F, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
-            MoveAnimation.AnimationRotate(WhirlpoolEntity, False, 4.71F, 0, 0, 4.71F, 0, 0, 0, 0, True, False, False, False)
+            MoveAnimation.AnimationRotate(WhirlpoolEntity, False, CSng(MathHelper.Pi * 1.5), 0, 0, CSng(MathHelper.Pi * 1.5), 0, 0, 0, 0, True, False, False, False)
             MoveAnimation.AnimationRotate(WhirlpoolEntity, False, 0, 0, 0.2F, 0, 0, 10.0F, 0.0F, 0.0F, False, False, True, True)
             MoveAnimation.AnimationScale(WhirlpoolEntity, False, True, 1.0F, 1.0F, 1.0F, 0.025F, 0.0F, 0.0F)
             MoveAnimation.AnimationScale(WhirlpoolEntity, True, False, 0.0F, 0.0F, 0.0F, 0.025F, 5.0F, 0.0F)

From 1a1c8f209f5839d071dd0f8c8c0ee0800eb1d60f Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Thu, 6 Jan 2022 12:32:52 +0100
Subject: [PATCH 43/57] =?UTF-8?q?Improved=20wild=20Pok=C3=A9mon=20encounte?=
 =?UTF-8?q?r=20rate?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Caves and water get a minimum value of 15
- Grass gets a minimum value of 25
- There's an encounter multiplier of 1 by default that gets modified by various abilities
If you run, the encounter multiplier is multiplied by 1.5
Then, a random number is generated from 0-255
If the random number is below the minimum value multiplied by the encounter multiplier, a wild pokémon appears
---
 P3D/World/PokemonEncounter.vb | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/P3D/World/PokemonEncounter.vb b/P3D/World/PokemonEncounter.vb
index 28f6b9664..26e8eb4e8 100644
--- a/P3D/World/PokemonEncounter.vb
+++ b/P3D/World/PokemonEncounter.vb
@@ -40,22 +40,32 @@ Public Class PokemonEncounter
                 End If
 
                 If System.IO.File.Exists(GameModeManager.GetPokeFilePath(pokeFile)) = True Then ' Only try to register a wild battle if the .poke file exists:
-                    Dim startRandomValue As Integer = 12
-                    Dim minRandomValue As Integer = 5
-
+                    Dim encounterRate As Single = 1.0F
+                    Dim minTileValue As Integer
+                    Select Case Method
+                        Case Spawner.EncounterMethods.Land
+                            If Screen.Level.WildPokemonFloor = True And Screen.Level.Surfing = False Then
+                                minTileValue = 15
+                            Else
+                                minTileValue = 25
+                            End If
+                        Case Spawner.EncounterMethods.Surfing
+                            minTileValue = 15
+                    End Select
+                    If Core.Player.IsRunning = True Then
+                        encounterRate *= 1.5F
+                    End If
                     If Core.Player.Pokemons.Count > 0 Then
                         Dim p As Pokemon = Core.Player.Pokemons(0)
 
                         ' Arena Trap/Illuminate/No Guard/Swarm Ability:
                         If p.Ability.Name.ToLower() = "arena trap" Or p.Ability.Name.ToLower() = "illuminate" Or p.Ability.Name.ToLower() = "no guard" Or p.Ability.Name.ToLower() = "swarm" Then
-                            startRandomValue = 6
-                            minRandomValue = 3
+                            encounterRate *= 2.0F
                         End If
 
                         ' Intimidate/Keen Eye/Quick Feet/Stench/White Smoke Ability:
                         If p.Ability.Name.ToLower() = "intimidate" Or p.Ability.Name.ToLower() = "keen eye" Or p.Ability.Name.ToLower() = "quick feet" Or p.Ability.Name.ToLower() = "stench" Or p.Ability.Name.ToLower() = "white smoke" Then
-                            startRandomValue = 24
-                            minRandomValue = 10
+                            encounterRate *= 0.5F
                         End If
 
                         'Sand Veil Ability:
@@ -76,10 +86,10 @@ Public Class PokemonEncounter
                     End If
 
                     ' Determine if the wild Pokémon will be met or not:
-                    Dim randomValue As Integer = startRandomValue - .WalkedSteps
-                    randomValue = CInt(MathHelper.Clamp(randomValue, minRandomValue, startRandomValue))
+                    Dim minEncounterValue As Integer = CInt(encounterRate * minTileValue)
+                    Dim randomValue As Integer = Core.Random.Next(0, 255)
 
-                    If Core.Random.Next(0, randomValue * 2) = 0 Then
+                    If randomValue <= minEncounterValue Then
                         ' Don't encounter a Pokémon if the left control key is held down, for Debug or Sandbox Mode:
                         If GameController.IS_DEBUG_ACTIVE = True Or Core.Player.SandBoxMode = True Then
                             If KeyBoardHandler.KeyDown(Keys.LeftControl) = True Then

From fccb4ef5b5ea197e567ee8a6747f3f7ac4cac0fe Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Fri, 7 Jan 2022 12:29:11 +0100
Subject: [PATCH 44/57] Improved fog colors

---
 P3D/World/World.vb | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/P3D/World/World.vb b/P3D/World/World.vb
index 4c181068f..f44a554fe 100644
--- a/P3D/World/World.vb
+++ b/P3D/World/World.vb
@@ -562,19 +562,19 @@ endsub:
             Case World.Weathers.Clear, Weathers.Sunny
                 v = New Vector3(1)
             Case World.Weathers.Rain, Weathers.Thunderstorm
-                v = New Vector3(0.4, 0.4, 0.7)
+                v = New Vector3(0.7)
             Case World.Weathers.Snow
                 v = New Vector3(0.8)
             Case World.Weathers.Underwater
                 v = New Vector3(0.1, 0.3, 0.9)
             Case World.Weathers.Fog
-                v = New Vector3(0.7, 0.7, 0.8)
+                v = New Vector3(0.7)
             Case World.Weathers.Sandstorm
                 v = New Vector3(0.8, 0.5, 0.2)
-            Case Weathers.Ash
-                v = New Vector3(0.5, 0.5, 0.5)
-            Case Weathers.Blizzard
-                v = New Vector3(0.6, 0.6, 0.6)
+            Case World.Weathers.Ash
+                v = New Vector3(0.5)
+            Case World.Weathers.Blizzard
+                v = New Vector3(0.6)
         End Select
 
         Dim colorV As Vector3 = defaultColor.ToVector3 * Screen.SkyDome.GetWeatherColorMultiplier(v)
@@ -585,15 +585,22 @@ endsub:
         Select Case Me.EnvironmentType
             Case EnvironmentTypes.Outside
                 Dim _fogColor As Color
+                Dim v As Single = 1.0F
+                Dim nightFog As Integer = 64
+                Dim dayFog As Integer = 168
+                Select Case CurrentMapWeather
+                    Case World.Weathers.Clear, Weathers.Sunny
+                        v = 1.0F
+                    Case World.Weathers.Rain, Weathers.Thunderstorm, World.Weathers.Fog
+                        v = 0.7F
+                    Case World.Weathers.Snow
+                        v = 0.8F
+                End Select
                 Select Case Screen.Level.DayTime
-                    Case 1
-                        _fogColor = New Color(168, 168, 168)
-                    Case 2
-                        _fogColor = New Color(64, 64, 64)
-                    Case 3
-                        _fogColor = New Color(168, 168, 168)
-                    Case 4
-                        _fogColor = New Color(64, 64, 64)
+                    Case 1, 3
+                        _fogColor = New Color(CInt(v * dayFog), CInt(v * dayFog), CInt(v * dayFog))
+                    Case 2, 4
+                        _fogColor = New Color(CInt(v * nightFog), CInt(v * nightFog), CInt(v * nightFog))
                 End Select
                 Core.BackgroundColor = GetWeatherBackgroundColor(SkyDome.GetDaytimeColor(False))
                 Screen.Effect.FogColor = _fogColor.ToVector3()

From e892977d7075809cf394bddc34ab3f34fd52e508 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Fri, 7 Jan 2022 14:25:57 +0100
Subject: [PATCH 45/57] Added Bind animation & Fixed scaling animation anchor
 functionality

---
 P3D/Battle/BattleAnimations/BAEntityScale.vb   |   8 ++++----
 .../QueryObjects/AnimationQueryObject.vb       |   2 +-
 .../Sounds/Battle/Attacks/Normal/Bind.wav      | Bin 0 -> 243334 bytes
 P3D/P3D.vbproj                                 |   3 +++
 P3D/Pokemon/Attacks/Normal/Bind.vb             |   9 +++++++++
 5 files changed, 17 insertions(+), 5 deletions(-)
 create mode 100644 P3D/Content/Sounds/Battle/Attacks/Normal/Bind.wav

diff --git a/P3D/Battle/BattleAnimations/BAEntityScale.vb b/P3D/Battle/BattleAnimations/BAEntityScale.vb
index a99c261dd..d48dc96a0 100644
--- a/P3D/Battle/BattleAnimations/BAEntityScale.vb
+++ b/P3D/Battle/BattleAnimations/BAEntityScale.vb
@@ -79,22 +79,22 @@
         'Bottom
         If Anchors.Contains("1") = True Then
             Dim diffY As Single = saveScale.Y - TargetEntity.Scale.Y
-            Me.Position.Y -= diffY / 2
+            TargetEntity.Position.Y -= diffY / 2
         End If
         'Top
         If Anchors.Contains("2") = True Then
             Dim diffY As Single = saveScale.Y - TargetEntity.Scale.Y
-            Me.Position.Y += diffY / 2
+            TargetEntity.Position.Y += diffY / 2
         End If
         'Left
         If Anchors.Contains("3") = True Then
             Dim diffX As Single = saveScale.X - TargetEntity.Scale.X
-            Me.Position.X -= diffX / 2
+            TargetEntity.Position.X -= diffX / 2
         End If
         'Right
         If Anchors.Contains("4") = True Then
             Dim diffX As Single = saveScale.X - TargetEntity.Scale.X
-            Me.Position.X += diffX / 2
+            TargetEntity.Position.X += diffX / 2
         End If
 
         If Me.EndSize = TargetEntity.Scale Then
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index b40f6f933..bd7e555cd 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -220,7 +220,7 @@
 			End If
 
 		End Sub
-		Public Sub AnimationScale(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "1")
+		Public Sub AnimationScale(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Grow As Boolean, ByVal EndSizeX As Single, ByVal EndSizeY As Single, ByVal EndSizeZ As Single, ByVal SizeSpeed As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal Anchors As String = "")
 			Dim ScaleEntity As Entity
 			Dim ScaleModel As Entity = Nothing
 			If Entity Is Nothing Then
diff --git a/P3D/Content/Sounds/Battle/Attacks/Normal/Bind.wav b/P3D/Content/Sounds/Battle/Attacks/Normal/Bind.wav
new file mode 100644
index 0000000000000000000000000000000000000000..9749a0da63f4f007be2da484d66e467028928840
GIT binary patch
literal 243334
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%0D0G
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
TQq=T^Z(3Q|ef<aDpY#6<GKo;1

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 35f36949b..d9e55dfc1 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14683,6 +14683,9 @@
     <Content Include="Content\Sounds\Battle\Attacks\Grass\Absorb.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Attacks\Normal\Bind.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Attacks\Normal\Pound.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
diff --git a/P3D/Pokemon/Attacks/Normal/Bind.vb b/P3D/Pokemon/Attacks/Normal/Bind.vb
index 4a4e36a82..4116145e3 100644
--- a/P3D/Pokemon/Attacks/Normal/Bind.vb
+++ b/P3D/Pokemon/Attacks/Normal/Bind.vb
@@ -87,6 +87,15 @@ Namespace BattleSystem.Moves.Normal
             End If
         End Sub
 
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 0.0F, 0)
+            MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 0, 0)
+            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 2, 0)
+            MoveAnimation.AnimationScale(Nothing, False, False, 1.0F, 0.75F, 1.0F, 0.02F, 4, 0, "1")
+            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 6, 1, "1")
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
 End Namespace
\ No newline at end of file

From 047d52832d25f88cf5a2f7b60a6c8d5593a4afec Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Fri, 7 Jan 2022 14:29:17 +0100
Subject: [PATCH 46/57] Fixed errors in drawing the chat screen, made categorie
 tabs dynamically scaleable

---
 P3D/Network/ChatScreen.vb | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/P3D/Network/ChatScreen.vb b/P3D/Network/ChatScreen.vb
index 4863086d3..6bc99999f 100644
--- a/P3D/Network/ChatScreen.vb
+++ b/P3D/Network/ChatScreen.vb
@@ -591,7 +591,7 @@ Public Class ChatScreen
 
                         For Each l As String In lineArr
                             Canvas.DrawRectangle(New Rectangle(100, (Core.windowSize.Height - 82) - offset - 64, Core.windowSize.Width - 200, 32), backC)
-                            Core.SpriteBatch.DrawString(FontManager.ChatFont, l, New Vector2(100, (Core.windowSize.Height - 50 - 32) - offset - 64), c, 0.0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0.0F)
+                            Core.SpriteBatch.DrawString(FontManager.ChatFont, l, New Vector2(100 + 8, (Core.windowSize.Height - 50 - 32) - offset - 64), c, 0.0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0.0F)
                             offset += 32
                             items += 1
                         Next
@@ -675,21 +675,26 @@ Public Class ChatScreen
     Private Sub DrawChatTabs()
         Dim p = MouseHandler.MousePosition
 
+        Dim globalText As String = "Global"
+        Dim globalTextWidth As Integer = CInt(FontManager.MainFont.MeasureString(globalText).X)
+        Dim commandsText As String = "Commands"
+        Dim commandsTextWidth As Integer = CInt(FontManager.MainFont.MeasureString(commandsText).X)
+
         'First, draw global:
-        DrawChatTab(100, "global", HasNewGlobalMessages, "Global", ChatState = ChatStates.Global)
-        If p.X >= 100 And p.X < 220 Then
+        DrawChatTab(100, "global", HasNewGlobalMessages, globalText, ChatState = ChatStates.Global)
+        If p.X >= 100 And p.X < 100 + 48 + globalTextWidth Then
             canClickOnTab = True
             canClickOnTabType = ChatStates.Global
             canClickOnTabText = "Global"
         End If
 
         'Then, if active, draw the Commands tab:
-        Dim x As Integer = 120
+        Dim x As Integer = CInt(48 + globalTextWidth)
 
         If HasCommandChat = True Then
-            DrawChatTab(x + 100, "command", False, "Commands", ChatState = ChatStates.Command)
-            x += 120
-            If p.X >= 220 And p.X < 340 Then
+            DrawChatTab(x + 100, "command", False, commandsText, ChatState = ChatStates.Command)
+            x += CInt(48 + commandsTextWidth)
+            If p.X >= CInt(100 + 48 + globalTextWidth) And p.X < CInt(100 + 48 + globalTextWidth + 48 + commandsTextWidth) Then
                 canClickOnTab = True
                 canClickOnTabType = ChatStates.Command
                 canClickOnTabText = "Commands"
@@ -752,7 +757,7 @@ Public Class ChatScreen
     ''' </summary>
     Private Shared Function DrawChatTab(ByVal xPosition As Integer, ByVal textureType As String, ByVal HasNewMessages As Boolean, ByVal Text As String, ByVal IsActive As Boolean) As Integer
         Dim drawHeight As Integer = 32
-        Dim drawWidth As Integer = 120
+        Dim drawWidth As Integer = CInt(48 + FontManager.MainFont.MeasureString(Text).X)
 
         If IsActive = False Then
             drawHeight = 24
@@ -780,7 +785,7 @@ Public Class ChatScreen
             Core.SpriteBatch.Draw(texture, New Rectangle(xPosition, Core.windowSize.Height - 50 - drawHeight - 12, 24, 24), New Rectangle(48, 0, 24, 24), Color.White)
         End If
 
-        Core.SpriteBatch.DrawString(FontManager.MainFont, Text, New Vector2(xPosition + 32, CInt(Core.windowSize.Height - 50 + 4)), Color.White, 0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0F)
+        Core.SpriteBatch.DrawString(FontManager.MainFont, Text, New Vector2(xPosition + 24 + 12, CInt(Core.windowSize.Height - 50 + drawHeight / 2 - FontManager.MainFont.MeasureString(Text).Y / 2)), Color.White, 0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0F)
 
         Return drawWidth
     End Function
@@ -881,7 +886,7 @@ Public Class ChatScreen
 
                     For Each l As String In lineArr
                         Canvas.DrawRectangle(New Rectangle(100, (Core.windowSize.Height - 82) - offset - 64, Core.windowSize.Width - 200, 32), New Color(0, 0, 0, opacity))
-                        Core.SpriteBatch.DrawString(FontManager.ChatFont, l, New Vector2(100, (Core.windowSize.Height - 50 - 32) - offset - 64), New Color(c.R, c.G, c.B, CInt(opacity * 1.7)), 0.0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0.0F)
+                        Core.SpriteBatch.DrawString(FontManager.ChatFont, l, New Vector2(100 + 8, (Core.windowSize.Height - 50 - 32) - offset - 64), New Color(c.R, c.G, c.B, CInt(opacity * 1.7)), 0.0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0.0F)
                         offset += 32
                     Next
                 End If

From 65887946d55a0c9a3f627be0bcedd652c9f82bf8 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Fri, 7 Jan 2022 16:30:03 +0100
Subject: [PATCH 47/57] Attract, Bind, Wrap, Infatuated Animations

Added animation for attacks Attract & Bind, updated animation of attacks Wrap, added animation for status Infatuated
---
 P3D/Battle/BattleSystemV2/Battle.vb           |  41 +++++++++++++++++-
 .../Sounds/Battle/Attacks/Normal/Attract.wav  | Bin 0 -> 277062 bytes
 .../Textures/Battle/Normal/Attract.png        | Bin 0 -> 306 bytes
 P3D/Content/Textures/Battle/Normal/Bind.png   | Bin 0 -> 1022 bytes
 P3D/P3D.vbproj                                |   9 ++++
 P3D/Pokemon/Attacks/Normal/Attract.vb         |  28 ++++++++++++
 P3D/Pokemon/Attacks/Normal/Bind.vb            |  18 ++++++--
 P3D/Pokemon/Attacks/Normal/Wrap.vb            |   9 +++-
 8 files changed, 99 insertions(+), 6 deletions(-)
 create mode 100644 P3D/Content/Sounds/Battle/Attacks/Normal/Attract.wav
 create mode 100644 P3D/Content/Textures/Battle/Normal/Attract.png
 create mode 100644 P3D/Content/Textures/Battle/Normal/Bind.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 25163d4ef..ec7dbb70c 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1523,6 +1523,19 @@
             If op.HP > 0 And op.Status <> Pokemon.StatusProblems.Fainted Then
                 If p.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) = True Then
                     If Core.Random.Next(0, 2) = 0 Then
+                        'Infatuated animation
+                        If Core.Player.ShowBattleAnimations <> 0 Then
+                            Me.ChangeCameraAngle(1, own, BattleScreen)
+                            Dim HeartAnimation = New AnimationQueryObject(pNPC, Not own)
+                            For i = 0 To 6
+                                Dim HeartEntity = HeartAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Normal\Attract"), New Vector3(0.25F), 1.0F, CSng(i * 0.2))
+                                Dim zPos As Single = CSng(Random.Next(-2, 2) * 0.2)
+                                HeartAnimation.AnimationMove(HeartEntity, False, 0.0, 0.25, zPos, 0.01, False, False, CSng(i * 0.2), 0.0)
+                                HeartAnimation.AnimationFade(HeartEntity, True, 0.02, False, 0.0, CSng(1 + i * 0.2), 0.0)
+                                i += 1
+                            Next
+                            BattleScreen.BattleQuery.Add(HeartAnimation)
+                        End If
                         BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is in love with " & op.GetDisplayName() & "!"))
                         Exit Sub
                     End If
@@ -5822,9 +5835,15 @@
                                 WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
                                 WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
                                 WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+                                WrapAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
                                 WrapAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+                                WrapAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
                                 WrapAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
-                                WrapAnimation.AnimationScale(WrapEntity, True, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 1)
+                                WrapAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 9, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
+                                WrapAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 11, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
+                                WrapAnimation.AnimationFade(WrapEntity, True, 0.03, False, 0.0, 11, 0)
                                 BattleScreen.BattleQuery.Add(WrapAnimation)
                             End If
                             ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Wrap!", "wrap")
@@ -5881,6 +5900,26 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Bind Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, True, BattleScreen)
+                                Dim BindAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
+                                BindAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 5.0F, 0)
+                                Dim WrapEntity = BindAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
+                                BindAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 32, 64, 32), ""), 1, 1)
+                                BindAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 64, 64, 32), ""), 2, 1)
+                                BindAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+                                BindAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
+                                BindAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+                                BindAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
+                                BindAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
+                                BindAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 9, 0)
+                                BindAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
+                                BindAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 11, 0)
+                                BindAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
+                                BindAnimation.AnimationFade(WrapEntity, True, 0.03, False, 0.0, 11, 0)
+                                BattleScreen.BattleQuery.Add(BindAnimation)
+                            End If
                             ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Bind!", "bind")
                         End If
                     End If
diff --git a/P3D/Content/Sounds/Battle/Attacks/Normal/Attract.wav b/P3D/Content/Sounds/Battle/Attacks/Normal/Attract.wav
new file mode 100644
index 0000000000000000000000000000000000000000..6ab97427031e5c502f77e473d2e22c8c08b289e2
GIT binary patch
literal 277062
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
YA$@X7cX5z!B4r{ab?!IAKg)ps1tJj!M*si-

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/Normal/Attract.png b/P3D/Content/Textures/Battle/Normal/Attract.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1f1fc3ebf49bc90579329972b24d8d81a8ae606
GIT binary patch
literal 306
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GGLLkg|>2BR0prCY#
zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{LzR_IkQFhFF|FI(e^Xvw}$L
z``br^Rz<Y&zSz{1YIZ`Z?*Z4#I|szHHSa!ICLmxsPa^n<DgU{rb<+>`PdK8lDtIA#
zvqEf}->0AR^i(cpJBNxntW>*NSz*4+b+1{-SJ{HcZsN<=g-o4$(RX&6-IvzNrTz^w
z=5?+-m1GoNw)lL*WcC~XL?0+C+&$F!<@SZn2}gpZZwbHb=V16Cs<KQ!?optJ>?Cvl
zpTa8lzun%yp^c$|_n6_At(D>vn!ok5Gq}HEwU28IzBRLc2hbx7p00i_>zopr0QxX|
AkN^Mx

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/Normal/Bind.png b/P3D/Content/Textures/Battle/Normal/Bind.png
new file mode 100644
index 0000000000000000000000000000000000000000..16eeb2cd04e159762e182d1c395b6d18fdd349dc
GIT binary patch
literal 1022
zcmeAS@N?(olHy`uVBq!ia0vp^4nW+%!3HFEH|A#nDb50q$YKTtZXpn6ymYtj4^U9L
z#5JNMI6tkVJh3R1!8tXjxUyIwxTG{CGhZPjKR@T-@`p7H49uOLE{-7;x8B})TX@@m
zhb^I^IWHjpK~6$;Q%SR$@Q*!?W-lt6u1K2*o7{7_*KqTI^agvWR}wM~wGopvA3a_F
zL~kQszfPl)!`eOHQ!3X0?L`3#jucwfS12ty`|bBBl>@gwKDy3-f7X4=7ET5wCEkNP
z4Q&B72R{D16T|e3QH4dAq42>o1{0R>_?LzIBWKR!_*mVzdi}PvruJ7)%I)Re__g{n
z%dDClzy5lBUV|EAg;>GYtu+j~6~+vOTqR$(Iu?AL`fdH~qRS5!TK(n!^ZC~EgTjF`
zfo6W}DBfS(SNHdC<h{)eVl~BQ-5bScvobNs+Y}TFE9Rm&7|3y$_&8who^L7{ObR-k
zp4p7c7!KXopBJvi_#<gWBtu`qD(53A2cG_UcsOfAOG1*|gkNGnO>R=EkAFLqE!{X_
z)en`_p3Uc)&+|2$zw+Zn_aSTN;DhNC*|vWAIzjR3e;}LjfV9LfC69V-)^~H1l}@d<
zn5C8eoimF2-(P=Swt06qJFHr|HP@rO;_b)s!v4dFhn-~-wALoNa-cgD$gi@F`}4Ri
zdAq%WUazM>+C2qFm$PM&#nTz|dyjLd-B<Yd@Agg2e(%}Ke7~}1+)nciZC`qKu^QtN
zyM>+%kE&|2go0EU{H-4*d_Q!diGS+iNQNIXn3v>U|B({uP+fRYMxpS+t&fj4+eb=0
zv9;WO<xg<JpXb{ie|(@mpWWlEXRPBat@Q#4_s@HW_N03^OSxTFXlIjg3;WA>i!VR-
zc6IcHpaUxxY_65MlCY~!k8yT1zXXrKx|=d-MVpyE%$};ruyU;kgBYVzmZoh5!xqLF
z`&ic0a33+r;B=hJ9^ojE-ZV|Xh2h`7vy+UQf9WXfZ834kSief2%fXpLz}s=hPJ0LE
z2rd_m{_N@b%fB{=IK4a1v-m4}iQ@@Dr(1<aJM0y{Ha+^m;PN=HY0p==1D7jn7P0Ae
z>T)j1^)s&UHHbUllXyqkiCJQ;#VvNH+j}g&TG-A1`!3U#w}I{8)%Tr(c@IAJlx_O-
zBcMamFpV|iut#G{?z-e;U;?bKx>?Ivx9MNQm0k}fkE^Wtteol!EcNCM>m;JsUN#-I
z4}Qx#W3hdLhR6LjF3k^D{-3!gZ}4>c;`0}p&hsVs2;56p=zBygRMyWl(qp>&^qcCZ
d9$#bp$Jlji%FC>jmPw#!_H^}gS?83{1OUPXubBV<

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index d9e55dfc1..24c369ba0 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14683,6 +14683,9 @@
     <Content Include="Content\Sounds\Battle\Attacks\Grass\Absorb.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Attacks\Normal\Attract.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Attacks\Normal\Bind.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -14731,6 +14734,12 @@
     <Content Include="Content\Textures\Battle\MegaEvolution\Mega_Phase2.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\Normal\Attract.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\Textures\Battle\Normal\Bind.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\Normal\Wrap.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
diff --git a/P3D/Pokemon/Attacks/Normal/Attract.vb b/P3D/Pokemon/Attacks/Normal/Attract.vb
index 5f34f5a4f..496f977b2 100644
--- a/P3D/Pokemon/Attacks/Normal/Attract.vb
+++ b/P3D/Pokemon/Attacks/Normal/Attract.vb
@@ -76,6 +76,34 @@
             End If
         End Sub
 
+        Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            For i = 0 To 6
+                Dim HeartEntity = MoveAnimation.SpawnEntity(Nothing, TextureManager.GetTexture("Textures\Battle\Normal\Attract"), New Vector3(0.25F), 1.0F, CSng(i * 0.2))
+
+                MoveAnimation.AnimationMove(HeartEntity, True, 2.0, 0.0, 0.0, 0.075, False, False, CSng(i * 0.2), 0.0)
+                i += 1
+            Next
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Attract", 0, 0)
+
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
+
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
+
+            For i = 0 To 6
+                Dim HeartEntity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Normal\Attract"), New Vector3(0.25F), 1.0F, CSng(i * 0.2))
+
+                MoveAnimation.AnimationMove(HeartEntity, False, 0.0, 0.0, 0.0, 0.06, False, False, CSng(i * 0.2), 0.0)
+                Dim zPos As Single = CSng(Random.Next(-2, 2) * 0.2)
+                MoveAnimation.AnimationMove(HeartEntity, False, 0.0, 0.25, zPos, 0.01, False, False, CSng(1 + i * 0.2), 0.0)
+                MoveAnimation.AnimationFade(HeartEntity, True, 0.02, False, 0.0, CSng(2 + i * 0.2), 0.0)
+                i += 1
+            Next
+
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
 End Namespace
\ No newline at end of file
diff --git a/P3D/Pokemon/Attacks/Normal/Bind.vb b/P3D/Pokemon/Attacks/Normal/Bind.vb
index 4116145e3..f4e169155 100644
--- a/P3D/Pokemon/Attacks/Normal/Bind.vb
+++ b/P3D/Pokemon/Attacks/Normal/Bind.vb
@@ -90,10 +90,20 @@ Namespace BattleSystem.Moves.Normal
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 0.0F, 0)
-            MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 0, 0)
-            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 2, 0)
-            MoveAnimation.AnimationScale(Nothing, False, False, 1.0F, 0.75F, 1.0F, 0.02F, 4, 0, "1")
-            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 6, 1, "1")
+            Dim BindEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 32, 64, 32), ""), 1, 1)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 64, 64, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+            MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
+            MoveAnimation.AnimationScale(BindEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
+            MoveAnimation.AnimationScale(BindEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
+            MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 9, 0)
+            MoveAnimation.AnimationScale(BindEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
+            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 11, 0)
+            MoveAnimation.AnimationScale(BindEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
+            MoveAnimation.AnimationFade(BindEntity, True, 0.03, False, 0.0, 11, 0)
+
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
     End Class
diff --git a/P3D/Pokemon/Attacks/Normal/Wrap.vb b/P3D/Pokemon/Attacks/Normal/Wrap.vb
index bea93d4e8..116b891e2 100644
--- a/P3D/Pokemon/Attacks/Normal/Wrap.vb
+++ b/P3D/Pokemon/Attacks/Normal/Wrap.vb
@@ -94,9 +94,16 @@
             MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
             MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
             MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+            MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
             MoveAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
             MoveAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
-            MoveAnimation.AnimationScale(WrapEntity, True, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 1)
+            MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 9, 0)
+            MoveAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
+            MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 11, 0)
+            MoveAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
+            MoveAnimation.AnimationFade(WrapEntity, True, 0.03, False, 0.0, 11, 0)
+
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
 

From 639185159778c5c5f8202d97d175e833b452c7e6 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Fri, 7 Jan 2022 19:27:05 +0100
Subject: [PATCH 48/57] Improved Wrap & Bind animations, fixed some errors in
 the Bind animation

---
 P3D/Battle/BattleSystemV2/Battle.vb         |  70 +++++++++++++++-----
 P3D/Content/Textures/Battle/Normal/Bind.png | Bin 1022 -> 2325 bytes
 P3D/Content/Textures/Battle/Normal/Wrap.png | Bin 1192 -> 2202 bytes
 P3D/Pokemon/Attacks/Normal/Bind.vb          |  13 ++--
 P3D/Pokemon/Attacks/Normal/Wrap.vb          |  10 +--
 5 files changed, 66 insertions(+), 27 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index ec7dbb70c..05b1e1165 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -5831,10 +5831,12 @@
                                 ChangeCameraAngle(1, True, BattleScreen)
                                 Dim WrapAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
                                 WrapAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
-                                Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
-                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
-                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
-                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+                                Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 40, 80, 40), ""), 0.75, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 80, 80, 40), ""), 1.5, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 120, 80, 40), ""), 2.25, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 160, 80, 40), ""), 3, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 200, 80, 40), ""), 3.75, 0.75)
                                 WrapAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
                                 WrapAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
                                 WrapAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
@@ -5905,19 +5907,21 @@
                                 ChangeCameraAngle(1, True, BattleScreen)
                                 Dim BindAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
                                 BindAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 5.0F, 0)
-                                Dim WrapEntity = BindAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
-                                BindAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 32, 64, 32), ""), 1, 1)
-                                BindAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 64, 64, 32), ""), 2, 1)
-                                BindAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+                                Dim BindEntity = BindAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 40, 80, 40), ""), 0.75, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 80, 80, 40), ""), 1.5, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 120, 80, 40), ""), 2.25, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 160, 80, 40), ""), 3, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 200, 80, 40), ""), 3.75, 0.75)
                                 BindAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
-                                BindAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
                                 BindAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
-                                BindAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
                                 BindAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 9, 0)
-                                BindAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
                                 BindAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 11, 0)
-                                BindAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
-                                BindAnimation.AnimationFade(WrapEntity, True, 0.03, False, 0.0, 11, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
+                                BindAnimation.AnimationFade(BindEntity, True, 0.03, False, 0.0, 11, 0)
                                 BattleScreen.BattleQuery.Add(BindAnimation)
                             End If
                             ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Bind!", "bind")
@@ -6693,13 +6697,21 @@
                                 ChangeCameraAngle(1, False, BattleScreen)
                                 Dim WrapAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True)
                                 WrapAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
-                                Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
-                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
-                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
-                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+                                Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 40, 80, 40), ""), 0.75, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 80, 80, 40), ""), 1.5, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 120, 80, 40), ""), 2.25, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 160, 80, 40), ""), 3, 0.75)
+                                WrapAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 200, 80, 40), ""), 3.75, 0.75)
+                                WrapAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
                                 WrapAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+                                WrapAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
                                 WrapAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
-                                WrapAnimation.AnimationScale(WrapEntity, True, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 1)
+                                WrapAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 9, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
+                                WrapAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 11, 0)
+                                WrapAnimation.AnimationScale(WrapEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
+                                WrapAnimation.AnimationFade(WrapEntity, True, 0.03, False, 0.0, 11, 0)
                                 BattleScreen.BattleQuery.Add(WrapAnimation)
                             End If
                             ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Wrap!", "wrap")
@@ -6756,6 +6768,28 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Bind Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, False, BattleScreen)
+                                Dim BindAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True)
+                                BindAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 5.0F, 0)
+                                Dim BindEntity = BindAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 40, 80, 40), ""), 0.75, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 80, 80, 40), ""), 1.5, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 120, 80, 40), ""), 2.25, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 160, 80, 40), ""), 3, 0.75)
+                                BindAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 200, 80, 40), ""), 3.75, 0.75)
+                                BindAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
+                                BindAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 7, 0)
+                                BindAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 9, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 9, 0)
+                                BindAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 11, 0)
+                                BindAnimation.AnimationScale(BindEntity, False, True, 1.0F, 0.5F, 1.0F, 0.04F, 11, 0)
+                                BindAnimation.AnimationFade(BindEntity, True, 0.03, False, 0.0, 11, 0)
+                                BattleScreen.BattleQuery.Add(BindAnimation)
+                            End If
                             ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Bind!", "bind")
                         End If
                     End If
diff --git a/P3D/Content/Textures/Battle/Normal/Bind.png b/P3D/Content/Textures/Battle/Normal/Bind.png
index 16eeb2cd04e159762e182d1c395b6d18fdd349dc..a45062aeda2d9fa8fb29968d2bcf62e10ddcb25b 100644
GIT binary patch
delta 2289
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

delta 976
zcmbO#^p9P!Gr-TCmrII^fq{Y7)59eQNIL*=0|y(B+})U;HBr&7p1IT0#WAGf*4sO8
z3vV0nuq9M9=LO_H$Vtd<Drr^|{;|i=>_uhM6=@S;lY0*L8g3qt-e52FN<zk=He!<I
zqo?bi=xyZd*J)I8Si9$YO63}$$tYmKkwVM*3Z+G7zx_U?a^UvIN7wo9&$@5f!pWed
z#CwpZp}sA^=D^3FcVd{HF{-c#GZa2}#$dt{9{;j%f8@-W93QJ2SFhie*3|y$Nx8k;
z8^2axW|>u!<JVu0&udU)tPm^sy0wNux5AjAkgMeDR>y*`Q@^dhU3B@uLaV?0e?H%O
zeo#1YCeX}}9mV^L`|AGwjl8$HL9C|utb3#QY*r>Fd7JuzVqwKx6ej~Y4ig^-%-!=%
zC4)&pr_(c=aT&v*8~gLZ)fj&yt%zjkOIYQ6MCHKKKMxOQZD>hIlAG{L45-OXO7-z?
zhq9#`C#?FRlG?NRT=RLphVxf`yy!k;?HqhCeInb|PhTe}Ui}YbGaitZ_@(4guU*gj
zZjQ3jsr44Kw9>zGMsff9>#xf;@9t)YRZF+#dX!hZ{a9Yue>m~5vrK~4+C*0lbe978
zRn~ET9@iyrw^z{X^%O|Er{L&vwk)!EI)i@iaSpZn3LpR7zNy*oJ$sq&SN4qCX}+QD
zOYbgLV_agl(39a&eN|1CP>>3PzxBg}?}sil@lRbG$?#(a^OD@_KT;wcstYg5C=_0}
z_3`m$`$(xLwwBwk{0UC@^L*Rmj}O%6vwNKNjCGu)wO%0M{(0}vo^<bKDYxqi?QAk`
zVSgEK@#W{<u8zJCbYSIz&9zcj5_a|JG0u+Wm*5dtcT*;<XfxA?*;DH^8CI?pVGv_<
z%F?v0VA#SqV;{?!8tx+|8Jv!D*&`eU(wn9UxG?<tcXpC-^DiBRy)7mV8S7W+b2&J3
z2zWd0*lF+J9Kq$H(Vsm%fBDx25vO<Oc@}?VFL68}=ya>lXotPR*QQ557+fCbHSPH-
zci?hm%_274PF>DLxqikKz6Npi2YeFmNINl0thKns?sR*P#a9cv`G4PK+VVEA9lZL!
zQ!wwr$DXoHpMC^%Xd0%mW*qitY{^}hoD58b^;I`(IqNq4Yq-+u!Q^q3HJ_DJU4f<E
zykVV06x++DqxQjXd1oxPPtfqV-^Qi+;mZFr_v8(pZeM)<LeqJ^1RsHW2@8FXsELKj
n`k6+0On0AtQ~lKAYmEOGyKYT+nU&Hq2^7_yu6{1-oD!M<Fa)BD

diff --git a/P3D/Content/Textures/Battle/Normal/Wrap.png b/P3D/Content/Textures/Battle/Normal/Wrap.png
index 1ba4edfe36803424950a83da6825aec436fc8ceb..d9bbc47faf15ddf12a3a39cb7b0bc3a00e7865fa 100644
GIT binary patch
delta 2165
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
QH)jjL-3<d)9}BwqPqrT9VE_OC

delta 1147
zcmV->1cdvV5vU0viBL{Q4GJ0x0000DNk~Le0000$0001h2nGNE0K0*2YLOv6e*`m0
zL_t(|+U=YndlNwrhQCu-;_e^NxUIsr?xK(sMWP@I>f#`ZIzWLVRZxi{uC-O1qx}c#
zs!@xe6XrIzm%WfnE;lnKd7k!3^1U~=yEotLCeArXjzj?{00p1`6o3Ly017|>C;$bZ
z0C?Q~K6e1{=)v<u6aW$q0C}F{f9d1*asc?^0muR1izfi@UR=rrV6DZMH@~_MAawOb
z1F+V@T8kf_?z#`);`-DXW5kIEfMoLd$Qfhc1L%6{7XScQ004mbw;Vq&?-YP206eU<
z$givj2+8p6flJf0ARd4m0NKlj&KR?l0a73&&N+;x{Y4g7Ymug@taZR(f829vnxYIs
ze)TsSx|#`#XMw}xo=Xn^0znzDxGiqbNf1l*00L1KU4#&<2pt~xO8?OL43HKIKmjNK
z1)u;FfC5ke3P1rU00mI`L@1&pRwkTk0wPLcJO<-p9Y7QSUK}NpL<|5fUIE;PF-As<
z%wXJGGDpZU7SSc<1EBX^f4}+)Kmi1-G2SsEW)S38-iNU1Y@qLJ!xX!i2K_AH5cs;F
zE(j9qPq6@6;XW5uf>oKogJAgYV}hLLwk)(t%~1eI5B`DhU)P1<_a4}r-FuBI&C%?n
zIvZkP6s-1p@j#0KgdUHF!{O3&8511HY&L7nGsapKAsQ=u7<ryAe?e*cQd&!53P1rU
z00p1`6o3Ly017|>C;$bZ0KB-kK6RqD&vW7Qj4$p01=>bSAqs#mUepN^qiNqwCX<5r
zJkRAEpfH;DU6y6yHc>C_8zcZyw$GMsoCE}Io%I0_1O?C%0JJ6nn(0?aoO3ul?m2T*
zbcS~cfiJ{(G%+n#e|Cv&%ft)`_M=e%Wm({Z0I(4lv4Xkqrf!46O0Wt7pCP!@yRKPU
zS9qgi01tuyAPB+-QWaU2MZ*d87c{vXkJ>!FNg(|Hc=l{lbnSwOzmq%$NEr-1j+DhN
zW}LMuLZPkovC*almX^f24uGcI(3m0yKxl9k1)!|`R{=;Ee*}50Qvpc51w;d=D)o07
zK#b4PSpa3?%Y2Sb0*DpgNdW$czv`USP640;qPg%Y@hbuBQ-8qi?{i0@W5ovn@HA?>
zJsuJsBfb>CzVrw1HGWwwG4^ca%Km^h0$3%yj`#wAkKdoUG)>Xg28q$MAKZV)e{Wsi
zq5yzO*ozOde-^Kvd`-G2yZ~S{?K@)(+5}*ga1u?iZlN^@;Oy*d>)jz#ZLV^sHYL0O
zU@-2vEXx)E=JPpbALd&rU&n~%Chew#?-YRVI_*Mu0RZ`d)FcG}C)w+bei;|dx8wSP
z7s4A99R+|Otos9E1Or8Xa2sxLa2gCjpqR~O(dMV0QPNc==q^MDSAwe`a2TtuW>qxV
z@bF&%>OiOyyS~b`08r488g&{R_CfGk1rdG@2wyCPVxJnU)gG4);14s6>OB;kiQE7H
N002ovPDHLkV1i|<>)ikV

diff --git a/P3D/Pokemon/Attacks/Normal/Bind.vb b/P3D/Pokemon/Attacks/Normal/Bind.vb
index f4e169155..e50542ea6 100644
--- a/P3D/Pokemon/Attacks/Normal/Bind.vb
+++ b/P3D/Pokemon/Attacks/Normal/Bind.vb
@@ -89,11 +89,14 @@ Namespace BattleSystem.Moves.Normal
 
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 0.0F, 0)
-            Dim BindEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
-            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 32, 64, 32), ""), 1, 1)
-            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 64, 64, 32), ""), 2, 1)
-            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 5.0F, 0)
+            Dim BindEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 40, 80, 40), ""), 0.75, 0.75)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 80, 80, 40), ""), 1.5, 0.75)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 120, 80, 40), ""), 2.25, 0.75)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 160, 80, 40), ""), 3, 0.75)
+            MoveAnimation.AnimationChangeTexture(BindEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 200, 80, 40), ""), 3.75, 0.75)
+
             MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
             MoveAnimation.AnimationScale(BindEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
             MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)
diff --git a/P3D/Pokemon/Attacks/Normal/Wrap.vb b/P3D/Pokemon/Attacks/Normal/Wrap.vb
index 116b891e2..534165c7e 100644
--- a/P3D/Pokemon/Attacks/Normal/Wrap.vb
+++ b/P3D/Pokemon/Attacks/Normal/Wrap.vb
@@ -90,10 +90,12 @@
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
-            Dim WrapEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 64, 32), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 1)
-            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 32, 64, 32), ""), 1, 1)
-            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 64, 64, 32), ""), 2, 1)
-            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 96, 64, 32), ""), 3, 2)
+            Dim WrapEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 40, 80, 40), ""), 0.75, 0.75)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 80, 80, 40), ""), 1.5, 0.75)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 120, 80, 40), ""), 2.25, 0.75)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 160, 80, 40), ""), 3, 0.75)
+            MoveAnimation.AnimationChangeTexture(WrapEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 200, 80, 40), ""), 3.75, 0.75)
             MoveAnimation.AnimationScale(Nothing, False, False, 0.75F, 1.0F, 0.75F, 0.02F, 5, 0)
             MoveAnimation.AnimationScale(WrapEntity, False, False, 0.75F, 0.5F, 0.75F, 0.02F, 5, 0)
             MoveAnimation.AnimationScale(Nothing, False, True, 1.0F, 1.0F, 1.0F, 0.04F, 7, 0)

From c116f30c6b448ec51aa5079bb100d408eb20ff4e Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sat, 8 Jan 2022 17:36:57 +0100
Subject: [PATCH 49/57] Added Battle Animation for attack Clamp

---
 P3D/Battle/BattleSystemV2/Battle.vb           |  34 ++++++++++++++++++
 .../Sounds/Battle/Attacks/Water/Clamp.wav     | Bin 0 -> 100024 bytes
 .../Textures/Battle/Water/Clamp_Left.png      | Bin 0 -> 392 bytes
 .../Textures/Battle/Water/Clamp_Right.png     | Bin 0 -> 390 bytes
 P3D/P3D.vbproj                                |   9 +++++
 P3D/Pokemon/Attacks/Water/Clamp.vb            |  20 +++++++++++
 6 files changed, 63 insertions(+)
 create mode 100644 P3D/Content/Sounds/Battle/Attacks/Water/Clamp.wav
 create mode 100644 P3D/Content/Textures/Battle/Water/Clamp_Left.png
 create mode 100644 P3D/Content/Textures/Battle/Water/Clamp_Right.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 05b1e1165..0814097cd 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -5938,6 +5938,23 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Clamp Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, True, BattleScreen)
+                                Dim ClampAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, True)
+                                Dim offsetLeft As Single = 0.35
+                                Dim offsetRight As Single = -0.35
+                                ClampAnimation.AnimationPlaySound("Battle\Attacks\Water\Clamp", 0, 0)
+                                Dim ClampEntityLeft = ClampAnimation.SpawnEntity(New Vector3(offsetLeft, -0.1, offsetLeft), TextureManager.GetTexture("Textures\Battle\Water\Clamp_Left", New Rectangle(0, 0, 24, 64), ""), New Vector3(0.28F, 0.75F, 0.28F), 0.75F)
+                                Dim ClampEntityRight = ClampAnimation.SpawnEntity(New Vector3(offsetRight, -0.1, offsetRight), TextureManager.GetTexture("Textures\Battle\Water\Clamp_Right", New Rectangle(0, 0, 24, 64), ""), New Vector3(0.28F, 0.75F, 0.28F), 0.75F)
+                                ClampAnimation.AnimationMove(ClampEntityLeft, False, -0.1, -0.1, -0.1, 0.02, False, False, 0, 0)
+                                ClampAnimation.AnimationMove(ClampEntityRight, False, 0.1, -0.1, 0.1, 0.02, False, False, 0, 0)
+                                ClampAnimation.AnimationMove(ClampEntityLeft, True, -0.35, -0.1, -0.35, 0.02, False, False, 2, 0)
+                                ClampAnimation.AnimationMove(ClampEntityRight, True, 0.35, -0.1, 0.35, 0.02, False, False, 2, 0)
+                                Dim SpawnEntity = ClampAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(0.5F), 1.0F, 2.5, 2)
+                                ClampAnimation.AnimationFade(SpawnEntity, True, 1.0F, False, 0.0F, 4.5F, 0)
+                                BattleScreen.BattleQuery.Add(ClampAnimation)
+                            End If
                             ReduceHP(multiHP, True, False, BattleScreen, .OwnPokemon.GetDisplayName() & " is hurt by Clamp!", "clamp")
                         End If
                     End If
@@ -6804,6 +6821,23 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            'Clamp Animation
+                            If Core.Player.ShowBattleAnimations <> 0 Then
+                                ChangeCameraAngle(1, False, BattleScreen)
+                                Dim ClampAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, False)
+                                Dim offsetLeft As Single = -0.35
+                                Dim offsetRight As Single = 0.35
+                                ClampAnimation.AnimationPlaySound("Battle\Attacks\Water\Clamp", 0, 0)
+                                Dim ClampEntityLeft = ClampAnimation.SpawnEntity(New Vector3(offsetLeft, -0.1, offsetLeft), TextureManager.GetTexture("Textures\Battle\Water\Clamp_Left", New Rectangle(0, 0, 24, 64), ""), New Vector3(0.28F, 0.75F, 0.28F), 0.75F)
+                                Dim ClampEntityRight = ClampAnimation.SpawnEntity(New Vector3(offsetRight, -0.1, offsetRight), TextureManager.GetTexture("Textures\Battle\Water\Clamp_Right", New Rectangle(0, 0, 24, 64), ""), New Vector3(0.28F, 0.75F, 0.28F), 0.75F)
+                                ClampAnimation.AnimationMove(ClampEntityLeft, False, -0.1, -0.1, -0.1, 0.02, False, False, 0, 0)
+                                ClampAnimation.AnimationMove(ClampEntityRight, False, 0.1, -0.1, 0.1, 0.02, False, False, 0, 0)
+                                ClampAnimation.AnimationMove(ClampEntityLeft, True, -0.35, -0.1, -0.35, 0.02, False, False, 2, 0)
+                                ClampAnimation.AnimationMove(ClampEntityRight, True, 0.35, -0.1, 0.35, 0.02, False, False, 2, 0)
+                                Dim SpawnEntity = ClampAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(0.5F), 1.0F, 2.5, 2)
+                                ClampAnimation.AnimationFade(SpawnEntity, True, 1.0F, False, 0.0F, 4.5F, 0)
+                                BattleScreen.BattleQuery.Add(ClampAnimation)
+                            End If
                             ReduceHP(multiHP, False, True, BattleScreen, .OppPokemon.GetDisplayName() & " is hurt by Clamp!", "clamp")
                         End If
                     End If
diff --git a/P3D/Content/Sounds/Battle/Attacks/Water/Clamp.wav b/P3D/Content/Sounds/Battle/Attacks/Water/Clamp.wav
new file mode 100644
index 0000000000000000000000000000000000000000..dc33ea5fb75fb0a6f41e6eee055159b39957807b
GIT binary patch
literal 100024
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

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/Water/Clamp_Left.png b/P3D/Content/Textures/Battle/Water/Clamp_Left.png
new file mode 100644
index 0000000000000000000000000000000000000000..4097d10c3513ac9cc74e1c0867f3942cfbad23f1
GIT binary patch
literal 392
zcmV;30eAk1P)<h;3K|Lk000e1NJLTq000;O002M;1^@s60IIiQ00009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT0003K
zNkl<ZSi|j@K@P+q2u1N$9?P9)aObhSm9uIyX|+Y*(`hnpnsmWKK!qQA?}S`I3n-=R
z26E2946qqaDeeDittW^GP)g}3C2Fk^5$#`-9gK{R42u9q<J-D|ECXVUr~f7ZiTBHZ
zqxW~l*?^Jv9OFv>iT5nPEcRw0npKVqKwU*w;V}bfyjKC#Riv#R7C`I07+@BnD}XA=
zobpry?!1QsR5`Fpun4eXd<eKp@H+sU1kV~R6M(9UxB&4v_ygXNWObRo`y|6JyT`9<
zmj~zfAANY+@_6HA);dC)UwHfOHh@4!DEJWQHpW5+ak!M=B8I@_92Y?fE~&YQf^b>W
mMVS4D5P_uS5y*T8-1Py*<E@`0LSj+?0000<MNUMnLSTY$fT4!~

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/Water/Clamp_Right.png b/P3D/Content/Textures/Battle/Water/Clamp_Right.png
new file mode 100644
index 0000000000000000000000000000000000000000..7597cf1470e5a9393dc9590f42bf436750b28880
GIT binary patch
literal 390
zcmV;10eSw3P)<h;3K|Lk000e1NJLTq000;O002M;1^@s60IIiQ00009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT0003I
zNkl<ZSi|j@I}XGk3`Fs*ax6N|;ErQ)E4E6siW0z|u~=zoqNLzyY!mFE-g`nWdIB)>
z^|6#ft^j84Ip^!W)@lL`6&%Nr&S$Mv1))(6n7LaauYm8(&!vHg04b%^TJr&Tsi4_8
zc!Ee&(8@u(LnJCx0Er4!h$Jf1fK?UZDhdUxgvk`56&30#as^nb$qbmOFo(ztm~9>c
z80EnQFjC=?12e#qXp%Huno@NGyd`=Mz`YTZ<iV|q)PU8^{{S2Sp5%}+{r!_1^0R~f
zuAvtW{L0+o(%-xB3TYkT%`dclhYld{5ehy8!pGQ<K^$%+z|9b-odY$b;FcQP6olHE
kP-8aKTDEMgYP>Y-1A3ZkpRa^hQ~&?~07*qoM6N<$g0VZH2mk;8

literal 0
HcmV?d00001

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 24c369ba0..ec8947d4c 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14704,6 +14704,9 @@
     <Content Include="Content\Sounds\Battle\Attacks\Poison\PoisonSting_Start.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Battle\Attacks\Water\Clamp.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Sounds\Battle\Attacks\Water\Whirlpool.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -15463,6 +15466,12 @@
     <Content Include="Content\Textures\Battle\StatusEffect\Poisoned.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\Water\Clamp_Left.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="Content\Textures\Battle\Water\Clamp_Right.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\Water\Whirlpool.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
diff --git a/P3D/Pokemon/Attacks/Water/Clamp.vb b/P3D/Pokemon/Attacks/Water/Clamp.vb
index 91db66f75..25066b13d 100644
--- a/P3D/Pokemon/Attacks/Water/Clamp.vb
+++ b/P3D/Pokemon/Attacks/Water/Clamp.vb
@@ -87,6 +87,26 @@ Namespace BattleSystem.Moves.Water
             End If
         End Sub
 
+        Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
+            Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
+            Dim offsetLeft As Single = -0.35
+            Dim offsetRight As Single = 0.35
+            If BattleFlip = True Then
+                offsetLeft = 0.35
+                offsetRight = -0.35
+            End If
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Water\Clamp", 0, 0)
+            Dim ClampEntityLeft = MoveAnimation.SpawnEntity(New Vector3(offsetLeft, -0.1, offsetLeft), TextureManager.GetTexture("Textures\Battle\Water\Clamp_Left", New Rectangle(0, 0, 24, 64), ""), New Vector3(0.28F, 0.75F, 0.28F), 0.75F)
+            Dim ClampEntityRight = MoveAnimation.SpawnEntity(New Vector3(offsetRight, -0.1, offsetRight), TextureManager.GetTexture("Textures\Battle\Water\Clamp_Right", New Rectangle(0, 0, 24, 64), ""), New Vector3(0.28F, 0.75F, 0.28F), 0.75F)
+            MoveAnimation.AnimationMove(ClampEntityLeft, False, -0.1, -0.1, -0.1, 0.02, False, False, 0, 0)
+            MoveAnimation.AnimationMove(ClampEntityRight, False, 0.1, -0.1, 0.1, 0.02, False, False, 0, 0)
+            MoveAnimation.AnimationMove(ClampEntityLeft, True, -0.35, -0.1, -0.35, 0.02, False, False, 2, 0)
+            MoveAnimation.AnimationMove(ClampEntityRight, True, 0.35, -0.1, 0.35, 0.02, False, False, 2, 0)
+            Dim SpawnEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Tackle"), New Vector3(0.5F), 1.0F, 2.5, 2)
+            MoveAnimation.AnimationFade(SpawnEntity, True, 1.0F, False, 0.0F, 4.5F, 0)
+
+            BattleScreen.BattleQuery.Add(MoveAnimation)
+        End Sub
     End Class
 
 End Namespace
\ No newline at end of file

From 5b7a6fc9ab8a8b57e626aea4e197846f0326d838 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sat, 8 Jan 2022 18:00:05 +0100
Subject: [PATCH 50/57] =?UTF-8?q?Fixed=20Overworld=20Pok=C3=A9mon=20textur?=
 =?UTF-8?q?e=20animations?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Pokémon textures with 3 and 4 frames work better now
When the player is running, the Pokémon animates faster
When a (network) player is standing still, the Pokémon animates slower (unless the Pokémon texture has 4 frames, then it stops at the first frame)
Cleaned up the code a little
---
 P3D/Entites/Other/NetworkPlayer.vb    | 14 +++++-----
 P3D/Entites/Other/NetworkPokemon.vb   | 37 +++++++++++++++++----------
 P3D/Entites/Other/OverworldPokemon.vb | 33 +++++++++++-------------
 P3D/Entites/Other/OwnPlayer.vb        | 14 +++++-----
 4 files changed, 50 insertions(+), 48 deletions(-)

diff --git a/P3D/Entites/Other/NetworkPlayer.vb b/P3D/Entites/Other/NetworkPlayer.vb
index 2a86a7e1c..0828b2ffe 100644
--- a/P3D/Entites/Other/NetworkPlayer.vb
+++ b/P3D/Entites/Other/NetworkPlayer.vb
@@ -165,6 +165,10 @@
                     Return 0
                 Case 2
                     Return 1
+                Case 3
+                    Return 0
+                Case 4
+                    Return 1
             End Select
         ElseIf Me.Texture.Width = Me.Texture.Height Then
             Select Case AnimationX
@@ -198,14 +202,8 @@
             If Me.AnimationDelay <= 0.0F Then
                 Me.AnimationDelay = AnimationDelayLength
                 AnimationX += 1
-                If Me.Texture.Width = Me.Texture.Height / 2 Then
-                    If AnimationX > 2 Then
-                        AnimationX = 1
-                    End If
-                Else
-                    If AnimationX > 4 Then
-                        AnimationX = 1
-                    End If
+                If AnimationX > 4 Then
+                    AnimationX = 1
                 End If
             End If
         End If
diff --git a/P3D/Entites/Other/NetworkPokemon.vb b/P3D/Entites/Other/NetworkPokemon.vb
index 97a7174f0..9682b7ec9 100644
--- a/P3D/Entites/Other/NetworkPokemon.vb
+++ b/P3D/Entites/Other/NetworkPokemon.vb
@@ -6,13 +6,14 @@
     Public LevelFile As String = ""
     Public PokemonTexture As String = ""
     Public faceRotation As Integer = 0
+    Dim Moving As Boolean = False
 
     Dim Texture As Texture2D
     Dim lastRectangle As New Rectangle(0, 0, 0, 0)
     Dim loadedTexture As String = ""
 
     Dim AnimationX As Integer = 1
-    Dim AnimationDelayLength As Single = 2.2F
+    Dim AnimationDelayLength As Single = 1.1F
     Dim AnimationDelay As Single = AnimationDelayLength
 
     Public Sub New(ByVal pos As Vector3, ByVal PokemonTexture As String, ByVal visible As Boolean)
@@ -51,22 +52,26 @@
 
         If Me.PokemonTexture <> "" Then
             Me.ChangeTexture()
-
-            Me.AnimationDelay -= 0.1F
-            If AnimationDelay <= 0.0F Then
-                AnimationX += 1
-                AnimationDelay = AnimationDelayLength
-                If Me.Texture.Width = Me.Texture.Height / 2 Then
-                    If AnimationX > 2 Then
-                        AnimationX = 1
-                    End If
-                ElseIf Me.Texture.Width = Me.Texture.Height Then
+            If Moving = True Then
+                Me.AnimationDelay -= 0.1F
+                If AnimationDelay <= 0.0F Then
+                    AnimationX += 1
+                    AnimationDelay = AnimationDelayLength
                     If AnimationX > 4 Then
                         AnimationX = 1
                     End If
+                End If
+            Else
+                If Me.Texture.Width = Me.Texture.Height Then
+                    AnimationX = 1
                 Else
-                    If AnimationX > 3 Then
-                        AnimationX = 1
+                    Me.AnimationDelay -= 0.1F
+                    If AnimationDelay <= 0.0F Then
+                        AnimationX += 1
+                        AnimationDelay = 2.2F
+                        If AnimationX > 4 Then
+                            AnimationX = 1
+                        End If
                     End If
                 End If
             End If
@@ -160,6 +165,10 @@
                     Return 0
                 Case 2
                     Return 1
+                Case 3
+                    Return 0
+                Case 4
+                    Return 1
             End Select
         ElseIf Me.Texture.Width = Me.Texture.Height Then
             Select Case AnimationX
@@ -197,7 +206,7 @@
     Public Sub ApplyPlayerData(ByVal p As Servers.Player)
         Try
             Me.PlayerID = p.ServersID
-
+            Me.Moving = p.Moving
             Me.PokemonTexture = p.PokemonSkin
             Me.Position = p.PokemonPosition
             Me.LevelFile = p.LevelFile
diff --git a/P3D/Entites/Other/OverworldPokemon.vb b/P3D/Entites/Other/OverworldPokemon.vb
index 7a8ba86b8..6cd0fe9e1 100644
--- a/P3D/Entites/Other/OverworldPokemon.vb
+++ b/P3D/Entites/Other/OverworldPokemon.vb
@@ -40,7 +40,6 @@ Public Class OverworldPokemon
             Me.Texture = PokemonReference.GetOverworldTexture()
         End If
 
-
         Dim cameraRotation As Integer = Screen.Camera.GetFacingDirection()
         Dim spriteIndex As Integer = Me.faceRotation - cameraRotation
 
@@ -96,18 +95,8 @@ Public Class OverworldPokemon
                 If AnimationDelay <= 0.0F Then
                     AnimationX += 1
                     AnimationDelay = AnimationDelayLength
-                    If Me.Texture.Width = Me.Texture.Height / 2 Then
-                        If AnimationX > 2 Then
-                            AnimationX = 1
-                        End If
-                    ElseIf Me.Texture.Width = Me.Texture.Height Then
-                        If AnimationX > 4 Then
-                            AnimationX = 1
-                        End If
-                    Else
-                        If AnimationX > 3 Then
-                            AnimationX = 1
-                        End If
+                    If AnimationX > 4 Then
+                        AnimationX = 1
                     End If
                 End If
             Else
@@ -183,15 +172,19 @@ Public Class OverworldPokemon
         If Screen.Camera.IsMoving() = True And Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
             If CInt(Me.Position.X) <> CInt(Screen.Camera.Position.X) Or CInt(Me.Position.Z) <> CInt(Screen.Camera.Position.Z) Then
                 Me.Position += GetMove()
-                Me.AnimationDelayLength = 1.1F
+                If Core.Player.IsRunning = True Then
+                    Me.AnimationDelayLength = 1.1F / 1.4F
+                Else
+                    Me.AnimationDelayLength = 1.1F
+                End If
                 Me.Moving = True
             End If
         Else
-            Me.AnimationDelayLength = 1.1F
-            If Me.Texture.Width = Me.Texture.Height / 2 Then
-                Me.Moving = True
-            Else
+            Me.AnimationDelayLength = 2.2F
+            If Me.Texture.Width = Me.Texture.Height Then
                 Me.Moving = False
+            Else
+                Me.Moving = True
             End If
         End If
     End Sub
@@ -310,6 +303,10 @@ Public Class OverworldPokemon
                     Return 0
                 Case 2
                     Return 1
+                Case 3
+                    Return 0
+                Case 4
+                    Return 1
             End Select
         ElseIf Me.Texture.Width = Me.Texture.Height Then
             Select Case AnimationX
diff --git a/P3D/Entites/Other/OwnPlayer.vb b/P3D/Entites/Other/OwnPlayer.vb
index ac4c506b0..94c74c9e3 100644
--- a/P3D/Entites/Other/OwnPlayer.vb
+++ b/P3D/Entites/Other/OwnPlayer.vb
@@ -90,14 +90,8 @@
             If AnimationDelay <= 0.0F Then
                 AnimationDelay = GetAnimationDelay()
                 AnimationX += 1
-                If Me.Texture.Width = Me.Texture.Height / 2 Then
-                    If AnimationX > 2 Then
-                        AnimationX = 1
-                    End If
-                Else
-                    If AnimationX > 4 Then
-                        AnimationX = 1
-                    End If
+                If AnimationX > 4 Then
+                    AnimationX = 1
                 End If
             End If
         Else
@@ -164,6 +158,10 @@
                     Return 0
                 Case 2
                     Return 1
+                Case 3
+                    Return 0
+                Case 4
+                    Return 1
             End Select
         ElseIf Me.Texture.Width = Me.Texture.Height Then
             Select Case AnimationX

From 667671e16fab22d54d645ec3552fa69e1959bb4a Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Mon, 10 Jan 2022 20:45:28 +0100
Subject: [PATCH 51/57] Battle Bugfixes

Fixed buggy throwing animation of the opponent trainer
Fixed a bug related to the trainer sprite in the vs trainer intro that made the trainer texture buggy if it wasn't 32x32
---
 P3D/Battle/BattleSystemV2/Battle.vb       |  6 +++---
 P3D/Battle/BattleSystemV2/BattleScreen.vb |  6 +++---
 P3D/Screens/BattleIntroScreen.vb          | 16 ++++++++++------
 3 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 0814097cd..9d4512057 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -7363,7 +7363,7 @@
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
 
                     Dim BallThrowEntity As Entity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
-                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
+                    BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, -0.3,, 0.025F)
 
                     ' Ball Opens
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
@@ -7783,12 +7783,12 @@
                 BattleScreen.BattleQuery.Add(New ToggleEntityQueryObject(True, ToggleEntityQueryObject.BattleEntities.OppPokemon, 1, -1, -1, -1, -1))
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Go, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
-                Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
+                Dim BallThrow As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False, BattleScreen.OppPokemonModel)
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     ' Ball is thrown
 
                     BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
-                    Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(-2, -0.15, 0), BattleScreen.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                    Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(2, -0.15, 0), BattleScreen.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
                     BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
 
                     ' Ball opens
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index 7786494ce..444072a8e 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -376,7 +376,7 @@
             Screen.Level.Entities.Add(OwnPokemonModel)
 
             Dim InitiallyVisibleOpp As Integer = 1
-            If IsPVPBattle = True AndAlso Core.Player.ShowBattleAnimations <> 0 Then
+            If Core.Player.ShowBattleAnimations <> 0 Then
                 InitiallyVisibleOpp = 0
             End If
 
@@ -414,12 +414,12 @@
             Dim q1 As TextQueryObject = New TextQueryObject(Trainer.Name & " wants to battle!")
 
             ' Ball is thrown
-            Dim BallThrowOpp As AnimationQueryObject = New AnimationQueryObject(OppPokemonNPC, True, OppPokemonModel)
+            Dim BallThrowOpp As AnimationQueryObject = New AnimationQueryObject(OppPokemonNPC, False, OppPokemonModel)
 
             If Core.Player.ShowBattleAnimations <> 0 Then
                 BallThrowOpp.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
                 BallThrowOpp.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
-                Dim BallThrowEntity As Entity = BallThrowOpp.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
+                Dim BallThrowEntity As Entity = BallThrowOpp.SpawnEntity(New Vector3(2, -0.15, 0), Me.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
                 BallThrowOpp.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
 
                 ' Ball Opens
diff --git a/P3D/Screens/BattleIntroScreen.vb b/P3D/Screens/BattleIntroScreen.vb
index bf53de80d..822bce57e 100644
--- a/P3D/Screens/BattleIntroScreen.vb
+++ b/P3D/Screens/BattleIntroScreen.vb
@@ -172,6 +172,7 @@
     Private Sub DrawTrainerIntro()
         Dim barPosition As Vector2 = New Vector2(Trainer.BarImagePosition.X * 128, Trainer.BarImagePosition.Y * 128)
         Dim VSPosition As Vector2 = New Vector2(Trainer.VSImagePosition.X * 128, Trainer.VSImagePosition.Y * 128 + 64)
+        Dim TrainerFrameSize As Size = New Size(CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName).Width / 3), CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName).Height / 4))
 
         If Trainer.VSImageOrigin <> "VSIntro" Then
             VSPosition.Y -= 64
@@ -179,17 +180,18 @@
 
         Dim t1 As Texture2D = TextureManager.GetTexture("GUI\Intro\VSIntro", New Rectangle(CInt(barPosition.X), CInt(barPosition.Y), 128, 64), "")
         Dim t2 As Texture2D = TextureManager.GetTexture("GUI\Intro\" & Trainer.VSImageOrigin, New Rectangle(CInt(VSPosition.X), CInt(VSPosition.Y), Trainer.VSImageSize.Width, Trainer.VSImageSize.Height), "")
-        Dim t3 As Texture2D = TextureManager.GetTexture("NPC\" & Trainer.SpriteName, New Rectangle(0, 64, 32, 32))
+        Dim t3 As Texture2D = TextureManager.GetTexture("NPC\" & Trainer.SpriteName, New Rectangle(0, TrainerFrameSize.Height * 2, TrainerFrameSize.Width, TrainerFrameSize.Height))
         Dim t4 As Texture2D = Nothing
         If Trainer.DoubleTrainer = True Then
-            t4 = TextureManager.GetTexture("NPC\" & Trainer.SpriteName2, New Rectangle(0, 64, 32, 32))
+            Dim Trainer2FrameSize As Size = New Size(CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName2).Width / 3), CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName2).Height / 4))
+            t4 = TextureManager.GetTexture("NPC\" & Trainer.SpriteName2, New Rectangle(0, Trainer2FrameSize.Height * 2, Trainer2FrameSize.Width, Trainer2FrameSize.Height))
         End If
 
         If Trainer.GameJoltID <> "" Then
             If GameJolt.Emblem.HasDownloadedSprite(Trainer.GameJoltID) = True Then
                 Dim t As Texture2D = GameJolt.Emblem.GetOnlineSprite(Trainer.GameJoltID)
                 If Not t Is Nothing Then
-                    Dim spriteSize As New Vector2(t.Width / 3.0F, t.Height / 4.0F)
+                    Dim spriteSize As New Vector2(CInt(t.Width / 3), CInt(t.Height / 4))
                     t3 = TextureManager.GetTexture(t, New Rectangle(0, CInt(spriteSize.Y * 2), CInt(spriteSize.X), CInt(spriteSize.Y)))
                 End If
             End If
@@ -238,20 +240,22 @@
     Private Sub DrawFaceshotIntro()
         Dim barPosition As Vector2 = New Vector2(Trainer.BarImagePosition.X * 128, Trainer.BarImagePosition.Y * 128)
         Dim VSPosition As Vector2 = New Vector2(Trainer.VSImagePosition.X * 128, Trainer.VSImagePosition.Y * 128 + 64)
+        Dim TrainerFrameSize As Size = New Size(CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName).Width / 3), CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName).Height / 4))
 
         Dim t1 As Texture2D = TextureManager.GetTexture("GUI\Intro\VSIntro", New Rectangle(CInt(barPosition.X), CInt(barPosition.Y), 128, 64), "")
         Dim t2 As Texture2D = TextureManager.GetTexture("GUI\Intro\VSIntro", New Rectangle(CInt(VSPosition.X), CInt(VSPosition.Y), 61, 54), "")
-        Dim t3 As Texture2D = TextureManager.GetTexture("NPC\" & Trainer.SpriteName, New Rectangle(0, 64, 32, 32))
+        Dim t3 As Texture2D = TextureManager.GetTexture("NPC\" & Trainer.SpriteName, New Rectangle(0, TrainerFrameSize.Height * 2, TrainerFrameSize.Width, TrainerFrameSize.Height))
         Dim t4 As Texture2D = Nothing
         If Trainer.DoubleTrainer = True Then
-            t4 = TextureManager.GetTexture("NPC\" & Trainer.SpriteName2, New Rectangle(0, 64, 32, 32))
+            Dim Trainer2FrameSize As Size = New Size(CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName2).Width / 3), CInt(TextureManager.GetTexture("Textures\NPC\" & Trainer.SpriteName2).Height / 4))
+            t4 = TextureManager.GetTexture("NPC\" & Trainer.SpriteName2, New Rectangle(0, Trainer2FrameSize.Height * 2, Trainer2FrameSize.Width, Trainer2FrameSize.Height))
         End If
 
         If Trainer.GameJoltID <> "" Then
             If GameJolt.Emblem.HasDownloadedSprite(Trainer.GameJoltID) = True Then
                 Dim t As Texture2D = GameJolt.Emblem.GetOnlineSprite(Trainer.GameJoltID)
                 If Not t Is Nothing Then
-                    Dim spriteSize As New Vector2(t.Width / 3.0F, t.Height / 4.0F)
+                    Dim spriteSize As New Vector2(CInt(t.Width / 3), CInt(t.Height / 4))
                     t3 = TextureManager.GetTexture(t, New Rectangle(0, CInt(spriteSize.Y * 2), CInt(spriteSize.X), CInt(spriteSize.Y)))
                 End If
             End If

From 7555a5e903e3272f165af0ca36453fc13eed5cce Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sun, 16 Jan 2022 17:22:36 +0100
Subject: [PATCH 52/57] Battle fixes and improvements
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Fixed camera angle not changing to the Pokémon when status effects are doing something
* Fixed softlock when opponent trainer switches Pokémon
* (Hopefully) fixed initial positioning errors with spawned BattleAnimation entities related to BattleFlip functionality
* Removed the now unneccessary BattleFlip checks in the move animation of Growl
* Improved Ember move animation (fireball speed & flame delay)
* Improved Poison Sting move animation by making the stinger smaller, increasing the speed of the stinger and making it use a flipped version of the texture when the opponent uses the move
* Improved Poisoned status effect animation by making it 1 bubble for regular poison and 3 bubbles for toxic
* Repositioned the flame of the Burned status effect animation
* Trainers now display a message when sending out their Pokémon (I removed that before)
* Fixed Party Screen not appearing immediately after the player's Pokémon fainted and also made the player unable to exit the Party Screen when that happens.
* Fixed the incorrectly scaled font sizes and text alignment in the selection menu that appears when selecting a Pokémon in the Party screen
* Replaced minifont in the Pokémon level up stats box with InGameFont and fixed the offsets
* Fixed the error I made in the ceiling map code of Violet City's gym
* Removed the file MoveAnimationQueryObject.vb because AnimationQueryObject.vb also includes Move Animations
* Fixed the textbox in battles where an empty rectangle would appear before the animation finished.
* When a trainer spots the player and an exclamation mark bubble pops up above their head, a sound is played (Emote_Exclamation)
* In trainer battles, the player's Pokémon now also plays their cry.
---
 P3D/Battle/BattleSystemV2/Battle.vb           | 152 ++++++++++--------
 P3D/Battle/BattleSystemV2/BattleMenu.vb       |  13 +-
 P3D/Battle/BattleSystemV2/BattleScreen.vb     |  18 +--
 .../QueryObjects/AnimationQueryObject.vb      |  16 +-
 .../QueryObjects/MoveAnimationQueryObject.vb  |   3 -
 .../QueryObjects/TextQueryObject.vb           |   8 +-
 .../Data/maps/battle/gyms/violet_gym.dat      | Bin 20262 -> 20250 bytes
 P3D/Content/Data/maps/gyms/violet_gym.dat     | Bin 25286 -> 25326 bytes
 P3D/Content/Localization/Tokens_en.dat        |   3 +
 P3D/Content/Sounds/Emote_Exclamation.wav      | Bin 0 -> 52646 bytes
 .../Textures/Battle/Poison/Stinger.png        | Bin 202 -> 246 bytes
 .../Textures/Battle/StatusEffect/Burned.png   | Bin 0 -> 1077 bytes
 P3D/Entites/Other/NPC.vb                      |   8 +-
 P3D/Input/UI/SelectMenu.vb                    |  14 +-
 P3D/P3D.vbproj                                |   7 +-
 P3D/Pokemon/Attacks/Fire/Ember.vb             |  36 ++---
 P3D/Pokemon/Attacks/Normal/Growl.vb           |  12 +-
 P3D/Pokemon/Attacks/Poison/PoisonSting.vb     |  35 ++--
 P3D/Screens/Battle/BattleGrowStatsScreen.vb   |  53 +++---
 P3D/Screens/Pokemon/PartyScreen.vb            |  27 ++--
 20 files changed, 235 insertions(+), 170 deletions(-)
 delete mode 100644 P3D/Battle/BattleSystemV2/QueryObjects/MoveAnimationQueryObject.vb
 create mode 100644 P3D/Content/Sounds/Emote_Exclamation.wav
 create mode 100644 P3D/Content/Textures/Battle/StatusEffect/Burned.png

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 9d4512057..4320f3bbd 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1237,6 +1237,7 @@
                     CureStatusProblem(own, own, BattleScreen, p.GetDisplayName() & " thawed out.", "own defrost")
                 Else
                     'Frozen animation
+                    ChangeCameraAngle(1, Not own, BattleScreen)
                     If Core.Player.ShowBattleAnimations <> 0 Then
                         Dim FrozenAnimation As AnimationQueryObject = New AnimationQueryObject(Nothing, Not own)
 
@@ -1302,6 +1303,8 @@
                         End If
                     Else
                         If sleepTurns > 0 Then
+                            ChangeCameraAngle(1, Not own, BattleScreen)
+                            'Sleep Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
                                 Dim SleepAnimation As New AnimationQueryObject(pNPC, Not own)
 
@@ -1437,6 +1440,8 @@
                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is no longer confused!"))
                     p.RemoveVolatileStatus(Pokemon.VolatileStatus.Confusion)
                 Else
+                    Me.ChangeCameraAngle(1, Not own, BattleScreen)
+                    'Confused Animation
                     If Core.Player.ShowBattleAnimations <> 0 Then
                         Dim ConfusedAnimation As New AnimationQueryObject(pNPC, Not own)
 
@@ -1523,9 +1528,9 @@
             If op.HP > 0 And op.Status <> Pokemon.StatusProblems.Fainted Then
                 If p.HasVolatileStatus(Pokemon.VolatileStatus.Infatuation) = True Then
                     If Core.Random.Next(0, 2) = 0 Then
+                        Me.ChangeCameraAngle(1, own, BattleScreen)
                         'Infatuated animation
                         If Core.Player.ShowBattleAnimations <> 0 Then
-                            Me.ChangeCameraAngle(1, own, BattleScreen)
                             Dim HeartAnimation = New AnimationQueryObject(pNPC, Not own)
                             For i = 0 To 6
                                 Dim HeartEntity = HeartAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Normal\Attract"), New Vector3(0.25F), 1.0F, CSng(i * 0.2))
@@ -1544,6 +1549,7 @@
 
             If p.Status = Pokemon.StatusProblems.Paralyzed Then
                 If Core.Random.Next(0, 4) = 0 Then
+                    Me.ChangeCameraAngle(1, Not own, BattleScreen)
                     If Core.Player.ShowBattleAnimations <> 0 Then
                         Dim ParalyzedAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
 
@@ -2713,7 +2719,7 @@
             Me.ChangeCameraAngle(1, own, BattleScreen)
 
             If message = "" Then
-                message = p.GetDisplayName() & " fainted!"
+                message = p.GetDisplayName() & " " & "fainted!"
             End If
             BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
@@ -2721,7 +2727,7 @@
                 If own = False Then
                     Dim FaintAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
                     FaintAnimation.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 0, 2, False, True)
-                    FaintAnimation.AnimationMove(Nothing, False, 0, -1, 0, 0.05, False, False, 2, 0,,, 3)
+                    FaintAnimation.AnimationMove(Nothing, False, 0, -1, 0, 0.05, False, False, 2, 2)
                     BattleScreen.BattleQuery.Add(FaintAnimation)
                 End If
             End If
@@ -2883,11 +2889,11 @@
                                 'Burn animation
                                 Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
-                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(CSng(-0.25), CSng(-0.25), CSng(-0.25)), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0, -0.25F, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 32, 32, 32), ""), 0.75, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 64, 32, 32), ""), 1.5, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 96, 32, 32), ""), 2.25, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 128, 32, 32), ""), 3, 0)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
 
                                 Select Case message
@@ -3302,6 +3308,8 @@
                                         Return False
                                     Else
                                         'Works!
+                                        ChangeCameraAngle(1, Not own, BattleScreen)
+                                        'Sleep Animation
                                         If Core.Player.ShowBattleAnimations <> 0 Then
                                             Dim SleepAnimation As New AnimationQueryObject(pNPC, Not own)
 
@@ -3373,9 +3381,11 @@
         Public Function InflictPoison(ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal bad As Boolean, ByVal message As String, ByVal cause As String) As Boolean
             Dim p As Pokemon = BattleScreen.OwnPokemon
             Dim op As Pokemon = BattleScreen.OppPokemon
+            Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
             If own = False Then
                 p = BattleScreen.OppPokemon
                 op = BattleScreen.OwnPokemon
+                pNPC = BattleScreen.OppPokemonNPC
             End If
 
             If p.HP <= 0 OrElse p.Status = Pokemon.StatusProblems.Fainted Then
@@ -3430,7 +3440,20 @@
                             Else
                                 'Works!
                                 ChangeCameraAngle(1, own, BattleScreen)
-                                BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                'Poison animation
+                                If Core.Player.ShowBattleAnimations <> 0 Then
+                                    Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+
+                                    PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+
+                                    BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                Else
+                                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                End If
                                 If bad = True Then
                                     p.Status = Pokemon.StatusProblems.BadPoison
                                     Select Case message
@@ -3531,6 +3554,8 @@
                 Return False
             Else
                 'Works!
+                Me.ChangeCameraAngle(1, Not own, BattleScreen)
+                'Confused Animation
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     Dim ConfusedAnimation As New AnimationQueryObject(pNPC, Not own)
 
@@ -4266,12 +4291,6 @@
                     HPAmount = p.MaxHP - p.HP
                 End If
 
-                If own = True Then
-                    BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, -HPAmount, New Vector2(200, 256)))
-                Else
-                    BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, -HPAmount, New Vector2(300, 256)))
-                End If
-
                 '***HP INCREASE ANIMATION***
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     Dim HealAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
@@ -4296,6 +4315,13 @@
                 Else
                     BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Heal", False))
                 End If
+
+                If own = True Then
+                    BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, -HPAmount, New Vector2(200, 256)))
+                Else
+                    BattleScreen.BattleQuery.Add(New MathHPQueryObject(p.HP, p.MaxHP, -HPAmount, New Vector2(300, 256)))
+                End If
+
                 If message <> "" Then
                     BattleScreen.BattleQuery.Add(New TextQueryObject(message))
                 End If
@@ -5689,24 +5715,16 @@
                     Else
                         If .OwnPokemon.Ability.Name.ToLower() <> "magic guard" Then
                             If .OwnPokemon.Status = Pokemon.StatusProblems.Poison Then 'Own Poison
+                                ChangeCameraAngle(1, True, BattleScreen)
                                 'Poison animation
                                 If Core.Player.ShowBattleAnimations <> 0 Then
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
-
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
-
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
-
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 Else
@@ -5719,6 +5737,8 @@
                             If .OwnPokemon.Status = Pokemon.StatusProblems.BadPoison Then 'Own Toxic
                                 .FieldEffects.OwnPoisonCounter += 1
                                 Dim multiplier As Double = (.FieldEffects.OwnPoisonCounter / 16)
+
+                                ChangeCameraAngle(1, True, BattleScreen)
                                 'Poison animation
                                 If Core.Player.ShowBattleAnimations <> 0 Then
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
@@ -5727,11 +5747,11 @@
                                     Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
@@ -5756,17 +5776,17 @@
                             If .OwnPokemon.Ability.Name.ToLower() = "heatproof" Then
                                 reduceAmount = CInt(.OwnPokemon.MaxHP / 32)
                             End If
-
+                            ChangeCameraAngle(1, True, BattleScreen)
                             'Burn animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, False)
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OwnPokemonNPC, True)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
-                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25F, 0.25F, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0, 0.25F, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 32, 32, 32), ""), 0.75, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 64, 32, 32), ""), 1.5, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 96, 32, 32), ""), 2.25, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 128, 32, 32), ""), 3, 0)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
                             Else
                                 BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Burned", False))
@@ -5826,9 +5846,10 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, True, BattleScreen)
                             'Wrap Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, True, BattleScreen)
+
                                 Dim WrapAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
                                 WrapAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
                                 Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
@@ -5862,9 +5883,10 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, True, BattleScreen)
                             'Whirlpool Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, True, BattleScreen)
+
                                 Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False,, True)
                                 WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
                                 Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0, -0.3, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
@@ -5902,9 +5924,9 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, True, BattleScreen)
                             'Bind Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, True, BattleScreen)
                                 Dim BindAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, False)
                                 BindAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 5.0F, 0)
                                 Dim BindEntity = BindAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
@@ -5938,9 +5960,9 @@
                                     multiHP = CInt(.OwnPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, True, BattleScreen)
                             'Clamp Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, True, BattleScreen)
                                 Dim ClampAnimation As AnimationQueryObject = New AnimationQueryObject(.OwnPokemonNPC, True)
                                 Dim offsetLeft As Single = 0.35
                                 Dim offsetRight As Single = -0.35
@@ -6571,24 +6593,16 @@
                     Else
                         If .OppPokemon.Ability.Name.ToLower() <> "magic guard" Then
                             If .OppPokemon.Status = Pokemon.StatusProblems.Poison Then 'Opp Poison
+                                ChangeCameraAngle(1, False, BattleScreen)
                                 'Poison animation
                                 If Core.Player.ShowBattleAnimations <> 0 Then
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
 
                                     PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
-
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
-
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
-
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
 
                                     BattleScreen.BattleQuery.Add(PoisonAnimation)
                                 Else
@@ -6601,6 +6615,7 @@
                             If .OppPokemon.Status = Pokemon.StatusProblems.BadPoison Then 'Opp Toxic
                                 .FieldEffects.OppPoisonCounter += 1
                                 Dim multiplier As Double = (.FieldEffects.OppPoisonCounter / 16)
+                                ChangeCameraAngle(1, False, BattleScreen)
                                 If Core.Player.ShowBattleAnimations <> 0 Then
                                     'Poison animation
                                     Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
@@ -6609,11 +6624,11 @@
                                     Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+                                    Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+                                    Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
                                     PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
@@ -6639,16 +6654,17 @@
                             If .OppPokemon.Ability.Name.ToLower() = "heatproof" Then
                                 reduceAmount = CInt(.OppPokemon.MaxHP / 16)
                             End If
+                            ChangeCameraAngle(1, False, BattleScreen)
                             'Burn animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True)
+                                Dim BurnAnimation As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, False)
                                 BurnAnimation.AnimationPlaySound("Battle\Effects\Burned", 0, 0)
 
-                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0.25, 0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
-                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 2)
+                                Dim FlameEntity As Entity = BurnAnimation.SpawnEntity(New Vector3(0, 0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5, 0.5, 0.5), 1.0F)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 32, 32, 32), ""), 0.75, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 64, 32, 32), ""), 1.5, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 96, 32, 32), ""), 2.25, 0)
+                                BurnAnimation.AnimationChangeTexture(FlameEntity, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Burned", New Rectangle(0, 128, 32, 32), ""), 3, 0)
                                 BattleScreen.BattleQuery.Add(BurnAnimation)
                             Else
                                 BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Burned", False))
@@ -6709,9 +6725,9 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, False, BattleScreen)
                             'Wrap Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, False, BattleScreen)
                                 Dim WrapAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True)
                                 WrapAnimation.AnimationPlaySound("Battle\Attacks\Normal\Wrap", 5.0F, 0)
                                 Dim WrapEntity = WrapAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Wrap", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
@@ -6745,9 +6761,9 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, False, BattleScreen)
                             'Whirlpool Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, False, BattleScreen)
                                 Dim WhirlpoolAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True,, True)
                                 WhirlpoolAnimation.AnimationPlaySound("Battle\Attacks\Water\Whirlpool", 0.0F, 0)
                                 Dim WhirlpoolEntity As Entity = WhirlpoolAnimation.SpawnEntity(New Vector3(0, -0.3, 0), TextureManager.GetTexture("Textures\Battle\Water\Whirlpool"), New Vector3(0.0F), 1.0F, 0.0F, 0.0F)
@@ -6785,9 +6801,9 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, False, BattleScreen)
                             'Bind Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, False, BattleScreen)
                                 Dim BindAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, True)
                                 BindAnimation.AnimationPlaySound("Battle\Attacks\Normal\Bind", 5.0F, 0)
                                 Dim BindEntity = BindAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Normal\Bind", New Rectangle(0, 0, 80, 40), ""), New Vector3(1.0F, 0.5F, 1.0F), 1, 0, 0.75)
@@ -6821,9 +6837,9 @@
                                     multiHP = CInt(.OppPokemon.MaxHP / 6)
                                 End If
                             End If
+                            ChangeCameraAngle(1, False, BattleScreen)
                             'Clamp Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
-                                ChangeCameraAngle(1, False, BattleScreen)
                                 Dim ClampAnimation As AnimationQueryObject = New AnimationQueryObject(.OppPokemonNPC, False)
                                 Dim offsetLeft As Single = -0.35
                                 Dim offsetRight As Single = 0.35
@@ -7109,10 +7125,9 @@
         Dim HasSwitchedInOpp As Boolean = False
         Public Sub SwitchOutOwn(ByVal BattleScreen As BattleScreen, ByVal SwitchInIndex As Integer, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
             With BattleScreen
-                ChangeCameraAngle(1, True, BattleScreen)
-
                 'Natural cure cures status problems
                 If .OwnPokemon.Ability.Name.ToLower() = "natural cure" Then
+                    ChangeCameraAngle(1, True, BattleScreen)
                     If .OwnPokemon.Status <> Pokemon.StatusProblems.Fainted And .OwnPokemon.Status <> Pokemon.StatusProblems.None Then
                         .OwnPokemon.Status = Pokemon.StatusProblems.None
                         .AddToQuery(InsertIndex, New TextQueryObject(.OwnPokemon.GetDisplayName() & "'s status problem got healed by Natural Cure"))
@@ -7120,6 +7135,7 @@
                 End If
                 'Regenerator ability heals 1/3 of it's max HP
                 If .OwnPokemon.Ability.Name.ToLower() = "regenerator" Then
+                    ChangeCameraAngle(1, True, BattleScreen)
                     If Not (.OwnPokemon.Status = Pokemon.StatusProblems.Fainted Or .OwnPokemon.HP = 0) Then
                         Dim restoreHP = CInt(.OwnPokemon.MaxHP / 3)
                         If restoreHP > 0 And .OwnPokemon.HP < .OwnPokemon.MaxHP And .OwnPokemon.HP > 0 Then
@@ -7129,6 +7145,7 @@
                 End If
                 'save baton pass stuff:
                 If .FieldEffects.OwnUsedBatonPass = True Then
+                    ChangeCameraAngle(1, True, BattleScreen)
                     .FieldEffects.OwnBatonPassStats = New List(Of Integer)
                     With .OwnPokemon
                         BattleScreen.FieldEffects.OwnBatonPassStats.AddRange({ .StatAttack, .StatDefense, .StatSpAttack, .StatSpDefense, .StatSpeed, .Evasion, .Accuracy})
@@ -7283,6 +7300,7 @@
         Public Sub SwitchInOwn(ByVal BattleScreen As BattleScreen, ByVal NewPokemonIndex As Integer, ByVal FirstTime As Boolean, ByVal InsertIndex As Integer, Optional ByVal message As String = "")
             HasSwitchedInOwn = True
             If FirstTime = False Then
+                ChangeCameraAngle(1, True, BattleScreen)
                 Dim insertMessage As String = message
 
                 If insertMessage = "" Then
@@ -7655,13 +7673,13 @@
                 Else
                     GainEXP(BattleScreen)
 
+                    ChangeCameraAngle(1, False, BattleScreen)
                     If message = "" Then
                         message = BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""
                     End If
 
                     BattleScreen.BattleQuery.Add(New TextQueryObject(message))
 
-
                     If Core.Player.ShowBattleAnimations <> 0 Then
                         Dim BallReturn As AnimationQueryObject = New AnimationQueryObject(BattleScreen.OppPokemonNPC, True, BattleScreen.OppPokemonModel)
                         ' Ball Closes
@@ -7723,8 +7741,8 @@
         End Sub
 
         Public Sub SwitchInOpp(ByVal BattleScreen As BattleScreen, ByVal FirstTime As Boolean, ByVal index As Integer)
-
             If FirstTime = False Then
+                ChangeCameraAngle(1, False, BattleScreen)
                 HasSwitchedInOpp = True
                 BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & ": ""Come back, " & BattleScreen.OppPokemon.GetDisplayName() & "!"""))
 
@@ -7813,8 +7831,7 @@
                 BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     '  Pokémon falls down
-                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 4)
-
+                    BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0)
                     BattleScreen.BattleQuery.Add(BallThrow)
                 End If
             End If
@@ -7845,10 +7862,7 @@
                 'Sticky Web
                 If spikeAffected = True Then
                     If .FieldEffects.OwnStickyWeb > 0 Then
-
                         LowerStat(False, False, BattleScreen, "Speed", 1, "The opposing pokemon was caught in a Sticky Web!", "stickyweb")
-
-
                     End If
                 End If
                 If spikeAffected = True Then
diff --git a/P3D/Battle/BattleSystemV2/BattleMenu.vb b/P3D/Battle/BattleSystemV2/BattleMenu.vb
index 16b265fa8..c63e7f3cc 100644
--- a/P3D/Battle/BattleSystemV2/BattleMenu.vb
+++ b/P3D/Battle/BattleSystemV2/BattleMenu.vb
@@ -604,10 +604,21 @@
                 _mainMenuItemList.Clear()
                 BattleScreen.ClearMainMenuTime = False
             End If
-
             If _mainMenuItemList.Count = 0 Then
                 CreateMainMenuItems(BattleScreen)
             End If
+            If BattleScreen.OwnFaint = True Then
+                If BattleScreen.BattleQuery(0).QueryType <> QueryObject.QueryTypes.ScreenFade Then
+                    TempBattleScreen = BattleScreen
+
+                    Player.Temp.PokemonScreenIndex = BattleScreen.OwnPokemonIndex
+                    Dim selScreen = New PartyScreen(Core.CurrentScreen, Item.GetItemByID(5), AddressOf ShowPokemonMenu, "Choose Pokémon", False) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = False}
+                    AddHandler selScreen.SelectedObject, AddressOf ShowPokemonMenuHandler
+
+                    Core.SetScreen(selScreen)
+
+                End If
+            End If
             If _retractMenu = False Then
                 For Each m As MainMenuItem In _mainMenuItemList
                     m.Update(BattleScreen, _allItemsExtended, (m.Index = _mainMenuIndex))
diff --git a/P3D/Battle/BattleSystemV2/BattleScreen.vb b/P3D/Battle/BattleSystemV2/BattleScreen.vb
index 444072a8e..65ea22efd 100644
--- a/P3D/Battle/BattleSystemV2/BattleScreen.vb
+++ b/P3D/Battle/BattleSystemV2/BattleScreen.vb
@@ -411,7 +411,8 @@
             Dim q As CameraQueryObject = New CameraQueryObject(New Vector3(13, 0, 15), New Vector3(21, 0, 15), 0.05F, 0.05F, -0.8F, 1.4F, 0.0F, 0.0F, 0.016F, 0.016F)
             q.PassThis = True
 
-            Dim q1 As TextQueryObject = New TextQueryObject(Trainer.Name & " wants to battle!")
+            Dim q1 As TextQueryObject = New TextQueryObject(Trainer.Name & " " & "wants to battle!")
+            Dim q11 As TextQueryObject = New TextQueryObject(Trainer.Name & ": """ & "Go," & " " & OppPokemon.GetDisplayName() & "!""")
 
             ' Ball is thrown
             Dim BallThrowOpp As AnimationQueryObject = New AnimationQueryObject(OppPokemonNPC, False, OppPokemonModel)
@@ -438,9 +439,10 @@
 
                     Threading.Interlocked.Increment(SmokeSpawnedOpp)
                 Loop While SmokeSpawnedOpp <= 38
+
+                ' Pokemon appears
+                BallThrowOpp.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
             End If
-            ' Pokemon appears
-            BallThrowOpp.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
             BallThrowOpp.AnimationPlaySound(CStr(Me.OppPokemon.Number), 4, 0,, True)
 
             '  Pokémon falls down
@@ -453,15 +455,11 @@
 
             Dim q3 As CameraQueryObject = New CameraQueryObject(New Vector3(14, 0, 11), New Vector3(14, 0, 15), 0.01F, 0.01F, MathHelper.PiOver2, MathHelper.PiOver2, 0.0F, 0.0F)
             q3.PassThis = True
+            Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
+            Dim q4 As TextQueryObject = New TextQueryObject("Go," & " " & Me.OwnPokemon.GetDisplayName() & "!")
 
-            Dim q4 As TextQueryObject = New TextQueryObject("Go, " & Me.OwnPokemon.GetDisplayName() & "!")
 
-            If IsPVPBattle = True AndAlso Core.Player.ShowBattleAnimations = 0 Then
-                Dim q31 As New PlaySoundQueryObject(OwnPokemon.Number.ToString(), True, 3.0F)
-                Me.BattleQuery.AddRange({cq, q, q1, BallThrowOpp, q2, q3, q31, q4})
-            Else
-                Me.BattleQuery.AddRange({cq, q, q1, BallThrowOpp, q2, q3, q4})
-            End If
+            Me.BattleQuery.AddRange({cq, q, q1, q11, BallThrowOpp, q2, q3, q31, q4})
 
             If IsPVPBattle = True AndAlso Core.Player.ShowBattleAnimations <> 0 Then
                 ' Ball is thrown
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
index bd7e555cd..6ea89d65a 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/AnimationQueryObject.vb
@@ -103,10 +103,20 @@
 		Public Function SpawnEntity(ByVal Position As Vector3, ByVal Texture As Texture2D, ByVal Scale As Vector3, ByVal Opacity As Single, Optional ByVal startDelay As Single = 0.0F, Optional ByVal endDelay As Single = 0.0F) As Entity
 			Dim NewPosition As Vector3
 			If Not Position = Nothing Then
-				If CurrentEntity IsNot Nothing Then
-					NewPosition = CurrentEntity.Position + Position
+				If BattleFlipped = True Then
+					If CurrentEntity IsNot Nothing Then
+						NewPosition.X = CurrentEntity.Position.X - Position.X
+						NewPosition.Y = CurrentEntity.Position.Y + Position.Y
+						NewPosition.Z = CurrentEntity.Position.Z + Position.Z
+					Else
+						NewPosition = Position
+					End If
 				Else
-					NewPosition = Position
+					If CurrentEntity IsNot Nothing Then
+						NewPosition = CurrentEntity.Position + Position
+					Else
+						NewPosition = Position
+					End If
 				End If
 			Else
 				If CurrentEntity IsNot Nothing Then
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/MoveAnimationQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/MoveAnimationQueryObject.vb
deleted file mode 100644
index 9cb854966..000000000
--- a/P3D/Battle/BattleSystemV2/QueryObjects/MoveAnimationQueryObject.vb
+++ /dev/null
@@ -1,3 +0,0 @@
-Public Class MoveAnimationQueryObject
-
-End Class
\ No newline at end of file
diff --git a/P3D/Battle/BattleSystemV2/QueryObjects/TextQueryObject.vb b/P3D/Battle/BattleSystemV2/QueryObjects/TextQueryObject.vb
index 74013718b..02b6551be 100644
--- a/P3D/Battle/BattleSystemV2/QueryObjects/TextQueryObject.vb
+++ b/P3D/Battle/BattleSystemV2/QueryObjects/TextQueryObject.vb
@@ -67,11 +67,11 @@
 
         Public Overrides Sub Draw(BV2Screen As BattleScreen)
             Dim rec As New Rectangle(100, Core.windowSize.Height - 250, Core.windowSize.Width - 200, 200)
-
-            Canvas.DrawRectangle(rec, New Color(0, 0, 0, 150))
-
             Dim text As String = Me._text.Substring(0, _textIndex)
-            text = text.CropStringToWidth(FontManager.TextFont, 2.0F, Core.windowSize.Width - 300)
+            If text.Length > 0 Then
+                Canvas.DrawRectangle(rec, New Color(0, 0, 0, 150))
+            End If
+            Text = text.CropStringToWidth(FontManager.TextFont, 2.0F, Core.windowSize.Width - 300)
 
             Core.SpriteBatch.DrawString(FontManager.TextFont, text, New Vector2(rec.X + 20, rec.Y + 20), Color.White, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
 
diff --git a/P3D/Content/Data/maps/battle/gyms/violet_gym.dat b/P3D/Content/Data/maps/battle/gyms/violet_gym.dat
index fc4fce5cd2385cd5503173f9b2219627d15b5a09..25becde102a69ff7c1cfaf53833756b086d1d718 100644
GIT binary patch
delta 73
zcmZ2Bk8##K#tm|c(vA!{Kp4!B$&kX3%23SU&yd8B1!N^NluT9>(4EA|GC53f+hh*0
bfXRMbe3SVcwoDdalbUQG&ayd1`II&Q!(S7a

delta 42
ycmbO=k8#;N#tm|c?9L3O3`q>BlNAMYCvmb&&QjdA`GJ}j<77Q?w#@;`r?deZPYqQ7

diff --git a/P3D/Content/Data/maps/gyms/violet_gym.dat b/P3D/Content/Data/maps/gyms/violet_gym.dat
index 02a065626a4a7200a6f1f476a527cb55e6e2fe3d..a9c071122205a3e6a02dfc1450e145549213a9f7 100644
GIT binary patch
delta 77
zcmX?hl=0nB#tmNLyv_`%44Di$K%B>rK3R~rTG|oF%V7uxilhMLiW&SFk{GgptYn6g
b$%)#!lM@8kHvbUUV4N(+&$n4ma)u`WKMNGH

delta 51
zcmV-30L=gH#R0~}0kBFJlMppTlh6+olW+|j2SWgL0Ac`TlaVzolVA`Avmh8K0h5ps
JlC#<w6iL}n5fT6Z

diff --git a/P3D/Content/Localization/Tokens_en.dat b/P3D/Content/Localization/Tokens_en.dat
index bd7bd479e..6721cf780 100644
--- a/P3D/Content/Localization/Tokens_en.dat
+++ b/P3D/Content/Localization/Tokens_en.dat
@@ -84,10 +84,13 @@ HP,HP
 PP,PP
 Lv.,Lv.
 Level,Level
+MaxHP,Max HP
 Attack,Attack
 Defense,Defense
 Special_Attack,Special Attack
+Sp_Attack,Sp. Attack
 Special_Defense,Special Defense
+Sp_Defense,Sp. Defense
 Speed,Speed
 ---
 GameInteractions:
diff --git a/P3D/Content/Sounds/Emote_Exclamation.wav b/P3D/Content/Sounds/Emote_Exclamation.wav
new file mode 100644
index 0000000000000000000000000000000000000000..06ccd271c76e8c8c1947956a11bdcf8b501ff3ce
GIT binary patch
literal 52646
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%0D0iUu
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
VEinn^uQ^i`ONw=Q;yX)2{sZC-+q(b&

literal 0
HcmV?d00001

diff --git a/P3D/Content/Textures/Battle/Poison/Stinger.png b/P3D/Content/Textures/Battle/Poison/Stinger.png
index 68fa6e649e4482024c2592c846625ff4b85984ed..b37b8b491d7a3b6cbd55fb162dc118582e8b1f3b 100644
GIT binary patch
delta 172
zcmV;d08{_U0rmlq7YZN<1^@s68;SVLks&{Sfk{L`R7l6|l(7y3AqYg}568|=q?`Fe
zx45iXa~jF5)kP{};1MP;R%=af!VX{)Am`js0DL7%YHyO(001h0R7weVy>m%g14If&
z{~^F^9FjKFU=^JPXORxz4*}1cSb4(mnA|<w+1-<*&pFQuS3pU<rTyXyQw^fNa29D7
a1K<ML(vgYAoWBeJ0000<MNUMnLSTYRDn|SO

delta 127
zcmV-_0D%AY0m=c87YYyv1^@s6AM^iVks&{7RY^oaR5;7+lEDhVFbG4NKa4m3GX9}E
zO(^S_&>fqTNPJ=tnK^cZ1NaGGW)p?v!x#}&OF{uiCduLM?X9<05(>~6SoK?gw{s+6
hnZcK)49+9%11^OBMAI;%4Lbk;002ovPDHLkV1kfvGZO#+

diff --git a/P3D/Content/Textures/Battle/StatusEffect/Burned.png b/P3D/Content/Textures/Battle/StatusEffect/Burned.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ca6e2e663d780268f9a43a2fe58b4df623ff58a
GIT binary patch
literal 1077
zcmV-51j_q~P)<h;3K|Lk000e1NJLTq001BW005u}1^@s6ZOU#e00009a7bBm000XT
z000XT0n*)m`~Uy|8+1ijbW?9;ba!ELWdK8EY;$>YAX9X8WNB|8RBvx=!KdMT000BP
zNkl<Zc-rloA$!{}5QaaY1STwF8ygHP?9V84(83xx7&w@*7R_)!V`GK=31uByV2m{2
zoFh4sBb{V>P0!3up66cOo#gvYveH^(%u5M?00@8p2!H?xfB*=900_XF2dI?N6Rp*F
z0IRv4{P;T#K&6yMF+*AI@rCJyG=SAyV>tyje=r#upi)ZXPy!EMf#(CbVc-L-<{A&X
z`ewZu9smHU?;kV(OzvNmEJOkz00JNY0w4hI10b~mzMc@|^h8=wTFj853G&p0&j+B~
z4_}ryUf3;=0+B@<Vz)RGC!u+gM;R@rK)GjmAx)Spr@;Cfu--J!W0R6S4FLef?DTLs
zWl1z1z-q1=qvZZ#RwrYmP>lwl`QI47xdWbl*2aNoFT?|wiFdOFa998E^qG~2e1LTU
zV0(PJt-Wyj(*G=ILQu?(9suyP9d;U85CGeFmX{IAeLerjco#@bC;$Q=00I#62KChl
zgL~jnDQ)g8Tu%t9)m-~t$z2+ORT25(>4K<!f2yCQ<Ul)aG0ORpLJ9(iRl=kjLc$RS
z5V199i55prw8O+sLRVNGmC^;>90jZCiE1@($~YPjyDD~hq!~S3EiagLB+COn<4(gQ
z-7d&>766T))9_KIng4YqWiUXy3_nxHrdW;83UL6GSk#swgU^SPIHmg|MAzu!0e*c1
zZeMVcW_PDQJd};gDNkt1VYl#ZZpHzS+Z*F8aY~+`e!;P4(6zJb1#r#tCJdG`#tDMF
zK%f_l$Ik*<NUYJr_JYwZA>-K!61z75e+bO$!c5?;17>>$u#FqNq7tx9R=C2-Z%~-?
z-W++~EgB~X!?5TA0T2KIcpm^E`$qZ1DRUn&3qZ;yW)^@)rF1bSKuR9;zImM;AST`+
z|IOMV@s;se0enda07Zu~&I(}l0bEzaR!)3X+-20L4?~Req?zm5Ei5@6YMc+?7%g4d
z_6^N!ckY(AjQ6^2XDK2>fOHu*7oe^_V;lfwcYyKG#VQ=2HNC8mv^!xDVd2jL3JGO@
zD=Z<xG)<hE4JorT5}A}~0MsXFwP)I+?+?J^f!^i$nKbt-zaekVwEjTC3Mj%v00ck)
z1V8|;4}g2#Tte`+0Afy3gyu!E2dGytdP&xGY-6w-=sL<X3_$B!gOHrb_L)ypraL}%
z$O7OSjk!e+;OyW^Zz1UFlno=z9Q}g9-UXw6=;X@<^LfmQ$&%+?3OIIU%<`er<o;E0
v)pD9V-z}_fj6xgKc|AZgfnof=s0aQ5bmPhW{j4~w00000NkvXXu0mjffo{{^

literal 0
HcmV?d00001

diff --git a/P3D/Entites/Other/NPC.vb b/P3D/Entites/Other/NPC.vb
index 29d3ebcdb..a26840f1e 100644
--- a/P3D/Entites/Other/NPC.vb
+++ b/P3D/Entites/Other/NPC.vb
@@ -418,14 +418,16 @@
                                     If CType(Screen.Camera, OverworldCamera).ThirdPerson = True And IsOnScreen() = False Then
                                         s &= "@camera.setfocus(npc," & Me.NPCID & ")" & Environment.NewLine
                                         Dim cPosition = .ThirdPersonOffset.X.ToString() & "," & .ThirdPersonOffset.Y.ToString() & "," & .ThirdPersonOffset.Z.ToString()
-                                        s &= "@entity.showmessagebulb(1|" & Me.Position.X + offset.X & "|" & Me.Position.Y + 0.7F & "|" & Me.Position.Z + offset.Y & ")" & Environment.NewLine &
+                                        s &= "@sound.play(Emote_Exclamation)" & Environment.NewLine &
+                                             "@entity.showmessagebulb(1|" & Me.Position.X + offset.X & "|" & Me.Position.Y + 0.7F & "|" & Me.Position.Z + offset.Y & ")" & Environment.NewLine &
                                              "@npc.move(" & Me.NPCID & "," & distance - 1 & ")" & Environment.NewLine &
+                                             "@script.start(" & Me.AdditionalValue & ")" & Environment.NewLine &
                                              "@camera.resetfocus" & Environment.NewLine &
                                              "@camera.setposition(" & cPosition & ")" & Environment.NewLine &
-                                             "@script.start(" & Me.AdditionalValue & ")" & Environment.NewLine &
                                              ":end"
                                     Else
-                                        s &= "@entity.showmessagebulb(1|" & Me.Position.X + offset.X & "|" & Me.Position.Y + 0.7F & "|" & Me.Position.Z + offset.Y & ")" & Environment.NewLine &
+                                        s &= "@sound.play(Emote_Exclamation)" & Environment.NewLine &
+                                        "@entity.showmessagebulb(1|" & Me.Position.X + offset.X & "|" & Me.Position.Y + 0.7F & "|" & Me.Position.Z + offset.Y & ")" & Environment.NewLine &
                                         "@npc.move(" & Me.NPCID & "," & distance - 1 & ")" & Environment.NewLine &
                                         "@script.start(" & Me.AdditionalValue & ")" & Environment.NewLine &
                                         ":end"
diff --git a/P3D/Input/UI/SelectMenu.vb b/P3D/Input/UI/SelectMenu.vb
index 19998d8bf..c2829e53c 100644
--- a/P3D/Input/UI/SelectMenu.vb
+++ b/P3D/Input/UI/SelectMenu.vb
@@ -47,7 +47,7 @@
 
         Public Sub Update()
             If Visible = True Then
-                cursorPos.Y = MathHelper.Lerp(cursorDest.Y, cursorPos.Y, 0.6F)
+                cursorPos.Y = CInt(MathHelper.Lerp(cursorDest.Y, cursorPos.Y, 0.6F))
 
                 If Controls.Up(True, True, True, True, True, True) = True Then
                     Me.Index -= 1
@@ -64,7 +64,7 @@
 
                 For i = Scroll To Me.Scroll + 8
                     If i <= Me.Items.Count - 1 Then
-                        If Controls.Accept(True, False, False) = True And i = Me.Index And New Rectangle(Core.windowSize.Width - 270, 66 * ((i + 1) - Scroll), 256, 64).Contains(MouseHandler.MousePosition) = True Or
+                        If Controls.Accept(True, False, False) = True And i = Me.Index And New Rectangle(Core.windowSize.Width - 270, 72 * ((i + 1) - Scroll), 256, 64).Contains(MouseHandler.MousePosition) = True Or
                             Controls.Accept(False, True, True) = True And i = Me.Index Or Controls.Dismiss(True, True, True) = True And Me.BackIndex = Me.Index Then
 
                             If Not ClickHandler Is Nothing Then
@@ -79,7 +79,7 @@
                             End If
                             Me.Visible = False
                         End If
-                        If New Rectangle(Core.windowSize.Width - 270, 66 * ((i + 1) - Scroll), 256, 64).Contains(MouseHandler.MousePosition) = True And Controls.Accept(True, False, False) = True Then
+                        If New Rectangle(Core.windowSize.Width - 270, 72 * ((i + 1) - Scroll), 256, 64).Contains(MouseHandler.MousePosition) = True And Controls.Accept(True, False, False) = True Then
                             Me.Index = i
                         End If
                     End If
@@ -104,25 +104,25 @@
                     If i <= Me.Items.Count - 1 Then
                         Dim Text As String = Items(i)
 
-                        Dim startPos As New Vector2(Core.windowSize.Width - 270, 66 * ((i + 1) - Scroll))
+                        Dim startPos As New Vector2(Core.windowSize.Width - 270, 72 * ((i + 1) - Scroll))
 
                         Core.SpriteBatch.Draw(t1, New Rectangle(CInt(startPos.X), CInt(startPos.Y), 64, 64), Color.White)
                         Core.SpriteBatch.Draw(t2, New Rectangle(CInt(startPos.X + 64), CInt(startPos.Y), 64, 64), Color.White)
                         Core.SpriteBatch.Draw(t2, New Rectangle(CInt(startPos.X + 128), CInt(startPos.Y), 64, 64), Color.White)
                         Core.SpriteBatch.Draw(t1, New Rectangle(CInt(startPos.X + 192), CInt(startPos.Y), 64, 64), Nothing, Color.White, 0.0F, New Vector2(0), SpriteEffects.FlipHorizontally, 0.0F)
 
-                        Core.SpriteBatch.DrawString(FontManager.MainFont, Text, New Vector2(startPos.X + 128 - (FontManager.MainFont.MeasureString(Text).X * 1.4F) / 2, startPos.Y + 15), Color.Black, 0.0F, Vector2.Zero, 1.4F, SpriteEffects.None, 0.0F)
+                        Core.SpriteBatch.DrawString(FontManager.MainFont, Text, New Vector2(CInt(startPos.X + 20), CInt(startPos.Y + 32 - FontManager.MainFont.MeasureString(Text).Y / 2)), Color.Black, 0.0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0.0F)
                     End If
                 Next
             End If
 
-            Dim cPosition As Vector2 = New Vector2(cursorPos.X + 128, cursorPos.Y - 40)
+            Dim cPosition As Vector2 = New Vector2(CInt(cursorPos.X + 128), CInt(cursorPos.Y - 40))
             Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
             Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
         End Sub
 
         Private Sub SetCursorDest()
-            cursorDest = New Vector2(Core.windowSize.Width - 270, 66 * ((Index + 1) - Scroll))
+            cursorDest = New Vector2(CInt(Core.windowSize.Width - 270), CInt(72 * (Index + 1 - Scroll)))
         End Sub
 
         Public ReadOnly Property SelectedItem() As String
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index ec8947d4c..3f0c657a7 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -14731,6 +14731,9 @@
     <Content Include="Content\Sounds\Battle\Effects\MegaEvolution.wav">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Sounds\Emote_Exclamation.wav">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\MegaEvolution\Mega_Phase1.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -14746,6 +14749,9 @@
     <Content Include="Content\Textures\Battle\Normal\Wrap.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="Content\Textures\Battle\StatusEffect\Burned.png">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="Content\Textures\Battle\StatusEffect\Frozen.png">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
@@ -29285,7 +29291,6 @@
     <Compile Include="Battle\BattleSystemV2\QueryObjects\EndBattleQueryObject.vb" />
     <Compile Include="Battle\BattleSystemV2\QueryObjects\LearnMovesQueryObject.vb" />
     <Compile Include="Battle\BattleSystemV2\QueryObjects\MathHPQueryObject.vb" />
-    <Compile Include="Battle\BattleSystemV2\QueryObjects\MoveAnimationQueryObject.vb" />
     <Compile Include="Battle\BattleSystemV2\QueryObjects\PlayMusicQueryObject.vb" />
     <Compile Include="Battle\BattleSystemV2\QueryObjects\PlaySoundQueryObject.vb" />
     <Compile Include="Battle\BattleSystemV2\QueryObjects\QueryObject.vb" />
diff --git a/P3D/Pokemon/Attacks/Fire/Ember.vb b/P3D/Pokemon/Attacks/Fire/Ember.vb
index d8e04c15a..d977fa38a 100644
--- a/P3D/Pokemon/Attacks/Fire/Ember.vb
+++ b/P3D/Pokemon/Attacks/Fire/Ember.vb
@@ -67,7 +67,7 @@
             Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
             Dim FireballEntity = MoveAnimation.SpawnEntity(Nothing, TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
 
-            MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationMove(FireballEntity, True, 2.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5)
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Start", 0, 0)
             For i = 0 To 12
                 Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1, CSng(i * 0.2))
@@ -82,7 +82,7 @@
             Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
             Dim FireballEntity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\FireBall"), New Vector3(0.5F), 1.0F)
 
-            MoveAnimation.AnimationMove(FireballEntity, True, 0.0, 0.0, 0.0, 0.05, False, True, 0.0, 0.0,, -0.5, 0)
+            MoveAnimation.AnimationMove(FireballEntity, True, -0.05, 0.0, 0.0, 0.05, False, True, 0.0, 1.0,, -0.5)
 
             For i = 0 To 12
                 Dim SmokeEntity = MoveAnimation.SpawnEntity(New Vector3(CSng(-3.0 + i * 0.2), 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Fire\Smoke"), New Vector3(0.2), 1, CSng(i * 0.2))
@@ -90,27 +90,27 @@
 
                 i += 1
             Next
-            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 2, 0)
+            MoveAnimation.AnimationPlaySound("Battle\Attacks\Fire\Ember_Hit", 4, 0)
 
-            Dim FireEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
-            Dim FireEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
-            Dim FireEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+            Dim FireEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 3, 0)
+            Dim FireEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 3, 0)
+            Dim FireEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 3, 0)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 3.75, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 3.75, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 32, 32, 32), ""), 3.75, 0)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 4.5, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 4.5, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 64, 32, 32), ""), 4.5, 0)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 4, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 5.25, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 5.25, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, False, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 96, 32, 32), ""), 5.25, 0)
 
-            MoveAnimation.AnimationChangeTexture(FireEntity1, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity2, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 1)
-            MoveAnimation.AnimationChangeTexture(FireEntity3, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 5, 1)
+            MoveAnimation.AnimationChangeTexture(FireEntity1, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 6, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity2, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 6, 0)
+            MoveAnimation.AnimationChangeTexture(FireEntity3, True, TextureManager.GetTexture("Textures\Battle\Fire\Ember", New Rectangle(0, 128, 32, 32), ""), 6, 0)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Pokemon/Attacks/Normal/Growl.vb b/P3D/Pokemon/Attacks/Normal/Growl.vb
index 7ab2ed77b..714437ec3 100644
--- a/P3D/Pokemon/Attacks/Normal/Growl.vb
+++ b/P3D/Pokemon/Attacks/Normal/Growl.vb
@@ -67,12 +67,12 @@
 
             MoveAnimation.AnimationPlaySound(CStr(CurrentPokemon.Number), 0, 0,, True)
             Dim SoundwaveEntity As Entity
-            If BattleFlip = False Then
-                SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
-            Else
-                SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
-            End If
-            MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+            ' If BattleFlip = False Then
+            SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                'Else
+                ' SoundwaveEntity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+                'End If
+                MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 1, 1)
             MoveAnimation.AnimationChangeTexture(SoundwaveEntity, False, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 0, 32, 32), ""), 2, 1)
             MoveAnimation.AnimationChangeTexture(SoundwaveEntity, True, TextureManager.GetTexture("Textures\Battle\Normal\Growl", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
diff --git a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
index 9393f3042..50517801e 100644
--- a/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
+++ b/P3D/Pokemon/Attacks/Poison/PoisonSting.vb
@@ -67,10 +67,15 @@
 
         Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
-            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(Nothing, TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1.0F)
+
+            Dim TextureYOffset As Integer = 0
+            If BattleFlip = True Then
+                TextureYOffset = 16
+            End If
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(Nothing, TextureManager.GetTexture("Textures\Battle\Poison\Stinger", New Rectangle(0, TextureYOffset, 16, 16), ""), New Vector3(0.2F), 1.0F)
 
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Start", 0, 0)
-            MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 2.0, 0.0, 0.0, 0.08, False, False, 0.0, 0.0)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
@@ -78,27 +83,31 @@
         Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC, ByVal CurrentModel As ModelEntity)
             Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
 
-            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger"), New Vector3(0.5F), 1)
+            Dim TextureYOffset As Integer = 0
+            If BattleFlip = True Then
+                TextureYOffset = 16
+            End If
+            Dim StingerEntity As Entity = MoveAnimation.SpawnEntity(New Vector3(-2.0, 0, 0.0), TextureManager.GetTexture("Textures\Battle\Poison\Stinger", New Rectangle(0, TextureYOffset, 16, 16), ""), New Vector3(0.2F), 1)
 
-            MoveAnimation.AnimationMove(StingerEntity, True, 0.0, 0.0, 0.0, 0.05, False, False, 0.0, 0.0,,, 0)
+            MoveAnimation.AnimationMove(StingerEntity, True, 0.0, 0.0, 0.0, 0.08, False, False, 0.0, 0.0)
 
             MoveAnimation.AnimationPlaySound("Battle\Attacks\Poison\PoisonSting_Hit", 1, 0)
 
-            Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+            Dim BubbleEntity1 As Entity = MoveAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
 
-            Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+            Dim BubbleEntity2 As Entity = MoveAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 3, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 3, 1)
-            MoveAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 4, 1)
 
-            Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 3, 1)
+            Dim BubbleEntity3 As Entity = MoveAnimation.SpawnEntity(New Vector3(0.25, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 4, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 4, 1)
-            MoveAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 4, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 5, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 32, 32, 32), ""), 5, 1)
 
-            MoveAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 5, 1)
+            MoveAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\Poison\Bubble", New Rectangle(0, 64, 32, 32), ""), 6, 1)
 
             BattleScreen.BattleQuery.Add(MoveAnimation)
         End Sub
diff --git a/P3D/Screens/Battle/BattleGrowStatsScreen.vb b/P3D/Screens/Battle/BattleGrowStatsScreen.vb
index 7532b2c81..9fe64c82a 100644
--- a/P3D/Screens/Battle/BattleGrowStatsScreen.vb
+++ b/P3D/Screens/Battle/BattleGrowStatsScreen.vb
@@ -41,47 +41,60 @@
         Dim pokeTexture = Pokemon.GetMenuTexture()
         Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(p.X + 20), CInt(p.Y + 20), pokeTexture.Width * 2, 64), Color.White)
         Core.SpriteBatch.DrawString(FontManager.InGameFont, Pokemon.GetDisplayName(), New Vector2(p.X + 90, p.Y + 32), Color.Black)
-        Core.SpriteBatch.DrawString(FontManager.MiniFont, " reached level " & Pokemon.Level & "!", New Vector2(p.X + 90 + FontManager.InGameFont.MeasureString(Pokemon.GetDisplayName()).X, p.Y + 41), Color.Black)
+        Core.SpriteBatch.DrawString(FontManager.InGameFont, " reached level " & Pokemon.Level & "!", New Vector2(p.X + 90 + FontManager.InGameFont.MeasureString(Pokemon.GetDisplayName()).X, p.Y + 41), Color.Black)
+
+        Dim OldOffset As Integer = 160
 
         If Delay >= 3.0F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "Max HP:      " & OldStats(0).ToString(), New Vector2(p.X + 32, p.Y + 84), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "Attack:       " & OldStats(1).ToString(), New Vector2(p.X + 32, p.Y + 124), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "Defense:     " & OldStats(2).ToString(), New Vector2(p.X + 32, p.Y + 164), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "Sp Attack:   " & OldStats(3).ToString(), New Vector2(p.X + 32, p.Y + 204), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "Sp Defense: " & OldStats(4).ToString(), New Vector2(p.X + 32, p.Y + 244), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "Speed:        " & OldStats(5).ToString(), New Vector2(p.X + 32, p.Y + 284), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, Localization.GetString("MaxHP") & ":", New Vector2(p.X + 32, p.Y + 84), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, OldStats(0).ToString(), New Vector2(p.X + 32 + OldOffset, p.Y + 84), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, Localization.GetString("Attack") & ":", New Vector2(p.X + 32, p.Y + 124), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, OldStats(1).ToString(), New Vector2(p.X + 32 + OldOffset, p.Y + 124), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, Localization.GetString("Defense") & ":", New Vector2(p.X + 32, p.Y + 164), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, OldStats(2).ToString(), New Vector2(p.X + 32 + OldOffset, p.Y + 164), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, Localization.GetString("Sp_Attack") & ":", New Vector2(p.X + 32, p.Y + 204), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, OldStats(3).ToString(), New Vector2(p.X + 32 + OldOffset, p.Y + 204), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, Localization.GetString("Sp_Defense") & ":", New Vector2(p.X + 32, p.Y + 244), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, OldStats(4).ToString(), New Vector2(p.X + 32 + OldOffset, p.Y + 244), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, Localization.GetString("Speed") & ":", New Vector2(p.X + 32, p.Y + 284), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, OldStats(5).ToString(), New Vector2(p.X + 32 + OldOffset, p.Y + 284), Color.Black)
         End If
+
+        Dim NewOffset As Integer = 208
         If Delay >= 5.0F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "+ " & newMaxHP, New Vector2(p.X + 200, p.Y + 84), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "+ " & newMaxHP, New Vector2(p.X + 32 + NewOffset, p.Y + 84), Color.Black)
         End If
         If Delay >= 5.5F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "+ " & newAttack, New Vector2(p.X + 200, p.Y + 124), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "+ " & newAttack, New Vector2(p.X + 32 + NewOffset, p.Y + 124), Color.Black)
         End If
         If Delay >= 6.0F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "+ " & newDefense, New Vector2(p.X + 200, p.Y + 164), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "+ " & newDefense, New Vector2(p.X + 32 + NewOffset, p.Y + 164), Color.Black)
         End If
         If Delay >= 6.5F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "+ " & newSpAttack, New Vector2(p.X + 200, p.Y + 204), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "+ " & newSpAttack, New Vector2(p.X + 32 + NewOffset, p.Y + 204), Color.Black)
         End If
         If Delay >= 7.0F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "+ " & newSpDefense, New Vector2(p.X + 200, p.Y + 244), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "+ " & newSpDefense, New Vector2(p.X + 32 + NewOffset, p.Y + 244), Color.Black)
         End If
         If Delay >= 7.5F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "+ " & newSpeed, New Vector2(p.X + 200, p.Y + 284), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "+ " & newSpeed, New Vector2(p.X + 32 + NewOffset, p.Y + 284), Color.Black)
         End If
+
+        Dim ResultOffset As Integer = 272
+
         If Delay >= 9.0F Then
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "= " & Pokemon.MaxHP, New Vector2(p.X + 252, p.Y + 84), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "= " & Pokemon.Attack, New Vector2(p.X + 252, p.Y + 124), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "= " & Pokemon.Defense, New Vector2(p.X + 252, p.Y + 164), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "= " & Pokemon.SpAttack, New Vector2(p.X + 252, p.Y + 204), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "= " & Pokemon.SpDefense, New Vector2(p.X + 252, p.Y + 244), Color.Black)
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, "= " & Pokemon.Speed, New Vector2(p.X + 252, p.Y + 284), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "= " & Pokemon.MaxHP, New Vector2(p.X + 32 + ResultOffset, p.Y + 84), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "= " & Pokemon.Attack, New Vector2(p.X + 32 + ResultOffset, p.Y + 124), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "= " & Pokemon.Defense, New Vector2(p.X + 32 + ResultOffset, p.Y + 164), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "= " & Pokemon.SpAttack, New Vector2(p.X + 32 + ResultOffset, p.Y + 204), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "= " & Pokemon.SpDefense, New Vector2(p.X + 32 + ResultOffset, p.Y + 244), Color.Black)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, "= " & Pokemon.Speed, New Vector2(p.X + 32 + ResultOffset, p.Y + 284), Color.Black)
         End If
         If Delay >= 11.0F Then
             Dim newStat As Integer = 0
             newStat = newAttack + newDefense + newSpAttack + newMaxHP + newSpDefense + newSpeed
 
-            Core.SpriteBatch.DrawString(FontManager.MiniFont, Pokemon.GetDisplayName() & " got a boost of " & newStat.ToString() & "!", New Vector2(p.X + 32, p.Y + 320), Color.DarkRed)
+            Core.SpriteBatch.DrawString(FontManager.InGameFont, Pokemon.GetDisplayName() & " got a boost of " & newStat.ToString() & "!", New Vector2(p.X + 32, p.Y + 320), Color.DarkRed)
         End If
     End Sub
 
diff --git a/P3D/Screens/Pokemon/PartyScreen.vb b/P3D/Screens/Pokemon/PartyScreen.vb
index f3d242116..a831acb44 100644
--- a/P3D/Screens/Pokemon/PartyScreen.vb
+++ b/P3D/Screens/Pokemon/PartyScreen.vb
@@ -183,10 +183,10 @@ Public Class PartyScreen
 
             Canvas.DrawRectangle(New Rectangle(CInt(Core.windowSize.Width / 2 - 150), CInt(Core.windowSize.Height - 200), 300, 100), New Color(0, 0, 0, CInt(150 * textFade * _interfaceFade)))
 
-            Dim text As String = _messageText.CropStringToWidth(FontManager.ChatFont, 250) '''???
-            Dim size As Vector2 = FontManager.ChatFont.MeasureString(text)
+            Dim text As String = _messageText.CropStringToWidth(FontManager.MainFont, 250) '''???
+            Dim size As Vector2 = FontManager.MainFont.MeasureString(text)
 
-            SpriteBatch.DrawString(FontManager.ChatFont, text, New Vector2(CSng(Core.windowSize.Width / 2 - size.X / 2), CSng(Core.windowSize.Height - 150 - size.Y / 2)), New Color(255, 255, 255, CInt(255 * textFade * _interfaceFade)))
+            SpriteBatch.DrawString(FontManager.MainFont, text, New Vector2(CSng(Core.windowSize.Width / 2 - size.X / 2), CSng(Core.windowSize.Height - 150 - size.Y / 2)), New Color(255, 255, 255, CInt(255 * textFade * _interfaceFade)))
         End If
     End Sub
 
@@ -214,7 +214,10 @@ Public Class PartyScreen
             _preScreenTexture = target
         End If
 
-        SpriteBatch.Draw(_blur.Perform(_preScreenTexture), windowSize, Color.White)
+        If _interfaceFade < 1.0F Then
+            SpriteBatch.Draw(_preScreenTexture, windowSize, Color.White)
+        End If
+        SpriteBatch.Draw(_blur.Perform(_preScreenTexture), windowSize, New Color(255, 255, 255, CInt(255 * _interfaceFade * 2).Clamp(0, 255)))
     End Sub
 
 
@@ -232,7 +235,7 @@ Public Class PartyScreen
         SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 140, halfHeight - 232, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor)
         SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 124, halfHeight - 216, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor)
 
-        SpriteBatch.DrawString(FontManager.ChatFont, POKEMON_TITLE, New Vector2(halfWidth - 390, halfHeight - 228), mainBackgroundColor)
+        SpriteBatch.DrawString(FontManager.MainFont, POKEMON_TITLE, New Vector2(halfWidth - 390, halfHeight - 228), mainBackgroundColor)
 
         For y = 0 To CInt(_enrollY) Step 16
             For x = 0 To 800 Step 16
@@ -292,7 +295,7 @@ Public Class PartyScreen
                              _pokemonAnimations(index)._shakeV * shakeMulti, New Vector2(16, 16), SpriteEffects.None, 0F)
 
             'name:
-            GetFontRenderer().DrawString(FontManager.MiniFont, p.GetDisplayName(), New Vector2(position.X + 156, position.Y + 27), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
+            GetFontRenderer().DrawString(FontManager.MainFont, p.GetDisplayName(), New Vector2(position.X + 156, position.Y + 27), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
         Else
             Dim shakeMulti As Single = CSng((p.HP / p.MaxHP).Clamp(0.2F, 1.0F))
 
@@ -308,18 +311,18 @@ Public Class PartyScreen
             End If
 
             'name:
-            GetFontRenderer().DrawString(FontManager.MiniFont, p.GetDisplayName(), New Vector2(position.X + 78, position.Y + 5), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
+            GetFontRenderer().DrawString(FontManager.MainFont, p.GetDisplayName(), New Vector2(position.X + 78, position.Y + 5), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
 
             'Gender symbol:
             Select Case p.Gender
                 Case Pokemon.Genders.Male
-                    SpriteBatch.Draw(_menuTexture, New Rectangle(CInt(position.X + FontManager.MiniFont.MeasureString(p.GetDisplayName()).X + 86), CInt(position.Y + 9), 7, 13), New Rectangle(25, 0, 7, 13), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
+                    SpriteBatch.Draw(_menuTexture, New Rectangle(CInt(position.X + FontManager.MainFont.MeasureString(p.GetDisplayName()).X + 86), CInt(position.Y + 9), 7, 13), New Rectangle(25, 0, 7, 13), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
                 Case Pokemon.Genders.Female
-                    SpriteBatch.Draw(_menuTexture, New Rectangle(CInt(position.X + FontManager.MiniFont.MeasureString(p.GetDisplayName()).X + 85), CInt(position.Y + 9), 9, 13), New Rectangle(32, 0, 9, 13), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
+                    SpriteBatch.Draw(_menuTexture, New Rectangle(CInt(position.X + FontManager.MainFont.MeasureString(p.GetDisplayName()).X + 85), CInt(position.Y + 9), 9, 13), New Rectangle(32, 0, 9, 13), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
             End Select
 
             'Level:
-            GetFontRenderer().DrawString(FontManager.MiniFont, "Lv. " & p.Level.ToString(), New Vector2(position.X + 4, position.Y + 56), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
+            GetFontRenderer().DrawString(FontManager.MainFont, "Lv. " & p.Level.ToString(), New Vector2(position.X + 4, position.Y + 50), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
 
             'HP Bar:
             SpriteBatch.Draw(_menuTexture, New Rectangle(CInt(position.X) + 102, CInt(position.Y) + 32, 111, 15), New Rectangle(16, 32, 74, 10), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
@@ -354,7 +357,7 @@ Public Class PartyScreen
             End With
 
             'HP display:
-            GetFontRenderer().DrawString(FontManager.MiniFont, p.HP & " / " & p.MaxHP, New Vector2(position.X + 100, position.Y + 50), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
+            GetFontRenderer().DrawString(FontManager.MainFont, p.HP & " / " & p.MaxHP, New Vector2(position.X + 100, position.Y + 50), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
 
             'status condition
             Dim StatusTexture As Texture2D = BattleStats.GetStatImage(p.Status)
@@ -379,7 +382,7 @@ Public Class PartyScreen
                         End If
                 End Select
             End If
-            GetFontRenderer().DrawString(FontManager.MiniFont, AttackLabel, New Vector2(position.X + 210, position.Y + 50), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
+            GetFontRenderer().DrawString(FontManager.MainFont, AttackLabel, New Vector2(position.X + 210, position.Y + 50), New Color(255, 255, 255, CInt(255 * _interfaceFade)))
 
         End If
 

From 54ea0e57bae1c7d36929d3870286beed8cb335d3 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sat, 29 Jan 2022 00:06:58 +0100
Subject: [PATCH 53/57] Added WallModel (ModelID=20) which is a flat vertical
 surface on an offset (like a wall)

---
 P3D/P3D.vbproj                       |  1 +
 P3D/Resources/Models/2D/WallModel.vb | 20 ++++++++++++++++++++
 P3D/Resources/Models/BaseModel.vb    |  3 +++
 3 files changed, 24 insertions(+)
 create mode 100644 P3D/Resources/Models/2D/WallModel.vb

diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 3f0c657a7..0cc1162c9 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -30775,6 +30775,7 @@
     <Compile Include="Resources\FontManager.vb" />
     <Compile Include="Resources\GameModeManager.vb" />
     <Compile Include="Resources\ModelManager.vb" />
+    <Compile Include="Resources\Models\2D\WallModel.vb" />
     <Compile Include="Resources\Models\2D\BillModel.vb" />
     <Compile Include="Resources\Models\2D\CrossModel.vb" />
     <Compile Include="Resources\Models\2D\DoubleFloorModel.vb" />
diff --git a/P3D/Resources/Models/2D/WallModel.vb b/P3D/Resources/Models/2D/WallModel.vb
new file mode 100644
index 000000000..ea0c59c36
--- /dev/null
+++ b/P3D/Resources/Models/2D/WallModel.vb
@@ -0,0 +1,20 @@
+Public Class WallModel
+
+    Inherits BaseModel
+
+    Public Sub New()
+        Me.ID = 20
+
+        Dim vertexData = New VertexPositionNormalTexture() {
+            New VertexPositionNormalTexture(New Vector3(-0.5, -0.5, 0.5), Vector3.Backward, New Vector2(0, 1)),
+            New VertexPositionNormalTexture(New Vector3(-0.5, 0.5, 0.5), Vector3.Backward, New Vector2(0, 0)),
+            New VertexPositionNormalTexture(New Vector3(0.5, 0.5, 0.5), Vector3.Backward, New Vector2(1, 0)),
+            New VertexPositionNormalTexture(New Vector3(0.5, 0.5, 0.5), Vector3.Backward, New Vector2(1, 0)),
+            New VertexPositionNormalTexture(New Vector3(0.5, -0.5, 0.5), Vector3.Backward, New Vector2(1, 1)),
+            New VertexPositionNormalTexture(New Vector3(-0.5, -0.5, 0.5), Vector3.Backward, New Vector2(0, 1))
+        }
+
+        Setup(vertexData)
+    End Sub
+
+End Class
diff --git a/P3D/Resources/Models/BaseModel.vb b/P3D/Resources/Models/BaseModel.vb
index c10890d7d..782c08ba4 100644
--- a/P3D/Resources/Models/BaseModel.vb
+++ b/P3D/Resources/Models/BaseModel.vb
@@ -100,6 +100,7 @@
     Public Shared DiagonalWallModel As DiagonalWallModel = New DiagonalWallModel()
     Public Shared HalfDiagonalWallModel As HalfDiagonalWallModel = New HalfDiagonalWallModel()
     Public Shared OutsideStepModel As OutsideStepModel = New OutsideStepModel()
+    Public Shared WallModel As WallModel = New WallModel()
 
     Public Shared Function getModelbyID(ByVal ID As Integer) As BaseModel
         Select Case ID
@@ -143,6 +144,8 @@
                 Return HalfDiagonalWallModel
             Case 19
                 Return OutsideStepModel
+            Case 20
+                Return WallModel
             Case Else
                 Return BlockModel
         End Select

From e1f20d7c63c4b48993e39528ff12dbfd6cc48697 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sat, 29 Jan 2022 00:08:12 +0100
Subject: [PATCH 54/57] Improved and optimized Violet City gym maps (Regular &
 Battle)

---
 .../Data/maps/battle/gyms/violet_gym.dat      | Bin 20250 -> 38682 bytes
 P3D/Content/Data/maps/gyms/violet_gym.dat     | Bin 25326 -> 47788 bytes
 P3D/Content/Textures/Gym.png                  | Bin 7858 -> 7395 bytes
 3 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/P3D/Content/Data/maps/battle/gyms/violet_gym.dat b/P3D/Content/Data/maps/battle/gyms/violet_gym.dat
index 25becde102a69ff7c1cfaf53833756b086d1d718..5f3d1ff46178c49c0dcd05bbca0626d1da7ca521 100644
GIT binary patch
literal 38682
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
CTzBvQ

delta 698
zcmaKq-z!659LD!L=P)}<xL6XB$d7E!*0GQ@lBC6yG@4Kv%MC@*%EpwdDd%AqyI7Q5
zN#o>KGV)j8>ZHgeuH2A!vokB>_WgX{=Xt)*`-Ts)!VwbH5jdPS#-b5%C>Rm#>A*nM
z8O9oB5cS0*rkFJ2)!>1ni^XnrMxe!e?NR0%9rY&(;1BM>(bI${ZysE{i-<VqFVrhg
zv}Jhq>f?kHHT4<+SNw4%%20|+{xpN;Ft$f@xZzVl(p2M&C4Z?VC}MniQtQvwIYy0{
zW-?=ZU=r6=b~RUeHCpm7X1U)A@kXMRR@%g&FduK1vrv~tc{Z2O7qNt3cXrGE{z{_y
zCHA?syRqG_gR|><&u<kGZ(JeT`i6-WAI@b+oB=a+EwasLA`(*rWy*zzxz*Hpe$YUu
zxrk3TAND~PT0MG1rWe!!YFV6I+lZaDM<`iMboQG5luq~qZrsyn3@xVSlSV~q47`l$
zkv;UolZGV_0w?mslBpnBNa^Ms6k7%MB`bQjT4i=)g-GjRl;i#PgxtFoqtys`U)B*2
A+5i9m

diff --git a/P3D/Content/Data/maps/gyms/violet_gym.dat b/P3D/Content/Data/maps/gyms/violet_gym.dat
index a9c071122205a3e6a02dfc1450e145549213a9f7..7a2ebb2b421721c39539f9cf38981ee81c0a30f1 100644
GIT binary patch
literal 47788
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
Y)9Q&khq2danOUr7=PYUK-ldcFe;*<5{Qv*}

delta 1092
zcmZ4UmFeA4#tjb`8LcJ@ve-`cV#=Bv$Hz6fh)0Flgu!C+Ll*JLZCpkZC$LPu$Cfr(
zj+0~Z9A-V-N=zpEv1H(uPMh4o!ZEpom4FFWlM~qRD4B!X0+Y%A*a`T+0-tU#CcDW2
z+<5E;g#p)OF)nOM%p}7Z5*c!Uu$aM$ftP`cAqB`UV#sE&ntV~ze=?uB)+8mb$(LMH
zCI<)wOkS`?YVrkBw#ji80h0yRPMT~W=mk{5$L_|E2{L5zLO1Ej_oSjGKM>@boEMum
zNx+8$Eo_s|xn_`P4I883<nylS*mUtbGo*r@mC2CDkPi1x-Q+8-NoeXHai%cj17Q(Z
zmG|Ur4tbOJ`0PM;`=si1lNB5}CaYL&L6@2=Fn!bHhIwq0)vPw5$t~M_AzY6UO)zTm
zs>q<p7dn(CUkJ~d{BH*&ehx(S;7}*TnFNfNWN5rVTv+714NWyDLfkfQb5KFIZrbF8
z7#?7LxhU#A*@sDB@*cmK$purnCaZWPOui5+Hu)2?*k*+#8H|%R2un<sTbDIip@3`h
zyR-^a2|pHr$pSV}lM^brCii8dNy@D&m@HCWgG)yfs>Hnw1(QP>aHw9;)PkxS?xOB0
sWC<xGzrf75VceWBa|R=;A%hNs;pV@y8d>1XWX8!8I$1WqT5w1b0GyeLIsgCw

diff --git a/P3D/Content/Textures/Gym.png b/P3D/Content/Textures/Gym.png
index ceb22ffe4747718adfde196305a794cc30cf5fee..030112f4d92a459dc1d54d84e3c57f8e29d3a7fa 100644
GIT binary patch
literal 7395
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
E0JI2~9smFU

literal 7858
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


From 313fb999cbaec3af9aef8266e7fc8de73adbf6f7 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Sat, 29 Jan 2022 00:10:47 +0100
Subject: [PATCH 55/57] Bugfixes

Fixed:
- Regular toxic animation (initial move) only has 1 bubble instead of 3
- Issue with Zoom in screen when status effect occurs (from opposing pokemon) instead focuses on player pokemon
---
 P3D/Battle/BattleSystemV2/Battle.vb | 60 ++++++++++++++++++++---------
 1 file changed, 41 insertions(+), 19 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 4320f3bbd..3404d56cb 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1237,7 +1237,7 @@
                     CureStatusProblem(own, own, BattleScreen, p.GetDisplayName() & " thawed out.", "own defrost")
                 Else
                     'Frozen animation
-                    ChangeCameraAngle(1, Not own, BattleScreen)
+                    ChangeCameraAngle(1, own, BattleScreen)
                     If Core.Player.ShowBattleAnimations <> 0 Then
                         Dim FrozenAnimation As AnimationQueryObject = New AnimationQueryObject(Nothing, Not own)
 
@@ -1303,7 +1303,7 @@
                         End If
                     Else
                         If sleepTurns > 0 Then
-                            ChangeCameraAngle(1, Not own, BattleScreen)
+                            ChangeCameraAngle(1, own, BattleScreen)
                             'Sleep Animation
                             If Core.Player.ShowBattleAnimations <> 0 Then
                                 Dim SleepAnimation As New AnimationQueryObject(pNPC, Not own)
@@ -1440,7 +1440,7 @@
                     BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is no longer confused!"))
                     p.RemoveVolatileStatus(Pokemon.VolatileStatus.Confusion)
                 Else
-                    Me.ChangeCameraAngle(1, Not own, BattleScreen)
+                    Me.ChangeCameraAngle(1, own, BattleScreen)
                     'Confused Animation
                     If Core.Player.ShowBattleAnimations <> 0 Then
                         Dim ConfusedAnimation As New AnimationQueryObject(pNPC, Not own)
@@ -1549,7 +1549,7 @@
 
             If p.Status = Pokemon.StatusProblems.Paralyzed Then
                 If Core.Random.Next(0, 4) = 0 Then
-                    Me.ChangeCameraAngle(1, Not own, BattleScreen)
+                    Me.ChangeCameraAngle(1, own, BattleScreen)
                     If Core.Player.ShowBattleAnimations <> 0 Then
                         Dim ParalyzedAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
 
@@ -3308,7 +3308,7 @@
                                         Return False
                                     Else
                                         'Works!
-                                        ChangeCameraAngle(1, Not own, BattleScreen)
+                                        ChangeCameraAngle(1, own, BattleScreen)
                                         'Sleep Animation
                                         If Core.Player.ShowBattleAnimations <> 0 Then
                                             Dim SleepAnimation As New AnimationQueryObject(pNPC, Not own)
@@ -3440,20 +3440,7 @@
                             Else
                                 'Works!
                                 ChangeCameraAngle(1, own, BattleScreen)
-                                'Poison animation
-                                If Core.Player.ShowBattleAnimations <> 0 Then
-                                    Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
 
-                                    PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
-                                    Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
-
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
-                                    PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
-
-                                    BattleScreen.BattleQuery.Add(PoisonAnimation)
-                                Else
-                                    BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
-                                End If
                                 If bad = True Then
                                     p.Status = Pokemon.StatusProblems.BadPoison
                                     Select Case message
@@ -3465,7 +3452,42 @@
                                             BattleScreen.BattleQuery.Add(New TextQueryObject(message))
                                             BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is badly poisoned!"))
                                     End Select
+                                    If Core.Player.ShowBattleAnimations <> 0 Then
+                                        Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+                                        PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                        Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(-0.25, -0.25, -0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                        Dim BubbleEntity2 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 1, 1)
+
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity2, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 2, 1)
+                                        Dim BubbleEntity3 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0.25), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 2, 1)
+
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity2, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 3, 1)
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity3, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 3, 1)
+
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity3, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 4, 1)
+
+                                        BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                    Else
+                                        BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                    End If
                                 Else
+                                    'Poison animation
+                                    If Core.Player.ShowBattleAnimations <> 0 Then
+                                        Dim PoisonAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, own)
+
+                                        PoisonAnimation.AnimationPlaySound("Battle\Effects\Poisoned", 0, 0)
+                                        Dim BubbleEntity1 As Entity = PoisonAnimation.SpawnEntity(New Vector3(0, -0.25, 0), TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 0, 32, 32), ""), New Vector3(0.5F), 1, 0, 1)
+
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity1, False, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 32, 32, 32), ""), 1, 1)
+                                        PoisonAnimation.AnimationChangeTexture(BubbleEntity1, True, TextureManager.GetTexture("Textures\Battle\StatusEffect\Poisoned", New Rectangle(0, 64, 32, 32), ""), 2, 1)
+
+                                        BattleScreen.BattleQuery.Add(PoisonAnimation)
+                                    Else
+                                        BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Poisoned", False))
+                                    End If
                                     p.Status = Pokemon.StatusProblems.Poison
                                     Select Case message
                                         Case "" 'Print default message only
@@ -3554,7 +3576,7 @@
                 Return False
             Else
                 'Works!
-                Me.ChangeCameraAngle(1, Not own, BattleScreen)
+                Me.ChangeCameraAngle(1, own, BattleScreen)
                 'Confused Animation
                 If Core.Player.ShowBattleAnimations <> 0 Then
                     Dim ConfusedAnimation As New AnimationQueryObject(pNPC, Not own)

From 5c9a5e664433653c68851c38274e2abdd19429d8 Mon Sep 17 00:00:00 2001
From: JappaWakka <jjlspeelman@outlook.com>
Date: Mon, 31 Jan 2022 20:09:25 +0100
Subject: [PATCH 56/57] Fix for the ceiling glitching

---
 P3D/Content/Data/maps/barktown0.dat       | Bin 36818 -> 36938 bytes
 P3D/Content/Data/maps/elmlab.dat          | Bin 28468 -> 28538 bytes
 P3D/Content/Data/maps/gyms/violet_gym.dat | Bin 47788 -> 47826 bytes
 P3D/Content/Data/maps/yourroom.dat        | Bin 35502 -> 35622 bytes
 4 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/P3D/Content/Data/maps/barktown0.dat b/P3D/Content/Data/maps/barktown0.dat
index a671b67057d22c64a1d670c2f103ced242e301d5..7aa0768a74b179a4660292e90020344434168a1f 100644
GIT binary patch
delta 92
zcmcaKpXt;BrVSI=CnrcdZN9@^$2j>)mek}0(rnzu40;TP3?@KqI{Bk!<KzRJ8j};m
d>^2*4wP06dC~P@-0wc@h0DYFtx43^a0|1{49Yg>C

delta 96
zcmX@Lfa%hFrVSI=r5zb^fH0ULlOcs6m7$oypCO4M3&=`lDA~M_eLdsk1AJ+dH;8HA
ZQ#g4cyYA*Bt`^404uVRX{doQ~0{|S68y)}v

diff --git a/P3D/Content/Data/maps/elmlab.dat b/P3D/Content/Data/maps/elmlab.dat
index 11dcd43b7b15d0ac66f1c5fd52bd9e1590343a0e..c1066e7c5de9906bae1d52557cf4ec0f1206a6bb 100644
GIT binary patch
delta 44
zcmdmTkMY+%#tko6Ckt?}Opb97V2xmiWQdv^s3Og6%%I0$$Y27*rkfwK24?~QPh1SQ

delta 17
Zcmex$k8#UA#tko6C-L!Zwqdi&1OQJx2UGw6

diff --git a/P3D/Content/Data/maps/gyms/violet_gym.dat b/P3D/Content/Data/maps/gyms/violet_gym.dat
index 7a2ebb2b421721c39539f9cf38981ee81c0a30f1..bc0080835a24fffe6d5445b1d68e26c278d95654 100644
GIT binary patch
delta 60
zcmZ4UmFdz~rVVx$lNI6uCa<$7VU1vjWQdxqC?YIuz@Wnb!p01G42BFQKx{gBp_ck&
Mg>JFUE|wXM06NkTwEzGB

delta 29
lcmccgm1)garVVx$lN**uO}=2tHu;w6qe;vxo3ku48Ufcb4PF2M

diff --git a/P3D/Content/Data/maps/yourroom.dat b/P3D/Content/Data/maps/yourroom.dat
index 194a53f7134733a2618b188c0d0b8341a708fbd8..1b992b86141e11792666c62bf0ead181a64b5a46 100644
GIT binary patch
delta 103
zcmZ2Cm1)^DrVR$HlMfg<O|D^mGP%G}ZSn(-lF28yB_>(3@Eb7bFc>rFF&HwK0I})h
dK;hcSG3+{%B<&_&V1GqO^+i$J&1IYxjR4bE9~uAv

delta 115
zcmZ2BjcMIfrVR$H(vA!{Kp4!B$&kX3%23SU&yd8B1!N^Nlx%in6=j?pAfYx{PL*%6
g0%zLf2Yh|_G)yk6)St}4@d8E91s%1`pEyk#0ivKECIA2c


From dde6cb5c34fe2dc7e8baffe5066dbe899a262f94 Mon Sep 17 00:00:00 2001
From: "Jasper \"JappaWakka\" Speelman"
 <31563291+JappaWakka@users.noreply.github.com>
Date: Sat, 5 Feb 2022 10:28:48 +0100
Subject: [PATCH 57/57] Removed unneccessary item use sounds

---
 P3D/Battle/BattleSystemV2/Battle.vb | 65 ++++++++++++-----------------
 1 file changed, 26 insertions(+), 39 deletions(-)

diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index 3404d56cb..07b311e05 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -978,48 +978,35 @@
 
             'Potion,Super Point,Hyper Potion,Full Heal,Full Restore,Burn Heal,Antidote,Paralyze heal,Awakening,Ice Heal,Revive,Max Revive,Max Potion
             Select Case ItemID
-				Case 18 'Potion
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.GainHP(20, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Potion on " & p.GetDisplayName() & "!", "item:potion")
-				Case 17 'Super Potion
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.GainHP(50, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Super Potion on " & p.GetDisplayName() & "!", "item:superpotion")
-				Case 16 'Hyper Potion
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.GainHP(100, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Hyper Potion on " & p.GetDisplayName() & "!", "item:hyperpotion")
-				Case 15 'Max Potion
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.GainHP(p.MaxHP, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Max Potion on " & p.GetDisplayName() & "!", "item:maxpotion")
-				Case 14 'Full Restore
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.GainHP(p.MaxHP, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Full Restore on " & p.GetDisplayName() & "!", "item:fullrestore")
+                Case 18 'Potion
+                    Me.GainHP(20, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Potion on " & p.GetDisplayName() & "!", "item:potion")
+                Case 17 'Super Potion
+                    Me.GainHP(50, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Super Potion on " & p.GetDisplayName() & "!", "item:superpotion")
+                Case 16 'Hyper Potion
+                    Me.GainHP(100, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Hyper Potion on " & p.GetDisplayName() & "!", "item:hyperpotion")
+                Case 15 'Max Potion
+                    Me.GainHP(p.MaxHP, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Max Potion on " & p.GetDisplayName() & "!", "item:maxpotion")
+                Case 14 'Full Restore
+                    Me.GainHP(p.MaxHP, False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Full Restore on " & p.GetDisplayName() & "!", "item:fullrestore")
                     Me.CureStatusProblem(False, False, BattleScreen, "", "item:fullrestore")
-				Case 38 'Full Heal
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Full Heal on " & p.GetDisplayName() & "!", "item:fullheal")
-				Case 9 'Antidote
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used an Antidote on " & p.GetDisplayName() & "!", "item:antidote")
-				Case 10 'Burn Heal
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Burn Heal on " & p.GetDisplayName() & "!", "item:burnheal")
-				Case 11 'Ice Heal
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used an Ice Heal on " & p.GetDisplayName() & "!", "item:iceheal")
-				Case 12 'Awakening
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used an Awakening on " & p.GetDisplayName() & "!", "item:awakening")
-				Case 13 'Paralyze Heal
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Paralyze Heal on " & p.GetDisplayName() & "!", "item:paralyzeheal")
-				Case 39 'Revive
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & " used a Revive on " & p.GetDisplayName() & "!"))
+                Case 38 'Full Heal
+                    Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Full Heal on " & p.GetDisplayName() & "!", "item:fullheal")
+                Case 9 'Antidote
+                    Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used an Antidote on " & p.GetDisplayName() & "!", "item:antidote")
+                Case 10 'Burn Heal
+                    Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Burn Heal on " & p.GetDisplayName() & "!", "item:burnheal")
+                Case 11 'Ice Heal
+                    Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used an Ice Heal on " & p.GetDisplayName() & "!", "item:iceheal")
+                Case 12 'Awakening
+                    Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used an Awakening on " & p.GetDisplayName() & "!", "item:awakening")
+                Case 13 'Paralyze Heal
+                    Me.CureStatusProblem(False, False, BattleScreen, BattleScreen.Trainer.Name & " used a Paralyze Heal on " & p.GetDisplayName() & "!", "item:paralyzeheal")
+                Case 39 'Revive
+                    BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & " used a Revive on " & p.GetDisplayName() & "!"))
                     p.Status = Pokemon.StatusProblems.None
                     p.HP = CInt(Math.Ceiling(p.MaxHP / 2))
-				Case 40 'Max Revive
-					BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Use_Item", False))
-					BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & " used a Revive on " & p.GetDisplayName() & "!"))
+                Case 40 'Max Revive
+                    BattleScreen.BattleQuery.Add(New TextQueryObject(BattleScreen.Trainer.Name & " used a Revive on " & p.GetDisplayName() & "!"))
                     p.Status = Pokemon.StatusProblems.None
                     p.HP = p.MaxHP
             End Select