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] 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