Lots of QoL changes

- You can now run up and down a slideblock.
- NPC movement type Straight is now less random and more smooth.
- When renaming the rival, the skin visible at the top changes to whatever skin is set as the rivalskin. This way, the rival is not stuck with one skin. This can be useful when the rival's skin changes based on the player's gender for example.
- Text messages that contain <token.tokenname>, where tokenname is a string from the localizations files, have the part between the <> replaced with that string now.
- Text messages that contain <button.buttonname>, where buttonname is one of the controls defined in "Saves\Keyboard.dat", will now have the part between the <> replaced with the key assigned to that control.
- Players can now be genderless instead of only either male or female in scripts.
- Which skins are available in the intro is now defined in the GameMode's definition file instead of being hard-coded
- Old New Game intro now uses the player skin data from the GameMode definition file
- The Pokémon in the old New Game now doesn't fall too far down anymore
- Scripts adjusted to match the new gender functionality
This commit is contained in:
JappaWakka 2021-10-01 15:19:04 +02:00
parent 51a481da62
commit 9def5642e8
17 changed files with 452 additions and 146 deletions

View File

@ -15,10 +15,14 @@ version=2
@Register.register(clubregisters,int,0)
@player.move(0)
@player.turnto(1)
:if:<player.gender>=0
:if:<player.gender>=1
@text.show(I'm sorry this club is for mem-*Wait.~Are you perhaps~Miss <player.name>?*I am so sorry~for my rudeness.*Any trainer who is good~enough to be champion is~welcome at this club.*This club is intended~to be a place for powerful~trainers to hangout,~relax, and engage in~friendly battles.*Currently all of the~Gym Leaders of Kanto~and Johto are members,~but they rarely come by.*I am sure if a trainer~as strong as you told~them about this club and~asked them to join you~here they would do so.*They might even come~here willing to battle!)
:else
@text.show(I'm sorry this club is for mem-*Wait.~Are you perhaps~Mister <player.name>?*I am so sorry~for my rudeness.*Any trainer who is good~enough to be champion is~welcome at this club.*This club is intended~to be a place for powerful~trainers to hangout,~relax, and engage in~friendly battles.*Currently all of the~Gym Leaders of Kanto~and Johto are members,~but they rarely come by.*I am sure if a trainer~as strong as you told~them about this club and~asked them to join you~here they would do so.*They might even come~here willing to battle!)
:if:<player.gender>=0
@text.show(I'm sorry this club is for mem-*Wait.~Are you perhaps~Mister <player.name>?*I am so sorry~for my rudeness.*Any trainer who is good~enough to be champion is~welcome at this club.*This club is intended~to be a place for powerful~trainers to hangout,~relax, and engage in~friendly battles.*Currently all of the~Gym Leaders of Kanto~and Johto are members,~but they rarely come by.*I am sure if a trainer~as strong as you told~them about this club and~asked them to join you~here they would do so.*They might even come~here willing to battle!)
:else
@text.show(I'm sorry this club is for mem-*Wait.~Are you perhaps~<player.name>?*I am so sorry~for my rudeness.*Any trainer who is good~enough to be champion is~welcome at this club.*This club is intended~to be a place for powerful~trainers to hangout,~relax, and engage in~friendly battles.*Currently all of the~Gym Leaders of Kanto~and Johto are members,~but they rarely come by.*I am sure if a trainer~as strong as you told~them about this club and~asked them to join you~here they would do so.*They might even come~here willing to battle!)
:endif
:endif
@register.register(clubintro)
:endif

View File

@ -164,19 +164,19 @@ inventory_menu_items,Items
inventory_menu_description,Description
---
NewGameScreen:
new_game_oak_1,Hello!~Sorry to keep~you waiting!*Welcome to the world~of Pokémon!*My name is Oak.~People call me~Pokémon Prof.*This world is inhabited~by creatures that~we call
new_game_oak_2,Pokémon.*People and Pokémon live~together by supporting~each other.~Some people play with~Pokémon,~some battle with them.*But we don't know~everything about~Pokémon yet.~There are still many~mysteries to solve.*That's why I study~Pokémon every day.*Now, what did you~say your name was?
new_game_oak_3,~are you ready?*Your very own~Pokémon story is about~to unfold.*You'll face fun~times and tough~challenges.~A world of dreams and~adventures with Pokémon~awaits!*Let's go!*I'll be seeing~you later!
new_game_oak_weird_name_1,Right! So your name is~
new_game_oak_weird_name_2,!*Hm that is a~weird name.
new_game_oak_known_name_1,Right! So your name is~
new_game_oak_known_name_2,!*Hm I am sure I~heard this name before.
new_game_oak_same_name_1,Hey we got the~same names.*My name is also~
new_game_oak_same_name_2,!
new_game_oak_name_1,Right! So your name is~
new_game_oak_name_2,!
new_game_your_name,Your name
new_game_choose_skin,Choose skin
new_game_intro_1,Hello!~Sorry to keep~you waiting!*Welcome to the world~of Pokémon!*My name is Oak.~People call me~Pokémon Prof.*This world is inhabited~by creatures that~we call
new_game_intro_2,Pokémon.*People and Pokémon live~together by supporting~each other.~Some people play with~Pokémon,~some battle with them.*But we don't know~everything about~Pokémon yet.~There are still many~mysteries to solve.*That's why I study~Pokémon every day.*Now, what did you~say your name was?
new_game_intro_3,~are you ready?*Your very own~Pokémon story is about~to unfold.*You'll face fun~times and tough~challenges.~A world of dreams and~adventures with Pokémon~awaits!*Let's go!*I'll be seeing~you later!
new_game_intro_weird_name_1,Right! So your name is~
new_game_intro_weird_name_2,!*Hm that is a~weird name.
new_game_intro_known_name_1,Right! So your name is~
new_game_intro_known_name_2,!*Hm I am sure I~heard this name before.
new_game_intro_same_name_1,Hey we got the~same names.*My name is also~
new_game_intro_same_name_2,!
new_game_intro_name_1,Right! So your name is~
new_game_intro_name_2,!
new_game_your_name,What's your name?
new_game_select_skin,Select your appearance
new_game_name_too_short,This name is too short
---
MapScreen:

View File

@ -99,7 +99,7 @@
End Sub
Private Sub FormatText()
Dim tokenSearchBuffer As String() = Me.Text.Split(CChar("<"))
Dim tokenSearchBuffer As String() = Me.Text.Split(CChar("<token."))
Dim tokenEndIdx As Integer = 0
Dim validToken As String = ""
Dim token As Token = Nothing
@ -108,18 +108,23 @@
If Not tokenEndIdx = -1 Then
validToken = possibleToken.Substring(0, tokenEndIdx)
If Localization.LocalizationTokens.ContainsKey(validToken) = True Then
If Localization.LocalizationTokens.TryGetValue(validToken, token) = True Then
Me.Text = Me.Text.Replace("<" & validToken & ">", token.TokenContent)
End If
Me.Text = Me.Text.Replace("<token." & validToken & ">", Localization.GetString(validToken, validToken))
End If
End If
Next
Me.Text = Me.Text.Replace("<playername>", Core.Player.Name)
Me.Text = Me.Text.Replace("<player.name>", Core.Player.Name)
Me.Text = Me.Text.Replace("<rivalname>", Core.Player.RivalName)
Me.Text = Me.Text.Replace("<rival.name>", Core.Player.RivalName)
Me.Text = Me.Text.Replace("[POKE]", "Poké")
Me.Text = Me.Text.Replace("[POKEMON]", "Pokémon")
Dim ClockTime = New DateTime(My.Computer.Clock.LocalTime.Year, My.Computer.Clock.LocalTime.Month, My.Computer.Clock.LocalTime.Day, My.Computer.Clock.LocalTime.Hour, My.Computer.Clock.LocalTime.Minute, My.Computer.Clock.LocalTime.Second)
Me.Text = Me.Text.Replace("<clocktime>", ClockTime.ToString("t", New System.Globalization.CultureInfo("en-US")))
Me.Text = Me.Text.Replace("<daytime>", World.GetTime.ToString)
End Sub
Public Sub Update()

View File

@ -46,13 +46,21 @@
Screen.Level.OverworldPokemon.Visible = False
Screen.Level.OverworldPokemon.warped = True
Dim walkSpeed As Single = 1.0F
If Screen.Camera.Speed <> 0.04F Then
walkSpeed = Screen.Camera.Speed / 0.04F
End If
Dim s As String = "version=2" & Environment.NewLine &
"@player.stopmovement" & Environment.NewLine &
"@player.setmovement(" & Screen.Camera.GetMoveDirection().X & ",1," & Screen.Camera.GetMoveDirection().Z & ")" & Environment.NewLine &
"@player.setspeed(" & walkSpeed & ")" & Environment.NewLine &
"@player.move(" & Steps & ")" & Environment.NewLine &
"@player.setmovement(" & Screen.Camera.GetMoveDirection().X & ",0," & Screen.Camera.GetMoveDirection().Z & ")" & Environment.NewLine &
"@pokemon.hide" & Environment.NewLine &
"@player.move(1)" & Environment.NewLine &
"@pokemon.hide" & Environment.NewLine
"@pokemon.hide" & Environment.NewLine &
"@player.resetspeed" & Environment.NewLine
If Not Me.TempScriptEntity Is Nothing Then
s &= GetScriptStartLine(Me.TempScriptEntity) & Environment.NewLine
@ -131,11 +139,20 @@
Screen.Level.OverworldPokemon.Visible = False
Screen.Level.OverworldPokemon.warped = True
Dim walkSpeed As Single = 1.0F
If Screen.Camera.Speed <> 0.04F Then
walkSpeed = Screen.Camera.Speed / 0.04F
End If
Dim s As String = "version=2" & Environment.NewLine &
"@player.stopmovement" & Environment.NewLine &
"@player.setmovement(" & Screen.Camera.GetMoveDirection().X & ",0," & Screen.Camera.GetMoveDirection().Z & ")" & Environment.NewLine &
"@player.setspeed(" & walkSpeed & ")" & Environment.NewLine &
"@player.move(1)" & Environment.NewLine &
"@player.setmovement(" & Screen.Camera.GetMoveDirection().X & ",-1," & Screen.Camera.GetMoveDirection().Z & ")" & Environment.NewLine &
"@player.move(" & Steps & ")" & Environment.NewLine &
"@pokemon.hide" & Environment.NewLine
"@pokemon.hide" & Environment.NewLine &
"@player.resetspeed" & Environment.NewLine
If Not Me.TempScriptEntity Is Nothing Then
s &= GetScriptStartLine(Me.TempScriptEntity) & Environment.NewLine

View File

@ -101,6 +101,14 @@
HasPokemonTexture = True
End If
If Me.TextureID = "<player.skin>" Then
Me.TextureID = Core.Player.Skin
End If
If Me.TextureID = "<rival.skin>" Then
Me.TextureID = Core.Player.RivalSkin
End If
Dim PokemonAddition As String = ""
If UseTextureID.StartsWith("Pokemon\Overworld\") = True Then
@ -116,14 +124,13 @@
Else
Me.Texture = P3D.TextureManager.GetTexture(texturePath & Me.TextureID & PokemonAddition)
End If
Me.FrameSize = New Vector2(CInt(Me.Texture.Width / 3), CInt(Me.Texture.Height / 4))
If HasPokemonTexture = True Then
Me.FrameSize = New Vector2(Me.FrameSize.X, Me.FrameSize.Y)
If Me.Texture.Width = Me.Texture.Height / 2 Then
Me.FrameSize = New Vector2(CInt(Me.Texture.Width / 2), CInt(Me.Texture.Height / 4))
Else
Me.FrameSize = New Vector2(CInt(Me.Texture.Width / 3), CInt(Me.Texture.Height / 4))
End If
If Me.Movement = Movements.Pokeball Then
Me.FrameSize = New Vector2(32, 32)
Me.FrameSize = New Vector2(Me.Texture.Width, Me.Texture.Height)
End If
lastRectangle = New Rectangle(0, 0, 0, 0)
@ -200,7 +207,7 @@
#End Region
Private Function GetAnimationX() As Integer
If Me.HasPokemonTexture = True Then
If Me.Texture.Width = Me.Texture.Height / 2 Then
Select Case AnimationX
Case 1
Return 0
@ -211,18 +218,19 @@
Case 4
Return 1
End Select
Else
Select Case AnimationX
Case 1
Return 0
Case 2
Return 1
Case 3
Return 0
Case 4
Return 2
End Select
End If
Select Case AnimationX
Case 1
Return 0
Case 2
Return 1
Case 3
Return 0
Case 4
Return 2
End Select
Return 1
Return 0
End Function
Private Sub ChangeTexture()
@ -554,24 +562,119 @@
End If
Case Movements.Straight
If Me.Moved = 0.0F Then
If Core.Random.Next(0, 15) = 0 Then
Dim newRotation As Integer = Me.faceRotation
While newRotation = Me.faceRotation
newRotation = Core.Random.Next(0, 4)
End While
Me.faceRotation = newRotation
End If
''newRotation = rotation that is used for checking a possible position and for setting the new faceRotation
Dim newRotation As Integer = Me.faceRotation
''frontRotation = original faceRotation
Dim frontRotation As Integer = Me.faceRotation
Dim contains As Boolean = False
Dim newPosition As Vector3 = (GetMove() / Speed) + Me.Position
If CheckCollision(newPosition) = True Then
For Each r As Rectangle In Me.MoveRectangles
If r.Contains(New Point(CInt(newPosition.X), CInt(newPosition.Z))) = True Then
contains = True
Exit For
End If
Next
Dim newPosition As Vector3 = (GetMove(newRotation) / Speed) + Me.Position
Dim blocked As Boolean = False
'' check if player is not in the way
If CInt(Screen.Camera.Position.X) = newPosition.X And CInt(Screen.Camera.Position.Z) = newPosition.Z Then
blocked = True
End If
'' check if a following Pokémon is not in the way
If CInt(Screen.Level.OverworldPokemon.Position.X) = newPosition.X And CInt(Screen.Level.OverworldPokemon.Position.Z) = newPosition.Z Then
blocked = True
End If
'' check if an NPC is not in the way
For Each NPC As NPC In Screen.Level.GetNPCs()
If CInt(NPC.Position.X) = newPosition.X And CInt(NPC.Position.Z) = newPosition.Z And NPC.NPCID <> Me.NPCID Then
blocked = True
Exit For
End If
Next
'' check if a NetworkPlayer is not in the way
For Each Player As NetworkPlayer In Screen.Level.NetworkPlayers
If CInt(Player.Position.X) = newPosition.X And CInt(Player.Position.Z) = newPosition.Z Then
blocked = True
Exit For
End If
Next
'' check if a NetworkPokémon is not in the way
For Each Pokemon As NetworkPokemon In Screen.Level.NetworkPokemon
If CInt(Pokemon.Position.X) = newPosition.X And CInt(Pokemon.Position.Z) = newPosition.Z Then
blocked = True
Exit For
End If
Next
If blocked = False Then
If CheckCollision(newPosition) = True Then
For Each r As Rectangle In Me.MoveRectangles
If r.Contains(New Point(CInt(newPosition.X), CInt(newPosition.Z))) = True Then
contains = True
Exit For
End If
Next
End If
If contains = True Then
'' Only change faceRotation when it's possible to move
Me.faceRotation = newRotation
Moved = 1.0F
Else
'' If not possible to move forward, check right
newRotation = frontRotation + 1
If newRotation > 3 Then
newRotation = newRotation - 4
End If
newPosition = (GetMove(newRotation) / Speed) + Me.Position
If CheckCollision(newPosition) = True Then
For Each r As Rectangle In Me.MoveRectangles
If r.Contains(New Point(CInt(newPosition.X), CInt(newPosition.Z))) = True Then
contains = True
Exit For
End If
Next
End If
If contains = True Then
'' Only change faceRotation when it's possible to move
Me.faceRotation = newRotation
Moved = 1.0F
Else
'' If not possible to move to the right, check left
newRotation = frontRotation - 1
If newRotation < 0 Then
newRotation = newRotation + 4
End If
newPosition = (GetMove(newRotation) / Speed) + Me.Position
If CheckCollision(newPosition) = True Then
For Each r As Rectangle In Me.MoveRectangles
If r.Contains(New Point(CInt(newPosition.X), CInt(newPosition.Z))) = True Then
contains = True
Exit For
End If
Next
End If
If contains = True Then
'' Only change faceRotation when it's possible to move
Me.faceRotation = newRotation
Moved = 1.0F
Else
'' If not possible to move to the left, check behind
newRotation = frontRotation + 2
If newRotation > 3 Then
newRotation = newRotation - 4
End If
newPosition = (GetMove(newRotation) / Speed) + Me.Position
If CheckCollision(newPosition) = True Then
For Each r As Rectangle In Me.MoveRectangles
If r.Contains(New Point(CInt(newPosition.X), CInt(newPosition.Z))) = True Then
contains = True
Exit For
End If
Next
End If
If contains = True Then
'' Only change faceRotation when it's possible to move
Me.faceRotation = newRotation
Moved = 1.0F
End If
End If
End If
End If
End If
End If
@ -580,6 +683,7 @@
Private Function CheckCollision(ByVal newPosition As Vector3) As Boolean
newPosition = New Vector3(CInt(newPosition.X), CInt(newPosition.Y), CInt(newPosition.Z))
Dim oldPosition As Vector3 = Me.Position
Dim interactPlayer As Boolean = True
@ -589,6 +693,14 @@
interactPlayer = False
End If
End If
Else
Dim cameraNewPosition As Vector3 = Screen.Camera.GetForwardMovedPosition()
Dim cameraOldPosition As Vector3 = Screen.Camera.GetForwardMovedPosition() - Screen.Camera.GetMoveDirection()
If CInt(cameraNewPosition.X) <> newPosition.X And CInt(cameraOldPosition.X) <> newPosition.X Or CInt(cameraNewPosition.Z) <> newPosition.Z And CInt(cameraOldPosition.Z) <> newPosition.Z Then
If CInt(Screen.Level.OverworldPokemon.Position.X) <> newPosition.X Or CInt(Screen.Level.OverworldPokemon.Position.Z) <> newPosition.Z Then
interactPlayer = False
End If
End If
End If
If interactPlayer = True Then
@ -677,9 +789,15 @@
End If
End Sub
Private Function GetMove() As Vector3
Private Function GetMove(Optional ByVal rotation As Integer = 6) As Vector3
Dim moveVector As Vector3
Select Case Me.faceRotation
Dim functionRotation As Integer
If rotation = 6 Then
functionRotation = Me.faceRotation
Else
functionRotation = rotation
End If
Select Case functionRotation
Case 0
moveVector = New Vector3(0, 0, -1) * Speed
Case 1

View File

@ -34,9 +34,7 @@
If GameModeManager.GameModeCount > 0 Then
Dim GameModeLocalizationPath As String = GameModeManager.ActiveGameMode.LocalizationsPath
If GameModeLocalizationPath <> GameMode.DefaultLocalizationsPath Then
LoadTokenFile(GameModeLocalizationPath, True)
End If
LoadTokenFile(GameModeLocalizationPath, True)
End If
Logger.Debug("---Reloaded GameMode Tokens---")
@ -44,13 +42,18 @@
Private Shared Sub LoadTokenFile(ByVal path As String, ByVal IsGameModeFile As Boolean)
Dim fullpath As String = GameController.GamePath & path
Dim tokenFullpath As String = fullpath & "Tokens_" & LanguageSuffix & ".dat"
Logger.Debug("Token filepath: " & tokenFullpath)
If System.IO.Directory.GetFiles(fullpath).Count > 0 Then
If System.IO.File.Exists(fullpath & "Tokens_" & LanguageSuffix & ".dat") = False Then
If System.IO.File.Exists(tokenFullpath) = False Then
Logger.Debug("Did NOT find token file for suffix: " & LanguageSuffix)
LanguageSuffix = "en"
End If
If System.IO.File.Exists(fullpath & "Tokens_" & LanguageSuffix & ".dat") = True Then
If System.IO.File.Exists(tokenFullpath) = True Then
Logger.Debug("Found token file for suffix: " & LanguageSuffix)
Dim TokensFile() As String = System.IO.File.ReadAllLines(fullpath & "Tokens_" & LanguageSuffix & ".dat")
Dim splitIdx As Integer = 0
For Each TokenLine As String In TokensFile
@ -65,6 +68,9 @@
If LocalizationTokens.ContainsKey(TokenName) = False Then
LocalizationTokens.Add(TokenName, New Token(TokenContent, LanguageSuffix, IsGameModeFile))
Else
LocalizationTokens.Remove(TokenName)
LocalizationTokens.Add(TokenName, New Token(TokenContent, LanguageSuffix, IsGameModeFile))
End If
End If
Next
@ -86,6 +92,9 @@
If LocalizationTokens.ContainsKey(TokenName) = False Then
LocalizationTokens.Add(TokenName, New Token(TokenContent, "en", IsGameModeFile))
Else
LocalizationTokens.Remove(TokenName)
LocalizationTokens.Add(TokenName, New Token(TokenContent, "en", IsGameModeFile))
End If
End If
Next
@ -101,10 +110,77 @@
Return s
Else
Dim result As String = resultToken.TokenContent
If Not Core.Player Is Nothing Then
If Core.Player IsNot Nothing Then
result = result.Replace("<playername>", Core.Player.Name)
result = result.Replace("<player.name>", Core.Player.Name)
result = result.Replace("<rivalname>", Core.Player.RivalName)
result = result.Replace("<player.name>", Core.Player.RivalName)
End If
Dim tokenSearchBuffer As String() = result.Split("<button.")
Dim tokenEndIdx As Integer = 0
Dim validToken As String = ""
For Each possibleToken As String In tokenSearchBuffer
tokenEndIdx = possibleToken.IndexOf(">")
If Not tokenEndIdx = -1 Then
Dim key As Keys
validToken = possibleToken.Substring(0, tokenEndIdx)
Select Case validToken.ToLower()
Case "moveforward"
key = KeyBindings.ForwardMoveKey
Case "moveleft"
key = KeyBindings.LeftMoveKey
Case "movebackward"
key = KeyBindings.BackwardMoveKey
Case "moveright"
key = KeyBindings.RightMoveKey
Case "openmenu"
key = KeyBindings.OpenInventoryKey
Case "chat"
key = KeyBindings.ChatKey
Case "special", "phone"
key = KeyBindings.SpecialKey
Case "muteaudio"
key = KeyBindings.MuteAudioKey
Case "cameraleft"
key = KeyBindings.LeftKey
Case "cameraright"
key = KeyBindings.RightKey
Case "cameraup"
key = KeyBindings.UpKey
Case "cameradown"
key = KeyBindings.DownKey
Case "cameralock"
key = KeyBindings.CameraLockKey
Case "guicontrol"
key = KeyBindings.GUIControlKey
Case "screenshot"
key = KeyBindings.ScreenshotKey
Case "debugcontrol"
key = KeyBindings.DebugKey
Case "perspectiveswitch"
key = KeyBindings.PerspectiveSwitchKey
Case "fullscreen"
key = KeyBindings.FullScreenKey
Case "enter1"
key = KeyBindings.EnterKey1
Case "enter2"
key = KeyBindings.EnterKey2
Case "back1"
key = KeyBindings.BackKey1
Case "back2"
key = KeyBindings.BackKey2
Case "escape", "esc"
key = KeyBindings.EscapeKey
Case "onlinestatus"
key = KeyBindings.OnlineStatusKey
Case "lighting"
key = KeyBindings.LightKey
End Select
result = result.Replace("<button." & validToken & ">", KeyBindings.GetKeyName(key))
End If
Next
Return result
End If
Else

View File

@ -869,6 +869,7 @@ Namespace GameJolt
"MapFile|yourroom.dat" & Environment.NewLine &
"Rotation|1.570796" & Environment.NewLine &
"RivalName|???" & Environment.NewLine &
"RivalSkin|Silver" & Environment.NewLine &
"Money|3000" & Environment.NewLine &
"Badges|0" & Environment.NewLine &
"Gender|Male" & Environment.NewLine &

View File

@ -23,13 +23,21 @@
_rivalName = value
End Set
End Property
Public Property Male() As Boolean
Public Property RivalSkin() As String
Get
Return _male
Return _rivalSkin
End Get
Set(value As Boolean)
_male = value
Set(value As String)
_rivalSkin = value
End Set
End Property
Public Property Gender() As String
Get
Return _gender
End Get
Set(value As String)
_gender = value
End Set
End Property
@ -368,8 +376,9 @@
'Secure fields:
Private _name As String = "<playername>"
Private _rivalName As String = ""
Private _male As Boolean = True
Private _rivalName As String = "???"
Private _rivalSkin As String = "Silver"
Private _gender As String = "Male"
Private _money As Integer = 0
Private _OT As String = "00000"
Private _points As Integer = 0
@ -758,6 +767,8 @@
startMap = Value
Case "rivalname"
RivalName = Value
Case "rivalskin"
RivalSkin = Value
Case "money"
Money = CInt(Value)
Case "badges"
@ -778,11 +789,13 @@
End If
Case "rotation"
startRotation = CSng(Value.Replace(".", GameController.DecSeparator))
Case "Gender"
If Value = "Male" Then
Male = True
Case "gender"
If Value = "0" Then
Gender = "Male"
ElseIf Value = "1" Then
Gender = "Female"
Else
Male = False
Gender = "Other"
End If
Case "playtime"
Dim dd() As String = Value.Split(CChar(","))
@ -875,12 +888,12 @@
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 "Male"
Gender = "Male"
Case "Female"
Gender = "Female"
Case Else
Male = True
Gender = "Other"
End Select
End If
@ -1231,10 +1244,12 @@
Public Function GetPlayerData(ByVal IsAutosave As Boolean) As String
Dim GenderString As String = ""
If Male = True Then
If Gender = "Male" Then
GenderString = "Male"
Else
ElseIf Gender = "Female" Then
GenderString = "Female"
Else
GenderString = "Other"
End If
Dim badgeString As String = ""
@ -1295,6 +1310,7 @@
"MapFile|" & Screen.Level.LevelFile & Environment.NewLine &
"Rotation|" & c.Yaw.ToString.Replace(GameController.DecSeparator, ".") & Environment.NewLine &
"RivalName|" & RivalName & Environment.NewLine &
"RivalSkin|" & RivalSkin & Environment.NewLine &
"Money|" & Money & Environment.NewLine &
"Badges|" & badgeString & Environment.NewLine &
"Gender|" & GenderString & Environment.NewLine &
@ -2027,7 +2043,7 @@
'Restore default values:
Name = "<playername>"
RivalName = ""
Male = True
RivalSkin = ""
Money = 0
PlayTime = TimeSpan.Zero
GameStart = Date.Now

View File

@ -378,12 +378,13 @@ Public Class GameMode
''' <param name="StartLocationName">The start location name for the new GameMode.</param>
''' <param name="PokemonAppear">The Pokémon that appear on the new game screen for the new GameMode.</param>
''' <param name="IntroMusic">The intro music that plays on the new game screen for the new GameMode.</param>
''' <param name="IntroType">The type of intro used when starting a new game for the GameMode (0 = New Intro (3D), 1 = Old Intro (2D)).</param>
''' <param name="IntroType">The type of intro used when starting a new game for the GameMode (0 = Old Intro (2D), 1 = New Intro (3D)).</param>
''' <param name="SkinColors">The skin colors for the new GameMode. Must be the same amount as SkinFiles and SkinNames.</param>
''' <param name="SkinFiles">The skin files for the new GameMode. Must be the same amount as SkinColors and SkinNames.</param>
''' <param name="SkinNames">The skin names for the new GameMode. Must be the same amount as SkinFiles and SkinColors.</param>
''' <param name="SkinGenders">The skin names for the new GameMode. Must be the same amount as SkinFiles and SkinColors.</param>
Public Sub New(ByVal Name As String, ByVal Description As String, ByVal Version As String, ByVal Author As String, ByVal MapPath As String, ByVal ScriptPath As String, ByVal PokeFilePath As String, ByVal PokemonDataPath As String, ByVal ContentPath As String, ByVal LocalizationsPath As String, ByVal GameRules As List(Of GameRule),
ByVal StartMap As String, ByVal StartPosition As Vector3, ByVal StartRotation As Single, ByVal StartLocationName As String, ByVal StartDialogue As String, ByVal StartColor As Color, ByVal PokemonAppear As String, ByVal IntroMusic As String, ByVal IntroType As String, ByVal SkinColors As List(Of Color), ByVal SkinFiles As List(Of String), ByVal SkinNames As List(Of String))
ByVal StartMap As String, ByVal StartPosition As Vector3, ByVal StartRotation As Single, ByVal StartLocationName As String, ByVal StartDialogue As String, ByVal StartColor As Color, ByVal PokemonAppear As String, ByVal IntroMusic As String, ByVal IntroType As String, ByVal SkinColors As List(Of Color), ByVal SkinFiles As List(Of String), ByVal SkinNames As List(Of String), ByVal SkinGenders As List(Of String))
Me._name = Name
Me._description = Description
Me._version = Version
@ -408,6 +409,7 @@ Public Class GameMode
Me._skinColors = SkinColors
Me._skinFiles = SkinFiles
Me._skinNames = SkinNames
Me._skinGenders = SkinGenders
Me._loaded = True
End Sub
@ -524,6 +526,14 @@ Public Class GameMode
If l.Count > 0 Then
Me._skinNames = l
End If
Case "skingenders"
Dim l As New List(Of String)
For Each skin As String In Value.Split(CChar(","))
l.Add(skin)
Next
If l.Count > 0 Then
Me._skinGenders = l
End If
End Select
End If
Next
@ -556,9 +566,10 @@ Public Class GameMode
Dim SkinColors As List(Of Color) = {New Color(248, 176, 32), New Color(248, 216, 88), New Color(56, 88, 200), New Color(216, 96, 112), New Color(56, 88, 152), New Color(239, 90, 156)}.ToList()
Dim SkinFiles As List(Of String) = {"Ethan", "Lyra", "Nate", "Rosa", "Hilbert", "Hilda"}.ToList()
Dim SkinNames As List(Of String) = {"Ethan", "Lyra", "Nate", "Rosa", "Hilbert", "Hilda"}.ToList()
Dim SkinGenders As List(Of String) = {"Male", "Female", "Male", "Female", "Male", "Female"}.ToList()
Dim gameMode As New GameMode("Pokemon 3D", "The normal game mode.", GameController.GAMEVERSION, "Kolben Games", "\Content\Data\maps\", "\Content\Data\Scripts\", "\Content\Data\maps\poke\", "\Content\Pokemon\Data\", "\Content\", "\Content\Localization\", New List(Of GameRule),
"newgame\intro0.dat", New Vector3(1.0F, 0.1F, 3.0F), MathHelper.PiOver2, "Your Room", "", New Color(59, 123, 165), "0", "welcome", "1", SkinColors, SkinFiles, SkinNames)
"newgame\intro0.dat", New Vector3(1.0F, 0.1F, 3.0F), MathHelper.PiOver2, "Your Room", "", New Color(59, 123, 165), "0", "welcome", "1", SkinColors, SkinFiles, SkinNames, SkinGenders)
Dim gameRules As New List(Of GameRule)
gameRules.Add(New GameRule("MaxLevel", "100"))
@ -650,7 +661,21 @@ Public Class GameMode
iSN += 1
Next
s &= SkinNamesString
s &= SkinNamesString & Environment.NewLine
Dim SkinGendersString As String = "SkinGenders|"
Dim iSG As Integer = 0
For Each SkinGender As String In Me._skinGenders
If iSG > 0 Then
SkinGendersString &= ","
End If
SkinGendersString &= SkinGender
iSG += 1
Next
s &= SkinGendersString
Dim folder As String = System.IO.Path.GetDirectoryName(File)
If System.IO.Directory.Exists(folder) = False Then
@ -839,6 +864,7 @@ Public Class GameMode
Private _skinColors As New List(Of Color)
Private _skinFiles As New List(Of String)
Private _skinNames As New List(Of String)
Private _skinGenders As New List(Of String)
Private _pokemonRange() As Integer
''' <summary>
@ -1007,6 +1033,18 @@ Public Class GameMode
End Set
End Property
''' <summary>
''' The skin genders for this GameMode. Must be the same amount as SkinFiles and SkinColors.
''' </summary>
Public Property SkinGenders() As List(Of String)
Get
Return Me._skinGenders
End Get
Set(value As List(Of String))
Me._skinGenders = value
End Set
End Property
''' <summary>
''' The default gamemode boot up script.
''' </summary>

View File

@ -152,8 +152,6 @@
Core.Player.BerryData = CreateBerryData()
Core.Player.AddVisitedMap("yourroom.dat")
Core.Player.SaveCreated = GameController.GAMEDEVELOPMENTSTAGE & " " & GameController.GAMEVERSION
Core.Player.RivalName = "???"
Dim ot As String = Core.Random.Next(0, 999999).ToString()
While ot.Length < 6
@ -202,7 +200,10 @@
Inherits Screen
Private _skins As String()
Private _skins As New List(Of String)
Private _names As New List(Of String)
Private _colors As New List(Of Color)
Private _genders As New List(Of String)
Private _sprites As New List(Of Texture2D)
Private _offset As Single = 0F
@ -221,7 +222,7 @@
End Set
End Property
Public Sub New(ByVal currentScreen As Screen, ByVal skins As String())
Public Sub New(ByVal currentScreen As Screen)
Identification = Identifications.CharacterSelectionScreen
PreScreen = currentScreen
CanBePaused = True
@ -230,12 +231,16 @@
CanGoFullscreen = True
CanTakeScreenshot = True
MouseVisible = True
SelectedSkin = ""
For Each skin As String In skins
_sprites.Add(TextureManager.GetTexture("Textures\NPC\" & skin))
For Each skin As String In GameModeManager.ActiveGameMode.SkinFiles
_sprites.Add(TextureManager.GetTexture("Textures\OverworldSprites\PlayerSkins\" & skin))
Next
_skins = skins
_skins = GameModeManager.ActiveGameMode.SkinFiles
_names = GameModeManager.ActiveGameMode.SkinNames
_genders = GameModeManager.ActiveGameMode.SkinGenders
_colors = GameModeManager.ActiveGameMode.SkinColors
End Sub
Public Overrides Sub Update()
@ -291,12 +296,12 @@
Public Overrides Sub Draw()
PreScreen.Draw()
Dim backcolor As New Color(_colors(_index), CInt(100 * _fadeIn))
Canvas.DrawRectangle(windowSize, Screens.UI.ColorProvider.MainColor(False, CInt(100 * _fadeIn)))
Canvas.DrawRectangle(windowSize, backcolor)
DrawGradients(255)
SpriteBatch.DrawString(FontManager.MainFont, "Select your appearance", New Vector2(windowSize.Width / 2.0F - FontManager.MainFont.MeasureString("Select your appearance").X, 100), New Color(255, 255, 255, CInt(255 * _fadeIn)), 0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0F)
SpriteBatch.DrawString(FontManager.MainFont, Localization.GetString("new_game_select_skin"), New Vector2(windowSize.Width / 2.0F - FontManager.MainFont.MeasureString(Localization.GetString("new_game_select_skin")).X + 2, 100 + 2), New Color(0, 0, 0, CInt(255 * _fadeIn)), 0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0F)
SpriteBatch.DrawString(FontManager.MainFont, Localization.GetString("new_game_select_skin"), New Vector2(windowSize.Width / 2.0F - FontManager.MainFont.MeasureString(Localization.GetString("new_game_select_skin")).X, 100), New Color(255, 255, 255, CInt(255 * _fadeIn)), 0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0F)
For i = 0 To _sprites.Count - 1
Dim sprite As Texture2D = _sprites(i)
@ -307,7 +312,8 @@
SpriteBatch.Draw(sprite, New Rectangle(CInt(windowSize.Width / 2 - CInt(outSize / 2) + i * 280 - _index * 280 + _offset), CInt(windowSize.Height / 2 - 128), outSize, outSize), New Rectangle(0, frameSize.Height * 2, frameSize.Width, frameSize.Height), New Color(255, 255, 255, CInt(255 * _fadeIn)))
Next
SpriteBatch.DrawString(FontManager.MainFont, _skins(_index), New Vector2(windowSize.Width / 2.0F - FontManager.MainFont.MeasureString(_skins(_index)).X / 2.0F, windowSize.Height / 2.0F + 200), New Color(255, 255, 255, CInt(255 * _fadeIn)))
SpriteBatch.DrawString(FontManager.MainFont, _names(_index), New Vector2(CInt(windowSize.Width / 2.0F - FontManager.MainFont.MeasureString(_names(_index)).X), CInt(windowSize.Height / 2.0F + 200)), New Color(255, 255, 255, CInt(255 * _fadeIn)), 0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0F)
SpriteBatch.DrawString(FontManager.MainFont, _genders(_index), New Vector2(CInt(windowSize.Width / 2.0F - FontManager.MainFont.MeasureString(_genders(_index)).X / 2.0F), CInt(windowSize.Height / 2.0F + 300)), New Color(255, 255, 255, CInt(255 * _fadeIn)), 0F, Vector2.Zero, 1.0F, SpriteEffects.None, 0F)
End Sub
End Class

View File

@ -1507,6 +1507,7 @@ Public Class GameModeSelectionScreen
End If
If Controls.Accept(True, True, True) Then
GameModeManager.SetGameModePointer(_gameModes(_index).DirectoryName)
Localization.ReloadGameModeTokens()
SoundManager.PlaySound("select")
If GameModeManager.ActiveGameMode.IntroType = "0" Then
SetScreen(New TransitionScreen(Me.PreScreen, New NewGameScreen(), Color.Black, False))

View File

@ -2,9 +2,10 @@
Inherits Screen
Dim startSkins() As String = {"Ethan", "Lyra", "Nate", "Rosa", "Hilbert", "Hilda"}
Dim skinNames() As String = {"Ethan", "Lyra", "Nate", "Rosa", "Hilbert", "Hilda"}
Dim backColors() As Color = {New Color(248, 176, 32), New Color(248, 216, 88), New Color(56, 88, 200), New Color(216, 96, 112), New Color(56, 88, 152), New Color(239, 90, 156)}
Dim skinFiles() As String = {GameModeManager.ActiveGameMode.SkinFiles.ToString}
Dim skinNames() As String = {GameModeManager.ActiveGameMode.SkinNames.ToString}
Dim skinGenders() As String = {GameModeManager.ActiveGameMode.SkinGenders.ToString}
Dim skinColors As List(Of Color) = GameModeManager.ActiveGameMode.SkinColors
Public Index As Integer = 0
Dim pokeIndex As Integer = 0
@ -78,7 +79,9 @@
TextBox.Showing = False
Me.Index = 0
TextBox.reDelay = 0
skinTexture = TextureManager.GetTexture(TextureManager.GetTexture("Textures\NPC\" & startSkins(SkinIndex)), New Rectangle(0, 64, 32, 32))
Dim skinTexture2D = TextureManager.GetTexture("Textures\NPC\" & skinFiles(SkinIndex))
Dim skinRectangle As New Rectangle(0, CInt(skinTexture2D.Height / 4 * 2), CInt(skinTexture2D.Width / 3), CInt(skinTexture2D.Height / 4))
skinTexture = TextureManager.GetTexture(skinTexture2D, skinRectangle)
MusicManager.Play("nomusic")
End Sub
@ -87,8 +90,9 @@
Dim GameMode As GameMode = GameModeManager.ActiveGameMode
Me.skinNames = GameMode.SkinNames.ToArray()
Me.startSkins = GameMode.SkinFiles.ToArray()
Me.backColors = GameMode.SkinColors.ToArray()
Me.skinFiles = GameMode.SkinFiles.ToArray()
Me.skinGenders = GameMode.SkinGenders.ToArray()
Me.skinColors = GameMode.SkinColors
Me.pokemonRange = GameMode.PokemonRange
Me.introMusic = GameMode.IntroMusic
@ -104,10 +108,11 @@
Dim Splits() As String = GameMode.StartDialogue.Split(CChar("|"))
Me.Dialogues.AddRange(Splits)
End If
End If
If Me.Dialogues.Count < 3 Then
Me.Dialogues.Clear()
Me.Dialogues.AddRange({Localization.GetString("new_game_oak_1"), Localization.GetString("new_game_oak_2"), Localization.GetString("new_game_oak_3")})
Else
If Me.Dialogues.Count < 3 Then
Me.Dialogues.Clear()
Me.Dialogues.AddRange({Localization.GetString("new_game_intro_1"), Localization.GetString("new_game_intro_2"), Localization.GetString("new_game_intro_3")})
End If
End If
End Sub
@ -154,7 +159,7 @@
Dim AimColor As Color = normalColor
If Me.Index = 4 Then
AimColor = backColors(SkinIndex)
AimColor = skinColors(SkinIndex)
End If
Dim diffR As Byte = 5
@ -207,40 +212,42 @@
End Sub
Public Overrides Sub Draw()
Canvas.DrawRectangle(New Rectangle(0, 0, Core.windowSize.Width, Core.windowSize.Height), currentBackColor)
Public Overrides Sub Draw()
Canvas.DrawRectangle(New Rectangle(0, 0, Core.windowSize.Width, Core.windowSize.Height), currentBackColor)
TextBox.Draw()
TextBox.Draw()
Core.SpriteBatch.Draw(mainTexture, New Rectangle(CInt(Core.windowSize.Width / 2) - 62, CInt(Core.windowSize.Height / 2) - 218, 130, 256), New Rectangle(0, 0, 62, 128), New Color(255, 255, 255, ProfAlpha))
Core.SpriteBatch.Draw(skinTexture, New Rectangle(CInt(Core.windowSize.Width / 2) - 128, CInt(Core.windowSize.Height / 2) - 218, 256, 256), New Color(255, 255, 255, OtherAlpha))
Core.SpriteBatch.Draw(mainTexture, New Rectangle(CInt(Core.windowSize.Width / 2) - 62, CInt(Core.windowSize.Height / 2) - 218, 130, 256), New Rectangle(0, 0, 62, 128), New Color(255, 255, 255, ProfAlpha))
Core.SpriteBatch.Draw(skinTexture, New Rectangle(CInt(Core.windowSize.Width / 2) - 128, CInt(Core.windowSize.Height / 2) - 218, 256, 256), New Color(255, 255, 255, OtherAlpha))
Select Case pokeIndex
Case 1
Core.SpriteBatch.Draw(mainTexture, New Rectangle(CInt(ballPosition.X), CInt(ballPosition.Y), 22, 22), New Rectangle(62 + CInt(ballIndex.X * 22), 48 + CInt(ballIndex.Y * 22), 22, 22), Color.White)
Case 2
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(pokePosition.X) - 100, CInt(pokePosition.Y) - 160, 256, 256), Color.White)
Case 3
If Index < 6 Then
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(Core.windowSize.Width / 2) - 300, CInt(Core.windowSize.Height / 2) - 130, 256, 256), New Color(255, 255, 255, ProfAlpha))
End If
End Select
Select Case pokeIndex
Case 1
Core.SpriteBatch.Draw(mainTexture, New Rectangle(CInt(ballPosition.X), CInt(ballPosition.Y), 22, 22), New Rectangle(62 + CInt(ballIndex.X * 22), 48 + CInt(ballIndex.Y * 22), 22, 22), Color.White)
Case 2
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(pokePosition.X) - 100, CInt(pokePosition.Y) - 218, 256, 256), Color.White)
Case 3
If Index < 6 Then
Core.SpriteBatch.Draw(pokeTexture, New Rectangle(CInt(Core.windowSize.Width / 2) - 300, CInt(Core.windowSize.Height / 2) - 218, 256, 256), New Color(255, 255, 255, ProfAlpha))
End If
End Select
Select Case Index
Case 5
Core.SpriteBatch.DrawString(FontManager.MiniFont, Localization.GetString("new_game_your_name") & ":", New Vector2(TextboxPosition.X, TextboxPosition.Y - 24), Color.White)
Select Case Index
Case 5
Core.SpriteBatch.DrawString(FontManager.MainFont, Localization.GetString("new_game_your_name") & ": ", New Vector2(TextboxPosition.X + 2, TextboxPosition.Y - 32 + 2), Color.Black)
Core.SpriteBatch.DrawString(FontManager.MainFont, Localization.GetString("new_game_your_name") & ": ", New Vector2(TextboxPosition.X, TextboxPosition.Y - 32), Color.White)
DrawTextBox()
If enterCorrectName = True Then
Core.SpriteBatch.DrawString(FontManager.MiniFont, Localization.GetString("new_game_name_too_short"), New Vector2(TextboxPosition.X, TextboxPosition.Y + 30), Color.DarkRed)
Core.SpriteBatch.DrawString(FontManager.MainFont, Localization.GetString("new_game_name_too_short"), New Vector2(TextboxPosition.X, TextboxPosition.Y + 48), Color.DarkRed)
End If
Case 4
Canvas.DrawRectangle(New Rectangle(CInt(TextboxPosition.X - 5), CInt(TextboxPosition.Y - 24), 138, 42), New Color(0, 0, 0, 80))
Core.SpriteBatch.DrawString(FontManager.MiniFont, Localization.GetString("new_game_choose_skin") & ":" & Environment.NewLine & skinNames(SkinIndex), New Vector2(TextboxPosition.X, TextboxPosition.Y - 24), Color.White)
Core.SpriteBatch.DrawString(FontManager.MainFont, Localization.GetString("new_game_choose_skin") & ":" & Environment.NewLine & skinNames(SkinIndex) & Environment.NewLine & skinGenders(SkinIndex), New Vector2(TextboxPosition.X + 2, TextboxPosition.Y - 24 + 2), Color.White)
Core.SpriteBatch.DrawString(FontManager.MainFont, Localization.GetString("new_game_choose_skin") & ":" & Environment.NewLine & skinNames(SkinIndex) & Environment.NewLine & skinGenders(SkinIndex), New Vector2(TextboxPosition.X, TextboxPosition.Y - 24), Color.White)
Canvas.DrawScrollBar(New Vector2(TextboxPosition.X, TextboxPosition.Y + 48), startSkins.Count, 1, SkinIndex, New Size(128, 4), True, TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(112, 12, 1, 1)), TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(113, 12, 1, 1)))
End Select
Canvas.DrawScrollBar(New Vector2(TextboxPosition.X, TextboxPosition.Y + 48), skinFiles.Count, 1, SkinIndex, New Size(128, 4), True, TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(112, 12, 1, 1)), TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\Menu"), New Rectangle(113, 12, 1, 1)))
End Select
End Sub
Private Sub DrawTextBox()
@ -280,7 +287,7 @@
End If
AnimateBall()
Case 2
If pokePosition.Y < CInt(Core.windowSize.Height / 2) + 38 Then
If pokePosition.Y < CInt(Core.windowSize.Height / 2) Then
pokePosition.Y += 5
Else
Dim p As Pokemon = Pokemon.GetPokemonByID(pokeID)
@ -346,10 +353,11 @@
SkinIndex -= 1
End If
SkinIndex = CInt(MathHelper.Clamp(SkinIndex, 0, startSkins.Count - 1))
SkinIndex = CInt(MathHelper.Clamp(SkinIndex, 0, skinFiles.Count - 1))
Dim skinTexture2D = TextureManager.GetTexture("Textures\NPC\" & skinFiles(SkinIndex))
Dim skinRectangle As New Rectangle(0, CInt(skinTexture2D.Height / 4 * 2), CInt(skinTexture2D.Width / 3), CInt(skinTexture2D.Height / 4))
If sIndex <> SkinIndex Then
skinTexture = TextureManager.GetTexture(TextureManager.GetTexture("Textures\NPC\" & startSkins(SkinIndex)), New Rectangle(0, 64, 32, 32))
skinTexture = TextureManager.GetTexture(skinTexture2D, skinRectangle)
End If
If Controls.Accept() = True Then
@ -454,6 +462,7 @@
"MapFile|" & Me.startMap & Environment.NewLine &
"Rotation|" & Me.startYaw.ToString() & Environment.NewLine &
"RivalName|???" & Environment.NewLine &
"RivalSkin|Silver" & Environment.NewLine &
"Money|3000" & Environment.NewLine &
"Badges|0" & Environment.NewLine &
"Gender|Male" & Environment.NewLine &
@ -464,7 +473,7 @@
"hasPokegear|0" & Environment.NewLine &
"freeCamera|1" & Environment.NewLine &
"thirdPerson|0" & Environment.NewLine &
"skin|" & startSkins(SkinIndex) & Environment.NewLine &
"skin|" & skinFiles(SkinIndex) & Environment.NewLine &
"location|" & Me.startLocation & Environment.NewLine &
"battleAnimations|2" & Environment.NewLine &
"BoxAmount|5" & Environment.NewLine &
@ -537,13 +546,13 @@
Select Case True
Case WeirdNames.Contains(name.ToLower())
Return Localization.GetString("new_game_oak_weird_name_1") & name & Localization.GetString("new_game_oak_weird_name_2")
Return Localization.GetString("new_game_intro_weird_name_1") & name & Localization.GetString("new_game_intro_weird_name_2")
Case KnownNames.Contains(name.ToLower())
Return Localization.GetString("new_game_oak_known_name_1") & name & Localization.GetString("new_game_oak_known_name_2")
Return Localization.GetString("new_game_intro_known_name_1") & name & Localization.GetString("new_game_intro_known_name_2")
Case OwnNames.Contains(name.ToLower())
Return Localization.GetString("new_game_oak_same_name_1") & name & Localization.GetString("new_game_oak_same_name_2")
Return Localization.GetString("new_game_intro_same_name_1") & name & Localization.GetString("new_game_intro_same_name_2")
End Select
Return Localization.GetString("new_game_oak_name_1") & name & Localization.GetString("new_game_oak_name_2")
Return Localization.GetString("new_game_intro_name_1") & name & Localization.GetString("new_game_intro_name_2")
End Function
End Class

View File

@ -25,9 +25,15 @@
Core.Player.HasPokegear = True
IsReady = True
Case "renamerival"
Core.SetScreen(New NameObjectScreen(Core.CurrentScreen, TextureManager.GetTexture("GUI\RenameRival"), False, False, "rival", "Silver", AddressOf Script.NameRival))
Dim RivalTexture As String = Core.Player.RivalSkin
Dim RivalName As String
RivalName = "???"
Core.SetScreen(New NameObjectScreen(Core.CurrentScreen, TextureManager.GetTexture(RivalTexture, New Rectangle(0, 64, 32, 32)), False, False, RivalName, "???", AddressOf Script.NameRival))
IsReady = True
CanContinue = False
Case "setrivalskin"
Core.Player.RivalSkin = argument
IsReady = True
Case "wearskin"
With Screen.Level.OwnPlayer
Dim TextureID As String = argument
@ -258,6 +264,16 @@
Case "setrivalname"
Core.Player.RivalName = argument
IsReady = True
Case "setgender"
Select Case argument
Case "0", "Male", "male"
Core.Player.Gender = "Male"
Case "1", "Female", "female"
Core.Player.Gender = "Female"
Case Else
Core.Player.Gender = "Other"
End Select
IsReady = True
Case "setopacity"
Dim newOpacity As Single = sng(argument.Replace("~", Screen.Level.OwnPlayer.Opacity.ToString().Replace(".", GameController.DecSeparator)))
Screen.Level.OwnPlayer.Opacity = newOpacity

View File

@ -235,7 +235,7 @@
If Screens.MainMenu.NewNewGameScreen.CharacterSelectionScreen.SelectedSkin <> "" Then
IsReady = True
Else
SetScreen(New Screens.MainMenu.NewNewGameScreen.CharacterSelectionScreen(CurrentScreen, skins))
SetScreen(New Screens.MainMenu.NewNewGameScreen.CharacterSelectionScreen(CurrentScreen))
End If
Case Else
IsReady = True

View File

@ -68,11 +68,7 @@
Case "name"
Return Core.Player.Name
Case "gender"
If Core.Player.Male = True Then
Return "1"
Else
Return "0"
End If
Return Core.Player.Gender
Case "bp"
Return Core.Player.BP.ToString()
Case "badges"
@ -81,6 +77,8 @@
Return ReturnBoolean(CType(Screen.Camera, OverworldCamera).ThirdPerson)
Case "rival", "rivalname"
Return Core.Player.RivalName
Case "rivalskin"
Return Core.Player.RivalSkin
Case "ot"
Return Core.Player.OT
Case "gamejoltid"

View File

@ -475,6 +475,7 @@ Namespace ScriptVersion2
r(New ScriptCommand("player", "togglepokemonfollow", "Toggles the following Pokémon's visibility."))
r(New ScriptCommand("player", "save", "Saves the game."))
r(New ScriptCommand("player", "setrivalname", {New ScriptArgument("name", ScriptArgument.ArgumentTypes.Str)}.ToList(), "Sets the rival's name."))
r(New ScriptCommand("player", "setrivalskin", {New ScriptArgument("skin", ScriptArgument.ArgumentTypes.Str)}.ToList(), "Sets the rival's skin."))
r(New ScriptCommand("player", "setopacity", {New ScriptArgument("opacity", ScriptArgument.ArgumentTypes.Sng)}.ToList(), "Sets the player entity's opacity."))
' Constructs: