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