Added additional Warp SFX, fixed HoleBlock + sfx

This commit is contained in:
JappaWakka 2024-07-05 11:11:33 +02:00
parent 7de8cb3973
commit 15ee853001
12 changed files with 159 additions and 24 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -64,13 +64,21 @@
Dim WarpTurns As Integer = CInt(Me.AdditionalValue.GetSplit(5)) Dim WarpTurns As Integer = CInt(Me.AdditionalValue.GetSplit(5))
Dim FallSpeed As String = "2.25" Dim FallSpeed As String = "2.25"
If Me.AdditionalValue.Split(",").Count >= 7 Then If Me.AdditionalValue.Split(",").Count >= 7 Then
If Me.AdditionalValue.GetSplit(6) <> "" Then
FallSpeed = Me.AdditionalValue.GetSplit(6) FallSpeed = Me.AdditionalValue.GetSplit(6)
End If End If
End If
Dim CameraFollows As Boolean = False
If Me.AdditionalValue.Split(",").Count >= 8 Then If Me.AdditionalValue.Split(",").Count >= 8 Then
If Me.AdditionalValue.GetSplit(7) <> "" Then
CameraFollows = CBool(Me.AdditionalValue.GetSplit(7))
End If
End If
If Me.AdditionalValue.Split(",").Count >= 9 Then
Dim validRotations As New List(Of Integer) Dim validRotations As New List(Of Integer)
Dim rotationData() As String = Me.AdditionalValue.GetSplit(7, ",").Split(CChar("|")) Dim rotationData() As String = Me.AdditionalValue.GetSplit(8, ",").Split(CChar("|"))
For Each Element As String In rotationData For Each Element As String In rotationData
validRotations.Add(CInt(Element)) validRotations.Add(CInt(Element))
Next Next
@ -98,26 +106,37 @@
s &= "@Player.SetMovement(0,-1,0)" & Environment.NewLine & s &= "@Player.SetMovement(0,-1,0)" & Environment.NewLine &
"@Player.DoWalkAnimation(0)" & Environment.NewLine & "@Player.DoWalkAnimation(0)" & Environment.NewLine &
"@Sound.Play(Drop_Fall)" & Environment.NewLine &
"@Player.SetSpeed(" & FallSpeed & ")" & Environment.NewLine & "@Player.SetSpeed(" & FallSpeed & ")" & Environment.NewLine &
"@Player.Move(2)" & Environment.NewLine & "@Player.Move(2)" & Environment.NewLine &
"@Player.SetOpacity(0)" & Environment.NewLine & "@Player.SetOpacity(0)" & Environment.NewLine &
"@Player.ResetMovement" & Environment.NewLine & "@Player.ResetMovement" & Environment.NewLine &
"@Level.Wait(30)" & Environment.NewLine & "@Level.Wait(30)" & Environment.NewLine &
"@Screen.FadeOut(35)" & Environment.NewLine & "@Screen.FadeOut(35)" & Environment.NewLine
"@Player.Warp(" & Destination & "," & CStr(WarpPosition.X).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Y).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Z).Replace(GameController.DecSeparator, ".") & "," & WarpTurns & ")" & Environment.NewLine & If CameraFollows = False Then
s &= "@Player.Warp(" & Destination & "," & CStr(WarpPosition.X).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Y).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Z).Replace(GameController.DecSeparator, ".") & "," & WarpTurns & ",3)" & Environment.NewLine &
"@Level.Update" & Environment.NewLine & "@Level.Update" & Environment.NewLine &
"@Camera.Defix" & Environment.NewLine & "@Camera.Defix" & Environment.NewLine &
"@Camera.Reset" & Environment.NewLine & "@Camera.Reset" & Environment.NewLine &
"@Camera.SetYaw(0)" & Environment.NewLine & "@Camera.SetYaw(0)" & Environment.NewLine &
"@Camera.Update" & Environment.NewLine & "@Camera.Update" & Environment.NewLine &
"@Camera.Fix" & Environment.NewLine & "@Camera.Fix" & Environment.NewLine &
"@Player.Warp(" & CStr(WarpPosition.X).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Y + DropDistance).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Z).Replace(GameController.DecSeparator, ".") & ")" & Environment.NewLine & "@Player.Warp(" & CStr(WarpPosition.X).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Y + DropDistance).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Z).Replace(GameController.DecSeparator, ".") & ")" & Environment.NewLine
"@Player.SetOpacity(1)" & Environment.NewLine & Else
s &= "@Player.Warp(" & Destination & "," & CStr(WarpPosition.X).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Y + DropDistance).Replace(GameController.DecSeparator, ".") & "," & CStr(WarpPosition.Z).Replace(GameController.DecSeparator, ".") & "," & WarpTurns & ",3)" & Environment.NewLine &
"@Level.Update" & Environment.NewLine &
"@Camera.Defix" & Environment.NewLine &
"@Camera.Reset" & Environment.NewLine &
"@Camera.SetYaw(0)" & Environment.NewLine &
"@Camera.Update" & Environment.NewLine
End If
s &= "@Player.SetOpacity(1)" & Environment.NewLine &
"@Level.Update" & Environment.NewLine & "@Level.Update" & Environment.NewLine &
"@Player.SetMovement(0,-1,0)" & Environment.NewLine & "@Player.SetMovement(0,-1,0)" & Environment.NewLine &
"@Player.SetSpeed(" & FallSpeed & ")" & Environment.NewLine & "@Player.SetSpeed(" & FallSpeed & ")" & Environment.NewLine &
"@Screen.FadeIn(35)" & Environment.NewLine & "@Screen.FadeIn(35)" & Environment.NewLine &
"@Player.Move(" & DropDistance & ")" & Environment.NewLine & "@Player.Move(" & DropDistance & ")" & Environment.NewLine &
"@Sound.Play(Drop_Land)" & Environment.NewLine &
"@Level.Update" & Environment.NewLine & "@Level.Update" & Environment.NewLine &
"@Camera.Update" & Environment.NewLine & "@Camera.Update" & Environment.NewLine &
"@Camera.Defix" & Environment.NewLine & "@Camera.Defix" & Environment.NewLine &

