diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb
index d01e74b6c..6cef7836a 100644
--- a/P3D/Battle/BattleSystemV2/Battle.vb
+++ b/P3D/Battle/BattleSystemV2/Battle.vb
@@ -1122,14 +1122,20 @@
'p: the attacking pokemon
'op: the target pokemon
Dim p As Pokemon
+ Dim pNPC As NPC
Dim op As Pokemon
+ Dim opNPC As NPC
If own Then
p = BattleScreen.OwnPokemon
op = BattleScreen.OppPokemon
+ pNPC = BattleScreen.OwnPokemonNPC
+ opNPC = BattleScreen.OppPokemonNPC
BattleScreen.FieldEffects.OwnLastMove = moveUsed
Else
p = BattleScreen.OppPokemon
op = BattleScreen.OwnPokemon
+ pNPC = BattleScreen.OppPokemonNPC
+ opNPC = BattleScreen.OwnPokemonNPC
BattleScreen.FieldEffects.OppLastMove = moveUsed
End If
If WildHasEscaped Then
@@ -1405,7 +1411,36 @@
If p.Status = Pokemon.StatusProblems.Paralyzed Then
If Core.Random.Next(0, 4) = 0 Then
- BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+ If Core.Player.ShowBattleAnimations <> 0 Then
+ Dim ParalyzedAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+
+ ParalyzedAnimation.AnimationPlaySound("Battle\Effects\Paralyzed", 0, 0)
+ Dim maxAmount As Integer = 4
+ Dim currentAmount As Integer = 0
+ While currentAmount <= maxAmount
+ Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(0, 0, 16, 16), "")
+ Dim xPos = CSng(Random.Next(-4, 4) / 8)
+ Dim zPos = CSng(Random.Next(-4, 4) / 8)
+
+ Dim Position As New Vector3(xPos, -0.25, zPos)
+ Dim Destination As New Vector3(xPos - xPos * 2, 0, zPos - zPos * 2)
+ Dim Scale As New Vector3(0.25F)
+ Dim startDelay As Double = 5.0 * Random.NextDouble()
+ Dim ShockEntity = ParalyzedAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+ ParalyzedAnimation.AnimationMove(ShockEntity, True, Destination.X, Destination.Y, Destination.Z, 0.025F, False, True, CSng(startDelay), 0.0F)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 1)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 1)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 1)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 1)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 1)
+
+ Threading.Interlocked.Increment(currentAmount)
+ End While
+
+ BattleScreen.BattleQuery.Add(ParalyzedAnimation)
+ Else
+ BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+ End If
BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is fully paralyzed!" & Environment.NewLine & "It cannot move!"))
Exit Sub
End If
@@ -2873,7 +2908,9 @@
Public Function InflictParalysis(ByVal own As Boolean, ByVal from As Boolean, ByVal BattleScreen As BattleScreen, ByVal message As String, ByVal cause As String) As Boolean
Dim p As Pokemon = BattleScreen.OwnPokemon
Dim op As Pokemon = BattleScreen.OppPokemon
+ Dim pNPC As NPC = BattleScreen.OwnPokemonNPC
If own = False Then
+ pNPC = BattleScreen.OppPokemonNPC
p = BattleScreen.OppPokemon
op = BattleScreen.OwnPokemon
End If
@@ -2934,7 +2971,36 @@
'Works!
p.Status = Pokemon.StatusProblems.Paralyzed
ChangeCameraAngle(1, own, BattleScreen)
- BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+ If Core.Player.ShowBattleAnimations <> 0 Then
+ Dim ParalyzedAnimation As AnimationQueryObject = New AnimationQueryObject(pNPC, Not own)
+
+ ParalyzedAnimation.AnimationPlaySound("Battle\Effects\Paralyzed", 0, 0)
+ Dim maxAmount As Integer = 4
+ Dim currentAmount As Integer = 0
+ While currentAmount <= maxAmount
+ Dim Texture As Texture2D = TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(0, 0, 16, 16), "")
+ Dim xPos = CSng(Random.Next(-4, 4) / 8)
+ Dim zPos = CSng(Random.Next(-4, 4) / 8)
+
+ Dim Position As New Vector3(xPos, -0.25, zPos)
+ Dim Destination As New Vector3(xPos - xPos * 2, 0, zPos - zPos * 2)
+ Dim Scale As New Vector3(0.25F)
+ Dim startDelay As Double = 5.0 * Random.NextDouble()
+ Dim ShockEntity = ParalyzedAnimation.SpawnEntity(Position, Texture, Scale, 1.0F, CSng(startDelay))
+ ParalyzedAnimation.AnimationMove(ShockEntity, False, Destination.X, Destination.Y, Destination.Z, 0.025F, False, True, CSng(startDelay), 0.0F)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(16, 0, 16, 16), ""), CSng(startDelay + 1), 0)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(32, 0, 16, 16), ""), CSng(startDelay + 2), 0)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(48, 0, 16, 16), ""), CSng(startDelay + 3), 0)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, False, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(64, 0, 16, 16), ""), CSng(startDelay + 4), 0)
+ ParalyzedAnimation.AnimationChangeTexture(ShockEntity, True, TextureManager.GetTexture("Textures\Battle\Electric\Sparks", New Rectangle(72, 0, 16, 16), ""), CSng(startDelay + 5), 0)
+
+ Threading.Interlocked.Increment(currentAmount)
+ End While
+
+ BattleScreen.BattleQuery.Add(ParalyzedAnimation)
+ Else
+ BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\Effects\Paralyzed", False))
+ End If
Select Case message
Case "" 'Print default message only
BattleScreen.BattleQuery.Add(New TextQueryObject(p.GetDisplayName() & " is paralyzed!" & Environment.NewLine & "It can't move!"))
@@ -7352,7 +7418,7 @@
End If
' Pokemon appears
BallThrow.AnimationFade(Nothing, False, 1, True, 1, 3, 0)
- BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
+ BallThrow.AnimationPlaySound(CStr(BattleScreen.OppPokemon.Number), 4, 0,, True)
If Core.Player.ShowBattleAnimations <> 0 Then
' Pokémon falls down
BallThrow.AnimationMove(Nothing, False, 0, 0, 0, 0.05F, False, False, 5, 0,,, 4)
diff --git a/P3D/Content/Textures/Battle/Electric/Sparks.png b/P3D/Content/Textures/Battle/Electric/Sparks.png
new file mode 100644
index 000000000..1c0bd76cb
Binary files /dev/null and b/P3D/Content/Textures/Battle/Electric/Sparks.png differ
diff --git a/P3D/P3D.vbproj b/P3D/P3D.vbproj
index 28784aeb7..10cad480f 100644
--- a/P3D/P3D.vbproj
+++ b/P3D/P3D.vbproj
@@ -15373,6 +15373,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest