2083 lines
79 KiB
VB.net
2083 lines
79 KiB
VB.net
Public Class Player
|
|
|
|
Inherits Security.HashSecureBase
|
|
|
|
#Region "Properties"
|
|
|
|
Public Property Name() As String
|
|
Get
|
|
Assert("_name", _name)
|
|
Return _name
|
|
End Get
|
|
Set(value As String)
|
|
Assert("_name", _name, value)
|
|
_name = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property RivalName() As String
|
|
Get
|
|
Return _rivalName
|
|
End Get
|
|
Set(value As String)
|
|
_rivalName = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Male() As Boolean
|
|
Get
|
|
Return _male
|
|
End Get
|
|
Set(value As Boolean)
|
|
_male = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Money() As Integer
|
|
Get
|
|
Return _money
|
|
End Get
|
|
Set(value As Integer)
|
|
_money = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property OT() As String
|
|
Get
|
|
Assert("_ot", _OT)
|
|
Return _OT
|
|
End Get
|
|
Set(value As String)
|
|
Assert("_ot", _OT, value)
|
|
_OT = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Points() As Integer
|
|
Get
|
|
Return _points
|
|
End Get
|
|
Set(value As Integer)
|
|
_points = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property BP() As Integer
|
|
Get
|
|
Return _BP
|
|
End Get
|
|
Set(value As Integer)
|
|
_BP = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Coins() As Integer
|
|
Get
|
|
Return _coins
|
|
End Get
|
|
Set(value As Integer)
|
|
_coins = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property HasPokedex() As Boolean
|
|
Get
|
|
Return _hasPokedex
|
|
End Get
|
|
Set(value As Boolean)
|
|
_hasPokedex = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property HasPokegear() As Boolean
|
|
Get
|
|
Return _hasPokegear
|
|
End Get
|
|
Set(value As Boolean)
|
|
_hasPokegear = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property LastRestPlace() As String
|
|
Get
|
|
Return _lastRestPlace
|
|
End Get
|
|
Set(value As String)
|
|
_lastRestPlace = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property LastRestPlacePosition() As String
|
|
Get
|
|
Return _lastRestPlacePosition
|
|
End Get
|
|
Set(value As String)
|
|
_lastRestPlacePosition = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property LastSavePlace() As String
|
|
Get
|
|
Return _lastSavePlace
|
|
End Get
|
|
Set(value As String)
|
|
_lastSavePlace = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property LastSavePlacePosition() As String
|
|
Get
|
|
Return _lastSavePlacePosition
|
|
End Get
|
|
Set(value As String)
|
|
_lastSavePlacePosition = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property RepelSteps() As Integer
|
|
Get
|
|
Return _repelSteps
|
|
End Get
|
|
Set(value As Integer)
|
|
_repelSteps = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property SaveCreated() As String
|
|
Get
|
|
Return _saveCreated
|
|
End Get
|
|
Set(value As String)
|
|
_saveCreated = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property DaycareSteps() As Integer
|
|
Get
|
|
Return _daycareSteps
|
|
End Get
|
|
Set(value As Integer)
|
|
_daycareSteps = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property GameMode() As String
|
|
Get
|
|
Return _gameMode
|
|
End Get
|
|
Set(value As String)
|
|
_gameMode = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property Skin() As String
|
|
Get
|
|
Return _skin
|
|
End Get
|
|
Set(value As String)
|
|
_skin = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property VisitedMaps() As String
|
|
Get
|
|
Return _visitedMaps
|
|
End Get
|
|
Set(value As String)
|
|
_visitedMaps = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property GTSStars() As Integer
|
|
Get
|
|
Return _GTSStars
|
|
End Get
|
|
Set(value As Integer)
|
|
_GTSStars = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property SandBoxMode() As Boolean
|
|
Get
|
|
Assert("_sandboxmode", _sandBoxMode)
|
|
Return _sandBoxMode
|
|
End Get
|
|
Set(value As Boolean)
|
|
Assert("_sandboxmode", _sandBoxMode, value)
|
|
_sandBoxMode = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property RegisterData() As String
|
|
Get
|
|
Return _registerData
|
|
End Get
|
|
Set(value As String)
|
|
_registerData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property BerryData() As String
|
|
Get
|
|
Return _berryData
|
|
End Get
|
|
Set(value As String)
|
|
_berryData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property PokedexData() As String
|
|
Get
|
|
Return _pokedexData
|
|
End Get
|
|
Set(value As String)
|
|
_pokedexData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property ItemData() As String
|
|
Get
|
|
Return _itemData
|
|
End Get
|
|
Set(value As String)
|
|
_itemData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property BoxData() As String
|
|
Get
|
|
Return _boxData
|
|
End Get
|
|
Set(value As String)
|
|
_boxData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property NPCData() As String
|
|
Get
|
|
Return _NPCData
|
|
End Get
|
|
Set(value As String)
|
|
_NPCData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property ApricornData() As String
|
|
Get
|
|
Return _apricornData
|
|
End Get
|
|
Set(value As String)
|
|
_apricornData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property SecretBaseData() As String
|
|
Get
|
|
Return _secretBaseData
|
|
End Get
|
|
Set(value As String)
|
|
_secretBaseData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property DaycareData() As String
|
|
Get
|
|
Return _daycareData
|
|
End Get
|
|
Set(value As String)
|
|
_daycareData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property HallOfFameData() As String
|
|
Get
|
|
Return _hallOfFameData
|
|
End Get
|
|
Set(value As String)
|
|
_hallOfFameData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property RoamingPokemonData() As String
|
|
Get
|
|
Return _roamingPokemonData
|
|
End Get
|
|
Set(value As String)
|
|
_roamingPokemonData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property HistoryData() As String
|
|
Get
|
|
Return _historyData
|
|
End Get
|
|
Set(value As String)
|
|
_historyData = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property IsGameJoltSave() As Boolean
|
|
Get
|
|
Assert("_isgamejoltsave", _isGamejoltSave)
|
|
Return _isGamejoltSave
|
|
End Get
|
|
Set(value As Boolean)
|
|
Assert("_isgamejoltsave", _isGamejoltSave, value)
|
|
_isGamejoltSave = value
|
|
End Set
|
|
End Property
|
|
|
|
Public Property EmblemBackground() As String
|
|
Get
|
|
Assert("_emblembackground", _emblemBackground)
|
|
Return _emblemBackground
|
|
End Get
|
|
Set(value As String)
|
|
Assert("_emblembackground", _emblemBackground, value)
|
|
_emblemBackground = value
|
|
End Set
|
|
End Property
|
|
|
|
#End Region
|
|
|
|
'Non-base datatypes:
|
|
Public Pokemons As New List(Of Pokemon)
|
|
Public Pokedexes As New List(Of Pokedex)
|
|
Public Inventory As New PlayerInventory
|
|
Public Badges As New List(Of Integer)
|
|
Public PlayTime As TimeSpan
|
|
Public GameStart As Date
|
|
Public LastPokemonPosition As Vector3 = New Vector3(999, 999, 999)
|
|
Public PokeFiles As New List(Of String)
|
|
Public EarnedAchievements As New List(Of String)
|
|
Public PokegearModules As New List(Of Integer)
|
|
Public PhoneContacts As New List(Of String)
|
|
Public Mails As New List(Of Items.MailItem.MailData)
|
|
Public Trophies As New List(Of Integer)
|
|
|
|
'Non-secure fields:
|
|
Public ShowBattleAnimations As Integer = 2
|
|
Public BoxAmount As Integer = 10
|
|
Public DiagonalMovement As Boolean = False
|
|
Public DifficultyMode As Integer = 0
|
|
Public BattleStyle As Integer = 1
|
|
Public ShowModelsInBattle As Boolean = True
|
|
Public TempSurfSkin As String = "Hilbert"
|
|
Public TempRideSkin As String = ""
|
|
Public Statistics As String = ""
|
|
|
|
'Secure fields:
|
|
Private _name As String = "<playername>"
|
|
Private _rivalName As String = ""
|
|
Private _male As Boolean = True
|
|
Private _money As Integer = 0
|
|
Private _OT As String = "00000"
|
|
Private _points As Integer = 0
|
|
Private _BP As Integer = 0
|
|
Private _coins As Integer = 0
|
|
Private _hasPokedex As Boolean = False
|
|
Private _hasPokegear As Boolean = False
|
|
Private _lastRestPlace As String = "yourroom.dat"
|
|
Private _lastRestPlacePosition As String = "1,0.1,3"
|
|
Private _lastSavePlace As String = "yourroom.dat"
|
|
Private _lastSavePlacePosition As String = "1,0.1,3"
|
|
Private _repelSteps As Integer = 0
|
|
Private _saveCreated As String = "Pre 0.21"
|
|
Private _daycareSteps As Integer = 0
|
|
Private _gameMode As String = "Kolben"
|
|
Private _skin As String = "Hilbert"
|
|
Private _visitedMaps As String = ""
|
|
Private _GTSStars As Integer = 8
|
|
Private _sandBoxMode As Boolean = False
|
|
|
|
Private _registerData As String = ""
|
|
Private _berryData As String = ""
|
|
Private _pokedexData As String = ""
|
|
Private _itemData As String = ""
|
|
Private _boxData As String = ""
|
|
Private _NPCData As String = ""
|
|
Private _apricornData As String = ""
|
|
Private _secretBaseData As String = ""
|
|
Private _daycareData As String = ""
|
|
Private _hallOfFameData As String = ""
|
|
Private _roamingPokemonData As String = ""
|
|
Private _historyData As String = ""
|
|
Private _isGamejoltSave As Boolean = False
|
|
Private _emblemBackground As String = "standard"
|
|
|
|
Public startPosition As Vector3 = New Vector3(14, 0.1, 10)
|
|
Public startRotation As Single = 0
|
|
Public startFreeCameraMode As Boolean = False
|
|
Public startMap As String = "barktown.dat"
|
|
Public startFOV As Single = 45.0F
|
|
Public startRotationSpeed As Integer = 12
|
|
Public startThirdPerson As Boolean = False
|
|
Public startSurfing As Boolean = False
|
|
Public startRiding As Boolean = False
|
|
|
|
Public filePrefix As String = "nilllzz"
|
|
Public newFilePrefix As String = ""
|
|
Public AutosaveUsed As Boolean = False
|
|
Public loadedSave As Boolean = False
|
|
|
|
Public PlayerTemp As New PlayerTemp()
|
|
|
|
Public Structure Temp
|
|
Public Shared PokemonScreenIndex As Integer = 0
|
|
Public Shared PokemonStatusPageIndex As Integer = 0
|
|
Public Shared BagIndex As Integer = 0
|
|
Public Shared BagSelectIndex As Integer = 0
|
|
Public Shared MenuIndex As Integer = 0
|
|
Public Shared PokedexIndex As Integer = 0
|
|
Public Shared PokemonSummaryPageIndex As Integer = 0
|
|
Public Shared PCBoxIndex As Integer = 0
|
|
Public Shared StorageSystemCursorPosition As New Vector2(1, 0)
|
|
Public Shared OptionScreenIndex As Integer = 0
|
|
Public Shared MapSwitch(3) As Boolean
|
|
Public Shared LastPosition As Vector3
|
|
Public Shared IsInBattle As Boolean = False
|
|
Public Shared BeforeBattlePosition As Vector3 = New Vector3(0)
|
|
Public Shared BeforeBattleLevelFile As String = "yourroom.dat"
|
|
Public Shared BeforeBattleFacing As Integer = 0
|
|
Public Shared PokedexModeIndex As Integer = 0
|
|
Public Shared PokedexHabitatIndex As Integer = 0
|
|
Public Shared PokegearPage As Integer = 0
|
|
Public Shared LastCall As Integer = 32
|
|
Public Shared LastUsedRepel As Integer = -1
|
|
Public Shared MapSteps As Integer = 0
|
|
Public Shared HallOfFameIndex As Integer = 0
|
|
Public Shared PCBoxChooseMode As Boolean = False
|
|
Public Shared PCSelectionType As StorageSystemScreen.SelectionModes = StorageSystemScreen.SelectionModes.SingleMove
|
|
Public Shared RadioStation As Decimal = 0D
|
|
Public Shared LastPokegearPage As GameJolt.PokegearScreen.MenuScreens = GameJolt.PokegearScreen.MenuScreens.Main
|
|
End Structure
|
|
|
|
Private Sub ResetTemp()
|
|
Temp.PokemonScreenIndex = 0
|
|
Temp.PokemonStatusPageIndex = 0
|
|
Temp.BagIndex = 0
|
|
Temp.BagSelectIndex = 0
|
|
Temp.MenuIndex = 0
|
|
Temp.PokedexIndex = 0
|
|
Temp.PCBoxIndex = 0
|
|
Temp.OptionScreenIndex = 0
|
|
Temp.IsInBattle = False
|
|
For i = 0 To 3
|
|
Temp.MapSwitch(i) = True
|
|
Next
|
|
Temp.PokedexModeIndex = 0
|
|
Temp.PokedexHabitatIndex = 0
|
|
Temp.PokegearPage = 0
|
|
Temp.LastCall = 32
|
|
Temp.LastUsedRepel = -1
|
|
Temp.MapSteps = 0
|
|
Temp.HallOfFameIndex = 0
|
|
Temp.PCBoxChooseMode = False
|
|
Temp.StorageSystemCursorPosition = New Vector2(1, 0)
|
|
Temp.PCSelectionType = StorageSystemScreen.SelectionModes.SingleMove
|
|
Temp.RadioStation = 0D
|
|
Temp.LastPokegearPage = GameJolt.PokegearScreen.MenuScreens.Main
|
|
End Sub
|
|
|
|
#Region "Load"
|
|
|
|
Public Sub LoadGame(ByVal filePrefix As String)
|
|
For Each s As String In Core.GameOptions.ContentPackNames
|
|
ContentPackManager.Load(GameController.GamePath & "\ContentPacks\" & s & "\exceptions.dat")
|
|
Next
|
|
|
|
GameModeManager.CreateGameModesFolder()
|
|
GameModeManager.CreateKolbenMode()
|
|
|
|
ScriptStorage.Clear()
|
|
ScriptBlock.TriggeredScriptBlock = False
|
|
MysteryEventScreen.ClearActivatedEvents()
|
|
Pokedex.AutoDetect = True
|
|
LevelLoader.ClearTempStructures()
|
|
BattleSystem.BattleScreen.ResetVars()
|
|
World.RegionWeatherSet = False
|
|
|
|
Me.filePrefix = filePrefix
|
|
PokeFiles.Clear()
|
|
GameMode = "Kolben"
|
|
|
|
LoadPlayer()
|
|
|
|
If GameModeManager.GameModeExists(GameMode) = False Then
|
|
GameMode = "Kolben"
|
|
GameModeManager.SetGameModePointer("Kolben")
|
|
Else
|
|
GameModeManager.SetGameModePointer(GameMode)
|
|
End If
|
|
|
|
BattleSystem.GameModeAttackLoader.Load()
|
|
|
|
If IsGameJoltSave = True Then
|
|
SandBoxMode = False
|
|
End If
|
|
|
|
Localization.ReloadGameModeTokens()
|
|
|
|
SmashRock.Load()
|
|
Badge.Load()
|
|
Pokedex.Load()
|
|
PokemonInteractions.Load()
|
|
PokemonForms.Initialize()
|
|
|
|
LoadPokedex()
|
|
LoadParty()
|
|
LoadItems()
|
|
LoadBerries()
|
|
LoadApricorns()
|
|
LoadDaycare()
|
|
LoadOptions()
|
|
LoadRegister()
|
|
LoadItemData()
|
|
LoadBoxData()
|
|
LoadNPCData()
|
|
LoadHallOfFameData()
|
|
LoadSecretBaseData()
|
|
LoadRoamingPokemonData()
|
|
LoadStatistics()
|
|
|
|
PlayerTemp.Reset()
|
|
ResetTemp()
|
|
Chat.ClearChat()
|
|
|
|
If AutosaveUsed = True Then
|
|
IO.Directory.Delete(GameController.GamePath & "\Save\" & Me.filePrefix, True)
|
|
|
|
Me.filePrefix = newFilePrefix
|
|
AutosaveUsed = False
|
|
|
|
Dim outputString As String = newFilePrefix
|
|
|
|
Core.GameMessage.ShowMessage(Localization.GetString("game_message_continue_autosave") & " """ & outputString & """", 12, FontManager.MainFont, Color.White)
|
|
|
|
newFilePrefix = ""
|
|
End If
|
|
|
|
If IsGameJoltSave = True Then
|
|
lastLevel = GameJolt.Emblem.GetPlayerLevel(GameJoltSave.Points)
|
|
OT = GameJoltSave.GameJoltID
|
|
End If
|
|
|
|
Entity.MakeShake = Name.ToLower() = "drunknilllzz"
|
|
|
|
''' Indev 0.54 Removal List
|
|
''' 1. All Mega Stones. [ID: 507 - 553]
|
|
''' 2. Shiny Candy [ID: 501]
|
|
If Not ActionScript.IsRegistered("PokemonIndev054Update") Then
|
|
' Check Inventory.
|
|
Inventory.RemoveItem(501)
|
|
For i As Integer = 507 To 553 Step +1
|
|
Inventory.RemoveItem(i)
|
|
Next
|
|
|
|
' Check Party Pokemon.
|
|
For Each Pokemon As Pokemon In Pokemons
|
|
If Pokemon.Item IsNot Nothing AndAlso (Pokemon.Item.ID >= 501 OrElse (Pokemon.Item.ID >= 507 AndAlso Pokemon.Item.ID <= 553)) Then
|
|
Pokemon.Item = Nothing
|
|
End If
|
|
Next
|
|
|
|
' Check PC Boxes.
|
|
If Not String.IsNullOrWhiteSpace(BoxData) Then
|
|
Dim TempBoxData As New List(Of String)
|
|
TempBoxData.AddRange(BoxData.SplitAtNewline())
|
|
|
|
For Each item As String In TempBoxData
|
|
If Not String.IsNullOrWhiteSpace(item) AndAlso Not item.StartsWith("BOX") Then
|
|
Dim TempString As String = item.Remove(item.IndexOf("{"))
|
|
Dim TempPokemon As Pokemon = Pokemon.GetPokemonByData(item.Remove(0, item.IndexOf("{")))
|
|
|
|
If TempPokemon.Item IsNot Nothing AndAlso (TempPokemon.Item.ID >= 501 OrElse (TempPokemon.Item.ID >= 507 AndAlso TempPokemon.Item.ID <= 553)) Then
|
|
TempPokemon.Item = Nothing
|
|
End If
|
|
|
|
item = TempString & TempPokemon.ToString()
|
|
End If
|
|
Next
|
|
|
|
BoxData = String.Join(Environment.NewLine, TempBoxData)
|
|
End If
|
|
|
|
' Check Day Care.
|
|
If Not String.IsNullOrWhiteSpace(DaycareData) Then
|
|
Dim TempDaycareData As New List(Of String)
|
|
TempDaycareData.AddRange(DaycareData.SplitAtNewline())
|
|
|
|
For Each item As String In TempDaycareData
|
|
If Not String.IsNullOrWhiteSpace(item) AndAlso item.Contains("{") Then
|
|
Dim TempString As String = ItemData.Remove(item.IndexOf("{"))
|
|
Dim TempPokemon As Pokemon = Pokemon.GetPokemonByData(item.Remove(0, item.IndexOf("{")))
|
|
|
|
If TempPokemon.Item IsNot Nothing AndAlso (TempPokemon.Item.ID >= 501 OrElse (TempPokemon.Item.ID >= 507 AndAlso TempPokemon.Item.ID <= 553)) Then
|
|
TempPokemon.Item = Nothing
|
|
End If
|
|
|
|
item = TempString & TempPokemon.ToString()
|
|
End If
|
|
Next
|
|
|
|
DaycareData = String.Join(Environment.NewLine, TempDaycareData)
|
|
End If
|
|
|
|
ActionScript.RegisterID("PokemonIndev054Update")
|
|
End If
|
|
|
|
''' Indev 0.54.2 OT Fix List.
|
|
If Not ActionScript.IsRegistered("PokemonIndev0542Update") Then
|
|
' Check Party Pokemon.
|
|
For Each Pokemon As Pokemon In Pokemons
|
|
If String.Equals(Pokemon.CatchTrainerName, Core.Player.Name, StringComparison.OrdinalIgnoreCase) AndAlso Pokemon.OT <> GameJoltSave.GameJoltID Then
|
|
Pokemon.OT = GameJoltSave.GameJoltID
|
|
End If
|
|
Next
|
|
|
|
' Check PC Boxes.
|
|
If Not String.IsNullOrWhiteSpace(BoxData) Then
|
|
Dim TempBoxData As New List(Of String)
|
|
TempBoxData.AddRange(BoxData.SplitAtNewline())
|
|
|
|
For Each item As String In TempBoxData
|
|
If Not String.IsNullOrWhiteSpace(item) AndAlso Not item.StartsWith("BOX") Then
|
|
Dim TempString As String = item.Remove(item.IndexOf("{"))
|
|
Dim TempPokemon As Pokemon = Pokemon.GetPokemonByData(item.Remove(0, item.IndexOf("{")))
|
|
|
|
If String.Equals(TempPokemon.CatchTrainerName, Core.Player.Name, StringComparison.OrdinalIgnoreCase) AndAlso TempPokemon.OT <> GameJoltSave.GameJoltID Then
|
|
TempPokemon.OT = GameJoltSave.GameJoltID
|
|
End If
|
|
|
|
item = TempString & TempPokemon.ToString()
|
|
End If
|
|
Next
|
|
|
|
BoxData = String.Join(Environment.NewLine, TempBoxData)
|
|
End If
|
|
|
|
' Check Day Care.
|
|
If Not String.IsNullOrWhiteSpace(DaycareData) Then
|
|
Dim TempDaycareData As New List(Of String)
|
|
TempDaycareData.AddRange(DaycareData.SplitAtNewline())
|
|
|
|
For Each item As String In TempDaycareData
|
|
If Not String.IsNullOrWhiteSpace(item) AndAlso item.Contains("{") Then
|
|
Dim TempString As String = ItemData.Remove(item.IndexOf("{"))
|
|
Dim TempPokemon As Pokemon = Pokemon.GetPokemonByData(item.Remove(0, item.IndexOf("{")))
|
|
|
|
If String.Equals(TempPokemon.CatchTrainerName, Core.Player.Name, StringComparison.OrdinalIgnoreCase) AndAlso TempPokemon.OT <> GameJoltSave.GameJoltID Then
|
|
TempPokemon.OT = GameJoltSave.GameJoltID
|
|
End If
|
|
|
|
item = TempString & TempPokemon.ToString()
|
|
End If
|
|
Next
|
|
|
|
DaycareData = String.Join(Environment.NewLine, TempDaycareData)
|
|
End If
|
|
|
|
' Remove Duplicate data.
|
|
Core.Player.PokeFiles = Core.Player.PokeFiles.Distinct().ToList()
|
|
|
|
ActionScript.RegisterID("PokemonIndev0542Update")
|
|
End If
|
|
|
|
loadedSave = True
|
|
End Sub
|
|
|
|
Private Sub LoadParty()
|
|
Pokemons.Clear()
|
|
|
|
Dim PokeData() As String
|
|
If IsGameJoltSave = True Then
|
|
PokeData = GameJoltSave.Party.SplitAtNewline()
|
|
Else
|
|
PokeData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Party.dat").SplitAtNewline()
|
|
End If
|
|
|
|
If PokeData.Count > 0 AndAlso PokeData(0) <> "" Then
|
|
For Each Line As String In PokeData
|
|
If Line.StartsWith("{") = True And Line.EndsWith("}") = True Then
|
|
Dim p As Pokemon = Pokemon.GetPokemonByData(Line)
|
|
|
|
If p.IsEgg() = False Then
|
|
If p.IsShiny = True Then
|
|
PokedexData = Pokedex.ChangeEntry(PokedexData, p.Number, 3)
|
|
Else
|
|
PokedexData = Pokedex.ChangeEntry(PokedexData, p.Number, 2)
|
|
End If
|
|
End If
|
|
|
|
Pokemons.Add(p)
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadPlayer()
|
|
Dim Data() As String
|
|
If IsGameJoltSave = True Then
|
|
Data = GameJoltSave.Player.SplitAtNewline()
|
|
Else
|
|
Data = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Player.dat").SplitAtNewline()
|
|
End If
|
|
|
|
If Not Screen.Level Is Nothing Then
|
|
Screen.Level.Riding = False
|
|
End If
|
|
|
|
For Each Line As String In Data
|
|
If Line <> "" And Line.Contains("|") = True Then
|
|
Dim ID As String = Line.Remove(Line.IndexOf("|"))
|
|
Dim Value As String = Line.Remove(0, Line.IndexOf("|") + 1)
|
|
Select Case ID.ToLower()
|
|
Case "name"
|
|
Name = Value
|
|
|
|
If IsGameJoltSave = True Then
|
|
If Name.ToLower() <> GameJolt.API.username.ToLower() Then
|
|
Name = GameJolt.API.username
|
|
End If
|
|
End If
|
|
Case "position"
|
|
Dim v() As String = Value.Split(CChar(","))
|
|
startPosition.X = CSng(v(0).Replace(".", GameController.DecSeparator))
|
|
startPosition.Y = CSng(v(1).Replace(".", GameController.DecSeparator))
|
|
startPosition.Z = CSng(v(2).Replace(".", GameController.DecSeparator))
|
|
Case "lastpokemonposition"
|
|
Dim v() As String = Value.Split(CChar(","))
|
|
LastPokemonPosition.X = CSng(v(0).Replace(".", GameController.DecSeparator))
|
|
LastPokemonPosition.Y = CSng(v(1).Replace(".", GameController.DecSeparator))
|
|
LastPokemonPosition.Z = CSng(v(2).Replace(".", GameController.DecSeparator))
|
|
Case "mapfile"
|
|
startMap = Value
|
|
Case "rivalname"
|
|
RivalName = Value
|
|
Case "money"
|
|
Money = CInt(Value)
|
|
Case "badges"
|
|
Badges.Clear()
|
|
|
|
If Value = "0" Then
|
|
Badges = New List(Of Integer)
|
|
Else
|
|
If Value.Contains(",") = False Then
|
|
Badges = {CInt(Value)}.ToList()
|
|
Else
|
|
Dim l As List(Of String) = Value.Split(CChar(",")).ToList()
|
|
|
|
For i = 0 To l.Count - 1
|
|
Badges.Add(CInt(l(i)))
|
|
Next
|
|
End If
|
|
End If
|
|
Case "rotation"
|
|
startRotation = CSng(Value.Replace(".", GameController.DecSeparator))
|
|
Case "Gender"
|
|
If Value = "Male" Then
|
|
Male = True
|
|
Else
|
|
Male = False
|
|
End If
|
|
Case "playtime"
|
|
Dim dd() As String = Value.Split(CChar(","))
|
|
If dd.Count >= 4 Then
|
|
PlayTime = New TimeSpan(CInt(dd(3)), CInt(dd(0)), CInt(dd(1)), CInt(dd(2)))
|
|
Else
|
|
PlayTime = New TimeSpan(CInt(dd(0)), CInt(dd(1)), CInt(dd(2)))
|
|
End If
|
|
Case "ot"
|
|
OT = CStr(CInt(Value).Clamp(0, 99999))
|
|
Case "points"
|
|
Points = CInt(Value)
|
|
Case "haspokedex"
|
|
HasPokedex = CBool(Value)
|
|
Case "haspokegear"
|
|
HasPokegear = CBool(Value)
|
|
Case "freecamera"
|
|
startFreeCameraMode = CBool(Value)
|
|
Case "thirdperson"
|
|
startThirdPerson = CBool(Value)
|
|
Case "skin"
|
|
Skin = Value
|
|
Case "battleanimations"
|
|
ShowBattleAnimations = CInt(Value)
|
|
Case "boxamount"
|
|
BoxAmount = CInt(Value)
|
|
Case "lastrestplace"
|
|
LastRestPlace = Value
|
|
Case "lastrestplaceposition"
|
|
LastRestPlacePosition = Value
|
|
Case "diagonalmovement"
|
|
If GameController.IS_DEBUG_ACTIVE = True Then
|
|
DiagonalMovement = CBool(Value)
|
|
Else
|
|
DiagonalMovement = False
|
|
End If
|
|
Case "repelsteps"
|
|
RepelSteps = CInt(Value)
|
|
Case "lastsaveplace"
|
|
LastSavePlace = Value
|
|
Case "lastsaveplaceposition"
|
|
LastSavePlacePosition = Value
|
|
Case "difficulty"
|
|
DifficultyMode = CInt(Value)
|
|
Case "battlestyle"
|
|
BattleStyle = CInt(Value)
|
|
Case "savecreated"
|
|
SaveCreated = Value
|
|
Case "autosave"
|
|
If IsGameJoltSave = False Then
|
|
newFilePrefix = Value
|
|
AutosaveUsed = True
|
|
End If
|
|
Case "daycaresteps"
|
|
DaycareSteps = CInt(Value)
|
|
Case "gamemode"
|
|
GameMode = Value
|
|
Case "pokefiles"
|
|
If Value <> "" Then
|
|
If Value.Contains(",") = True Then
|
|
PokeFiles.AddRange(Value.Split(CChar(",")))
|
|
Else
|
|
PokeFiles.Add(Value)
|
|
End If
|
|
End If
|
|
Case "visitedmaps"
|
|
VisitedMaps = Value
|
|
Case "tempsurfskin"
|
|
TempSurfSkin = Value
|
|
Case "surfing"
|
|
startSurfing = CBool(Value)
|
|
Case "bp"
|
|
BP = CInt(Value)
|
|
Case "gtsstars"
|
|
GTSStars = CInt(Value)
|
|
Case "showmodels"
|
|
ShowModelsInBattle = CBool(Value)
|
|
Case "sandboxmode"
|
|
SandBoxMode = CBool(Value)
|
|
Case "earnedachievements"
|
|
If Value <> "" Then
|
|
EarnedAchievements = Value.Split(CChar(",")).ToList()
|
|
End If
|
|
End Select
|
|
Else
|
|
Logger.Log(Logger.LogTypes.Warning, "Player.vb: The line """ & Line & """ is either empty or does not conform the player.dat file rules.")
|
|
End If
|
|
Next
|
|
|
|
If IsGameJoltSave = True And startSurfing = False Then
|
|
Skin = GameJolt.Emblem.GetPlayerSpriteFile(GameJolt.Emblem.GetPlayerLevel(GameJoltSave.Points), GameJoltSave.GameJoltID, GameJoltSave.Gender)
|
|
Select Case GameJoltSave.Gender
|
|
Case "0"
|
|
Male = True
|
|
Case "1"
|
|
Male = False
|
|
Case Else
|
|
Male = True
|
|
End Select
|
|
End If
|
|
|
|
GameStart = Date.Now
|
|
End Sub
|
|
|
|
Private Sub LoadOptions()
|
|
Dim Data() As String
|
|
If IsGameJoltSave = True Then
|
|
Data = GameJoltSave.Options.SplitAtNewline()
|
|
Else
|
|
Data = IO.File.ReadAllLines(GameController.GamePath & "\Save\" & filePrefix & "\Options.dat")
|
|
End If
|
|
|
|
For Each Line As String In Data
|
|
If Line.Contains("|") = True Then
|
|
Dim ID As String = Line.Remove(Line.IndexOf("|"))
|
|
Dim Value As String = Line.Remove(0, Line.IndexOf("|") + 1)
|
|
Select Case ID.ToLower()
|
|
Case "fov"
|
|
startFOV = CSng(Value.Replace(".", GameController.DecSeparator)).Clamp(1, 179)
|
|
Case "textspeed"
|
|
TextBox.TextSpeed = CInt(Value)
|
|
Case "mousespeed"
|
|
startRotationSpeed = CInt(Value)
|
|
End Select
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub LoadItems()
|
|
Inventory.Clear()
|
|
Mails.Clear()
|
|
|
|
Dim Data As String
|
|
If IsGameJoltSave = True Then
|
|
Data = GameJoltSave.Items
|
|
Else
|
|
Data = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Items.dat")
|
|
End If
|
|
|
|
If Data <> "" Then
|
|
Dim ItemData() As String = Data.SplitAtNewline()
|
|
|
|
For Each ItemDat As String In ItemData
|
|
If ItemDat <> "" And ItemDat.StartsWith("{") = True And ItemDat.EndsWith("}") = True And ItemDat.Contains("|") = True Then
|
|
Dim ItemID As String = ItemDat.Remove(0, ItemDat.IndexOf("{") + 1)
|
|
ItemID = ItemID.Remove(ItemID.IndexOf("}"))
|
|
|
|
Dim amount As Integer = CInt(ItemID.Remove(0, ItemID.IndexOf("|") + 1))
|
|
ItemID = ItemID.Remove(ItemID.IndexOf("|"))
|
|
|
|
Inventory.AddItem(CInt(ItemID), amount)
|
|
Else
|
|
If ItemDat <> "" And ItemDat.StartsWith("Mail|") = True Then
|
|
Dim mailData As String = ItemDat.Remove(0, 5)
|
|
Mails.Add(Items.MailItem.GetMailDataFromString(mailData))
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadBerries()
|
|
If IsGameJoltSave = True Then
|
|
Core.Player.BerryData = GameJoltSave.Berries
|
|
Else
|
|
Core.Player.BerryData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Berries.dat")
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadApricorns()
|
|
If IsGameJoltSave = True Then
|
|
Core.Player.ApricornData = GameJoltSave.Apricorns
|
|
Else
|
|
Core.Player.ApricornData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Apricorns.dat")
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadDaycare()
|
|
Core.Player.DaycareData = ""
|
|
If IsGameJoltSave = True Then
|
|
Core.Player.DaycareData = GameJoltSave.Daycare
|
|
Else
|
|
If IO.File.Exists(GameController.GamePath & "\Save\" & filePrefix & "\Daycare.dat") = True Then
|
|
Core.Player.DaycareData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Daycare.dat")
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadPokedex()
|
|
If IsGameJoltSave = True Then
|
|
PokedexData = GameJoltSave.Pokedex
|
|
Else
|
|
PokedexData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Pokedex.dat")
|
|
End If
|
|
|
|
If PokedexData = "" Then
|
|
PokedexData = Pokedex.NewPokedex()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadRegister()
|
|
If IsGameJoltSave = True Then
|
|
RegisterData = GameJoltSave.Register
|
|
Else
|
|
RegisterData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Register.dat")
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadItemData()
|
|
If IsGameJoltSave = True Then
|
|
ItemData = GameJoltSave.ItemData
|
|
Else
|
|
ItemData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\ItemData.dat")
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadBoxData()
|
|
If IsGameJoltSave = True Then
|
|
BoxData = GameJoltSave.Box
|
|
Else
|
|
BoxData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Box.dat")
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadNPCData()
|
|
If IsGameJoltSave = True Then
|
|
NPCData = GameJoltSave.NPC
|
|
Else
|
|
NPCData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\NPC.dat")
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadHallOfFameData()
|
|
If IsGameJoltSave = True Then
|
|
HallOfFameData = GameJoltSave.HallOfFame
|
|
Else
|
|
If IO.File.Exists(GameController.GamePath & "\Save\" & filePrefix & "\HallOfFame.dat") = True Then
|
|
HallOfFameData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\HallOfFame.dat")
|
|
Else
|
|
HallOfFameData = ""
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadSecretBaseData()
|
|
If IsGameJoltSave = True Then
|
|
SecretBaseData = GameJoltSave.SecretBase
|
|
Else
|
|
If IO.File.Exists(GameController.GamePath & "\Save\" & filePrefix & "\SecretBase.dat") = True Then
|
|
SecretBaseData = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\SecretBase.dat")
|
|
Else
|
|
SecretBaseData = ""
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadRoamingPokemonData()
|
|
RoamingPokemonData = ""
|
|
If IsGameJoltSave = True Then
|
|
RoamingPokemonData = GameJoltSave.RoamingPokemon
|
|
Else
|
|
If IO.File.Exists(GameController.GamePath & "\Save\" & filePrefix & "\RoamingPokemon.dat") = True Then
|
|
For Each line As String In IO.File.ReadAllLines(GameController.GamePath & "\Save\" & filePrefix & "\RoamingPokemon.dat")
|
|
If RoamingPokemonData <> "" Then
|
|
RoamingPokemonData &= Environment.NewLine
|
|
End If
|
|
If line.CountSeperators("|") < 5 Then
|
|
'Convert potential old data:
|
|
Dim data() As String = line.Split(CChar("|"))
|
|
Dim newP As Pokemon = Pokemon.GetPokemonByID(CInt(data(0)))
|
|
newP.Generate(CInt(data(1)), True)
|
|
|
|
RoamingPokemonData &= newP.Number.ToString() & "|" & newP.Level.ToString() & "|" & data(2) & "|" & data(3) & "||" & newP.GetSaveData()
|
|
Else
|
|
RoamingPokemonData &= line
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadStatistics()
|
|
If IsGameJoltSave = True Then
|
|
Statistics = GameJoltSave.Statistics
|
|
Else
|
|
If IO.File.Exists(GameController.GamePath & "\Save\" & filePrefix & "\Statistics.dat") = True Then
|
|
Statistics = IO.File.ReadAllText(GameController.GamePath & "\Save\" & filePrefix & "\Statistics.dat")
|
|
Else
|
|
Statistics = ""
|
|
End If
|
|
End If
|
|
PlayerStatistics.Load(Statistics)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "Save"
|
|
|
|
Dim GameJoltTempStoreString As New Dictionary(Of String, String)
|
|
|
|
Public Sub SaveGame(ByVal IsAutosave As Boolean)
|
|
SaveGameHelpers.ResetSaveCounter()
|
|
|
|
If IsAutosave = True Then
|
|
newFilePrefix = filePrefix
|
|
filePrefix = "autosave"
|
|
|
|
If IO.Directory.Exists(GameController.GamePath & "\Save\autosave") = False Then
|
|
IO.Directory.CreateDirectory(GameController.GamePath & "\Save\autosave")
|
|
End If
|
|
Else
|
|
newFilePrefix = filePrefix
|
|
End If
|
|
|
|
GameJoltTempStoreString.Clear()
|
|
|
|
If Not IsGameJoltSave Then
|
|
If IO.Directory.Exists(GameController.GamePath & "\Save\" & filePrefix) = False Then
|
|
IO.Directory.CreateDirectory(GameController.GamePath & "\Save\" & filePrefix)
|
|
End If
|
|
End If
|
|
|
|
SavePlayer(IsAutosave)
|
|
SaveParty()
|
|
SaveItems()
|
|
SaveBerries()
|
|
SaveApricorns()
|
|
SaveDaycare()
|
|
SaveOptions()
|
|
SavePokedex()
|
|
SaveRegister()
|
|
SaveItemData()
|
|
SaveBoxData()
|
|
SaveNPCData()
|
|
SaveHallOfFameData()
|
|
SaveSecretBaseData()
|
|
SaveRoamingPokemonData()
|
|
SaveStatistics()
|
|
|
|
filePrefix = newFilePrefix
|
|
|
|
If IsGameJoltSave = True Then
|
|
If Core.GameOptions.Extras.Contains("Backup Save Feature") Then
|
|
If Not Directory.Exists(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID.ToString() & "/Encrypted") Then
|
|
Directory.CreateDirectory(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID.ToString() & "/Encrypted")
|
|
End If
|
|
|
|
Dim OriginalHASH As String =
|
|
Encryption.EncryptString(GetApricornsData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetBerriesData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetBoxData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetDaycareData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetHallOfFameData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetItemDataData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetItemsData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetNPCDataData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetOptionsData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetPartyData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetPlayerData(False), StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetPokedexData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetRegisterData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetRoamingPokemonData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetSecretBaseData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)) & "|" &
|
|
Encryption.EncryptString(GetStatisticsData, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID))
|
|
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID.ToString() & "/Encrypted/Encrypted.dat",
|
|
OriginalHASH & "|" & Encryption.EncryptString(OriginalHASH, StringObfuscation.Obfuscate(GameJoltSave.GameJoltID)))
|
|
|
|
Dim timestamp As String = Date.Now.ToString("yyyy-MM-dd_HH.mm.ss")
|
|
|
|
If Not Directory.Exists(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp) Then
|
|
Directory.CreateDirectory(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp)
|
|
End If
|
|
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Apricorns.dat", GetApricornsData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Berries.dat", GetBerriesData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Box.dat", GetBoxData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Daycare.dat", GetDaycareData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/HallOfFame.dat", GetHallOfFameData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/ItemData.dat", GetItemDataData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Items.dat", GetItemsData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/NPC.dat", GetNPCDataData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Options.dat", GetOptionsData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Party.dat", GetPartyData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Player.dat", GetPlayerData(False))
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Pokedex.dat", GetPokedexData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Register.dat", GetRegisterData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/RoamingPokemon.dat", GetRoamingPokemonData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/SecretBase.dat", GetSecretBaseData)
|
|
File.WriteAllText(GameController.GamePath & "/Backup Save/" & GameJoltSave.GameJoltID & "/" & timestamp & "/Statistics.dat", GetStatisticsData)
|
|
End If
|
|
|
|
Dim APICallSave As New GameJolt.APICall(AddressOf SaveGameHelpers.CompleteGameJoltSave)
|
|
AddHandler APICallSave.CallFails, Sub(ByVal ex As Exception)
|
|
SaveGameHelpers.CompleteGameJoltSave("false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false" & Environment.NewLine & "false")
|
|
End Sub
|
|
|
|
Dim keys As New List(Of String)
|
|
Dim dataItems As New List(Of String)
|
|
Dim useUsername As New List(Of Boolean)
|
|
|
|
For i = 0 To GameJoltTempStoreString.Count - 1
|
|
keys.Add(GameJoltTempStoreString.Keys(i))
|
|
dataItems.Add(GameJoltTempStoreString.Values(i))
|
|
useUsername.Add(True)
|
|
Next
|
|
APICallSave.SetStorageData(keys.ToArray(), dataItems.ToArray(), useUsername.ToArray())
|
|
|
|
SavePublicVars()
|
|
|
|
GameJoltSave.UpdatePlayerScore()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SavePublicVars()
|
|
If GameJolt.LogInScreen.UserBanned(GameJoltSave.GameJoltID) = False Then
|
|
Dim APICallPoints As New GameJolt.APICall(AddressOf SaveGameHelpers.AddGameJoltSaveCounter)
|
|
APICallPoints.SetStorageData("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|points", GameJoltSave.Points.ToString(), False)
|
|
|
|
Dim APICallEmblem As New GameJolt.APICall(AddressOf SaveGameHelpers.AddGameJoltSaveCounter)
|
|
APICallEmblem.SetStorageData("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|emblem", GameJoltSave.Emblem, False)
|
|
|
|
Dim APICallGender As New GameJolt.APICall(AddressOf SaveGameHelpers.AddGameJoltSaveCounter)
|
|
APICallGender.SetStorageData("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|gender", GameJoltSave.Gender, False)
|
|
End If
|
|
End Sub
|
|
|
|
Public Function GetPartyData() As String
|
|
Dim Data As String = ""
|
|
For i = 0 To Pokemons.Count - 1
|
|
If Data <> "" Then
|
|
Data &= Environment.NewLine
|
|
End If
|
|
Data &= Pokemons(i).GetSaveData()
|
|
Next
|
|
Return Data
|
|
End Function
|
|
|
|
Public Function GetPlayerData(ByVal IsAutosave As Boolean) As String
|
|
Dim GenderString As String = ""
|
|
If Male = True Then
|
|
GenderString = "Male"
|
|
Else
|
|
GenderString = "Female"
|
|
End If
|
|
|
|
Dim badgeString As String = ""
|
|
If Badges.Count > 0 Then
|
|
For i = 0 To Badges.Count - 1
|
|
If i <> 0 Then
|
|
badgeString &= ","
|
|
End If
|
|
badgeString &= Badges(i).ToString()
|
|
Next
|
|
Else
|
|
badgeString = "0"
|
|
End If
|
|
|
|
Dim hasPokedexString As String = HasPokedex.ToNumberString()
|
|
|
|
Dim c As OverworldCamera = GetOverworldCamera()
|
|
Dim freeCameraString As String = c.FreeCameraMode.ToNumberString()
|
|
|
|
Dim diff As Integer = (Date.Now - GameStart).Seconds
|
|
Dim p As TimeSpan = PlayTime + TimeHelpers.ConvertSecondToTime(diff)
|
|
Dim PlayTimeString As String = p.Hours & "," & p.Minutes & "," & p.Seconds & "," & p.Days
|
|
|
|
Dim lastPokemonPosition As String = "999,999,999"
|
|
If Screen.Level.OverworldPokemon.Visible = True Then
|
|
lastPokemonPosition = (Screen.Level.OverworldPokemon.Position.X.ToString().Replace(GameController.DecSeparator, ".") & "," & Screen.Level.OverworldPokemon.Position.Y.ToString().Replace(GameController.DecSeparator, ".") & "," & Screen.Level.OverworldPokemon.Position.Z.ToString().Replace(GameController.DecSeparator, "."))
|
|
End If
|
|
|
|
Dim PokeFilesString As String = ""
|
|
If PokeFiles.Count > 0 Then
|
|
For Each pokefile As String In PokeFiles
|
|
If PokeFilesString <> "" Then
|
|
PokeFilesString &= ","
|
|
End If
|
|
|
|
PokeFilesString &= pokefile
|
|
Next
|
|
End If
|
|
|
|
Dim EarnedAchievementsString As String = ""
|
|
If EarnedAchievements.Count > 0 Then
|
|
For Each ea As String In EarnedAchievements
|
|
If EarnedAchievementsString <> "" Then
|
|
EarnedAchievementsString &= ","
|
|
End If
|
|
|
|
EarnedAchievementsString &= ea
|
|
Next
|
|
End If
|
|
|
|
Dim skin As String = Screen.Level.OwnPlayer.SkinName
|
|
If Screen.Level.Riding = True Then
|
|
skin = TempRideSkin
|
|
End If
|
|
|
|
Dim Data As String = "Name|" & Name & Environment.NewLine &
|
|
"Position|" & c.Position.X.ToString().Replace(GameController.DecSeparator, ".") & "," & c.Position.Y.ToString.Replace(GameController.DecSeparator, ".") & "," & c.Position.Z.ToString().Replace(GameController.DecSeparator, ".") & Environment.NewLine &
|
|
"MapFile|" & Screen.Level.LevelFile & Environment.NewLine &
|
|
"Rotation|" & c.Yaw.ToString.Replace(GameController.DecSeparator, ".") & Environment.NewLine &
|
|
"RivalName|" & RivalName & Environment.NewLine &
|
|
"Money|" & Money & Environment.NewLine &
|
|
"Badges|" & badgeString & Environment.NewLine &
|
|
"Gender|" & GenderString & Environment.NewLine &
|
|
"PlayTime|" & PlayTimeString & Environment.NewLine &
|
|
"OT|" & OT & Environment.NewLine &
|
|
"Points|" & Points.ToString() & Environment.NewLine &
|
|
"hasPokedex|" & hasPokedexString & Environment.NewLine &
|
|
"hasPokegear|" & HasPokegear.ToNumberString() & Environment.NewLine &
|
|
"freeCamera|" & freeCameraString & Environment.NewLine &
|
|
"thirdPerson|" & c.ThirdPerson.ToNumberString() & Environment.NewLine &
|
|
"skin|" & skin & Environment.NewLine &
|
|
"location|" & Screen.Level.MapName & Environment.NewLine &
|
|
"battleAnimations|" & ShowBattleAnimations.ToString() & Environment.NewLine &
|
|
"BoxAmount|" & BoxAmount.ToString() & Environment.NewLine &
|
|
"LastRestPlace|" & LastRestPlace & Environment.NewLine &
|
|
"LastRestPlacePosition|" & LastRestPlacePosition & Environment.NewLine &
|
|
"DiagonalMovement|" & DiagonalMovement.ToNumberString() & Environment.NewLine &
|
|
"RepelSteps|" & RepelSteps.ToString() & Environment.NewLine &
|
|
"LastSavePlace|" & LastSavePlace & Environment.NewLine &
|
|
"LastSavePlacePosition|" & LastSavePlacePosition & Environment.NewLine &
|
|
"Difficulty|" & DifficultyMode.ToString() & Environment.NewLine &
|
|
"BattleStyle|" & BattleStyle.ToString() & Environment.NewLine &
|
|
"saveCreated|" & SaveCreated & Environment.NewLine &
|
|
"LastPokemonPosition|" & lastPokemonPosition & Environment.NewLine &
|
|
"DaycareSteps|" & DaycareSteps.ToString() & Environment.NewLine &
|
|
"GameMode|" & GameMode & Environment.NewLine &
|
|
"PokeFiles|" & PokeFilesString & Environment.NewLine &
|
|
"VisitedMaps|" & VisitedMaps & Environment.NewLine &
|
|
"TempSurfSkin|" & TempSurfSkin & Environment.NewLine &
|
|
"Surfing|" & Screen.Level.Surfing.ToNumberString() & Environment.NewLine &
|
|
"BP|" & BP & Environment.NewLine &
|
|
"ShowModels|" & ShowModelsInBattle.ToNumberString() & Environment.NewLine &
|
|
"GTSStars|" & GTSStars & Environment.NewLine &
|
|
"SandBoxMode|" & SandBoxMode.ToNumberString() & Environment.NewLine &
|
|
"EarnedAchievements|" & EarnedAchievementsString
|
|
|
|
If IsAutosave = True Then
|
|
Data &= Environment.NewLine & "AutoSave|" & newFilePrefix
|
|
End If
|
|
|
|
Return Data
|
|
End Function
|
|
|
|
Public Function GetOptionsData() As String
|
|
Dim c As OverworldCamera = GetOverworldCamera()
|
|
|
|
Dim FOVstring As String = c.FOV.ToString.Replace(",", ".")
|
|
Dim MouseSpeedString As String = CStr(c.RotationSpeed * 10000)
|
|
Dim TextSpeedString As String = CStr(TextBox.TextSpeed)
|
|
|
|
Dim Data As String = "FOV|" & FOVstring & Environment.NewLine &
|
|
"TextSpeed|" & TextSpeedString & Environment.NewLine &
|
|
"MouseSpeed|" & MouseSpeedString
|
|
|
|
Return Data
|
|
End Function
|
|
|
|
Public Function GetItemsData() As String
|
|
Dim Data As String = ""
|
|
|
|
For Each c In Inventory
|
|
If Data <> "" Then
|
|
Data &= Environment.NewLine
|
|
End If
|
|
|
|
Data &= "{" & c.ItemID & "|" & c.Amount & "}"
|
|
Next
|
|
|
|
For Each mail As Items.MailItem.MailData In Mails
|
|
If Data <> "" Then
|
|
Data &= Environment.NewLine
|
|
End If
|
|
Data &= "Mail|" & Items.MailItem.GetStringFromMail(mail)
|
|
Next
|
|
|
|
Return Data
|
|
End Function
|
|
|
|
Public Function GetBerriesData() As String
|
|
Return BerryData
|
|
End Function
|
|
|
|
Public Function GetApricornsData() As String
|
|
Return ApricornData
|
|
End Function
|
|
|
|
Public Function GetDaycareData() As String
|
|
Return DaycareData
|
|
End Function
|
|
|
|
Public Function GetPokedexData() As String
|
|
Return PokedexData
|
|
End Function
|
|
|
|
Public Function GetRegisterData() As String
|
|
Return RegisterData
|
|
End Function
|
|
|
|
Public Function GetItemDataData() As String
|
|
Return ItemData
|
|
End Function
|
|
|
|
Public Function GetBoxData() As String
|
|
Return BoxData
|
|
End Function
|
|
|
|
Public Function GetNPCDataData() As String
|
|
Return NPCData
|
|
End Function
|
|
|
|
Public Function GetHallOfFameData() As String
|
|
Return HallOfFameData
|
|
End Function
|
|
|
|
Public Function GetSecretBaseData() As String
|
|
Return SecretBaseData
|
|
End Function
|
|
|
|
Public Function GetRoamingPokemonData() As String
|
|
Return RoamingPokemonData
|
|
End Function
|
|
|
|
Public Function GetStatisticsData() As String
|
|
Return Statistics
|
|
End Function
|
|
|
|
Private Function GetOverworldCamera() As OverworldCamera
|
|
Dim baseScreen As Screen = CurrentScreen
|
|
While Not baseScreen.PreScreen Is Nothing
|
|
baseScreen = baseScreen.PreScreen
|
|
End While
|
|
|
|
If baseScreen.Identification = Screen.Identifications.BattleScreen Then
|
|
Return CType(CType(baseScreen, BattleSystem.BattleScreen).SavedOverworld.Camera, OverworldCamera)
|
|
ElseIf baseScreen.Identification = Screen.Identifications.CreditsScreen Then
|
|
Return CType(CType(baseScreen, CreditsScreen).SavedOverworld.Camera, OverworldCamera)
|
|
ElseIf baseScreen.Identification = Screen.Identifications.HallofFameScreen Then
|
|
Return CType(CType(baseScreen, HallOfFameScreen).SavedOverworld.Camera, OverworldCamera)
|
|
End If
|
|
|
|
Return CType(Screen.Camera, OverworldCamera)
|
|
End Function
|
|
|
|
Private Sub SaveParty()
|
|
Dim Data As String = GetPartyData()
|
|
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|party", Data)
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Party.dat", Data)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SavePlayer(ByVal IsAutosave As Boolean)
|
|
Dim Data As String = GetPlayerData(IsAutosave)
|
|
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|player", Data)
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Player.dat", Data)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveOptions()
|
|
Dim Data As String = GetOptionsData()
|
|
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|options", Data)
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Options.dat", Data)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveItems()
|
|
Inventory.RemoveItem(177) 'Removing Sport Balls if player has those.
|
|
|
|
Dim Data As String = GetItemsData()
|
|
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|items", Data)
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Items.dat", Data)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveBerries()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|berries", GetBerriesData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Berries.dat", GetBerriesData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveApricorns()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|apricorns", GetApricornsData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Apricorns.dat", GetApricornsData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveDaycare()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|daycare", GetDaycareData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Daycare.dat", GetDaycareData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SavePokedex()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|pokedex", GetPokedexData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Pokedex.dat", GetPokedexData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveRegister()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|register", GetRegisterData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Register.dat", GetRegisterData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveItemData()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|itemdata", GetItemDataData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\ItemData.dat", GetItemDataData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveBoxData()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|box", GetBoxData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Box.dat", GetBoxData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveNPCData()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|npc", GetNPCDataData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\NPC.dat", GetNPCDataData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveHallOfFameData()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|halloffame", GetHallOfFameData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\HallOfFame.dat", GetHallOfFameData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveSecretBaseData()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|secretbase", GetSecretBaseData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\SecretBase.dat", GetSecretBaseData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveRoamingPokemonData()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|roamingpokemon", GetRoamingPokemonData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\RoamingPokemon.dat", GetRoamingPokemonData())
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SaveStatistics()
|
|
Statistics = PlayerStatistics.GetData()
|
|
If IsGameJoltSave = True Then
|
|
GameJoltTempStoreString.Add("saveStorageV" & GameJolt.GamejoltSave.VERSION & "|" & GameJoltSave.GameJoltID & "|statistics", GetStatisticsData())
|
|
Else
|
|
IO.File.WriteAllText(GameController.GamePath & "\Save\" & filePrefix & "\Statistics.dat", GetStatisticsData())
|
|
End If
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "Heal"
|
|
|
|
Public Sub HealParty()
|
|
For i = 0 To Pokemons.Count - 1
|
|
Pokemons(i).FullRestore()
|
|
Next
|
|
End Sub
|
|
|
|
Public Sub HealParty(ByVal Members() As Integer)
|
|
For Each member As Integer In Members
|
|
If Pokemons.Count - 1 >= member Then
|
|
Pokemons(member).FullRestore()
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "Pokemon"
|
|
|
|
Public ReadOnly Property CountFightablePokemon() As Integer
|
|
Get
|
|
Dim i As Integer = 0
|
|
|
|
For Each Pokemon As Pokemon In Pokemons
|
|
If Pokemon.Status <> Pokemon.StatusProblems.Fainted And Pokemon.EggSteps = 0 And Pokemon.HP > 0 Then
|
|
i += 1
|
|
End If
|
|
Next
|
|
Return i
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property CanCatchPokémon() As Boolean
|
|
Get
|
|
Dim data() As String = BoxData.ToArray("§")
|
|
If data.Count >= BoxAmount * 30 Then
|
|
Return False
|
|
End If
|
|
Return True
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property SurfPokemon() As Integer
|
|
Get
|
|
For i = 0 To Pokemons.Count - 1
|
|
Dim p As Pokemon = Pokemons(i)
|
|
|
|
If p.IsEgg() = False Then
|
|
For Each a As BattleSystem.Attack In p.Attacks
|
|
If a.Name.ToLower() = "surf" Then
|
|
Return i
|
|
End If
|
|
Next
|
|
End If
|
|
Next
|
|
If GameController.IS_DEBUG_ACTIVE = True Or Core.Player.SandBoxMode = True Then
|
|
Return 0
|
|
Else
|
|
Return -1
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public Function GetWalkPokemon() As Pokemon
|
|
If Pokemons.Count = 0 Then
|
|
Return Nothing
|
|
End If
|
|
|
|
For i = 0 To Pokemons.Count - 1
|
|
If Pokemons(i).Status <> Pokemon.StatusProblems.Fainted And Pokemons(i).IsEgg() = False Then
|
|
Return Pokemons(i)
|
|
End If
|
|
Next
|
|
Return Nothing
|
|
End Function
|
|
|
|
Public Function GetValidPokemonCount() As Integer
|
|
Dim c As Integer = 0
|
|
For Each p As Pokemon In Core.Player.Pokemons
|
|
If p.Status <> Pokemon.StatusProblems.Fainted And p.EggSteps = 0 Then
|
|
c += 1
|
|
End If
|
|
Next
|
|
Return c
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "Steps"
|
|
|
|
Public IsFlying As Boolean = False
|
|
|
|
'===STEP EVENT INFORMATION===
|
|
'Events when taking a step | Priority | Event Type | Resolution if Not fired
|
|
'---------------------------|-----------|---------------|--------------------------------------------------------------------------------
|
|
'ScriptBlock trigger | 0 | ScriptBlock | Always fire!
|
|
'Trainer Is in sight | 1 | Script | Ignore, will be activated when walked by on a different tile. Design failure.
|
|
'Egg hatches | 2 | Screen change | Will happen On Next Step automatically.
|
|
'Repel wears out | 3 | Script | Add one Step To the repel counter, so the Event happens On the Next Step.
|
|
'Wild Pokémon appears | 4 | WildPokemon | Just ignore, random Event
|
|
'Pokegear call | 5 | Script | Just ignore, Not too important
|
|
'----------------------------------------------------------------------------------------------------------------------------------------
|
|
'All Script Events need a special check condition set.
|
|
'Script Blocks are handled externally.
|
|
'
|
|
'Additional things to do that always fire:
|
|
' - Set the player's LastPosition
|
|
' - Add to the daycare cycle, if it finishes, do daycare events, add to the friendship value of Pokémon, add points and check or following pokemon pickup.
|
|
' - Apply shaders to following pokemon and player, and make following pokemon visible
|
|
' - make wild Pokémon noises
|
|
' - add to the Temp map step count
|
|
' - track the statistic for walked steps.
|
|
|
|
Private _stepEventStartedTrainer As Boolean = False
|
|
Private _stepEventRepelMessage As Boolean = False
|
|
Private _stepEventEggHatched As Boolean = False
|
|
|
|
Public Sub TakeStep(ByVal stepAmount As Integer)
|
|
_stepEventEggHatched = False
|
|
_stepEventRepelMessage = False
|
|
_stepEventStartedTrainer = False
|
|
|
|
If IsFlying = False Then
|
|
'Set the last position:
|
|
Temp.LastPosition = Screen.Camera.Position
|
|
|
|
'Increment step counters:
|
|
Screen.Level.WalkedSteps += 1
|
|
Temp.MapSteps += 1
|
|
DaycareSteps += stepAmount
|
|
PlayerStatistics.Track("Steps taken", stepAmount)
|
|
|
|
'Daycare cycle:
|
|
PlayerTemp.DayCareCycle -= stepAmount
|
|
If PlayerTemp.DayCareCycle <= 0 Then
|
|
Daycare.EggCircle()
|
|
|
|
'Every 256 steps, add friendship to the Pokémon in the player's team.
|
|
For Each p As Pokemon In Pokemons
|
|
If p.Status <> Pokemon.StatusProblems.Fainted And p.IsEgg() = False Then
|
|
p.ChangeFriendShip(Pokemon.FriendShipCauses.Walking)
|
|
End If
|
|
Next
|
|
|
|
AddPoints(1, "Completed an Egg Circle.")
|
|
|
|
PokemonInteractions.CheckForRandomPickup()
|
|
End If
|
|
|
|
'Apply shaders and set following pokemon:
|
|
Screen.Level.OwnPlayer.ApplyShaders()
|
|
Screen.Level.OverworldPokemon.ApplyShaders()
|
|
|
|
Screen.Level.OverworldPokemon.ChangeRotation()
|
|
Screen.Level.OverworldPokemon.MakeVisible()
|
|
|
|
'Make wild pokemon noises:
|
|
MakeWildPokemonNoise()
|
|
|
|
StepEventCheckTrainers()
|
|
StepEventCheckEggHatching(stepAmount)
|
|
StepEventCheckRepel(stepAmount)
|
|
StepEventWildPokemon()
|
|
StepEventPokegearCall()
|
|
Else
|
|
IsFlying = False
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub StepEventCheckTrainers()
|
|
If CanFireStepEvent() = True Then
|
|
Screen.Level.CheckTrainerSights()
|
|
If CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
|
|
If CType(CurrentScreen, OverworldScreen).ActionScript.IsReady = False Then
|
|
_stepEventStartedTrainer = True
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub StepEventCheckEggHatching(ByVal stepAmount As Integer)
|
|
If CanFireStepEvent() = True Then
|
|
Dim addEggSteps As Integer = stepAmount
|
|
For Each p As Pokemon In Pokemons
|
|
If p.Ability.Name.ToLower() = "magma armor" Or p.Ability.Name.ToLower() = "flame body" Then
|
|
addEggSteps *= Random.Next(1, 4)
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Dim eggsReady As New List(Of Pokemon)
|
|
For Each p As Pokemon In Pokemons
|
|
If p.EggSteps > 0 Then
|
|
p.EggSteps += addEggSteps
|
|
If p.EggSteps >= p.BaseEggSteps Then
|
|
eggsReady.Add(p)
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If eggsReady.Count > 0 Then
|
|
For Each p As Pokemon In eggsReady
|
|
Pokemons.Remove(p)
|
|
Next
|
|
|
|
SetScreen(New TransitionScreen(CurrentScreen, New HatchEggScreen(CurrentScreen, eggsReady), Color.White, False))
|
|
|
|
_stepEventEggHatched = True
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub StepEventCheckRepel(ByVal stepAmount As Integer)
|
|
If RepelSteps > 0 Then
|
|
RepelSteps -= stepAmount
|
|
|
|
If RepelSteps <= 0 Then
|
|
If CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
|
|
If CanFireStepEvent() = True Then
|
|
Screen.Level.WalkedSteps = 0
|
|
|
|
Dim s As String = "version=2" & Environment.NewLine &
|
|
"@Text.Show(Your repel effect wore off.)" & Environment.NewLine &
|
|
":end"
|
|
|
|
If Temp.LastUsedRepel > -1 Then
|
|
Dim haveItemLeft As Boolean = Inventory.GetItemAmount(Temp.LastUsedRepel) > 0
|
|
|
|
If haveItemLeft = True Then
|
|
s = "version=2" & Environment.NewLine &
|
|
"@Text.Show(Your repel effect wore off.*Do you want to use~another <inventory.name(" & Temp.LastUsedRepel & ")>?)" & Environment.NewLine &
|
|
"@Options.Show(Yes,No)" & Environment.NewLine &
|
|
":when:Yes" & Environment.NewLine &
|
|
"@sound.play(repel_use)" & Environment.NewLine &
|
|
"@Text.Show(<player.name> used~a <inventory.name(" & Temp.LastUsedRepel & ")>.)" & Environment.NewLine &
|
|
"@item.repel(" & Temp.LastUsedRepel & ")" & Environment.NewLine &
|
|
"@item.remove(" & Temp.LastUsedRepel & ",1,0)" & Environment.NewLine &
|
|
":endwhen" & Environment.NewLine &
|
|
":end"
|
|
End If
|
|
End If
|
|
|
|
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(s, 2, False)
|
|
_stepEventRepelMessage = True
|
|
Else
|
|
_repelSteps = 1
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub StepEventWildPokemon()
|
|
If CanFireStepEvent() = True Then
|
|
If Screen.Level.WildPokemonFloor = True And Screen.Level.Surfing = False Then
|
|
Screen.Level.PokemonEncounter.TryEncounterWildPokemon(Screen.Camera.Position, Spawner.EncounterMethods.Land, "")
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub StepEventPokegearCall()
|
|
If CanFireStepEvent() = True Then
|
|
If Temp.MapSteps > 0 Then
|
|
If Temp.LastCall < 256 Then
|
|
Temp.LastCall += 1
|
|
Else
|
|
If Random.Next(0, 700) = 0 Then
|
|
GameJolt.PokegearScreen.RandomCall()
|
|
Temp.LastCall = 0
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Function CanFireStepEvent() As Boolean
|
|
If ScriptBlock.TriggeredScriptBlock = False Then
|
|
If _stepEventStartedTrainer = False Then
|
|
If _stepEventEggHatched = False Then
|
|
If _stepEventRepelMessage = False Then
|
|
If Screen.Level.PokemonEncounterData.EncounteredPokemon = False Then
|
|
Return True
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
Private Sub MakeWildPokemonNoise()
|
|
If Screen.Level.WildPokemonGrass = True Then
|
|
If Random.Next(0, 193) = 0 Then
|
|
Dim p As Pokemon = Spawner.GetPokemon(Screen.Level.LevelFile, Spawner.EncounterMethods.Land, False, "")
|
|
|
|
If Not p Is Nothing Then
|
|
PlayWildPokemonNoise(p.Number)
|
|
End If
|
|
End If
|
|
End If
|
|
If Screen.Level.WildPokemonFloor = True Then
|
|
If Random.Next(0, 193) = 0 Then
|
|
Dim p As Pokemon = Spawner.GetPokemon(Screen.Level.LevelFile, Spawner.EncounterMethods.Land, False, "")
|
|
|
|
If Not p Is Nothing Then
|
|
PlayWildPokemonNoise(p.Number)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
End If
|
|
If Screen.Level.WildPokemonWater = True Then
|
|
If Random.Next(0, 193) = 0 Then
|
|
Dim p As Pokemon = Spawner.GetPokemon(Screen.Level.LevelFile, Spawner.EncounterMethods.Surfing, False, "")
|
|
|
|
If Not p Is Nothing Then
|
|
PlayWildPokemonNoise(p.Number)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub PlayWildPokemonNoise(ByVal number As Integer)
|
|
SoundManager.PlayPokemonCry(number, Random.Next(0, 6) / 10.0F, Random.Next(0, 20) / 10.0F - 1, SoundManager.Volume * 0.35F)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
Public Sub AddVisitedMap(ByVal mapFile As String)
|
|
Dim maps As List(Of String) = VisitedMaps.Split(CChar(",")).ToList()
|
|
|
|
If maps.Contains(mapFile) = False Then
|
|
maps.Add(mapFile)
|
|
VisitedMaps = ""
|
|
For Each map As String In maps
|
|
If VisitedMaps <> "" Then
|
|
VisitedMaps &= ","
|
|
End If
|
|
VisitedMaps &= map
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub AddPoints(ByVal amount As Integer, ByVal reason As String)
|
|
Dim addPoints As Integer = amount
|
|
|
|
For Each mysteryEvent As MysteryEventScreen.MysteryEvent In MysteryEventScreen.ActivatedMysteryEvents
|
|
If mysteryEvent.EventType = MysteryEventScreen.EventTypes.PointsMultiplier Then
|
|
addPoints = CInt(addPoints * CSng(mysteryEvent.Value.Replace(".", GameController.DecSeparator)))
|
|
End If
|
|
Next
|
|
|
|
If IsGameJoltSave = True Then
|
|
If GameJolt.LogInScreen.UserBanned(GameJoltSave.GameJoltID) = False Then
|
|
GameJoltSave.Points += addPoints
|
|
End If
|
|
Else
|
|
Points += addPoints
|
|
End If
|
|
|
|
HistoryScreen.HistoryHandler.AddHistoryItem("Obtained game points", "Amount: " & addPoints.ToString() & "; Reason: " & reason, False, False)
|
|
End Sub
|
|
|
|
Public Sub ResetNewLevel()
|
|
lastLevel = 0
|
|
displayEmblemDelay = 0.0F
|
|
emblemPositionX = windowSize.Width
|
|
End Sub
|
|
|
|
Dim lastLevel As Integer = 0
|
|
Dim displayEmblemDelay As Single = 0.0F
|
|
Dim emblemPositionX As Integer = windowSize.Width
|
|
|
|
Public Sub DrawLevelUp()
|
|
If IsGameJoltSave = True Then
|
|
If lastLevel <> GameJolt.Emblem.GetPlayerLevel(GameJoltSave.Points) And lastLevel <> 0 Then
|
|
lastLevel = GameJolt.Emblem.GetPlayerLevel(GameJoltSave.Points)
|
|
displayEmblemDelay = 35.0F
|
|
Skin = GameJolt.Emblem.GetPlayerSpriteFile(lastLevel, GameJoltSave.GameJoltID, GameJoltSave.Gender)
|
|
End If
|
|
|
|
If displayEmblemDelay > 0.0F Then
|
|
displayEmblemDelay -= 0.1F
|
|
If displayEmblemDelay <= 6.4F Then
|
|
If emblemPositionX < windowSize.Width Then
|
|
emblemPositionX += 8
|
|
End If
|
|
Else
|
|
If emblemPositionX > windowSize.Width - 512 Then
|
|
emblemPositionX -= 8
|
|
End If
|
|
End If
|
|
|
|
GameJolt.Emblem.Draw(GameJolt.API.username, GameJoltSave.GameJoltID, GameJoltSave.Points, GameJoltSave.Gender, GameJoltSave.Emblem, New Vector2(emblemPositionX, 0), 4, GameJoltSave.DownloadedSprite)
|
|
|
|
If displayEmblemDelay <= 0.0F Then
|
|
displayEmblemDelay = 0.0F
|
|
emblemPositionX = windowSize.Width
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Function IsSaveGameFolder(ByVal folder As String) As Boolean
|
|
If IO.Directory.Exists(folder) = True Then
|
|
Dim files() As String = {"Apricorns", "Berries", "Box", "Daycare", "HallOfFame", "ItemData", "Items", "NPC", "Options", "Party", "Player", "Pokedex", "Register", "RoamingPokemon", "SecretBase"}
|
|
For Each file As String In files
|
|
If IO.File.Exists(folder & "\" & file & ".dat") = False Then
|
|
Return False
|
|
End If
|
|
Next
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
Public Function IsRunning() As Boolean
|
|
If KeyBoardHandler.KeyDown(Keys.LeftShift) = True Or ControllerHandler.ButtonDown(Buttons.B) = True Then
|
|
If Screen.Level.Riding = False And Screen.Level.Surfing = False And Inventory.HasRunningShoes = True Then
|
|
Return True
|
|
End If
|
|
End If
|
|
|
|
Return False
|
|
End Function
|
|
|
|
Public Sub Unload()
|
|
'This function clears all data from the loaded player and restores the default values.
|
|
|
|
If loadedSave = True Then
|
|
'Clearning lists:
|
|
Pokemons.Clear()
|
|
Pokedexes.Clear()
|
|
Inventory.Clear()
|
|
Badges.Clear()
|
|
PokeFiles.Clear()
|
|
EarnedAchievements.Clear()
|
|
PokegearModules.Clear()
|
|
PhoneContacts.Clear()
|
|
Mails.Clear()
|
|
Trophies.Clear()
|
|
|
|
'Restore default values:
|
|
Name = "<playername>"
|
|
RivalName = ""
|
|
Male = True
|
|
Money = 0
|
|
PlayTime = TimeSpan.Zero
|
|
GameStart = Date.Now
|
|
OT = "00000"
|
|
Points = 0
|
|
BP = 0
|
|
Coins = 0
|
|
HasPokedex = False
|
|
HasPokegear = False
|
|
ShowBattleAnimations = 2
|
|
BoxAmount = 10
|
|
LastRestPlace = "yourroom.dat"
|
|
LastRestPlacePosition = "1,0.1,3"
|
|
LastSavePlace = "yourroom.dat"
|
|
LastSavePlacePosition = "1,0.1,3"
|
|
DiagonalMovement = False
|
|
RepelSteps = 0
|
|
DifficultyMode = 0
|
|
BattleStyle = 1
|
|
ShowModelsInBattle = True
|
|
SaveCreated = "Pre 0.21"
|
|
LastPokemonPosition = New Vector3(999)
|
|
DaycareSteps = 0
|
|
GameMode = "Kolben"
|
|
VisitedMaps = ""
|
|
TempSurfSkin = "Hilbert"
|
|
TempRideSkin = ""
|
|
GTSStars = 8
|
|
SandBoxMode = False
|
|
Statistics = ""
|
|
startPosition = New Vector3(14, 0.1, 10)
|
|
startRotation = 0
|
|
startFreeCameraMode = False
|
|
startMap = "barktown.dat"
|
|
startFOV = 45.0F
|
|
startRotationSpeed = 12
|
|
startThirdPerson = False
|
|
startSurfing = False
|
|
startRiding = False
|
|
Skin = "Hilbert"
|
|
|
|
'Clear temp save data:
|
|
RegisterData = ""
|
|
BerryData = ""
|
|
PokedexData = ""
|
|
ItemData = ""
|
|
BoxData = ""
|
|
NPCData = ""
|
|
ApricornData = ""
|
|
SecretBaseData = ""
|
|
DaycareData = ""
|
|
HallOfFameData = ""
|
|
RoamingPokemonData = ""
|
|
|
|
filePrefix = "nilllzz"
|
|
newFilePrefix = ""
|
|
AutosaveUsed = False
|
|
loadedSave = False
|
|
|
|
IsGameJoltSave = False
|
|
EmblemBackground = "standard"
|
|
|
|
ResetNewLevel()
|
|
End If
|
|
End Sub
|
|
|
|
End Class |