View File

@ -37,7 +37,22 @@
Return True Return True
End If End If
End If End If
Dim WarpSoundName As String = "Warp_Exit"
If c >= 6 Then
Dim WarpSoundData As Integer = CInt(link.GetSplit(6))
Select Case WarpSoundData
Case 0
WarpSoundName = "Warp_Exit"
Case 1
WarpSoundName = "Warp_RegularDoor"
Case 2
WarpSoundName = "Warp_Ladder"
Case 3
WarpSoundName = ""
Case Else
WarpSoundName = "Warp_Exit"
End Select
End If
If System.IO.File.Exists(GameController.GamePath & "\" & GameModeManager.ActiveGameMode.MapPath & destination) = True Or System.IO.File.Exists(GameController.GamePath & "\Content\Data\maps\" & destination) = True Then If System.IO.File.Exists(GameController.GamePath & "\" & GameModeManager.ActiveGameMode.MapPath & destination) = True Or System.IO.File.Exists(GameController.GamePath & "\Content\Data\maps\" & destination) = True Then
If MapViewMode = False Then If MapViewMode = False Then
Screen.Level.WarpData.WarpDestination = Me.AdditionalValue.GetSplit(0) Screen.Level.WarpData.WarpDestination = Me.AdditionalValue.GetSplit(0)
@ -46,6 +61,13 @@
Screen.Level.WarpData.DoWarpInNextTick = True Screen.Level.WarpData.DoWarpInNextTick = True
Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw
Screen.Level.WarpData.IsWarpBlock = True Screen.Level.WarpData.IsWarpBlock = True
If GameModeManager.ContentFileExists("Sounds\" & WarpSoundName & ".wav") = True Or GameModeManager.ContentFileExists("Sounds\" & WarpSoundName & ".xnb") = True Then
Screen.Level.WarpData.WarpSound = WarpSoundName
ElseIf WarpSoundName = "" Then
Screen.Level.WarpData.WarpSound = Nothing
Else
Screen.Level.WarpData.WarpSound = "Warp_Exit"
End If
Logger.Debug("Lock Camera") Logger.Debug("Lock Camera")
CType(Screen.Camera, OverworldCamera).YawLocked = True CType(Screen.Camera, OverworldCamera).YawLocked = True
Else Else

View File

@ -18407,12 +18407,27 @@
<Content Include="Content\Sounds\Cries\901.wav"> <Content Include="Content\Sounds\Cries\901.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Content\Sounds\Drop_Fall.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Drop_Land.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Emote_Exclamation.wav"> <Content Include="Content\Sounds\Emote_Exclamation.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Content\Sounds\OverworldPoison.wav"> <Content Include="Content\Sounds\OverworldPoison.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Content\Sounds\Warp_Door.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Warp_Exit.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Warp_Ladder.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Textures\battlecastle.png"> <Content Include="Content\Textures\battlecastle.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>

View File

@ -453,7 +453,7 @@
Public RunMode As Boolean = True Public RunMode As Boolean = True
Public RunToggled As Boolean = False Public RunToggled As Boolean = False
Public DoWalkAnimation As Boolean = False Public DoWalkAnimation As Boolean = True
Public Structure Temp Public Structure Temp
Public Shared PokemonScreenIndex As Integer = 0 Public Shared PokemonScreenIndex As Integer = 0

View File

@ -319,6 +319,7 @@
TextureManager.TextureRectList.Clear() TextureManager.TextureRectList.Clear()
Whirlpool.LoadedWaterTemp = False Whirlpool.LoadedWaterTemp = False
Core.Player.RunToggled = False Core.Player.RunToggled = False
Core.Player.DoWalkAnimation = True
Core.SetScreen(New PressStartScreen()) Core.SetScreen(New PressStartScreen())
Core.Player.loadedSave = False Core.Player.loadedSave = False
End Sub End Sub

View File

@ -189,22 +189,92 @@
Dim cPosition As Vector3 = Screen.Camera.Position Dim cPosition As Vector3 = Screen.Camera.Position
Select Case commas Select Case commas
Case 4 Case 5
Screen.Level.WarpData.WarpDestination = argument.GetSplit(0) Screen.Level.WarpData.WarpDestination = argument.GetSplit(0)
Screen.Level.WarpData.WarpPosition = New Vector3(sng(argument.GetSplit(1).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)), Screen.Level.WarpData.WarpPosition = New Vector3(sng(argument.GetSplit(1).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(2).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)), sng(argument.GetSplit(2).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(3).Replace("~", CStr(cPosition.Z)).Replace(".", GameController.DecSeparator))) sng(argument.GetSplit(3).Replace("~", CStr(cPosition.Z)).Replace(".", GameController.DecSeparator)))
Screen.Level.WarpData.WarpRotations = int(argument.GetSplit(4)) Screen.Level.WarpData.WarpRotations = int(argument.GetSplit(4))
Dim WarpSoundData As Integer = CInt(argument.GetSplit(5))
Select Case WarpSoundData
Case 0
Screen.Level.WarpData.WarpSound = "Warp_Exit"
Case 1
Screen.Level.WarpData.WarpSound = "Warp_Door"
Case 2
Screen.Level.WarpData.WarpSound = "Warp_Ladder"
Case 3
Screen.Level.WarpData.WarpSound = ""
Case Else
Screen.Level.WarpData.WarpSound = "Warp_Exit"
End Select
Screen.Level.WarpData.DoWarpInNextTick = True Screen.Level.WarpData.DoWarpInNextTick = True
Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw
Case 4
If argument.GetSplit(0).Contains(".dat") = False Then
Screen.Level.WarpData.WarpDestination = Screen.Level.LevelFile
Screen.Level.WarpData.WarpPosition = New Vector3(sng(argument.GetSplit(0).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(1).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(2).Replace("~", CStr(cPosition.Z)).Replace(".", GameController.DecSeparator)))
Screen.Level.WarpData.WarpRotations = int(argument.GetSplit(3))
Dim WarpSoundData As Integer = CInt(argument.GetSplit(4))
Select Case WarpSoundData
Case 0
Screen.Level.WarpData.WarpSound = "Warp_Exit"
Case 1
Screen.Level.WarpData.WarpSound = "Warp_Door"
Case 2
Screen.Level.WarpData.WarpSound = "Warp_Ladder"
Case 3 Case 3
Screen.Level.WarpData.WarpSound = ""
Case Else
Screen.Level.WarpData.WarpSound = "Warp_Exit"
End Select
Screen.Level.WarpData.DoWarpInNextTick = True
Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw
Else
Screen.Level.WarpData.WarpDestination = argument.GetSplit(0)
Screen.Level.WarpData.WarpPosition = New Vector3(sng(argument.GetSplit(1).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(2).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(3).Replace("~", CStr(cPosition.Z)).Replace(".", GameController.DecSeparator)))
Screen.Level.WarpData.WarpRotations = int(argument.GetSplit(4))
Screen.Level.WarpData.WarpSound = "Warp_Exit"
Screen.Level.WarpData.DoWarpInNextTick = True
Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw
End If
Case 3
If argument.GetSplit(0).Contains(".dat") = False Then
Screen.Level.WarpData.WarpDestination = Screen.Level.LevelFile
Screen.Level.WarpData.WarpPosition = New Vector3(sng(argument.GetSplit(0).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(1).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(2).Replace("~", CStr(cPosition.Z)).Replace(".", GameController.DecSeparator)))
Screen.Level.WarpData.WarpRotations = 0
Dim WarpSoundData As Integer = CInt(argument.GetSplit(3))
Select Case WarpSoundData
Case 0
Screen.Level.WarpData.WarpSound = "Warp_Exit"
Case 1
Screen.Level.WarpData.WarpSound = "Warp_Door"
Case 2
Screen.Level.WarpData.WarpSound = "Warp_Ladder"
Case 3
Screen.Level.WarpData.WarpSound = ""
Case Else
Screen.Level.WarpData.WarpSound = "Warp_Exit"
End Select
Screen.Level.WarpData.DoWarpInNextTick = True
Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw
Else
Screen.Level.WarpData.WarpDestination = argument.GetSplit(0) Screen.Level.WarpData.WarpDestination = argument.GetSplit(0)
Screen.Level.WarpData.WarpPosition = New Vector3(sng(argument.GetSplit(1).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)), Screen.Level.WarpData.WarpPosition = New Vector3(sng(argument.GetSplit(1).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(2).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)), sng(argument.GetSplit(2).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(3).Replace("~", CStr(cPosition.Z)).Replace(".", GameController.DecSeparator))) sng(argument.GetSplit(3).Replace("~", CStr(cPosition.Z)).Replace(".", GameController.DecSeparator)))
Screen.Level.WarpData.WarpRotations = 0 Screen.Level.WarpData.WarpRotations = 0
Screen.Level.WarpData.WarpSound = "Warp_Exit"
Screen.Level.WarpData.DoWarpInNextTick = True Screen.Level.WarpData.DoWarpInNextTick = True
Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw
End If
Case 2 Case 2
Screen.Camera.Position = New Vector3(sng(argument.GetSplit(0).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)), Screen.Camera.Position = New Vector3(sng(argument.GetSplit(0).Replace("~", CStr(cPosition.X)).Replace(".", GameController.DecSeparator)),
sng(argument.GetSplit(1).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)), sng(argument.GetSplit(1).Replace("~", CStr(cPosition.Y)).Replace(".", GameController.DecSeparator)),
@ -213,6 +283,7 @@
Screen.Level.WarpData.WarpDestination = argument Screen.Level.WarpData.WarpDestination = argument
Screen.Level.WarpData.WarpPosition = Screen.Camera.Position Screen.Level.WarpData.WarpPosition = Screen.Camera.Position
Screen.Level.WarpData.WarpRotations = 0 Screen.Level.WarpData.WarpRotations = 0
Screen.Level.WarpData.WarpSound = "Warp_Exit"
Screen.Level.WarpData.DoWarpInNextTick = True Screen.Level.WarpData.DoWarpInNextTick = True
Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw Screen.Level.WarpData.CorrectCameraYaw = Screen.Camera.Yaw
End Select End Select

