2016-09-07 18:50:38 +02:00
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
2017-10-15 21:12:47 +02:00
Public BattleStyle As Integer = 1
2016-09-07 18:50:38 +02:00
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
2018-10-27 23:43:52 +02:00
Public Shared BagPageIndex As Integer ( ) = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
Public Shared BagItemIndex As Integer ( ) = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
2016-09-07 18:50:38 +02:00
Public Shared BagSelectIndex As Integer = 0
Public Shared MenuIndex As Integer = 0
Public Shared PokedexIndex As Integer = 0
2017-08-11 07:02:26 +02:00
Public Shared PokemonSummaryPageIndex As Integer = 0
2016-09-07 18:50:38 +02:00
Public Shared PCBoxIndex As Integer = 0
Public Shared StorageSystemCursorPosition As New Vector2 ( 1 , 0 )
Public Shared OptionScreenIndex As Integer = 0
2016-09-29 18:56:20 +02:00
Public Shared MapSwitch ( 3 ) As Boolean
2016-09-07 18:50:38 +02:00
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
2018-10-27 23:43:52 +02:00
Temp . BagPageIndex = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
Temp . BagItemIndex = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }
2016-09-07 18:50:38 +02:00
Temp . BagSelectIndex = 0
Temp . MenuIndex = 0
Temp . PokedexIndex = 0
Temp . PCBoxIndex = 0
Temp . OptionScreenIndex = 0
Temp . IsInBattle = False
2016-09-29 18:56:20 +02:00
For i = 0 To 3
2016-09-07 18:50:38 +02:00
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 "
2016-10-29 17:03:25 +02:00
''' Indev 0.54 Removal List
''' 1. All Mega Stones. [ID: 507 - 553]
2016-11-02 16:03:47 +01:00
''' 2. Shiny Candy [ID: 501]
2016-10-29 17:03:25 +02:00
If Not ActionScript . IsRegistered ( " PokemonIndev054Update " ) Then
' Check Inventory.
2016-11-02 16:03:47 +01:00
Inventory . RemoveItem ( 501 )
2016-10-29 17:03:25 +02:00
For i As Integer = 507 To 553 Step + 1
Inventory . RemoveItem ( i )
Next
' Check Party Pokemon.
For Each Pokemon As Pokemon In Pokemons
2016-11-02 16:03:47 +01:00
If Pokemon . Item IsNot Nothing AndAlso ( Pokemon . Item . ID >= 501 OrElse ( Pokemon . Item . ID >= 507 AndAlso Pokemon . Item . ID <= 553 ) ) Then
2016-10-29 17:03:25 +02:00
Pokemon . Item = Nothing
End If
Next
' Check PC Boxes.
2016-10-29 18:53:20 +02:00
If Not String . IsNullOrWhiteSpace ( BoxData ) Then
Dim TempBoxData As New List ( Of String )
TempBoxData . AddRange ( BoxData . SplitAtNewline ( ) )
2016-10-29 17:03:25 +02:00
2016-10-29 18:53:20 +02:00
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 ( " { " ) ) )
2016-10-29 17:03:25 +02:00
2016-11-02 16:03:47 +01:00
If TempPokemon . Item IsNot Nothing AndAlso ( TempPokemon . Item . ID >= 501 OrElse ( TempPokemon . Item . ID >= 507 AndAlso TempPokemon . Item . ID <= 553 ) ) Then
2016-10-29 18:53:20 +02:00
TempPokemon . Item = Nothing
End If
item = TempString & TempPokemon . ToString ( )
2016-10-29 17:03:25 +02:00
End If
2016-10-29 18:53:20 +02:00
Next
2016-10-29 17:03:25 +02:00
2018-01-07 18:01:32 +01:00
BoxData = String . Join ( Environment . NewLine , TempBoxData )
2016-10-29 18:53:20 +02:00
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 ( " { " ) ) )
2016-11-02 16:03:47 +01:00
If TempPokemon . Item IsNot Nothing AndAlso ( TempPokemon . Item . ID >= 501 OrElse ( TempPokemon . Item . ID >= 507 AndAlso TempPokemon . Item . ID <= 553 ) ) Then
2016-10-29 18:53:20 +02:00
TempPokemon . Item = Nothing
End If
item = TempString & TempPokemon . ToString ( )
End If
Next
2018-01-07 18:01:32 +01:00
DaycareData = String . Join ( Environment . NewLine , TempDaycareData )
2016-10-29 18:53:20 +02:00
End If
2016-10-29 17:03:25 +02:00
ActionScript . RegisterID ( " PokemonIndev054Update " )
End If
2017-03-06 13:04:41 +01:00
''' Indev 0.54.2 OT Fix List.
If Not ActionScript . IsRegistered ( " PokemonIndev0542Update " ) Then
' Check Party Pokemon.
For Each Pokemon As Pokemon In Pokemons
2017-03-08 06:00:51 +01:00
If String . Equals ( Pokemon . CatchTrainerName , Core . Player . Name , StringComparison . OrdinalIgnoreCase ) AndAlso Pokemon . OT <> GameJoltSave . GameJoltID Then
2017-03-06 13:04:41 +01:00
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 ( " { " ) ) )
2017-03-08 06:00:51 +01:00
If String . Equals ( TempPokemon . CatchTrainerName , Core . Player . Name , StringComparison . OrdinalIgnoreCase ) AndAlso TempPokemon . OT <> GameJoltSave . GameJoltID Then
2017-03-06 13:04:41 +01:00
TempPokemon . OT = GameJoltSave . GameJoltID
End If
item = TempString & TempPokemon . ToString ( )
End If
Next
2018-01-07 18:01:32 +01:00
BoxData = String . Join ( Environment . NewLine , TempBoxData )
2017-03-06 13:04:41 +01:00
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 ( " { " ) ) )
2017-03-08 06:00:51 +01:00
If String . Equals ( TempPokemon . CatchTrainerName , Core . Player . Name , StringComparison . OrdinalIgnoreCase ) AndAlso TempPokemon . OT <> GameJoltSave . GameJoltID Then
2017-03-06 13:04:41 +01:00
TempPokemon . OT = GameJoltSave . GameJoltID
End If
item = TempString & TempPokemon . ToString ( )
End If
Next
2018-01-07 18:01:32 +01:00
DaycareData = String . Join ( Environment . NewLine , TempDaycareData )
2017-03-06 13:04:41 +01:00
End If
' Remove Duplicate data.
Core . Player . PokeFiles = Core . Player . PokeFiles . Distinct ( ) . ToList ( )
ActionScript . RegisterID ( " PokemonIndev0542Update " )
End If
2016-09-07 18:50:38 +02:00
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
2018-02-24 09:32:04 +01:00
If Not Screen . Level Is Nothing Then
Screen . Level . Riding = False
End If
2016-09-07 18:50:38 +02:00
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
2018-02-24 09:32:04 +01:00
If IsGameJoltSave = True And startSurfing = False Then
2016-09-07 18:50:38 +02:00
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
2018-01-07 18:01:32 +01:00
RoamingPokemonData &= Environment . NewLine
2016-09-07 18:50:38 +02:00
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 ( )
2017-10-17 08:15:45 +02:00
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
2016-09-07 18:50:38 +02:00
SavePlayer ( IsAutosave )
SaveParty ( )
SaveItems ( )
SaveBerries ( )
SaveApricorns ( )
SaveDaycare ( )
SaveOptions ( )
SavePokedex ( )
SaveRegister ( )
SaveItemData ( )
SaveBoxData ( )
SaveNPCData ( )
SaveHallOfFameData ( )
SaveSecretBaseData ( )
SaveRoamingPokemonData ( )
SaveStatistics ( )
filePrefix = newFilePrefix
If IsGameJoltSave = True Then
2017-07-26 18:55:48 +02:00
If Core . GameOptions . Extras . Contains ( " Backup Save Feature " ) Then
2017-03-06 13:04:41 +01:00
If Not Directory . Exists ( GameController . GamePath & " /Backup Save/ " & GameJoltSave . GameJoltID . ToString ( ) & " /Encrypted " ) Then
Directory . CreateDirectory ( GameController . GamePath & " /Backup Save/ " & GameJoltSave . GameJoltID . ToString ( ) & " /Encrypted " )
2017-02-05 15:40:10 +01:00
End If
2017-01-07 19:09:16 +01:00
2017-02-05 15:40:10 +01:00
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 ) )
2017-03-06 13:04:41 +01:00
File . WriteAllText ( GameController . GamePath & " /Backup Save/ " & GameJoltSave . GameJoltID . ToString ( ) & " /Encrypted/Encrypted.dat " ,
2017-02-05 15:40:10 +01:00
OriginalHASH & " | " & Encryption . EncryptString ( OriginalHASH , StringObfuscation . Obfuscate ( GameJoltSave . GameJoltID ) ) )
2017-03-06 13:04:41 +01:00
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 )
2017-02-05 15:40:10 +01:00
End If
2017-01-07 19:09:16 +01:00
2016-09-07 18:50:38 +02:00
Dim APICallSave As New GameJolt . APICall ( AddressOf SaveGameHelpers . CompleteGameJoltSave )
2017-01-07 19:09:16 +01:00
AddHandler APICallSave . CallFails , Sub ( ByVal ex As Exception )
2018-01-07 18:01:32 +01:00
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 " )
2017-01-07 19:09:16 +01:00
End Sub
2016-09-07 18:50:38 +02:00
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
2018-01-07 18:01:32 +01:00
Data &= Environment . NewLine
2016-09-07 18:50:38 +02:00
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 ( )
2019-01-22 20:04:02 +01:00
Dim diff As TimeSpan = ( Date . Now - GameStart )
Dim p As TimeSpan = PlayTime + diff
2016-09-07 18:50:38 +02:00
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
2018-01-07 18:01:32 +01:00
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 &
2016-09-07 18:50:38 +02:00
" EarnedAchievements| " & EarnedAchievementsString
If IsAutosave = True Then
2018-01-07 18:01:32 +01:00
Data &= Environment . NewLine & " AutoSave| " & newFilePrefix
2016-09-07 18:50:38 +02:00
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 )
2018-01-07 18:01:32 +01:00
Dim Data As String = " FOV| " & FOVstring & Environment . NewLine &
" TextSpeed| " & TextSpeedString & Environment . NewLine &
2016-09-07 18:50:38 +02:00
" MouseSpeed| " & MouseSpeedString
Return Data
End Function
Public Function GetItemsData ( ) As String
Dim Data As String = " "
For Each c In Inventory
If Data <> " " Then
2018-01-07 18:01:32 +01:00
Data &= Environment . NewLine
2016-09-07 18:50:38 +02:00
End If
Data &= " { " & c . ItemID & " | " & c . Amount & " } "
Next
For Each mail As Items . MailItem . MailData In Mails
If Data <> " " Then
2018-01-07 18:01:32 +01:00
Data &= Environment . NewLine
2016-09-07 18:50:38 +02:00
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
2018-01-07 18:01:32 +01:00
Dim s As String = " version=2 " & Environment . NewLine &
" @Text.Show(Your repel effect wore off.) " & Environment . NewLine &
2016-09-07 18:50:38 +02:00
" :end "
If Temp . LastUsedRepel > - 1 Then
Dim haveItemLeft As Boolean = Inventory . GetItemAmount ( Temp . LastUsedRepel ) > 0
If haveItemLeft = True Then
2018-01-07 18:01:32 +01:00
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 &
2016-09-07 18:50:38 +02:00
" :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
2017-10-15 21:12:47 +02:00
BattleStyle = 1
2016-09-07 18:50:38 +02:00
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