Namespace BattleSystem Public Class BattleMenu Enum MenuStates Main Moves End Enum Public MenuState As MenuStates = MenuStates.Main Public Visible As Boolean = False Public Sub New() Me.Reset() End Sub Public Sub Reset() _moveMenuAlpha = 255 _moveMenuChoseMove = False MenuState = MenuStates.Main End Sub Private Sub DrawWeather(ByVal BattleScreen As BattleScreen) Dim y As Integer = -1 Dim x As Integer = 0 Dim t As String = "" Select Case BattleScreen.FieldEffects.Weather Case BattleWeather.WeatherTypes.Sunny y = 0 t = "Sunny" Case BattleWeather.WeatherTypes.Rain y = 34 t = "Rain" Case BattleWeather.WeatherTypes.Sandstorm y = 68 t = "Sandstorm" Case BattleWeather.WeatherTypes.Hailstorm y = 102 t = "Hailstorm" Case BattleWeather.WeatherTypes.Foggy x = 88 y = 0 t = "Foggy" Case BattleWeather.WeatherTypes.Snow x = 88 y = 34 t = "Snow" End Select If y > -1 Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\WeatherIcons"), New Rectangle(22, Core.windowSize.Height - 90, 176, 68), New Rectangle(x, y, 88, 34), Color.White) Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(110 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 44), Color.Black) End If End Sub Private Sub DrawTerrain(ByVal BattleScreen As BattleScreen) Dim y As Integer = -1 Dim x As Integer = 0 Dim t As String = "" With BattleScreen.FieldEffects If .ElectricTerrain > 0 Then x = 352 y = 0 t = "Electric Terrain" End If If .GrassyTerrain > 0 Then x = 352 y = 34 t = "Grassy Terrain" End If If .MistyTerrain > 0 Then x = 352 y = 68 t = "Misty Terrain" End If If .PsychicTerrain > 0 Then x = 352 y = 102 t = "Psychic Terrain" End If End With If y > -1 Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\WeatherIcons"), New Rectangle(222, Core.windowSize.Height - 90, 176, 68), New Rectangle(x, y, 88, 34), Color.White) Core.SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(310 - FontManager.MiniFont.MeasureString(t).X / 2, Core.windowSize.Height - 44), Color.Black) End If End Sub Private Sub DrawPokemonStats(ByVal pos As Vector2, ByVal p As Pokemon, ByVal BattleScreen As BattleScreen, ByVal largeStatsDisplay As Boolean, ByVal DrawCaught As Boolean) Dim shinyHue As Color = Color.White If p.IsShiny = True Then shinyHue = Color.Gold End If If _moveMenuChoseMove = True Then shinyHue.A = CByte(_moveMenuAlpha.Clamp(0, 255)) End If 'Draw large stats: If largeStatsDisplay = True Then 'Background Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + 14, CInt(pos.Y) + 14, 182, 42), New Rectangle(0, 0, 91, 21), shinyHue) 'Name: Dim nameInformation As String = p.GetDisplayName() & " Lv. " & p.Level.ToString() Core.SpriteBatch.DrawString(FontManager.MiniFont, nameInformation, New Vector2(pos.X + 2, pos.Y + 2), New Color(0, 0, 0, _moveMenuAlpha)) Core.SpriteBatch.DrawString(FontManager.MiniFont, nameInformation, New Vector2(pos.X, pos.Y), shinyHue) 'Gender: If p.Gender = Pokemon.Genders.Male Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X + 6 + FontManager.MiniFont.MeasureString(nameInformation).X), CInt(pos.Y), 12, 20), New Rectangle(0, 104, 6, 10), New Color(255, 255, 255, _moveMenuAlpha)) ElseIf p.Gender = Pokemon.Genders.Female Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X + 6 + FontManager.MiniFont.MeasureString(nameInformation).X), CInt(pos.Y), 12, 20), New Rectangle(6, 104, 6, 10), New Color(255, 255, 255, _moveMenuAlpha)) End If 'HP indicator: Core.SpriteBatch.DrawString(FontManager.MiniFont, p.HP & "/" & p.MaxHP, New Vector2(pos.X + 102, pos.Y + 37 + 3), New Color(0, 0, 0, _moveMenuAlpha)) Core.SpriteBatch.DrawString(FontManager.MiniFont, p.HP & "/" & p.MaxHP, New Vector2(pos.X + 100, pos.Y + 35 + 3), shinyHue) 'EXP Bar: If BattleScreen.CanReceiveEXP = True Then Dim NextLvExp As Integer = p.NeedExperience(p.Level + 1) - p.NeedExperience(p.Level) Dim currentExp As Integer = p.Experience - p.NeedExperience(p.Level) If p.Level = 1 Then NextLvExp = p.NeedExperience(p.Level + 1) currentExp = p.Experience End If Dim NeedExp As Integer = NextLvExp - currentExp If p.Level = CInt(GameModeManager.GetGameRuleValue("MaxLevel", "100")) Then NextLvExp = 0 Else Dim barPercentage As Integer = CInt((currentExp / NextLvExp) * 100) If barPercentage > 0 Then Dim EXPlength As Integer = CInt(Math.Ceiling(144 / 100 * barPercentage)) If currentExp = 0 Then EXPlength = 0 Else If EXPlength <= 0 Then EXPlength = 1 End If End If If EXPlength = 144 Then EXPlength = 143 End If Dim t = TextureManager.GetTexture("GUI\Battle\Interface") For dX As Integer = 0 To EXPlength Step 4 Core.SpriteBatch.Draw(t, New Rectangle(CInt(pos.X) + 50 + dX, CInt(pos.Y) + 54, 4, 6), New Rectangle(0, 43, 2, 3), New Color(255, 255, 255, _moveMenuAlpha)) Next End If End If End If Else 'Smaller stats display 'Background Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + 14, CInt(pos.Y) + 14, 182, 32), New Rectangle(0, 21, 91, 16), shinyHue) 'Name: Dim nameInformation As String = p.GetDisplayName() & " Lv. " & p.Level.ToString() Core.SpriteBatch.DrawString(FontManager.MiniFont, nameInformation, New Vector2(pos.X + 2, pos.Y + 2), New Color(0, 0, 0, _moveMenuAlpha)) Core.SpriteBatch.DrawString(FontManager.MiniFont, nameInformation, New Vector2(pos.X, pos.Y), shinyHue) 'Gender: If p.Gender = Pokemon.Genders.Male Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X + 6 + FontManager.MiniFont.MeasureString(nameInformation).X), CInt(pos.Y), 12, 20), New Rectangle(0, 104, 6, 10), New Color(255, 255, 255, _moveMenuAlpha)) ElseIf p.Gender = Pokemon.Genders.Female Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X + 6 + FontManager.MiniFont.MeasureString(nameInformation).X), CInt(pos.Y), 12, 20), New Rectangle(6, 104, 6, 10), New Color(255, 255, 255, _moveMenuAlpha)) End If End If Dim HPpercentage As Single = (100.0F / p.MaxHP) * p.HP Dim HPlength As Integer = CInt(Math.Ceiling(140 / 100 * HPpercentage.Clamp(1, 999))) If p.HP = 0 Then HPlength = 0 Else If HPlength <= 0 Then HPlength = 1 End If End If If p.HP = p.MaxHP Then HPlength = 140 Else If HPlength = 140 Then HPlength = 139 End If End If Dim cX As Integer = 0 If HPpercentage <= 50.0F And HPpercentage > 15.0F Then cX = 2 ElseIf HPpercentage <= 15.0F Then cX = 4 End If If HPlength > 0 Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + 54, CInt(pos.Y) + 26, 2, 12), New Rectangle(cX, 37, 1, 6), New Color(255, 255, 255, _moveMenuAlpha)) Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + 2 + 54, CInt(pos.Y) + 26, HPlength - 4, 12), New Rectangle(cX + 1, 37, 1, 6), New Color(255, 255, 255, _moveMenuAlpha)) Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + HPlength - 2 + 54, CInt(pos.Y) + 26, 2, 12), New Rectangle(cX, 37, 1, 6), New Color(255, 255, 255, _moveMenuAlpha)) End If Dim caughtX As Integer = 0 Dim StatusTexture As Texture2D = BattleStats.GetStatImage(p.Status) If Not StatusTexture Is Nothing Then Core.SpriteBatch.Draw(StatusTexture, New Rectangle(CInt(pos.X) + 12, CInt(pos.Y) + 26, 38, 12), New Color(255, 255, 255, _moveMenuAlpha)) caughtX = -16 End If If DrawCaught = True Then If Pokedex.GetEntryType(Core.Player.PokedexData, p.Number) > 1 Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + caughtX, CInt(pos.Y) + 22, 20, 20), New Rectangle(0, 46, 10, 10), New Color(255, 255, 255, _moveMenuAlpha)) End If End If End Sub Private Sub DrawPokeBalls(ByVal pos As Vector2, ByVal BattleScreen As BattleScreen, ByVal PokemonList As List(Of Pokemon), ByVal Mirrored As Boolean) If Mirrored = True Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X), CInt(pos.Y), 160, 14), New Rectangle(128, 7, 80, 7), New Color(255, 255, 255, _moveMenuAlpha)) Else Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X), CInt(pos.Y), 160, 14), New Rectangle(128, 0, 80, 7), New Color(255, 255, 255, _moveMenuAlpha)) End If Dim mouseHovers As Boolean = False Dim startX As Integer = 12 If Mirrored = True Then startX = 76 End If For i = 0 To 5 Dim texturePos As Integer = 0 If PokemonList.Count - 1 >= i Then Dim p As Pokemon = PokemonList(i) If p.Status = Pokemon.StatusProblems.Fainted Then texturePos = 10 ElseIf p.Status = Pokemon.StatusProblems.None Then texturePos = 0 Else texturePos = 30 End If If MouseHandler.IsInRectangle(New Rectangle(CInt(pos.X) + startX + 12 * i, CInt(pos.Y) + 1, 10, 10)) = True And Mirrored = False And _moveMenuChoseMove = False Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + startX + 12 * i - 27, CInt(pos.Y) - 86, 64, 84), New Rectangle(128, 16, 32, 42), New Color(255, 255, 255, _mainMenuTeamPreviewAlpha)) Core.SpriteBatch.Draw(PokemonList(i).GetMenuTexture(True), New Rectangle(CInt(pos.X) + startX + 12 * i - 27, CInt(pos.Y) - 86, 64, 64), New Color(255, 255, 255, _mainMenuTeamPreviewAlpha)) If _mainMenuTeamPreviewAlpha < 255 Then _mainMenuTeamPreviewAlpha += 25 If _mainMenuTeamPreviewAlpha > 255 Then _mainMenuTeamPreviewAlpha = 255 End If End If _mainMenuTeamPreviewLastIndex = i mouseHovers = True End If Else texturePos = 20 End If Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + startX + 12 * i, CInt(pos.Y) + 1, 10, 10), New Rectangle(texturePos, 46, 10, 10), New Color(255, 255, 255, _moveMenuAlpha)) Next If mouseHovers = False And Mirrored = False Then If _mainMenuTeamPreviewAlpha > 0 Then _mainMenuTeamPreviewAlpha -= 25 If _mainMenuTeamPreviewAlpha < 0 Then _mainMenuTeamPreviewAlpha = 0 End If If _mainMenuTeamPreviewLastIndex > -1 Then Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Battle\Interface"), New Rectangle(CInt(pos.X) + startX + 12 * _mainMenuTeamPreviewLastIndex - 27, CInt(pos.Y) - 86, 64, 84), New Rectangle(128, 16, 32, 42), New Color(255, 255, 255, _mainMenuTeamPreviewAlpha)) Core.SpriteBatch.Draw(PokemonList(_mainMenuTeamPreviewLastIndex).GetMenuTexture(True), New Rectangle(CInt(pos.X) + startX + 12 * _mainMenuTeamPreviewLastIndex - 27, CInt(pos.Y) - 86, 64, 64), New Color(255, 255, 255, _mainMenuTeamPreviewAlpha)) End If End If End If End Sub Public Sub Draw(ByVal BattleScreen As BattleScreen) If BattleScreen.IsCurrentScreen() = True Then DrawPokemonStats(New Vector2(50, 50), BattleScreen.OppPokemon, BattleScreen, False, Not BattleScreen.IsTrainerBattle) If BattleScreen.BattleMode <> BattleScreen.BattleModes.Safari Then DrawPokemonStats(New Vector2(Core.windowSize.Width - 280, Core.windowSize.Height - 100), BattleScreen.OwnPokemon, BattleScreen, True, False) End If DrawPokeBalls(New Vector2(Core.windowSize.Width - 292, Core.windowSize.Height - 112), BattleScreen, Core.Player.Pokemons, False) If BattleScreen.IsTrainerBattle = True Then DrawPokeBalls(New Vector2(38, 38), BattleScreen, BattleScreen.Trainer.Pokemons, True) End If Select Case MenuState Case MenuStates.Main DrawMainMenu(BattleScreen) Case MenuStates.Moves DrawMoveMenu(BattleScreen) End Select DrawWeather(BattleScreen) DrawTerrain(BattleScreen) End If End Sub Public Sub Update(ByRef BattleScreen As BattleScreen) Select Case MenuState Case MenuStates.Main UpdateMainMenu(BattleScreen) Case MenuStates.Moves UpdateMoveMenu(BattleScreen) End Select End Sub Private _allItemsExtended As Integer = 0 Private _selectedItemExtended As Integer = 0 Private _nextMenuState As MenuStates = MenuStates.Main Private _retractMenu As Boolean = False Private _isRetracting As Boolean = False Private _isExtracting As Boolean = True Private _moveMenuIndex As Integer = 0 Private _moveMenuNextIndex As Integer = 0 Private _moveMenuItemList As New List(Of MoveMenuItem) Private _moveMenuCreatedID As String = "" Private _moveMenuAlpha As Integer = 255 Private _moveMenuChoseMove As Boolean = False Private _mainMenuIndex As Integer = 0 Private _mainMenuNextIndex As Integer = 0 Private _mainMenuItemList As New List(Of MainMenuItem) Private _mainMenuTeamPreviewAlpha As Integer = 0 Private _mainMenuTeamPreviewLastIndex As Integer = -1 Public Delegate Sub D_MainMenuClick(ByVal BattleScreen As BattleScreen) Public Delegate Sub D_MoveMenuClick(ByVal BattleScreen As BattleScreen) Class MainMenuItem Private IconSelected As Texture2D Private IconUnselected As Texture2D Private IconFading As Integer Public Text As String Public Index As Integer Private Texture As Texture2D Private ClickAction As D_MainMenuClick Public Sub New(ByVal IconIndex As Integer, ByVal Text As String, ByVal Index As Integer, ByVal ClickAction As D_MainMenuClick) If IconIndex > 4 Then Me.IconUnselected = TextureManager.GetTexture("GUI\Battle\Interface", New Rectangle(160 + (IconIndex - 5) * 24, 56, 24, 24), "") Me.IconSelected = TextureManager.GetTexture("GUI\Battle\Interface", New Rectangle(160 + (IconIndex - 5) * 24, 80, 24, 24), "") Else Me.IconUnselected = TextureManager.GetTexture("GUI\Battle\Interface", New Rectangle(IconIndex * 24, 56, 24, 24), "") Me.IconSelected = TextureManager.GetTexture("GUI\Battle\Interface", New Rectangle(IconIndex * 24, 80, 24, 24), "") End If Me.IconFading = 0 Me.Text = Text Me.Index = Index Me.Texture = TextureManager.GetTexture("GUI\Menus\General") Me.ClickAction = ClickAction End Sub Public Sub Draw(ByVal AllExtended As Integer, ByVal SelExtended As Integer, ByVal isSelected As Boolean) Dim extraExtended As Integer = 0 If isSelected = True Then Canvas.DrawGradient(New Rectangle(Core.ScreenSize.Width - 255, 100 + Index * 96, 255, 112), New Color(42, 167, 198, 0), New Color(42, 167, 198, (SelExtended + AllExtended)), True, -1) extraExtended = SelExtended End If Core.SpriteBatch.Draw(Me.Texture, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended), 116 + Index * 96, 80, 80), New Rectangle(16, 16, 16, 16), Color.White) Core.SpriteBatch.Draw(Me.Texture, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 80, 116 + Index * 96, AllExtended + extraExtended - 80, 80), New Rectangle(32, 16, 16, 16), Color.White) Core.SpriteBatch.Draw(Me.IconUnselected, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 132 + Index * 96, 48, 48), Color.White) If isSelected = True Then Core.SpriteBatch.Draw(Me.IconSelected, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 132 + Index * 96, 48, 48), New Color(255, 255, 255, (SelExtended + AllExtended))) Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Text, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 86, 144 + Index * 96), New Color(0, 0, 0, (SelExtended + AllExtended))) Else If IconFading > 0 Then Core.SpriteBatch.Draw(Me.IconSelected, New Rectangle(Core.ScreenSize.Width - (AllExtended) + 28, 132 + Index * 96, 48, 48), New Color(255, 255, 255, IconFading)) End If End If End Sub Public Sub Update(ByVal BattleScreen As BattleScreen, ByVal AllExtended As Integer, ByVal isSelected As Boolean) Me.Activate(BattleScreen, AllExtended, isSelected) If isSelected = False Then If MouseHandler.IsInRectangle(New Rectangle(Core.ScreenSize.Width - (AllExtended) + 28, 132 + Index * 96, 48, 48)) = True Then If IconFading < 255 Then IconFading += 15 If IconFading > 255 Then IconFading = 255 End If End If Else If IconFading > 0 Then IconFading -= 15 If IconFading < 0 Then IconFading = 0 End If End If End If Else IconFading = 255 End If End Sub Public Sub Activate(ByVal BattleScreen As BattleScreen, ByVal AllExtended As Integer, ByVal isSelected As Boolean) If BattleScreen.BattleMenu._isExtracting = False And BattleScreen.BattleMenu._isRetracting = False Then If Controls.Accept(False, True, True) = True And isSelected = True Then Me.ClickAction(BattleScreen) End If If Controls.Accept(True, False, False) = True Then If MouseHandler.IsInRectangle(New Rectangle(Core.ScreenSize.Width - 255, 116 + Index * 96, 255, 80)) = True Then If isSelected = True Then Me.ClickAction(BattleScreen) Else BattleScreen.BattleMenu._mainMenuNextIndex = Me.Index BattleScreen.BattleMenu._isRetracting = True End If End If End If End If End Sub End Class Class MoveMenuItem Private Move As Attack Public Index As Integer = 0 Private Texture As Texture2D Private ClickAction As D_MoveMenuClick Public Sub New(ByVal Index As Integer, ByVal Move As Attack, ByVal ClickAction As D_MoveMenuClick) Me.Index = Index Me.Move = Move Me.ClickAction = ClickAction Me.Texture = TextureManager.GetTexture("GUI\Menus\General") End Sub Public Sub Draw(ByVal AllExtended As Integer, ByVal SelExtended As Integer, ByVal isSelected As Boolean, ByVal BattleScreen As BattleScreen) Dim deductAlpha As Integer = 255 - BattleScreen.BattleMenu._moveMenuAlpha Dim extraExtended As Integer = 0 If isSelected = True Then Canvas.DrawGradient(New Rectangle(Core.ScreenSize.Width - 255, 100 + Index * 96, 255, 112), New Color(42, 167, 198, 0), New Color(42, 167, 198, (SelExtended + AllExtended) - deductAlpha), True, -1) extraExtended = SelExtended End If Core.SpriteBatch.Draw(Me.Texture, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended), 116 + Index * 96, 80, 80), New Rectangle(16, 16, 16, 16), New Color(255, 255, 255, 255 - deductAlpha)) Core.SpriteBatch.Draw(Me.Texture, New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 80, 116 + Index * 96, AllExtended + extraExtended - 80, 80), New Rectangle(32, 16, 16, 16), New Color(255, 255, 255, 255 - deductAlpha)) Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Menus\Types", Me.Move.Type.GetElementImage(), ""), New Rectangle(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 132 + Index * 96, 48, 16), New Color(255, 255, 255, 255 - deductAlpha)) If isSelected = True Then Dim ppColor As Color = GetPPColor() ppColor.A = CByte((extraExtended + AllExtended - deductAlpha).Clamp(0, 255)) Core.SpriteBatch.DrawString(FontManager.MiniFont, Me.Move.CurrentPP & "/" & Me.Move.MaxPP, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 150 + Index * 96), ppColor) Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Move.Name, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 86, 144 + Index * 96), New Color(0, 0, 0, (SelExtended + AllExtended) - deductAlpha)) Else Core.SpriteBatch.DrawString(FontManager.MiniFont, Me.Move.Name, New Vector2(Core.ScreenSize.Width - (AllExtended + extraExtended) + 28, 150 + Index * 96), New Color(0, 0, 0, 255 - (extraExtended + AllExtended) - deductAlpha)) End If End Sub Private Function GetPPColor() As Color Dim c As Color = Color.Black Dim per As Integer = CInt((Me.Move.CurrentPP / Me.Move.MaxPP) * 100) If per <= 50 And per > 25 Then c = Color.Orange ElseIf per <= 25 Then c = Color.IndianRed End If Return c End Function Public Sub Update(ByVal BattleScreen As BattleScreen, ByVal AllExtended As Integer, ByVal isSelected As Boolean) Me.Activate(BattleScreen, AllExtended, isSelected) End Sub Public Sub Activate(ByVal BattleScreen As BattleScreen, ByVal AllExtended As Integer, ByVal isSelected As Boolean) If BattleScreen.BattleMenu._isExtracting = False And BattleScreen.BattleMenu._isRetracting = False Then If Me.Move.CurrentPP > 0 Or isSelected = False Then If Controls.Accept(False, True, True) = True And isSelected = True Then Me.ClickAction(BattleScreen) End If If Controls.Accept(True, False, False) = True Then If MouseHandler.IsInRectangle(New Rectangle(Core.ScreenSize.Width - 255, 116 + Index * 96, 255, 80)) = True Then If isSelected = True Then Me.ClickAction(BattleScreen) Else BattleScreen.BattleMenu._moveMenuNextIndex = Me.Index BattleScreen.BattleMenu._isRetracting = True End If End If End If End If End If End Sub End Class Private Sub UpdateMenuOptions(ByRef MenuIndex As Integer, ByRef NextMenuIndex As Integer, ByVal ItemListCount As Integer) Dim l_canSelect As Boolean = True If _retractMenu = False Then If _isRetracting = True Then If _selectedItemExtended > 0 Then _selectedItemExtended -= 40 If _selectedItemExtended <= 0 Then _selectedItemExtended = 0 _isRetracting = False MenuIndex = NextMenuIndex _isExtracting = True End If End If l_canSelect = False ElseIf _isExtracting = True Then If _selectedItemExtended < 200 Then _selectedItemExtended += 40 If _selectedItemExtended >= 200 Then _selectedItemExtended = 200 _isExtracting = False End If End If l_canSelect = False End If End If If _retractMenu = True Then If _allItemsExtended > 0 Then _allItemsExtended -= 5 _selectedItemExtended -= 40 If _allItemsExtended <= 0 Then _allItemsExtended = 0 _selectedItemExtended = 0 _retractMenu = False MenuState = _nextMenuState _isExtracting = True End If End If l_canSelect = False ElseIf _allItemsExtended < 80 Then _allItemsExtended += 5 l_canSelect = False End If If l_canSelect = True Then If Controls.Down(True) = True Then NextMenuIndex = MenuIndex + 1 If NextMenuIndex = ItemListCount Then NextMenuIndex = 0 End If _isRetracting = True End If If Controls.Up(True) = True Then NextMenuIndex = MenuIndex - 1 If NextMenuIndex = -1 Then NextMenuIndex = ItemListCount - 1 End If _isRetracting = True End If End If End Sub #Region "MainMenu" Private Sub DrawMainMenu(ByVal BattleScreen As BattleScreen) For Each m As MainMenuItem In _mainMenuItemList m.Draw(_allItemsExtended, _selectedItemExtended, (m.Index = _mainMenuIndex)) Next End Sub Private Sub UpdateMainMenu(ByRef BattleScreen As BattleScreen) If BattleScreen.ClearMainMenuTime = True Then _mainMenuItemList.Clear() BattleScreen.ClearMainMenuTime = False End If If _mainMenuItemList.Count = 0 Then CreateMainMenuItems(BattleScreen) End If If _retractMenu = False Then For Each m As MainMenuItem In _mainMenuItemList m.Update(BattleScreen, _allItemsExtended, (m.Index = _mainMenuIndex)) Next End If UpdateMenuOptions(_mainMenuIndex, _mainMenuNextIndex, _mainMenuItemList.Count) End Sub Private Sub CreateMainMenuItems(ByRef BattleScreen As BattleScreen) _mainMenuItemList.Clear() Select Case BattleScreen.BattleMode Case BattleSystem.BattleScreen.BattleModes.Safari Dim safariBallText As String = "Safari Ball x" & Core.Player.Inventory.GetItemAmount(181).ToString() If Core.Player.Inventory.GetItemAmount(181) = 0 Then safariBallText = "No Safari Balls." End If _mainMenuItemList.Add(New MainMenuItem(4, safariBallText, 0, AddressOf MainMenuUseSafariBall)) _mainMenuItemList.Add(New MainMenuItem(0, "Throw Mud", 1, AddressOf MainMenuThrowMud)) _mainMenuItemList.Add(New MainMenuItem(0, "Throw Bait", 2, AddressOf MainMenuThrowBait)) _mainMenuItemList.Add(New MainMenuItem(3, "Run", 3, AddressOf MainMenuRun)) Case BattleSystem.BattleScreen.BattleModes.BugContest _mainMenuItemList.Add(New MainMenuItem(0, "Battle", 0, AddressOf MainMenuOpenBattleMenu)) Dim sportBallText As String = "Sport Ball x" & Core.Player.Inventory.GetItemAmount(177).ToString() If Core.Player.Inventory.GetItemAmount(177) = 0 Then sportBallText = "No Sport Balls." End If _mainMenuItemList.Add(New MainMenuItem(4, sportBallText, 1, AddressOf MainMenuUseSportBall)) _mainMenuItemList.Add(New MainMenuItem(1, "Pokémon", 2, AddressOf MainMenuOpenPokemon)) _mainMenuItemList.Add(New MainMenuItem(3, "Run", 3, AddressOf MainMenuRun)) Case BattleSystem.BattleScreen.BattleModes.Standard If BattleScreen.OwnFaint Then _mainMenuIndex = 0 _mainMenuNextIndex = 0 _mainMenuItemList.Add(New MainMenuItem(1, "Pokémon", 0, AddressOf MainMenuOpenPokemon)) If BattleScreen.IsRemoteBattle AndAlso Not BattleScreen.IsHost Then BattleScreen.OwnFaint = False End If ElseIf BattleScreen.OppFaint And BattleScreen.IsRemoteBattle Then If BattleScreen.IsHost Then BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.Battle.InitializeRound(BattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Text, .Argument = "The client sends the next pokemon!"}) Else BattleScreen.OwnStatistics.Switches += 1 BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.SendClientCommand("TEXT|" & "The host sends the next pokemon!") End If BattleScreen.OppFaint = False Else _mainMenuItemList.Add(New MainMenuItem(0, "Battle", 0, AddressOf MainMenuOpenBattleMenu)) _mainMenuItemList.Add(New MainMenuItem(1, "Pokémon", 1, AddressOf MainMenuOpenPokemon)) _mainMenuItemList.Add(New MainMenuItem(2, "Bag", 2, AddressOf MainMenuOpenBag)) If BattleScreen.IsTrainerBattle = False Then _mainMenuItemList.Add(New MainMenuItem(3, "Run", 3, AddressOf MainMenuRun)) MainMenuAddMegaEvolution(BattleScreen, 4) Else MainMenuAddMegaEvolution(BattleScreen, 3) End If End If Case BattleSystem.BattleScreen.BattleModes.PVP _mainMenuItemList.Add(New MainMenuItem(0, "Battle", 0, AddressOf MainMenuOpenBattleMenu)) _mainMenuItemList.Add(New MainMenuItem(1, "Pokémon", 1, AddressOf MainMenuOpenPokemon)) _mainMenuItemList.Add(New MainMenuItem(3, "Surrender", 2, AddressOf MainMenuOpenBag)) End Select End Sub Private Sub MainMenuAddMegaEvolution(ByVal BattleScreen As BattleScreen, ByVal Index As Integer) 'Checks if the player has the Mega Bracelet. If Not (Core.Player.Inventory.GetItemAmount(576) > 0) Then Exit Sub End If If _mainMenuIndex >= 3 Then _mainMenuIndex = 0 End If If BattleScreen.FieldEffects.OwnMegaEvolved Then Exit Sub End If 'For i = 0 To Core.Player.Pokemons.Count - 1 ' Dim _str As String = Core.Player.Pokemons(i).AdditionalData ' Select Case _str ' Case "mega", "mega_x", "mega_y" ' Exit Sub ' Case Else ' 'do nothing ' End Select 'Next Dim PokeIndex As Integer = BattleScreen.OwnPokemonIndex If BattleScreen.FieldEffects.OwnMegaEvolved = False Then If Not Core.Player.Pokemons(PokeIndex).Item Is Nothing Then If Core.Player.Pokemons(PokeIndex).Item.IsMegaStone = True Then Dim megaStone = CType(Core.Player.Pokemons(PokeIndex).Item, Items.MegaStone) If megaStone.MegaPokemonNumber = Core.Player.Pokemons(PokeIndex).Number Then _mainMenuItemList.Add(New MainMenuItem(5, "Mega Evolve!", Index, AddressOf MainMenuMegaEvolve)) End If End If End If End If End Sub #End Region #Region "MainMenuActions" Private Sub MainMenuOpenBattleMenu(ByVal BattleScreen As BattleScreen) _retractMenu = True _nextMenuState = MenuStates.Moves BattleScreen.BattleQuery.Clear() Dim q As New CameraQueryObject(New Vector3(11, 0.5F, 14.0F), New Vector3(11, 0.5F, 14.0F), Screen.Camera.Speed, Screen.Camera.Speed, -(CSng(MathHelper.PiOver4) + 0.3F), -(CSng(MathHelper.PiOver4) + 0.3F), -0.3F, -0.3F, 0.04F, 0.04F) BattleScreen.BattleQuery.AddRange({q}) End Sub Private Sub MainMenuOpenPokemon(ByVal BattleScreen As BattleScreen) TempBattleScreen = BattleScreen Player.Temp.PokemonScreenIndex = BattleScreen.OwnPokemonIndex Dim selScreen = New PartyScreen(Core.CurrentScreen, Item.GetItemByID(5), AddressOf ShowPokemonMenu, "Choose Pokémon", True) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True} AddHandler selScreen.SelectedObject, AddressOf ShowPokemonMenuHandler Core.SetScreen(selScreen) End Sub Private Sub MainMenuOpenBag(ByVal BattleScreen As BattleScreen) If BattleScreen.CanUseItems = True Then TempBattleScreen = BattleScreen Dim selScreen As New NewInventoryScreen(Core.CurrentScreen) selScreen.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection selScreen.CanExit = True AddHandler selScreen.SelectedObject, AddressOf SelectedItemHandler Core.SetScreen(selScreen) End If End Sub Private Sub MainMenuRun(ByVal BattleScreen As BattleScreen) If BattleCalculation.CanRun(True, BattleScreen) = True And BattleScreen.CanRun = True Then BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.BattleQuery.Add(BattleScreen.FocusOwnPlayer()) BattleScreen.BattleQuery.Add(New PlaySoundQueryObject("Battle\running", False)) BattleScreen.BattleQuery.Add(New TextQueryObject("Got away safely!")) BattleScreen.BattleQuery.Add(New EndBattleQueryObject(False)) Battle.Won = True Battle.Fled = True Else BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.Battle.InitializeRound(BattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Text, .Argument = "Failed to run away."}) End If End Sub Private Sub MainMenuUseSafariBall(ByVal BattleScreen As BattleScreen) If Core.Player.Inventory.GetItemAmount(181) > 0 Then Core.Player.Inventory.RemoveItem(181, 1) BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) Core.SetScreen(New BattleCatchScreen(BattleScreen, Item.GetItemByID(181))) Dim safariBallText As String = "Safari Ball x" & Core.Player.Inventory.GetItemAmount(181).ToString() If Core.Player.Inventory.GetItemAmount(181) = 0 Then safariBallText = "No Safari Balls." End If _mainMenuItemList(0).Text = safariBallText End If End Sub Private Sub MainMenuUseSportBall(ByVal BattleScreen As BattleScreen) If Core.Player.Inventory.GetItemAmount(177) > 0 Then Core.Player.Inventory.RemoveItem(177, 1) BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) Core.SetScreen(New BattleCatchScreen(BattleScreen, Item.GetItemByID(177))) Dim sportBallText As String = "Sport Ball x" & Core.Player.Inventory.GetItemAmount(177).ToString() If Core.Player.Inventory.GetItemAmount(177) = 0 Then sportBallText = "No Sport Balls." End If _mainMenuItemList(0).Text = sportBallText End If End Sub Private Sub MainMenuThrowMud(ByVal BattleScreen As BattleScreen) If BattleScreen.PokemonSafariStatus > 0 Then BattleScreen.PokemonSafariStatus = 0 End If BattleScreen.PokemonSafariStatus -= Core.Random.Next(2, 5) BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.Battle.InitializeRound(BattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Text, .Argument = "Threw Mud at " & BattleScreen.OppPokemon.GetDisplayName() & "!"}) End Sub Private Sub MainMenuThrowBait(ByVal BattleScreen As BattleScreen) If BattleScreen.PokemonSafariStatus < 0 Then BattleScreen.PokemonSafariStatus = 0 End If BattleScreen.PokemonSafariStatus += Core.Random.Next(2, 5) BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.Battle.InitializeRound(BattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Text, .Argument = "Threw a Bait at " & BattleScreen.OppPokemon.GetDisplayName() & "!"}) End Sub Private Sub MainMenuMegaEvolve(ByVal BattleScreen As BattleScreen) _retractMenu = True _nextMenuState = MenuStates.Moves BattleScreen.BattleQuery.Clear() Dim q As New CameraQueryObject(New Vector3(11, 0.5F, 14.0F), New Vector3(11, 0.5F, 14.0F), Screen.Camera.Speed, Screen.Camera.Speed, -(CSng(MathHelper.PiOver4) + 0.3F), -(CSng(MathHelper.PiOver4) + 0.3F), -0.3F, -0.3F, 0.04F, 0.04F) BattleScreen.BattleQuery.AddRange({q}) BattleScreen.IsMegaEvolvingOwn = True For i = 0 To Core.Player.Pokemons.Count - 1 Dim _additionalData As String = Core.Player.Pokemons(i).AdditionalData Select Case _additionalData Case "mega", "mega_x", "mega_y" BattleScreen.IsMegaEvolvingOwn = False Case Else 'do nothing End Select Next End Sub #End Region #Region "MoveMenu" Private Sub DrawMoveMenu(ByVal BattleScreen As BattleScreen) For Each m As MoveMenuItem In _moveMenuItemList m.Draw(_allItemsExtended, _selectedItemExtended, (m.Index = _moveMenuIndex), BattleScreen) Next End Sub Private Sub UpdateMoveMenu(ByVal BattleScreen As BattleScreen) If BattleScreen.ClearMoveMenuTime = True Then _moveMenuItemList.Clear() BattleScreen.ClearMoveMenuTime = False End If If _moveMenuChoseMove = True Then _moveMenuAlpha -= 15 If _moveMenuAlpha <= 0 Then _moveMenuAlpha = 0 MoveMenuStartRound(BattleScreen) Visible = False End If Else UseStruggle(BattleScreen) If _moveMenuItemList.Count = 0 Or _moveMenuCreatedID <> BattleScreen.OwnPokemon.IndividualValue Or BattleScreen.IsChoiced Then If _moveMenuCreatedID <> BattleScreen.OwnPokemon.IndividualValue Then _moveMenuIndex = 0 End If CreateMoveMenuItems(BattleScreen) _moveMenuCreatedID = BattleScreen.OwnPokemon.IndividualValue End If If _retractMenu = False Then For Each m As MoveMenuItem In _moveMenuItemList m.Update(BattleScreen, _allItemsExtended, (m.Index = _moveMenuIndex)) Next End If UpdateMenuOptions(_moveMenuIndex, _moveMenuNextIndex, _moveMenuItemList.Count) If Controls.Dismiss(True, True, True) = True And _retractMenu = False And _isExtracting = False And _isRetracting = False Then _retractMenu = True _nextMenuState = MenuStates.Main BattleScreen.BattleQuery.Clear() For i = 0 To 99 BattleScreen.InsertCasualCameramove() Next Dim fQ As CameraQueryObject = CType(BattleScreen.BattleQuery(0), CameraQueryObject) Dim q As New CameraQueryObject(fQ.StartPosition, Screen.Camera.Position, 0.06F, 0.06F, fQ.StartYaw, Screen.Camera.Yaw, fQ.TargetPitch, Screen.Camera.Pitch, 0.06F, 0.06F) BattleScreen.BattleQuery.Insert(0, q) BattleScreen.IsMegaEvolvingOwn = False End If If BattleScreen.BattleQuery.Count = 0 Then For i = 0 To 50 Dim q As New CameraQueryObject(New Vector3(11.5, 0.5F, 13.0F), Screen.Camera.Position, 0.001F, Screen.Camera.Yaw, Screen.Camera.Pitch) Dim q1 As New CameraQueryObject(New Vector3(11, 0.5F, 14.0F), New Vector3(11.5, 0.5F, 13.0F), 0.001F, Screen.Camera.Yaw, Screen.Camera.Pitch) BattleScreen.BattleQuery.AddRange({q, q1}) Next End If End If End Sub Private Sub CreateMoveMenuItems(ByVal BattleScreen As BattleScreen) _moveMenuItemList.Clear() For i = 0 To BattleScreen.OwnPokemon.Attacks.Count - 1 _moveMenuItemList.Add(New MoveMenuItem(i, BattleScreen.OwnPokemon.Attacks(i), AddressOf MoveMenuChooseMove)) Next End Sub Private Sub MoveMenuChooseMove(ByVal BattleScreen As BattleScreen) _moveMenuChoseMove = True _moveMenuAlpha = 255 End Sub Private Sub MoveMenuStartRound(ByVal BattleScreen As BattleScreen) If BattleScreen.IsRemoteBattle = True And BattleScreen.IsHost = False Then BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) If BattleScreen.IsMegaEvolvingOwn Then BattleScreen.SendClientCommand("MEGA|" & BattleScreen.OwnPokemon.Attacks(_moveMenuIndex).ID.ToString()) BattleScreen.IsMegaEvolvingOwn = False BattleScreen.FieldEffects.OwnMegaEvolved = True Else BattleScreen.SendClientCommand("MOVE|" & BattleScreen.OwnPokemon.Attacks(_moveMenuIndex).ID.ToString()) End If Else If BattleScreen.IsMegaEvolvingOwn Then BattleScreen.FieldEffects.OwnMegaEvolved = True End If BattleScreen.OwnStatistics.Moves += 1 BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.Battle.InitializeRound(BattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Move, .Argument = BattleScreen.OwnPokemon.Attacks(_moveMenuIndex)}) End If _moveMenuChoseMove = False _moveMenuAlpha = 255 _moveMenuItemList.Clear() End Sub Private Sub UseStruggle(ByVal BattleScreen As BattleScreen) If BattleScreen.OwnPokemon.CountPP() <= 0 Then 'Use Struggle BattleScreen.BattleQuery.Clear() BattleScreen.BattleQuery.Add(BattleScreen.FocusBattle()) BattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) BattleScreen.Battle.InitializeRound(BattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Move, .Argument = Attack.GetAttackByID(165)}) End If End Sub #End Region #Region "SwitchPokemon" Shared TempBattleScreen As BattleScreen Private Shared Sub ShowPokemonMenuHandler(ByVal params As Object()) ShowPokemonMenu(CInt(params(0))) End Sub Private Shared Sub ShowPokemonMenu(ByVal PokeIndex As Integer) SwitchPokemonTo(PokeIndex) End Sub Private Shared Sub SwitchPokemonTo(ByVal PokeIndex As Integer) Dim Pokemon As Pokemon = Core.Player.Pokemons(PokeIndex) If PokeIndex = TempBattleScreen.OwnPokemonIndex Then Screen.TextBox.Show(Pokemon.GetDisplayName() & " is already~in battle!", {}, True, False) Else If Pokemon.IsEgg() = False Then If Pokemon.Status <> P3D.Pokemon.StatusProblems.Fainted Then If BattleCalculation.CanSwitch(TempBattleScreen, True) = False Then Screen.TextBox.Show("Cannot switch out.", {}, True, False) Else If TempBattleScreen.OwnPokemonIndex <> PokeIndex Then If TempBattleScreen.IsRemoteBattle = True And TempBattleScreen.IsHost = False Then TempBattleScreen.OppFaint = False TempBattleScreen.OwnStatistics.Switches += 1 TempBattleScreen.BattleQuery.Clear() TempBattleScreen.BattleQuery.Add(TempBattleScreen.FocusBattle()) TempBattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) TempBattleScreen.SendClientCommand("SWITCH|" & PokeIndex.ToString()) Else TempBattleScreen.BattleQuery.Clear() TempBattleScreen.BattleQuery.Add(TempBattleScreen.FocusBattle()) TempBattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) TempBattleScreen.Battle.InitializeRound(TempBattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Switch, .Argument = PokeIndex.ToString()}) End If End If End If Else Screen.TextBox.Show(Pokemon.GetDisplayName() & " is fainted!", {}, True, False) End If Else Screen.TextBox.Show("Cannot switch in~the egg!", {}, True, False) End If End If End Sub #End Region #Region "UseItem" Private Shared Sub SelectedItemHandler(ByVal params As Object()) SelectedItem(CInt(params(0))) End Sub Private Shared Sub SelectedItem(ByVal itemID As Integer) Dim Item As Item = Item.GetItemByID(itemID) If Item.CanBeUsedInBattle = True Then If Item.IsBall = True Then Core.Player.Inventory.RemoveItem(itemID, 1) If TempBattleScreen.IsTrainerBattle = False Then If BattleScreen.CanCatch = True Or CBool(GameModeManager.GetGameRuleValue("OnlyCaptureFirst", "0")) = True And Core.Player.PokeFiles.Contains(BattleScreen.TempPokeFile) = True Then TempBattleScreen.BattleQuery.Clear() TempBattleScreen.BattleQuery.Add(TempBattleScreen.FocusBattle()) TempBattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) Core.SetScreen(New BattleCatchScreen(TempBattleScreen, Item.GetItemByID(itemID))) PlayerStatistics.Track("[4]Poké Balls used", 1) Else TempBattleScreen.BattleQuery.Clear() TempBattleScreen.BattleQuery.Add(TempBattleScreen.FocusBattle()) TempBattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) TempBattleScreen.Battle.InitializeRound(TempBattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Text, .Argument = "The wild Pokémon blocked the Pokéball!"}) End If Else TempBattleScreen.BattleQuery.Clear() TempBattleScreen.BattleQuery.Add(TempBattleScreen.FocusBattle()) TempBattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) TempBattleScreen.Battle.InitializeRound(TempBattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Text, .Argument = "Hey! Don't be a thief!"}) End If Else TempItemID = itemID If Item.BattleSelectPokemon = True Then 'Core.SetScreen(New PartyScreen(Core.CurrentScreen, Item, AddressOf UseItem, "Use " & Item.Name, True)) Dim selScreen = New PartyScreen(Core.CurrentScreen, Item, AddressOf Item.UseOnPokemon, "Use " & Item.Name, True) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True} AddHandler selScreen.SelectedObject, AddressOf UseItemHandler Core.SetScreen(selScreen) Else UseItem(0) End If End If End If End Sub Shared TempItemID As Integer = -1 Private Shared Sub UseItemhandler(ByVal params As Object()) UseItem(CInt(params(0))) End Sub Private Shared Sub UseItem(ByVal PokeIndex As Integer) Dim Pokemon As Pokemon = Core.Player.Pokemons(PokeIndex) Dim Item As Item = Item.GetItemByID(TempItemID) TempBattleScreen.BattleQuery.Clear() If Item.UseOnPokemon(PokeIndex) = True Then TempBattleScreen.BattleQuery.Add(TempBattleScreen.FocusBattle()) TempBattleScreen.BattleQuery.Insert(0, New ToggleMenuQueryObject(True)) TempBattleScreen.Battle.InitializeRound(TempBattleScreen, New Battle.RoundConst With {.StepType = Battle.RoundConst.StepTypes.Item, .Argument = TempItemID.ToString()}) End If End Sub #End Region End Class End Namespace