Added BlackOutScript actions map tag

{"BlackOutScript"{str[ScriptPath]}}
will execute the specified script after blacking/whiting out
This commit is contained in:
JappaWakka 2025-07-01 08:00:54 +02:00
parent a3f733c7b6
commit b03fa9f0fc
7 changed files with 56 additions and 8 deletions

View File

@ -1405,8 +1405,8 @@ nextIndex:
ItemReturnScript &= "@Sound.Play(item_found)" & Environment.NewLine & "@Text.Show(" & Core.Player.Name & " found~" & p.OriginalItem.Name & "!*" & Core.Player.Inventory.GetMessageReceive(p.OriginalItem, 1)
p.OriginalItem = Nothing
End If
End If
End If
End If
p.ResetTemp()
Next
@ -1528,7 +1528,12 @@ nextIndex:
FieldEffects.OppRageFistPower = 0
ResetVars()
Core.SetScreen(New TransitionScreen(Me, New BlackOutScreen(Me), Color.Black, False))
If SavedOverworld.Level.BlackOutScript <> "" Then
CType(SavedOverworld.OverworldScreen, OverworldScreen).ActionScript.StartScript(SavedOverworld.Level.BlackOutScript, 0, False)
Core.SetScreen(New TransitionScreen(Me, SavedOverworld.OverworldScreen, Color.Black, False, AddressOf ChangeSavedScreen))
Else
Core.SetScreen(New TransitionScreen(Me, New BlackOutScreen(Me), Color.Black, False))
End If
End If
BattleMapOffset = New Vector3(0)
OwnLeadIndex = 0

View File

@ -1928,7 +1928,11 @@
End If
End If
If Core.Player.CountFightablePokemon = 0 Then
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If
End If
Next
End If

View File

@ -52,7 +52,11 @@
CanContinue = False
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If
End If
Case "trainer"
If Core.Player.Pokemons.Count > 0 Then
@ -92,7 +96,11 @@
CanContinue = False
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If
End If
Case "wild"
' ID, Level, [shiny], [musicloop], [introtype]
@ -203,7 +211,11 @@
CanContinue = False
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If
End If
Case "setvar"
Dim varname As String = argument.GetSplit(0)

View File

@ -80,7 +80,11 @@
CanContinue = False
Case "blackout"
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If
IsReady = True

View File

@ -73,6 +73,8 @@ Public Class Level
Private _offsetMapEntities As New List(Of Entity)
Private _offsetMapFloors As New List(Of Entity)
Public _blackOutScript As String = ""
' Radio:
Private _isRadioOn As Boolean = False
Private _selectedRadioStation As GameJolt.PokegearScreen.RadioStation = Nothing
@ -247,6 +249,18 @@ Public Class Level
End Set
End Property
''' <summary>
''' The script to execute after the player blacks/whites out
''' </summary>
Public Property BlackOutScript() As String
Get
Return Me._blackOutScript
End Get
Set(value As String)
Me._blackOutScript = value
End Set
End Property
''' <summary>
''' The name of the current map.
''' </summary>

View File

@ -1037,6 +1037,11 @@
Else
Screen.Level.DisableMenus = False
End If
If TagExists(Tags, "BlackOutScript") = True Then
Screen.Level.BlackOutScript = CStr(GetTag(Tags, "BlackOutScript"))
Else
Screen.Level.BlackOutScript = ""
End If
If _reload = False Then
If TagExists(Tags, "EnvironmentType") = True Then
Screen.Level.EnvironmentType = CInt(GetTag(Tags, "EnvironmentType"))

View File

@ -120,7 +120,11 @@ Public Class PokemonEncounter
' If the encounter check is true:
If Me._levelReference.PokemonEncounterData.EncounteredPokemon = True And Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
If Core.Player.Pokemons.Count = 0 Then
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If
Me._levelReference.PokemonEncounterData.EncounteredPokemon = False
Exit Sub
Else