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

@ -1528,8 +1528,13 @@ nextIndex:
FieldEffects.OppRageFistPower = 0 FieldEffects.OppRageFistPower = 0
ResetVars() ResetVars()
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)) Core.SetScreen(New TransitionScreen(Me, New BlackOutScreen(Me), Color.Black, False))
End If End If
End If
BattleMapOffset = New Vector3(0) BattleMapOffset = New Vector3(0)
OwnLeadIndex = 0 OwnLeadIndex = 0
OppLeadIndex = 0 OppLeadIndex = 0

View File

@ -1928,8 +1928,12 @@
End If End If
End If End If
If Core.Player.CountFightablePokemon = 0 Then If Core.Player.CountFightablePokemon = 0 Then
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)) Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If End If
End If
Next Next
End If End If
End If End If

View File

@ -51,9 +51,13 @@
End If End If
CanContinue = False CanContinue = False
Else
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False)) Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If End If
End If
Case "trainer" Case "trainer"
If Core.Player.Pokemons.Count > 0 Then If Core.Player.Pokemons.Count > 0 Then
Dim ID As String = argument Dim ID As String = argument
@ -91,9 +95,13 @@
IsReady = True IsReady = True
CanContinue = False CanContinue = False
Else
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False)) Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If End If
End If
Case "wild" Case "wild"
' ID, Level, [shiny], [musicloop], [introtype] ' ID, Level, [shiny], [musicloop], [introtype]
' int int -1 or bool string int ' int int -1 or bool string int
@ -202,9 +210,13 @@
IsReady = True IsReady = True
CanContinue = False CanContinue = False
Else
If Screen.Level.BlackOutScript <> "" Then
CType(CurrentScreen, OverworldScreen).ActionScript.StartScript(Screen.Level.BlackOutScript, 0, False)
Else Else
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False)) Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If End If
End If
Case "setvar" Case "setvar"
Dim varname As String = argument.GetSplit(0) Dim varname As String = argument.GetSplit(0)
Dim varvalue As String = argument.GetSplit(1) Dim varvalue As String = argument.GetSplit(1)

View File

@ -80,7 +80,11 @@
CanContinue = False CanContinue = False
Case "blackout" Case "blackout"
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)) Core.SetScreen(New TransitionScreen(Core.CurrentScreen, New BlackOutScreen(Core.CurrentScreen), Color.Black, False))
End If
IsReady = True IsReady = True

View File

@ -73,6 +73,8 @@ Public Class Level
Private _offsetMapEntities As New List(Of Entity) Private _offsetMapEntities As New List(Of Entity)
Private _offsetMapFloors As New List(Of Entity) Private _offsetMapFloors As New List(Of Entity)
Public _blackOutScript As String = ""
' Radio: ' Radio:
Private _isRadioOn As Boolean = False Private _isRadioOn As Boolean = False
Private _selectedRadioStation As GameJolt.PokegearScreen.RadioStation = Nothing Private _selectedRadioStation As GameJolt.PokegearScreen.RadioStation = Nothing
@ -247,6 +249,18 @@ Public Class Level
End Set End Set
End Property 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> ''' <summary>
''' The name of the current map. ''' The name of the current map.
''' </summary> ''' </summary>

View File

@ -1037,6 +1037,11 @@
Else Else
Screen.Level.DisableMenus = False Screen.Level.DisableMenus = False
End If 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 _reload = False Then
If TagExists(Tags, "EnvironmentType") = True Then If TagExists(Tags, "EnvironmentType") = True Then
Screen.Level.EnvironmentType = CInt(GetTag(Tags, "EnvironmentType")) Screen.Level.EnvironmentType = CInt(GetTag(Tags, "EnvironmentType"))

View File

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