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