diff --git a/P3D/Battle/BattleSystemV2/Battle.vb b/P3D/Battle/BattleSystemV2/Battle.vb index 07b311e05..3f0ffee8f 100644 --- a/P3D/Battle/BattleSystemV2/Battle.vb +++ b/P3D/Battle/BattleSystemV2/Battle.vb @@ -3798,7 +3798,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -3813,7 +3812,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -3828,7 +3826,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -3843,7 +3840,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -3858,7 +3854,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -3873,7 +3868,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -3888,7 +3882,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -3902,11 +3895,9 @@ Dim p As Pokemon = BattleScreen.OwnPokemon Dim op As Pokemon = BattleScreen.OppPokemon Dim pNPC As NPC = BattleScreen.OwnPokemonNPC - If own = False Then - pNPC = BattleScreen.OppPokemonNPC - End If If own = False Then p = BattleScreen.OppPokemon + pNPC = BattleScreen.OppPokemonNPC op = BattleScreen.OwnPokemon End If @@ -4082,7 +4073,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -4097,7 +4087,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -4112,7 +4101,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -4127,7 +4115,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -4142,7 +4129,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -4157,7 +4143,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select Return True @@ -4172,7 +4157,6 @@ 'Do nothing Case Else 'Print message given in 'message' BattleScreen.BattleQuery.Add(New TextQueryObject(message)) - BattleScreen.BattleQuery.Add(New TextQueryObject(printMessage)) End Select If val > 0 Then @@ -5337,11 +5321,11 @@ End If End If - ChangeCameraAngle(0, True, BattleScreen) Dim cq1 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, True, 16) Dim cq2 As ScreenFadeQueryObject = New ScreenFadeQueryObject(ScreenFadeQueryObject.FadeTypes.Vertical, Color.Black, False, 16) + cq2.PassThis = True BattleScreen.BattleQuery.AddRange({cq1, cq2}) diff --git a/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb b/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb index e44ccda50..099f81249 100644 --- a/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb +++ b/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb @@ -12,7 +12,7 @@ ''' Own toggle. ''' Reference to the BattleScreen. Public Shared Sub ExecuteMoveHitsFunction(ByVal Move As Attack, ByVal own As Boolean, ByVal BattleScreen As BattleScreen) - Dim functions() As String = Move.GameModeFunction.Split(CChar("|")) + Dim functions() As String = Move.GameModeFunction.Split("|") For i = 0 To functions.Count - 1 Dim f As String = functions(i) Dim fMain As String = f @@ -23,59 +23,96 @@ Select Case fMain.ToLower() Case "cameraangle" Dim Direction As Integer = CInt(fSub) - BattleScreen.Battle.ChangeCameraAngle(Direction, own, BattleScreen) - Case "message" - fSub = Localization.GetString(f.GetSplit(1, ","), f.GetSplit(1, ",")) + Select Case Direction + Case 0 + BattleScreen.Battle.ChangeCameraAngle(0, own, BattleScreen) + Case 1 + BattleScreen.Battle.ChangeCameraAngle(1, True, BattleScreen) + Case 2 + BattleScreen.Battle.ChangeCameraAngle(2, True, BattleScreen) + End Select + Case "message", "text" + fSub = Localization.GetString(fSub, fSub) BattleScreen.BattleQuery.Add(New TextQueryObject(fSub)) + Case "raisestat", "increasestat" + Dim Stat As String = f.GetSplit(1, ",") + Dim Target As Boolean = own + Dim Message As String = "" + Dim RaiseAmount As Integer = 1 + + If f.Split(CChar(",")).Count > 2 Then + Target = CBool(f.GetSplit(2, ",")) + If f.Split(CChar(",")).Count > 3 Then + Message = f.GetSplit(3, ",") + If f.Split(CChar(",")).Count > 4 Then + If CInt(f.GetSplit(4, ",")) > 0 Then + RaiseAmount = CInt(f.GetSplit(4, ",")) + End If + End If + End If + End If + BattleScreen.Battle.RaiseStat(Target, own, BattleScreen, Stat, RaiseAmount, Message, "move:" & Move.Name) + Case "lowerstat", "decreasestat" + Dim Stat As String = f.GetSplit(1, ",") + Dim Message As String = "" + Dim Target As Boolean = own + Dim LowerAmount As Integer = 1 + If f.Split(CChar(",")).Count > 2 Then + Target = CBool(f.GetSplit(2, ",")) + If f.Split(CChar(",")).Count > 3 Then + Message = f.GetSplit(3, ",") + If f.Split(CChar(",")).Count > 4 Then + If CInt(f.GetSplit(4, ",")) > 0 Then + LowerAmount = CInt(f.GetSplit(4, ",")) + End If + End If + End If + End If + BattleScreen.Battle.LowerStat(Target, own, BattleScreen, Stat, LowerAmount, Message, "move:" & Move.Name) Case "reducehp", "drainhp", "damage" - Dim HPAmount As Integer = CInt(fSub.GetSplit(0, ",")) + Dim Target As Boolean = CBool(f.GetSplit(1, ",")) + Dim HPAmount As Integer = 0 Dim Message As String = "" - Dim Target As Boolean = True - If fSub.Split(CChar(",")).Count > 1 Then - Target = CBool(fSub.GetSplit(1, ",")) - If fSub.Split(CChar(",")).Count > 2 Then - Message = fSub.GetSplit(2, ",") + If f.Split(CChar(",")).Count > 2 Then + HPAmount = CInt(f.GetSplit(2, ",")) + If f.Split(CChar(",")).Count > 3 Then + Message = f.GetSplit(3, ",") End If End If - BattleScreen.Battle.ReduceHP(HPAmount, Not Target, Target, BattleScreen, Message, Move.Name.ToLower) + BattleScreen.Battle.ReduceHP(HPAmount, Target, own, BattleScreen, Message, Move.Name.ToLower) Case "gainhp", "increasehp", "heal" - Dim HPAmount As Integer = CInt(fSub.GetSplit(0, ",")) + Dim Target As Boolean = CBool(f.GetSplit(1, ",")) + Dim HPAmount As Integer = 0 Dim Message As String = "" - Dim Target As Boolean = True - If fSub.Split(CChar(",")).Count > 1 Then - Target = CBool(fSub.GetSplit(1, ",")) - If fSub.Split(CChar(",")).Count > 2 Then - Message = fSub.GetSplit(2, ",") + If f.Split(CChar(",")).Count > 2 Then + HPAmount = CInt(f.GetSplit(2, ",")) + If f.Split(CChar(",")).Count > 3 Then + Message = f.GetSplit(3, ",") End If End If - BattleScreen.Battle.GainHP(HPAmount, Target, Target, BattleScreen, Message, Move.Name.ToLower) + BattleScreen.Battle.GainHP(HPAmount, Target, own, BattleScreen, Message, Move.Name.ToLower) Case "endbattle" Dim Blackout As Boolean = False - If fSub.Split(CChar(",")).Count > 1 Then - Blackout = CBool(fSub.GetSplit(1, ",")) + If f.Split(CChar(",")).Count > 2 Then + Blackout = CBool(fSub) End If - BattleScreen.EndBattle(Blackout) + BattleScreen.BattleQuery.Add(New EndBattleQueryObject(Blackout)) Case "faint" - Dim Target As Boolean = Not own + Dim Target As Boolean = CBool(f.GetSplit(1, ",")) Dim Message As String = "" - If fSub.Split(CChar(",")).Count > 1 Then - Target = Not CBool(fSub.GetSplit(1, ",")) + If f.Split(CChar(",")).Count > 2 Then + Message = f.GetSplit(2, ",") End If - If fSub.Split(CChar(",")).Count > 2 Then - Message = fSub.GetSplit(2, ",") - End If - BattleScreen.Battle.FaintPokemon(Target, BattleScreen, Message) + BattleScreen.Battle.FaintPokemon(Not Target, BattleScreen, Message) Case Else fSub = CInt(f.GetSplit(1, ",")).Clamp(0, 100).ToString End Select Else Select Case f.ToLower() - Case "endbattle" - BattleScreen.EndBattle(False) Case "freeze" fSub = "15" Case "poison" @@ -101,7 +138,6 @@ Case "sleep" Sleep(Move, own, BattleScreen, CInt(fSub)) End Select - i += 1 Next End Sub