Added camera battleanims & earthquake anim &...

...fixed the timing system to be consistent
This commit is contained in:
JappaWakka 2023-09-07 13:05:20 +02:00
parent eccda481b9
commit b66be1637c
13 changed files with 400 additions and 14 deletions

View File

@ -36,8 +36,8 @@
Me.DoTile = DoTile
Me.AnimationWidth = CInt(Texture.Width / AnimationLength)
Me.AnimationLength = AnimationLength
DurationWhole = CSng(Math.Truncate(CDbl(Duration)))
DurationFraction = CSng((Duration - DurationWhole) * 1000)
DurationWhole = CSng(Math.Truncate(CDbl(Duration / 6.0F)))
DurationFraction = CSng((Duration / 6.0F - DurationWhole) * 1000)
Me.TextureScale = TextureScale
If Me.AnimationWidth <> -1 OrElse Me.AnimationWidth <> Nothing Then

View File

@ -0,0 +1,34 @@
Imports P3D.Screen
Public Class BACameraChangeAngle
Inherits BattleAnimation3D
Public CameraAngleID As Integer
Public BV2Screen As BattleSystem.BattleScreen
Public Sub New(ByRef Battlescreen As BattleSystem.BattleScreen, ByVal CameraAngleID As Integer, ByVal startDelay As Single, ByVal endDelay As Single)
MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
Me.BV2Screen = Battlescreen
Me.CameraAngleID = CameraAngleID
Me.Visible = False
Me.AnimationType = AnimationTypes.Camera
End Sub
Public Overrides Sub DoActionActive()
Select Case CameraAngleID
Case 0
Me.BV2Screen.Battle.ChangeCameraAngle(0, True, Me.BV2Screen)
Case 1
Me.BV2Screen.Battle.ChangeCameraAngle(1, True, Me.BV2Screen)
Case 2
Me.BV2Screen.Battle.ChangeCameraAngle(2, True, Me.BV2Screen)
End Select
Me.Ready = True
End Sub
End Class

View File

@ -0,0 +1,314 @@
Public Class BACameraOscillateMove
Inherits BattleAnimation3D
Public StartPosition As Vector3
Public ReturnToStart As Vector3
Public HalfDistance As New Vector3(0.0F)
Public DestinationDistance As New Vector3(0.0F)
Public CurrentDistance As New Vector3(0.0F)
Public MoveSpeed As Single
Public MoveBothWays As Boolean = True
Public MovementCurve As Integer = 0
Public RemoveEntityAfter As Boolean
Public Duration As TimeSpan
Public ReadyTime As Date
Public ReadyAxis As New Vector3(0)
Public InterpolationSpeed As Vector3
Public InterpolationDirection As Boolean = True
Public Enum Curves As Integer
Linear
Smooth
End Enum
Public Sub New(ByVal Distance As Vector3, ByVal Speed As Single, ByVal BothWays As Boolean, ByVal Duration As TimeSpan, ByVal startDelay As Single, ByVal endDelay As Single, Optional MovementCurve As Integer = 0, Optional ReturnToStart As Vector3 = Nothing)
MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
Me.HalfDistance = Distance
Me.DestinationDistance = Me.HalfDistance
Me.MoveSpeed = Speed
Me.MoveBothWays = BothWays
Me.Duration = Duration
Me.MovementCurve = CType(MovementCurve, Curves)
Me.Visible = False
Select Case MovementCurve
Case Curves.Linear
InterpolationSpeed = New Vector3(MoveSpeed)
Case Curves.Smooth
InterpolationSpeed = New Vector3(0.0F)
End Select
If ReturnToStart <> Nothing Then
Me.ReturnToStart = ReturnToStart
End If
Me.AnimationType = AnimationTypes.Move
End Sub
Public Overrides Sub DoActionActive()
Move()
End Sub
Private Sub Move()
If StartPosition = Nothing Then
StartPosition = Screen.Camera.Position
End If
If ReadyTime = Nothing Then
ReadyTime = Date.Now + Duration
End If
If MovementCurve = Curves.Smooth Then
If InterpolationDirection = True Then
If InterpolationSpeed.X < MoveSpeed Then
InterpolationSpeed.X += MoveSpeed / 10
Else
InterpolationSpeed.X = MoveSpeed
End If
If InterpolationSpeed.Y < MoveSpeed Then
InterpolationSpeed.Y += MoveSpeed / 10
Else
InterpolationSpeed.Y = MoveSpeed
End If
If InterpolationSpeed.Z < MoveSpeed Then
InterpolationSpeed.Z += MoveSpeed / 10
Else
InterpolationSpeed.Z = MoveSpeed
End If
Else
If Date.Now < ReadyTime Then
If InterpolationSpeed.X > 0 Then
InterpolationSpeed.X -= MoveSpeed / 10
Else
InterpolationSpeed.X = 0
End If
If InterpolationSpeed.Y > 0 Then
InterpolationSpeed.Y -= MoveSpeed / 10
Else
InterpolationSpeed.Y = 0
End If
If InterpolationSpeed.Z > 0 Then
InterpolationSpeed.Z -= MoveSpeed / 10
Else
InterpolationSpeed.Z = 0
End If
Else
If InterpolationSpeed.X > MoveSpeed / 10 * 3 Then
InterpolationSpeed.X -= MoveSpeed / 10
Else
InterpolationSpeed.X = MoveSpeed / 10 * 3
End If
If InterpolationSpeed.Y > MoveSpeed / 10 * 3 Then
InterpolationSpeed.Y -= MoveSpeed / 10
Else
InterpolationSpeed.Y = MoveSpeed / 10 * 3
End If
If InterpolationSpeed.Z > MoveSpeed / 10 * 3 Then
InterpolationSpeed.Z -= MoveSpeed / 10
Else
InterpolationSpeed.Z = MoveSpeed / 10 * 3
End If
End If
End If
End If
If CurrentDistance.X <> DestinationDistance.X Then
If CurrentDistance.X < DestinationDistance.X Then
CurrentDistance.X += InterpolationSpeed.X
Else
CurrentDistance.X -= InterpolationSpeed.X
End If
If Math.Abs(CurrentDistance.X) / Math.Abs(HalfDistance.X) > 0.75F Then
InterpolationDirection = False
End If
If DestinationDistance.X > 0.0F Then
If CurrentDistance.X >= DestinationDistance.X Then
CurrentDistance.X = DestinationDistance.X
End If
ElseIf DestinationDistance.X < 0.0F Then
If CurrentDistance.X <= DestinationDistance.X Then
CurrentDistance.X = DestinationDistance.X
End If
Else
If CurrentDistance.X > DestinationDistance.X Then
If CurrentDistance.X - InterpolationSpeed.X <= DestinationDistance.X Then
CurrentDistance.X = DestinationDistance.X
End If
Else
If CurrentDistance.X + InterpolationSpeed.X >= DestinationDistance.X Then
CurrentDistance.X = DestinationDistance.X
End If
End If
End If
Else
If Date.Now < ReadyTime Then
If MoveBothWays = True Then
If DestinationDistance.X > 0.0F Then
DestinationDistance.X = 0.0F - Math.Abs(HalfDistance.X) * 2
Else
DestinationDistance.X = 0.0F + Math.Abs(HalfDistance.X) * 2
End If
Else
If DestinationDistance.X > 0.0F Then
DestinationDistance.X = 0.0F
Else
DestinationDistance.X = HalfDistance.X
End If
End If
InterpolationDirection = True
Else
If ReturnToStart.X = 0.0F Then
ReadyAxis.X = 1.0F
Else
If DestinationDistance.X <> 0.0F Then
DestinationDistance.X = 0.0F
InterpolationDirection = True
End If
If CurrentDistance.X = 0.0F Then
ReadyAxis.X = 1.0F
End If
End If
End If
End If
If CurrentDistance.Y <> DestinationDistance.Y Then
If CurrentDistance.Y < DestinationDistance.Y Then
CurrentDistance.Y += InterpolationSpeed.Y
Else
CurrentDistance.Y -= InterpolationSpeed.Y
End If
If Math.Abs(CurrentDistance.Y) / Math.Abs(HalfDistance.Y) > 0.75F Then
InterpolationDirection = False
End If
If DestinationDistance.Y > 0.0F Then
If CurrentDistance.Y >= DestinationDistance.Y Then
CurrentDistance.Y = DestinationDistance.Y
End If
ElseIf DestinationDistance.Y < 0.0F Then
If CurrentDistance.Y <= DestinationDistance.Y Then
CurrentDistance.Y = DestinationDistance.Y
End If
Else
If CurrentDistance.Y > DestinationDistance.Y Then
If CurrentDistance.Y - InterpolationSpeed.Y <= DestinationDistance.Y Then
CurrentDistance.Y = DestinationDistance.Y
End If
Else
If CurrentDistance.Y + InterpolationSpeed.Y >= DestinationDistance.Y Then
CurrentDistance.Y = DestinationDistance.Y
End If
End If
End If
Else
If Date.Now < ReadyTime Then
If MoveBothWays = True Then
If DestinationDistance.Y > 0.0F Then
DestinationDistance.Y = 0.0F - Math.Abs(HalfDistance.Y) * 2
Else
DestinationDistance.Y = 0.0F + Math.Abs(HalfDistance.Y) * 2
End If
Else
If DestinationDistance.Y > 0.0F Then
DestinationDistance.Y = 0.0F
Else
DestinationDistance.Y = HalfDistance.Y
End If
End If
InterpolationDirection = True
Else
If ReturnToStart.Y = 0.0F Then
ReadyAxis.Y = 1.0F
Else
If DestinationDistance.Y <> 0.0F Then
DestinationDistance.Y = 0.0F
InterpolationDirection = True
End If
If CurrentDistance.Y = 0.0F Then
ReadyAxis.Y = 1.0F
End If
End If
End If
End If
If CurrentDistance.Z <> DestinationDistance.Z Then
If CurrentDistance.Z < DestinationDistance.Z Then
CurrentDistance.Z += InterpolationSpeed.Z
Else
CurrentDistance.Z -= InterpolationSpeed.Z
End If
If Math.Abs(CurrentDistance.Y) / Math.Abs(HalfDistance.Y) > 0.75F Then
InterpolationDirection = False
End If
If DestinationDistance.Z > 0.0F Then
If CurrentDistance.Z >= DestinationDistance.Z Then
CurrentDistance.Z = DestinationDistance.Z
End If
ElseIf DestinationDistance.Z < 0.0F Then
If CurrentDistance.Z <= DestinationDistance.Z Then
CurrentDistance.Z = DestinationDistance.Z
End If
Else
If CurrentDistance.Z > DestinationDistance.Z Then
If CurrentDistance.Z - InterpolationSpeed.Z <= DestinationDistance.Z Then
CurrentDistance.Z = DestinationDistance.Z
End If
Else
If CurrentDistance.Z + InterpolationSpeed.Z >= DestinationDistance.Z Then
CurrentDistance.Z = DestinationDistance.Z
End If
End If
End If
Else
If Date.Now < ReadyTime Then
If MoveBothWays = True Then
If DestinationDistance.Z > 0.0F Then
DestinationDistance.Z = 0.0F - Math.Abs(HalfDistance.Z) * 2
Else
DestinationDistance.Z = 0.0F + Math.Abs(HalfDistance.Z) * 2
End If
Else
If DestinationDistance.Z > 0.0F Then
DestinationDistance.Z = 0.0F
Else
DestinationDistance.Z = HalfDistance.Z
End If
End If
InterpolationDirection = True
Else
If ReturnToStart.Z = 0.0F Then
ReadyAxis.Z = 1.0F
Else
If DestinationDistance.Z <> 0.0F Then
DestinationDistance.Z = 0.0F
InterpolationDirection = True
End If
If CurrentDistance.Z = 0.0F Then
ReadyAxis.Z = 1.0F
End If
End If
End If
End If
If HalfDistance.X <> 0.0F Then
Screen.Camera.Position.X = StartPosition.X + Me.CurrentDistance.X
Else
ReadyAxis.X = 1.0F
End If
If HalfDistance.Y <> 0.0F Then
Screen.Camera.Position.Y = StartPosition.Y + Me.CurrentDistance.Y
Else
ReadyAxis.Y = 1.0F
End If
If HalfDistance.Z <> 0.0F Then
Screen.Camera.Position.Z = StartPosition.Z + Me.CurrentDistance.Z
Else
ReadyAxis.Z = 1.0F
End If
If Date.Now > ReadyTime AndAlso ReadyAxis.X = 1.0F AndAlso ReadyAxis.Y = 1.0F AndAlso ReadyAxis.Z = 1.0F Then
Me.Ready = True
End If
End Sub
End Class

