Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Scriptname SKK_DDLC01MainScript extends Quest
- ;**************************************************************************
- ;SKKDelayDLC01.PSC Papyrus script for Fallout4
- ;Delay the start of DLC01 Automatron to a configured player level
- ;Can be installed at any time as there is no DLC master dependency
- ;But must be installed and enabled before the player reaches level 15
- ;parent quest is start game enabled run once with a high priority
- ;*********************************************************
- ;Form properties
- GlobalVariable Property pSKK_DDLC01Playerlevel Auto Mandatory
- {The player level to start DLC01 Automatron, base game value is 15. Change this value with the console SET SKK_DDLC01Playerlevel TO Number}
- ;*********************************************************
- ;Local variables
- Quest rDLC01MQ00
- Quest rDLC01MQ01
- Quest rDLC01MQ01Radio
- ;*********************************************************
- Event OnInit()
- ; never use
- EndEvent
- ;*********************************************************
- Event OnQuestInit()
- If Game.IsPluginInstalled("DLCRobot.esm") == TRUE && Game.GetPlayer().GetLevel() < 15
- rDLC01MQ00 = Game.GetFormFromFile(0x00000805, "DLCRobot.esm") as Quest
- rDLC01MQ01 = Game.GetFormFromFile(0x00000806, "DLCRobot.esm") as Quest
- rDLC01MQ01Radio = Game.GetFormFromFile(0x0000fdae, "DLCRobot.esm") as Quest
- If rDLC01MQ00.GetCurrentStageID() < 100 || rDLC01MQ00.GetCurrentStageID() <= 10 ; Stage10 runs QuestScript testing OnLocationChange which at player leve l15 triggers Stage100 which triggers DLC01MQ01.Start()
- Debug.Trace( "SKK_DDLC01MainScript OnInit Registering Remote events" )
- RegisterForRemoteEvent(rDLC01MQ00, "OnStageSet")
- RegisterForRemoteEvent(rDLC01MQ01, "OnStageSet")
- DebugTrace("OnInit End")
- Else
- Debug.Trace( " " )
- Debug.Trace( "*******************************************************************************" )
- Debug.Trace( "SKK_DDLC01MainScript Conditions failed, stopping" )
- Debug.Trace( "SKK_DDLC01MainScript DLC01MQ00 Stage below 100 " + rDLC01MQ00.GetCurrentStageID() )
- Debug.Trace( "SKK_DDLC01MainScript DLC01MQ01 Stage below 10 " + rDLC01MQ01.GetCurrentStageID() )
- Debug.Trace( "*******************************************************************************" )
- Debug.Trace( " " )
- Self.Stop()
- Endif
- Else ; too late
- Debug.Trace( " " )
- Debug.Trace( "*******************************************************************************" )
- Debug.Trace( "SKK_DDLC01MainScript Conditions failed, stopping" )
- Debug.Trace( "SKK_DDLC01MainScript IsPluginInstalled DLCRobot.esm " + Game.IsPluginInstalled("DLCRobot.esm") )
- Debug.Trace( "SKK_DDLC01MainScript Player level is not below 15 " + Game.GetPlayer().GetLevel() )
- Debug.Trace( "*******************************************************************************" )
- Debug.Trace( " " )
- Self.Stop()
- EndIf
- EndEvent
- ; *********************************************************
- Event Quest.OnStageSet(Quest akSender, int auiStageID, int auiItemID)
- Debug.Trace( "SKK_DDLC01MainScript OnStageSet " + akSender + " StageID " + auiStageID + " ItemID " + auiItemID )
- If (akSender == rDLC01MQ00 && auiStageID == 100) || (akSender == rDLC01MQ01 && auiStageID == 10)
- While rDLC01MQ01.IsStarting()
- Utility.WaitMenuMode(0.1)
- EndWhile
- rDLC01MQ01.Stop()
- rDLC01MQ01Radio.Stop()
- UnRegisterForRemoteEvent(rDLC01MQ00, "OnStageSet")
- UnRegisterForRemoteEvent(rDLC01MQ01, "OnStageSet")
- RegisterForRemoteEvent(Game.GetPlayer(), "OnLocationChange")
- DebugTrace("OnStageSet")
- Endif
- EndEvent
- ;*********************************************************
- Event Actor.OnLocationChange(Actor akSender, Location akOldLoc, Location akNewLoc)
- If Game.GetPlayer().GetLevel() >= pSKK_DDLC01Playerlevel.GetValue()
- UnRegisterForRemoteEvent(Game.GetPlayer(), "OnLocationChange")
- rDLC01MQ01Radio.Start()
- rDLC01MQ01.Start()
- rDLC01MQ01.SetStage(10)
- rDLC01MQ01Radio.SetStage(10)
- DebugTrace("OnLocationChange")
- Self.Stop()
- EndIf
- EndEvent
- ;*********************************************************
- ;cqf SKK_DDLC01 "SKK_DDLC01MainScript.DebugTrace"
- Function DebugTrace(String sCaller = "Console")
- Debug.Trace( " " )
- Debug.Trace( "*******************************************************************************" )
- Debug.Trace( "SKK_DDLC01MainScript " + sCaller + " SKK_DDLC01 IsRunning " + Self.IsRunning() )
- Debug.Trace( "SKK_DDLC01MainScript " + sCaller + " DLC01MQ00 IsRunning " + rDLC01MQ00.IsRunning() + " GetCurrentStageID() " + rDLC01MQ00.GetCurrentStageID() )
- Debug.Trace( "SKK_DDLC01MainScript " + sCaller + " DLC01MQ01 IsRunning " + rDLC01MQ01.IsRunning() + " GetCurrentStageID() " + rDLC01MQ01.GetCurrentStageID() )
- Debug.Trace( "SKK_DDLC01MainScript " + sCaller + " DLC01MQ01Radio IsRunning " + rDLC01MQ01Radio.IsRunning() + " GetCurrentStageID() " + rDLC01MQ01Radio.GetCurrentStageID() )
- Debug.Trace( "*******************************************************************************" )
- Debug.Trace( " " )
- EndFunction
- ;*********************************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement