diff --git a/P3D/Battle/BattleSystemV2/BattleMenu.vb b/P3D/Battle/BattleSystemV2/BattleMenu.vb
index eab390740..80c75c542 100644
--- a/P3D/Battle/BattleSystemV2/BattleMenu.vb
+++ b/P3D/Battle/BattleSystemV2/BattleMenu.vb
@@ -1059,10 +1059,10 @@
#Region "UseItem"
Private Shared Sub SelectedItemHandler(ByVal params As Object())
- SelectedItem(CInt(params(0)))
+ SelectedItem(CStr(params(0)))
End Sub
- Private Shared Sub SelectedItem(ByVal itemID As Integer)
+ Private Shared Sub SelectedItem(ByVal itemID As String)
Dim Item As Item = Item.GetItemByID(itemID.ToString)
If Item.CanBeUsedInBattle = True Then
@@ -1103,9 +1103,9 @@
End If
End Sub
- Shared TempItemID As Integer = -1
+ Shared TempItemID As String = "-1"
- Private Shared Sub UseItemhandler(ByVal params As Object())
+ Private Shared Sub UseItemHandler(ByVal params As Object())
UseItem(CInt(params(0)))
End Sub
diff --git a/P3D/Content/Data/Items/example.dat b/P3D/Content/Data/Items/example.dat
index d302bbd06..4a12ad6f0 100644
Binary files a/P3D/Content/Data/Items/example.dat and b/P3D/Content/Data/Items/example.dat differ
diff --git a/P3D/Content/Data/Moves/example.dat b/P3D/Content/Data/Moves/example.dat
index 73ffceb59..3d505ff2f 100644
Binary files a/P3D/Content/Data/Moves/example.dat and b/P3D/Content/Data/Moves/example.dat differ
diff --git a/P3D/Core/GameOptions.vb b/P3D/Core/GameOptions.vb
index e9499e75f..7e137350c 100644
--- a/P3D/Core/GameOptions.vb
+++ b/P3D/Core/GameOptions.vb
@@ -37,12 +37,12 @@
Select Case name.ToLower()
Case "volume"
- MusicManager.MasterVolume = CSng(CDbl(value) / 100)
- SoundManager.Volume = CSng(CDbl(value) / 100)
+ MusicManager.MasterVolume = CSng(CInt(value) / 100)
+ SoundManager.Volume = CSng(CInt(value) / 100)
Case "music"
- MusicManager.MasterVolume = CSng(CDbl(value) / 100)
+ MusicManager.MasterVolume = CSng(CInt(value) / 100)
Case "sound"
- SoundManager.Volume = CSng(CDbl(value) / 100)
+ SoundManager.Volume = CSng(CInt(value) / 100)
Case "muted"
SoundManager.Muted = CBool(value)
MusicManager.Muted = CBool(value)
diff --git a/P3D/Pokemon/Attacks/Attack.vb b/P3D/Pokemon/Attacks/Attack.vb
index 10e0f57ff..697d1e6f1 100644
--- a/P3D/Pokemon/Attacks/Attack.vb
+++ b/P3D/Pokemon/Attacks/Attack.vb
@@ -170,6 +170,7 @@
Public GameModeFunction As String = "" 'A GameMode can specify a pre defined function for a move.
Public IsGameModeMove As Boolean = False
+ Public gmDeductPP As Boolean = True
Private _power As Integer = 40
Private _accuracy As Integer = 100
@@ -187,6 +188,8 @@
Public EffectChances As New List(Of Integer)
'#End
+
+
'#SpecialDefinitions
'Damage and effect types
Public MakesContact As Boolean = True
@@ -2057,7 +2060,11 @@
''' If the own Pokémon used the move.
''' Reference to the BattleScreen.
Public Overridable Function DeductPP(ByVal own As Boolean, ByVal BattleScreen As BattleScreen) As Boolean
- Return True
+ If Me.IsGameModeMove = True Then
+ Return gmDeductPP
+ Else
+ Return True
+ End If
End Function
'''
diff --git a/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb b/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb
index 8d7d51a13..a2008b2c6 100644
--- a/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb
+++ b/P3D/Pokemon/Attacks/AttackSpecialFunctions.vb
@@ -13,189 +13,351 @@
''' 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("|")
+ Dim Trigger As String = ""
For i = 0 To functions.Count - 1
Dim f As String = functions(i)
Dim fMain As String = f
Dim fSub As String = ""
- If f.Contains(",") = True Then
- fMain = f.GetSplit(0, ",")
- fSub = f.GetSplit(1, ",")
- Select Case fMain.ToLower()
- Case "cameraangle"
- Dim Direction As Integer = CInt(fSub)
- 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"
- Dim OppPokemon As Pokemon = BattleScreen.OppPokemon
- Dim OwnPokemon As Pokemon = BattleScreen.OwnPokemon
- If own = False Then
- OwnPokemon = BattleScreen.OppPokemon
- OppPokemon = BattleScreen.OwnPokemon
- End If
- fSub = Localization.GetString(fSub, fSub).Replace("[OPPNAME]", OppPokemon.GetDisplayName).Replace("[OWNNAME]", OwnPokemon.GetDisplayName)
- 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
+ Select Case f.GetSplit(0, ",").ToLower
+ Case "settrigger"
+ Trigger = f.GetSplit(1, ",") & "," & f.GetSplit(2, ",")
+ Case "removetrigger"
+ Trigger = ""
+ End Select
- 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
+ If Trigger <> "" Then
+ Dim Target As Boolean = CBool(Trigger.GetSplit(0, ","))
+ Dim Triggers() As String = Trigger.GetSplit(1, ",").Split(";")
+ Dim Success As Boolean = False
+ For t = 0 To Triggers.Count - 1
+ Select Case Triggers(t).ToLower()
+ Case "burn"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Burn Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Burn Then
+ Success = True
End If
End If
- End If
- BattleScreen.Battle.RaiseStat(Target, own, BattleScreen, Stat, RaiseAmount, Message, "move:" & Move.Name, True)
- 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
+ Case "freeze"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Freeze Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Freeze Then
+ Success = True
End If
End If
- End If
- BattleScreen.Battle.LowerStat(Target, own, BattleScreen, Stat, LowerAmount, Message, "move:" & Move.Name, True)
- Case "reducehp", "drainhp", "damage"
- Dim Target As Boolean = CBool(f.GetSplit(1, ","))
- Dim HPAmount As Integer = 0
- Dim Message As String = ""
-
- 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, Target, own, BattleScreen, Message, "move:" & Move.Name.ToLower)
- Case "gainhp", "increasehp", "heal"
- Dim Target As Boolean = CBool(f.GetSplit(1, ","))
- Dim HPAmount As Integer = 0
- Dim Message As String = ""
-
- 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, own, BattleScreen, Message, "move:" & Move.Name.ToLower)
- Case "endbattle"
- Dim Blackout As Boolean = False
-
- If f.Split(CChar(",")).Count > 2 Then
- Blackout = CBool(fSub)
- End If
- BattleScreen.BattleQuery.Add(New EndBattleQueryObject(Blackout))
- Case "faint"
- Dim Target As Boolean = CBool(f.GetSplit(1, ","))
- Dim Message As String = ""
- Dim NextPokemonIndex As Integer = -1
-
- Dim OppPokemon As Pokemon = BattleScreen.OppPokemon
- Dim OwnPokemon As Pokemon = BattleScreen.OwnPokemon
- If Target = False Then
- OwnPokemon = BattleScreen.OppPokemon
- OppPokemon = BattleScreen.OwnPokemon
- End If
-
- If Target = True Then
- If f.Split(CChar(",")).Count > 3 Then
- If f.GetSplit(3, ",").StartsWith("~+") Then
- NextPokemonIndex = BattleScreen.OppPokemonIndex + CInt(f.GetSplit(3, ",").Remove(0, 2))
+ Case "paralyze"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Paralyzed Then
+ Success = True
End If
- If f.GetSplit(3, ",").StartsWith("~-") Then
- NextPokemonIndex = BattleScreen.OppPokemonIndex - CInt(f.GetSplit(3, ",").Remove(0, 2))
+ Else
+ If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Paralyzed Then
+ Success = True
End If
End If
- End If
- BattleScreen.NextPokemonIndex = NextPokemonIndex
-
- If f.Split(CChar(",")).Count > 2 Then
- Message = f.GetSplit(2, ",").Replace("[OPPNAME]", OppPokemon.GetDisplayName).Replace("[OWNNAME]", OwnPokemon.GetDisplayName)
- End If
- BattleScreen.Battle.FaintPokemon(Not Target, BattleScreen, Message)
- Case "switch"
- Dim Target As Boolean = CBool(f.GetSplit(1, ","))
- Dim SwitchTo As Integer = 0
- Dim Message As String = ""
-
- If f.Split(CChar(",")).Count > 3 Then
- Message = f.GetSplit(3, ",")
- End If
- If Target = True Then
- If f.GetSplit(2, ",").StartsWith("~+") Then
- SwitchTo = BattleScreen.OppPokemonIndex + CInt(f.GetSplit(2, ",").Remove(0, 2))
+ Case "poison"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Poison Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Poison Then
+ Success = True
+ End If
End If
- If f.GetSplit(2, ",").StartsWith("~-") Then
- SwitchTo = BattleScreen.OppPokemonIndex - CInt(f.GetSplit(2, ",").Remove(0, 2))
+ Case "toxic", "badpoison"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
End If
- BattleScreen.Battle.SwitchOutOpp(BattleScreen, SwitchTo, Message)
- Else
- If f.GetSplit(2, ",").StartsWith("~+") Then
- SwitchTo = BattleScreen.OwnPokemonIndex + CInt(f.GetSplit(2, ",").Remove(0, 2))
+ Case "anypoison"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Poison OrElse BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Poison OrElse BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
End If
- If f.GetSplit(2, ",").StartsWith("~-") Then
- SwitchTo = BattleScreen.OwnPokemonIndex - CInt(f.GetSplit(2, ",").Remove(0, 2))
+ Case "sleep"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status = Pokemon.StatusProblems.Sleep Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status = Pokemon.StatusProblems.Sleep Then
+ Success = True
+ End If
End If
- BattleScreen.Battle.SwitchOutOwn(BattleScreen, SwitchTo, -1, Message)
- End If
- Case Else
- fSub = CInt(f.GetSplit(1, ",")).Clamp(0, 100).ToString
- End Select
+ Case "noburn"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Burn Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Burn Then
+ Success = True
+ End If
+ End If
+ Case "nofreeze"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Freeze Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Freeze Then
+ Success = True
+ End If
+ End If
+ Case "noparalyze"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Paralyzed Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Paralyzed Then
+ Success = True
+ End If
+ End If
+ Case "nopoison"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Poison Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Poison Then
+ Success = True
+ End If
+ End If
+ Case "notoxic", "nobadpoison"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
+ End If
+ Case "nopoison"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Poison AndAlso BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Poison AndAlso BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.BadPoison Then
+ Success = True
+ End If
+ End If
+ Case "nosleep"
+ If Target = True Then
+ If BattleScreen.OppPokemon.Status <> Pokemon.StatusProblems.Sleep Then
+ Success = True
+ End If
+ Else
+ If BattleScreen.OwnPokemon.Status <> Pokemon.StatusProblems.Sleep Then
+ Success = True
+ End If
+ End If
+ End Select
+ Next
+ If Success = True Then
+ Trigger = ""
+ End If
Else
- Select Case f.ToLower()
- Case "endround"
- 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})
- BattleScreen.Battle.StartRound(BattleScreen)
- Case "freeze"
- fSub = "15"
+ If f.Contains(",") = True Then
+ fMain = f.GetSplit(0, ",")
+ fSub = f.GetSplit(1, ",")
+ Select Case fMain.ToLower()
+ Case "cameraangle"
+ Dim Direction As Integer = CInt(fSub)
+ 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"
+ Dim OppPokemon As Pokemon = BattleScreen.OppPokemon
+ Dim OwnPokemon As Pokemon = BattleScreen.OwnPokemon
+ If own = False Then
+ OwnPokemon = BattleScreen.OppPokemon
+ OppPokemon = BattleScreen.OwnPokemon
+ End If
+
+ fSub = Localization.GetString(fSub, fSub).Replace("[OPPNAME]", OppPokemon.GetDisplayName).Replace("[OWNNAME]", OwnPokemon.GetDisplayName)
+ 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, True)
+ 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, True)
+ Case "reducehp", "drainhp", "damage"
+ Dim Target As Boolean = CBool(f.GetSplit(1, ","))
+ Dim HPAmount As Integer = 0
+ Dim Message As String = ""
+
+ 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, Target, own, BattleScreen, Message, "move:" & Move.Name.ToLower)
+ Case "gainhp", "increasehp", "heal"
+ Dim Target As Boolean = CBool(f.GetSplit(1, ","))
+ Dim HPAmount As Integer = 0
+ Dim Message As String = ""
+
+ 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, own, BattleScreen, Message, "move:" & Move.Name.ToLower)
+ Case "endbattle"
+ Dim Blackout As Boolean = False
+
+ If f.Split(CChar(",")).Count > 2 Then
+ Blackout = CBool(fSub)
+ End If
+ BattleScreen.BattleQuery.Add(New EndBattleQueryObject(Blackout))
+ Case "faint"
+ Dim Target As Boolean = CBool(f.GetSplit(1, ","))
+ Dim Message As String = ""
+ Dim NextPokemonIndex As Integer = -1
+
+ Dim OppPokemon As Pokemon = BattleScreen.OppPokemon
+ Dim OwnPokemon As Pokemon = BattleScreen.OwnPokemon
+ If Target = False Then
+ OwnPokemon = BattleScreen.OppPokemon
+ OppPokemon = BattleScreen.OwnPokemon
+ End If
+
+ If Target = True Then
+ If f.Split(CChar(",")).Count > 3 Then
+ If f.GetSplit(3, ",").StartsWith("~+") Then
+ NextPokemonIndex = BattleScreen.OppPokemonIndex + CInt(f.GetSplit(3, ",").Remove(0, 2))
+ End If
+ If f.GetSplit(3, ",").StartsWith("~-") Then
+ NextPokemonIndex = BattleScreen.OppPokemonIndex - CInt(f.GetSplit(3, ",").Remove(0, 2))
+ End If
+ End If
+ End If
+ BattleScreen.NextPokemonIndex = NextPokemonIndex
+
+ If f.Split(CChar(",")).Count > 2 Then
+ Message = f.GetSplit(2, ",").Replace("[OPPNAME]", OppPokemon.GetDisplayName).Replace("[OWNNAME]", OwnPokemon.GetDisplayName)
+ End If
+ BattleScreen.Battle.FaintPokemon(Not Target, BattleScreen, Message)
+ Case "switch"
+ Dim Target As Boolean = CBool(f.GetSplit(1, ","))
+ Dim SwitchTo As Integer = 0
+ Dim Message As String = ""
+
+ If f.Split(CChar(",")).Count > 3 Then
+ Message = f.GetSplit(3, ",")
+ End If
+ If Target = True Then
+ If f.GetSplit(2, ",").StartsWith("~+") Then
+ SwitchTo = BattleScreen.OppPokemonIndex + CInt(f.GetSplit(2, ",").Remove(0, 2))
+ End If
+ If f.GetSplit(2, ",").StartsWith("~-") Then
+ SwitchTo = BattleScreen.OppPokemonIndex - CInt(f.GetSplit(2, ",").Remove(0, 2))
+ End If
+ BattleScreen.Battle.SwitchOutOpp(BattleScreen, SwitchTo, Message)
+ Else
+ If f.GetSplit(2, ",").StartsWith("~+") Then
+ SwitchTo = BattleScreen.OwnPokemonIndex + CInt(f.GetSplit(2, ",").Remove(0, 2))
+ End If
+ If f.GetSplit(2, ",").StartsWith("~-") Then
+ SwitchTo = BattleScreen.OwnPokemonIndex - CInt(f.GetSplit(2, ",").Remove(0, 2))
+ End If
+ BattleScreen.Battle.SwitchOutOwn(BattleScreen, SwitchTo, -1, Message)
+ End If
+ Case Else
+ fSub = CInt(f.GetSplit(1, ",")).Clamp(0, 100).ToString
+ End Select
+ Else
+ Select Case f.ToLower()
+ Case "endround"
+ 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})
+ BattleScreen.Battle.StartRound(BattleScreen)
+ Case "freeze"
+ fSub = "15"
+ Case "poison"
+ fSub = "40"
+ Case "toxic", "badpoison"
+ fSub = "25"
+ Case Else
+ fSub = "30"
+ End Select
+ End If
+
+ Select Case fMain.ToLower()
+ Case "paralyze"
+ Paralyze(Move, own, BattleScreen, CInt(fSub))
Case "poison"
- fSub = "40"
+ Poison(Move, own, BattleScreen, CInt(fSub))
Case "toxic", "badpoison"
- fSub = "25"
- Case Else
- fSub = "30"
+ BadPoison(Move, own, BattleScreen, CInt(fSub))
+ Case "burn"
+ Burn(Move, own, BattleScreen, CInt(fSub))
+ Case "freeze"
+ Freeze(Move, own, BattleScreen, CInt(fSub))
+ Case "sleep"
+ Sleep(Move, own, BattleScreen, CInt(fSub))
End Select
End If
-
- Select Case fMain.ToLower()
- Case "paralyze"
- Paralyze(Move, own, BattleScreen, CInt(fSub))
- Case "poison"
- Poison(Move, own, BattleScreen, CInt(fSub))
- Case "toxic", "badpoison"
- BadPoison(Move, own, BattleScreen, CInt(fSub))
- Case "burn"
- Burn(Move, own, BattleScreen, CInt(fSub))
- Case "freeze"
- Freeze(Move, own, BattleScreen, CInt(fSub))
- Case "sleep"
- Sleep(Move, own, BattleScreen, CInt(fSub))
- End Select
Next
End Sub
diff --git a/P3D/Pokemon/Attacks/GameModeAttackLoader.vb b/P3D/Pokemon/Attacks/GameModeAttackLoader.vb
index 99784c865..9a034f535 100644
--- a/P3D/Pokemon/Attacks/GameModeAttackLoader.vb
+++ b/P3D/Pokemon/Attacks/GameModeAttackLoader.vb
@@ -178,6 +178,8 @@
move.UseOppDefense = CBool(value)
Case "useoppevasion"
move.UseOppEvasion = CBool(value)
+ Case "deductpp"
+ move.gmDeductPP = CBool(value)
End Select
End If
Next
diff --git a/P3D/Pokemon/Items/GameModeItemLoader.vb b/P3D/Pokemon/Items/GameModeItemLoader.vb
index c8d0b86a9..3f5403f29 100644
--- a/P3D/Pokemon/Items/GameModeItemLoader.vb
+++ b/P3D/Pokemon/Items/GameModeItemLoader.vb
@@ -120,7 +120,7 @@ Public Class GameModeItemLoader
item.gmIsHealingItem = CBool(value)
Case "healhpamount"
item.gmHealHPAmount = CInt(value)
- Case "curestatuseffects"
+ Case "curestatus"
Dim StatusEffectList As New List(Of String)
Dim valueSplit As String() = value.Split(",")
For i = 0 To valueSplit.Count - 1
diff --git a/P3D/Screens/Inventory/NewInventoryScreen.vb b/P3D/Screens/Inventory/NewInventoryScreen.vb
index 3537601bb..940c94d10 100644
--- a/P3D/Screens/Inventory/NewInventoryScreen.vb
+++ b/P3D/Screens/Inventory/NewInventoryScreen.vb
@@ -984,7 +984,11 @@ Public Class NewInventoryScreen
Case INFO_ITEM_OPTION_TOSS
TossItem(cItem)
Case INFO_ITEM_OPTION_SELECT
- FireSelectionEvent(cItem.ID)
+ If cItem.IsGameModeItem = True Then
+ FireSelectionEvent(cItem.gmID)
+ Else
+ FireSelectionEvent(cItem.ID.ToString)
+ End If
CloseInfoScreen()
_closing = True
End Select
@@ -1268,7 +1272,7 @@ Public Class NewInventoryScreen
Public Event SelectedObject(params() As Object) Implements ISelectionScreen.SelectedObject
- Private Sub FireSelectionEvent(ByVal itemId As Integer)
+ Private Sub FireSelectionEvent(ByVal itemId As String)
RaiseEvent SelectedObject(New Object() {itemId})
End Sub