View File

@ -14,10 +14,9 @@
Size
Rotation
Texture
Wait
ViewPokeBill
Sound
Background
Camera
End Enum
Public AnimationType As AnimationTypes = AnimationTypes.Nothing

View File

@ -205,8 +205,8 @@ Namespace BattleSystem
End If
End If
Dim DurationWhole = CSng(Math.Truncate(CDbl(Duration)))
Dim DurationFraction = CSng((Duration - DurationWhole) * 1000)
Dim DurationWhole = CSng(Math.Truncate(CDbl(Duration / 6.0F)))
Dim DurationFraction = CSng((Duration / 6.0F - DurationWhole) * 1000)
Dim DurationTime As TimeSpan = New TimeSpan(0, 0, 0, CInt(DurationWhole), CInt(DurationFraction))
Dim baEntityOscillateMove As BAEntityOscillateMove = New BAEntityOscillateMove(MoveEntity, RemoveEntityAfter, Distance, Speed, BothWays, DurationTime, startDelay, endDelay, MovementCurve, ReturnToStart)
AnimationSequence.Add(baEntityOscillateMove)
@ -331,5 +331,27 @@ Namespace BattleSystem
AnimationSequence.Add(baBackground)
End Sub
Public Sub AnimationCameraChangeAngle(ByRef Battlescreen As BattleScreen, ByVal CameraAngleID As Integer, ByVal startDelay As Single, ByVal endDelay As Single)
Dim baCameraChangeAngle As BACameraChangeAngle = New BACameraChangeAngle(Battlescreen, CameraAngleID, startDelay, endDelay)
AnimationSequence.Add(baCameraChangeAngle)
End Sub
Public Sub AnimationCameraOscillateMove(ByVal Distance As Vector3, ByVal Speed As Single, ByVal BothWays As Boolean, ByVal Duration As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional MovementCurve As Integer = 0, Optional ReturnToStart As Vector3 = Nothing)
Dim ReturnPosition As New Vector3(0)
If Not BattleFlipped = Nothing Then
If BattleFlipped = True Then
Distance.Z *= -1.0F
End If
End If
Dim DurationWhole = CSng(Math.Truncate(CDbl(Duration / 6.0F)))
Dim DurationFraction = CSng((Duration / 6.0F - DurationWhole) * 1000)
Dim DurationTime As TimeSpan = New TimeSpan(0, 0, 0, CInt(DurationWhole), CInt(DurationFraction))
Dim baCameraOscillateMove As BACameraOscillateMove = New BACameraOscillateMove(Distance, Speed, BothWays, DurationTime, startDelay, endDelay, MovementCurve, ReturnToStart)
AnimationSequence.Add(baCameraOscillateMove)
End Sub
End Class
End Namespace

View File

@ -18311,6 +18311,9 @@
<Content Include="Content\Sounds\Battle\Attacks\Grass\VineWhip_Start.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Battle\Attacks\Ground\Earthquake.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Battle\Attacks\Ice\IcePunch_Crystals.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@ -28737,7 +28740,9 @@
<Compile Include="Battle\BattleAnimations\BAEntityColor.vb" />
<Compile Include="Battle\BattleAnimations\BABackground.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityFaceRotate.vb" />
<Compile Include="Battle\BattleAnimations\BACameraOscillateMove.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityOscillateMove.vb" />
<Compile Include="Battle\BattleAnimations\BACameraChangeAngle.vb" />
<Compile Include="Battle\BattleAnimations\BAEntitySetPosition.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityRotate.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityMove.vb" />

View File

@ -60,7 +60,7 @@
Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip, True)
MoveAnimation.AnimationPlaySound("Battle\Attacks\Electric\Flash", 0.0F, 0)
MoveAnimation.AnimationBackground(TextureManager.GetTexture("Textures\Battle\Electric\FlashBackground"), 0, 0, 0.25F, 0.9F, 0.2F, 0.025F, True, 1, 0, 6)
MoveAnimation.AnimationBackground(TextureManager.GetTexture("Textures\Battle\Electric\FlashBackground"), 0, 0, 1.5F, 0.9F, 0.2F, 0.025F, True, 1, 0, 6)
MoveAnimation.AnimationColor(CurrentEntity, False, 0.2F, True, 0, 0, New Vector3(0.1), Nothing, 0.025F)
BattleScreen.BattleQuery.Add(MoveAnimation)

View File