View File

@ -712,6 +712,11 @@ Public Class Level
''' If the warp action got triggered by a warp block. ''' If the warp action got triggered by a warp block.
''' </summary> ''' </summary>
Public IsWarpBlock As Boolean Public IsWarpBlock As Boolean
''' <summary>
''' What sound effect to trigger when warping
''' </summary>
Public WarpSound As String
End Structure End Structure
''' <summary> ''' <summary>
@ -1159,13 +1164,15 @@ Public Class Level
' Because of the map change, Roaming Pokémon are moving to their next location on the world map: ' Because of the map change, Roaming Pokémon are moving to their next location on the world map:
RoamingPokemon.ShiftRoamingPokemon(-1) RoamingPokemon.ShiftRoamingPokemon(-1)
' Check if the enter sound should be played by checking if CanDig or CanFly properties are different from the last map: ' Check if the "warp" sound should be played by checking if CanDig or CanFly properties are different from the last map:
If Not Me.WarpData.WarpSound = Nothing And Not Me.WarpData.WarpSound = "" Then
If tempProperties <> Me.CanDig.ToString() & "," & Me.CanFly.ToString() Then If tempProperties <> Me.CanDig.ToString() & "," & Me.CanFly.ToString() Then
SoundManager.PlaySound("enter", False) SoundManager.PlaySound(Me.WarpData.WarpSound, False)
ElseIf tempProperties = "True,False" And Me.CanDig = True And Me.CanFly = False Then ElseIf tempProperties = "True,False" And Me.CanDig = True And Me.CanFly = False Then
SoundManager.PlaySound("enter", False) SoundManager.PlaySound(Me.WarpData.WarpSound, False)
ElseIf tempProperties = "False,False" And Me.CanDig = False And Me.CanFly = False Then ElseIf tempProperties = "False,False" And Me.CanDig = False And Me.CanFly = False Then
SoundManager.PlaySound("enter", False) SoundManager.PlaySound(Me.WarpData.WarpSound, False)
End If
End If End If
' Unlock the yaw on the camera: ' Unlock the yaw on the camera: