Added <system.scripttrigger>

Returns what triggered the current script (NPCInSight, NPCInteract, ScriptBlockWalkOn, ScriptBlockInteract, Notification, PhoneReceive, PhoneCall, StartScript, ScriptCommand, StrengthTrigger, MapScript, ChatCommand).
This commit is contained in:
JappaWakka 2023-08-06 16:17:05 +02:00
parent d9473e5454
commit 78cd53d745
12 changed files with 44 additions and 26 deletions

View File

@ -87,6 +87,10 @@
If Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then If Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
Dim oS As OverworldScreen = CType(Core.CurrentScreen, OverworldScreen) Dim oS As OverworldScreen = CType(Core.CurrentScreen, OverworldScreen)
Dim scriptTrigger As String = "ScriptBlockWalkOn"
If Me.clickedToActivate = True Then
scriptTrigger = "ScriptBlockInteracted"
End If
If oS.ActionScript.IsReady = True Or canAttach = True Then If oS.ActionScript.IsReady = True Or canAttach = True Then
If Me.CorrectRotation() = True Then If Me.CorrectRotation() = True Then
If Me.clickedToActivate = True Then If Me.clickedToActivate = True Then
@ -94,9 +98,9 @@
SoundManager.PlaySound("select") SoundManager.PlaySound("select")
End If End If
If Me.TriggerID = 2 Then If Me.TriggerID = 2 Then
oS.ActionScript.StartScript(Me.AdditionalValue, GetActivationID()) oS.ActionScript.StartScript(Me.AdditionalValue, GetActivationID(),,, scriptTrigger)
Else Else
oS.ActionScript.StartScript(Me._scriptID, GetActivationID()) oS.ActionScript.StartScript(Me._scriptID, GetActivationID(),,, scriptTrigger)
ActionScript.TempSpin = True ActionScript.TempSpin = True
End If End If
End If End If

View File

@ -55,7 +55,7 @@
End If End If
If ActivateScript <> "" Then If ActivateScript <> "" Then
If Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then If Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(Me.ActivateScript, 0, False) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(Me.ActivateScript, 0, False,, "StrengthTrigger")
End If End If
End If End If

View File

@ -302,13 +302,13 @@
SoundManager.PlaySound("select") SoundManager.PlaySound("select")
Select Case Me.ActionValue Select Case Me.ActionValue
Case 0 Case 0
oScreen.ActionScript.StartScript(Me.AdditionalValue, 1) oScreen.ActionScript.StartScript(Me.AdditionalValue, 1,,, "NPCInteract")
Case 1 Case 1
oScreen.ActionScript.StartScript(Me.AdditionalValue, 0) oScreen.ActionScript.StartScript(Me.AdditionalValue, 0,,, "NPCInteract")
Case 3 Case 3
oScreen.ActionScript.StartScript(Me.AdditionalValue.Replace("<br>", Environment.NewLine), 2) oScreen.ActionScript.StartScript(Me.AdditionalValue.Replace("<br>", Environment.NewLine), 2,,, "NPCInteract")
Case Else Case Else
oScreen.ActionScript.StartScript(Me.AdditionalValue, 0) oScreen.ActionScript.StartScript(Me.AdditionalValue, 0,,, "NPCInteract")
End Select End Select
End If End If
End Sub End Sub
@ -438,10 +438,8 @@
End If End If
End With End With
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(s, 2,,, "NPCInSight")
Screen.Level.OwnPlayer.Opacity = 0.5F ActionScript.IsInSightScript = True
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(s, 2)
ActionScript.IsInsightScript = True
End If End If
End If End If
End If End If

View File

@ -199,7 +199,7 @@
If s.Identification = Screen.Identifications.OverworldScreen Then If s.Identification = Screen.Identifications.OverworldScreen Then
If testForScript = False Then If testForScript = False Then
CType(s, OverworldScreen).ActionScript.StartScript("version=2" & Environment.NewLine & text & Environment.NewLine & ":end", 2, False) CType(s, OverworldScreen).ActionScript.StartScript("version=2" & Environment.NewLine & text & Environment.NewLine & ":end", 2, False,, "ChatCommand")
End If End If
Return text Return text

View File

@ -131,7 +131,7 @@ Public Class NotificationPopup
If Me._positionY <= BackY Then If Me._positionY <= BackY Then
Me._positionY = BackY Me._positionY = BackY
If Me._scriptFile <> "" Then If Me._scriptFile <> "" Then
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(Me._scriptFile, 0, False) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(Me._scriptFile, 0, False,, "Notification")
End If End If
Me.IsReady = True Me.IsReady = True
End If End If

View File

@ -166,14 +166,14 @@ Public Class OverworldScreen
Public Overrides Sub Update() Public Overrides Sub Update()
If GameModeManager.ActiveGameMode.StartScript <> "" AndAlso ActionScript.IsReady AndAlso Not GlobalGameModeScriptStarted Then If GameModeManager.ActiveGameMode.StartScript <> "" AndAlso ActionScript.IsReady AndAlso Not GlobalGameModeScriptStarted Then
ActionScript.reDelay = 0.0F ActionScript.reDelay = 0.0F
ActionScript.StartScript(GameModeManager.ActiveGameMode.StartScript, 0) ActionScript.StartScript(GameModeManager.ActiveGameMode.StartScript, 0,,, "StartScript")
GlobalGameModeScriptStarted = True GlobalGameModeScriptStarted = True
End If End If
'If the MapScript has a value loaded from the MapScript map tag and there is no script running, start that script: 'If the MapScript has a value loaded from the MapScript map tag and there is no script running, start that script:
If LevelLoader.MapScript <> "" And ActionScript.IsReady = True Then If LevelLoader.MapScript <> "" And ActionScript.IsReady = True Then
ActionScript.reDelay = 0.0F ActionScript.reDelay = 0.0F
ActionScript.StartScript(LevelLoader.MapScript, 0) ActionScript.StartScript(LevelLoader.MapScript, 0,,, "MapScript")
LevelLoader.MapScript = "" 'Reset the MapScript. LevelLoader.MapScript = "" 'Reset the MapScript.
End If End If

View File

@ -1364,7 +1364,7 @@
Player.Temp.PokegearPage = Me.menuIndex Player.Temp.PokegearPage = Me.menuIndex
Core.SetScreen(Me.PreScreen) Core.SetScreen(Me.PreScreen)
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript("phone\" & chosenID, 0) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript("phone\" & chosenID, 0,,, "PhoneCall")
End Sub End Sub
Private Sub InitializePhone() Private Sub InitializePhone()
@ -1448,7 +1448,7 @@
Call_Flag = "receiving" Call_Flag = "receiving"
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript("phone\" & chosenID, 0) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript("phone\" & chosenID, 0,,, "PhoneReceiving")
End If End If
End Sub End Sub
@ -1501,7 +1501,7 @@
Call_Flag = "receiving" Call_Flag = "receiving"
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript("phone\" & chosenID, 0) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript("phone\" & chosenID, 0,,, "PhoneReceiving")
End If End If
End Sub End Sub

View File

@ -92,15 +92,25 @@ nextScript:
End If End If
End Get End Get
End Property End Property
Private Shared _scriptTrigger As String = ""
Public Shared Property ScriptTrigger() As String
Get
Return _scriptTrigger
End Get
Set(value As String)
_scriptTrigger = value
End Set
End Property
Public Shared IsInsightScript As Boolean = False
Public Shared IsInSightScript As Boolean = False
''' <summary> ''' <summary>
''' Starts a script. ''' Starts a script.
''' </summary> ''' </summary>
''' <param name="Input">The input string.</param> ''' <param name="Input">The input string.</param>
''' <param name="InputType">Type of information; 0: Script path, 1: Text, 2: Direct input.</param> ''' <param name="InputType">Type of information; 0: Script path, 1: Text, 2: Direct input.</param>
Public Sub StartScript(ByVal Input As String, ByVal InputType As Integer, Optional ByVal CheckDelay As Boolean = True, Optional ByVal ResetInsight As Boolean = True) Public Sub StartScript(ByVal Input As String, ByVal InputType As Integer, Optional ByVal CheckDelay As Boolean = True, Optional ByVal ResetInsight As Boolean = True, Optional ScriptTrigger As String = "")
Screen.Level.OwnPlayer.Opacity = 1 Screen.Level.OwnPlayer.Opacity = 1
If Core.Player.IsRunning = True OrElse Screen.Level.Riding = True Then If Core.Player.IsRunning = True OrElse Screen.Level.Riding = True Then
Screen.Camera.Speed = 0.04F Screen.Camera.Speed = 0.04F
@ -114,8 +124,10 @@ nextScript:
Dim l As ScriptLevel = ScriptLevels(ScriptLevelIndex) Dim l As ScriptLevel = ScriptLevels(ScriptLevelIndex)
ActionScript.ScriptTrigger = ScriptTrigger
If ResetInsight = True Then If ResetInsight = True Then
IsInsightScript = False IsInSightScript = False
End If End If
If reDelay = 0.0F Or CheckDelay = False Then If reDelay = 0.0F Or CheckDelay = False Then

View File

@ -13,11 +13,11 @@
If Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then If Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
Select Case command.ToLower() Select Case command.ToLower()
Case "start" Case "start"
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(argument, 0, True, False) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(argument, 0, True, False, "ScriptCommand")
Case "text" Case "text"
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(argument, 1, True, False) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(argument, 1, True, False, "ScriptCommand")
Case "run" Case "run"
CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(argument, 2, True, False) CType(Core.CurrentScreen, OverworldScreen).ActionScript.StartScript(argument, 2, True, False, "ScriptCommand")
End Select End Select
End If End If

View File

@ -77,6 +77,8 @@
buttonName = KeyBindings.GetKeyName(key) buttonName = KeyBindings.GetKeyName(key)
End If End If
Return buttonName Return buttonName
Case "scripttrigger"
Return ActionScript.ScriptTrigger
Case "random" Case "random"
Dim minRange As Integer = 1 Dim minRange As Integer = 1
Dim maxRange As Integer = 2 Dim maxRange As Integer = 2
@ -130,7 +132,7 @@
Return DefaultNull Return DefaultNull
Case "isinsightscript" Case "isinsightscript"
Return ReturnBoolean(ActionScript.IsInsightScript) Return ReturnBoolean(ActionScript.IsInSightScript)
Case "lastinput" Case "lastinput"
Return InputScreen.LastInput Return InputScreen.LastInput
Case "return" Case "return"

View File

@ -411,7 +411,8 @@ Namespace ScriptVersion2
r(New ScriptCommand("system", "sort", "str", {New ScriptArgument("sortMode", ScriptArgument.ArgumentTypes.Str, {"ascending", "descending"}), r(New ScriptCommand("system", "sort", "str", {New ScriptArgument("sortMode", ScriptArgument.ArgumentTypes.Str, {"ascending", "descending"}),
New ScriptArgument("returnIndex", ScriptArgument.ArgumentTypes.Int), New ScriptArgument("returnIndex", ScriptArgument.ArgumentTypes.Int),
New ScriptArgument("list", ScriptArgument.ArgumentTypes.Arr)}.ToList(), "Sorts the list after sortmode and returns the item at the given index.", ",", True)) New ScriptArgument("list", ScriptArgument.ArgumentTypes.Arr)}.ToList(), "Sorts the list after sortmode and returns the item at the given index.", ",", True))
r(New ScriptCommand("system", "isinsightscript", "bool", "Returns if the running script was triggred by the inSight function of an NPC.", ",", True)) r(New ScriptCommand("system", "ScriptTrigger", "string", "Returns what triggered the current script (NPCInSight, NPCInteract, ScriptBlockWalkOn, ScriptBlockInteract, Notification, PhoneReceive, PhoneCall, StartScript, ScriptCommand, StrengthTrigger, MapScript, ChatCommand).", ",", True))
r(New ScriptCommand("system", "IsInSightScript", "bool", "Returns if the running script was triggered by the inSight function of an NPC.", ",", True))
r(New ScriptCommand("system", "lastinput", "str", "Returns the last input received from the input screen (@screen.input).", ",", True)) r(New ScriptCommand("system", "lastinput", "str", "Returns the last input received from the input screen (@screen.input).", ",", True))
r(New ScriptCommand("system", "return", "str", "Returns the value set with the "":return"" switch.", ",", True)) r(New ScriptCommand("system", "return", "str", "Returns the value set with the "":return"" switch.", ",", True))
r(New ScriptCommand("system", "isint", "bool", {New ScriptArgument("expression", ScriptArgument.ArgumentTypes.Str)}.ToList(), "Checks if the expression is an integer (Outdated, use <math.isint> instead).", ",", True)) r(New ScriptCommand("system", "isint", "bool", {New ScriptArgument("expression", ScriptArgument.ArgumentTypes.Str)}.ToList(), "Checks if the expression is an integer (Outdated, use <math.isint> instead).", ",", True))

View File

@ -94,6 +94,7 @@
Public Sub EndScript(ByVal forceEnd As Boolean) Public Sub EndScript(ByVal forceEnd As Boolean)
ActionScript.ScriptLevelIndex -= 1 ActionScript.ScriptLevelIndex -= 1
ActionScript.ScriptTrigger = ""
If ActionScript.ScriptLevelIndex = -1 Or forceEnd = True Then If ActionScript.ScriptLevelIndex = -1 Or forceEnd = True Then
ActionScript.ScriptLevelIndex = -1 ActionScript.ScriptLevelIndex = -1
Dim oS As OverworldScreen = CType(Core.CurrentScreen, OverworldScreen) Dim oS As OverworldScreen = CType(Core.CurrentScreen, OverworldScreen)