@ -69,7 +69,7 @@
Dim RayEntity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 0.0F)
MoveAnimation.AnimationFade(RayEntity, False, 0.025F, True, 1.0F, 0, 0)
MoveAnimation.AnimationMove(RayEntity, False, 1.5, 0, 0, 0.025, False, False, 0, 0,,, 0.0125)
MoveAnimation.AnimationOscillateMove(RayEntity, True, New Vector3(0, 0.075, 0), 0.02, True, 1, 0, 0, 1)
MoveAnimation.AnimationOscillateMove(RayEntity, True, New Vector3(0, 0.075, 0), 0.02, True, 6, 0, 0, 1)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 0.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 1.0, 0)
@ -93,8 +93,8 @@
Dim RayEntity = MoveAnimation.SpawnEntity(SpawnPosition, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1.0F)
MoveAnimation.AnimationMove(RayEntity, False, 1.5, 0, 0, 0.025, False, False, 0, 0,,, 0.0125)
MoveAnimation.AnimationOscillateMove(RayEntity, False, New Vector3(0, 0.075, 0), 0.02, True, 1, 0, 0, 1)
MoveAnimation.AnimationOscillateMove(RayEntity, False, New Vector3(0, 0, 0.2), 0.075, True, 1.5, 4, 0, 1)
MoveAnimation.AnimationOscillateMove(RayEntity, False, New Vector3(0, 0.075, 0), 0.02, True, 6, 0, 0, 1)
MoveAnimation.AnimationOscillateMove(RayEntity, False, New Vector3(0, 0, 0.2), 0.075, True, 7.5, 4, 0, 1)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 0.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 1.0, 0)

View File

@ -66,6 +66,18 @@
End If
End Function
Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip, False)
MoveAnimation.AnimationPlaySound("Battle\Attacks\Ground\Earthquake", 0.0F, 0)
MoveAnimation.AnimationCameraOscillateMove(New Vector3(0, 0, 0.075), 0.045, True, 16, 0, 0, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationCameraOscillateMove(New Vector3(0, 0.06, 0), 0.03, True, 4, 0, 0, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationCameraOscillateMove(New Vector3(0, -0.06, 0), 0.03, True, 4, 4, 0, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationCameraOscillateMove(New Vector3(0, 0.06, 0), 0.03, True, 4, 8, 0, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationCameraOscillateMove(New Vector3(0, -0.06, 0), 0.03, True, 4, 12, 0, 0, New Vector3(0, 0, 1))
BattleScreen.BattleQuery.Add(MoveAnimation)
End Sub
End Class
End Namespace

View File

@ -76,7 +76,7 @@
End Sub
Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
MoveAnimation.AnimationOscillateMove(Nothing, False, New Vector3(0, 0, 0.05), 0.035, True, 0.5, 0, 0.5, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationOscillateMove(Nothing, False, New Vector3(0, 0, 0.05), 0.035, True, 3, 0, 0.5, 0, New Vector3(0, 0, 1))
BattleScreen.BattleQuery.Add(MoveAnimation)
End Sub
End Class

View File

@ -66,7 +66,7 @@
Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip)
MoveAnimation.AnimationTurnNPC(2, 0, 0, 1, -1, 0.35)
MoveAnimation.AnimationPlaySound("Battle\Attacks\Normal\TailWhip", 1, 0)
MoveAnimation.AnimationOscillateMove(Nothing, False, New Vector3(0, 0, -0.075), 0.035, True, 0.5, 1, 0, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationOscillateMove(Nothing, False, New Vector3(0, 0, -0.075), 0.035, True, 3, 1, 0, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationTurnNPC(2, 5, 0.5, 3, 1, 0.35)
BattleScreen.BattleQuery.Add(MoveAnimation)
End Sub

View File

@ -74,9 +74,9 @@
Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation As AnimationQueryObject = New AnimationQueryObject(CurrentEntity, BattleFlip, True)
MoveAnimation.AnimationPlaySound("Battle\Attacks\Psychic\Psychic", 0.0F, 0)
MoveAnimation.AnimationBackground(TextureManager.GetTexture("Textures\Battle\Psychic\PsychicBackground"), 0, 0, 1.5F, 0.6F, 0.075F, 0.075F, True, 11, 2, 6)
MoveAnimation.AnimationBackground(TextureManager.GetTexture("Textures\Battle\Psychic\PsychicBackground"), 0, 0, 9.0F, 0.6F, 0.075F, 0.075F, True, 11, 2, 6)
MoveAnimation.AnimationOscillateMove(Nothing, False, New Vector3(0, 0, 0.05), 0.035, True, 0.75, 1, 0.5, 0, New Vector3(0, 0, 1))
MoveAnimation.AnimationOscillateMove(Nothing, False, New Vector3(0, 0, 0.05), 0.035, True, 4.5, 1, 0.5, 0, New Vector3(0, 0, 1))
BattleScreen.BattleQuery.Add(MoveAnimation)
End Sub