Welcome to the AFK Mods bug tracker. In order to report an issue, you need to have a VALIDATED account to post one. Once you have followed the link the registration email sent you, please select a project from the drop down menu below. Select “Open New Issue” and fill out the form with as many details as possible.

Please also consider sending your bug report to Bethesda if you are reporting on an issue with Skyrim Special Edition, Fallout 4, or Starfield. Doing so will help everyone on all platforms.

Issue Data
Status: New
Issue Type: Bug Report
Project: Unofficial Fallout 4 Patch
Component: Fallout 4: Vanilla
Category: Papyrus
Assigned To: Nobody
Platform: All
Severity: Very Low
Votes: 0
Watching: N/A
Opened By oddlittleturtle on May 7, 2024 4:52 am

Issue #34009: Additional start up checks for CreationClub:StartAfterCharGenScript

 
Some Creations allow the player to access high-level weapons or go to higher-level areas around the map. If one uses Automatron as an example, the player cannot start the quest until level 15 to gain access to the higher-level dungeon, area, and weapons.

Would an update to CreationClub:StartAfterCharGenScript to allow additional checks be something that UFO4P could/should do?

For example, this added/changed:

Group Optional_Properties
    Int Property PlayerLevelToCheck = 1 Auto Const
    { OPTIONAL: Player's level. Default: Level 1}
    Location Property LocationToCheck Auto Const
    { OPTIONAL: Location to Check. }
    ObjectReference Property ObjectToCheck Auto Const
    { OPTIONAL: Marker or other thing in a location to check 3D has not loaded to make sure the player is NOT in the location when the quest starts.}
    Bool Property bCheckLocation = false Auto Const
    { OPTIONAL: Whether or not to check location. Default: False.}
    Bool Property bCheckObject3D = false Auto Const
    { OPTIONAL: Whether or not the script needs to check if an object is 3D loaded. Default: False.}
EndGroup
Event Actor.OnLocationChange(Actor akSender, Location akOldLoc, Location akNewLoc)
    ; check if time to start
    if bCheckObject3D
        if ObjectToCheck.Is3DLoaded() == 0
            debug.trace(self + "Passed requirements" )
            CheckStageToSet()
        endif
    else
        UnregisterForRemoteEvent(Game.GetPlayer(), "OnLocationChange" )
    endif
EndEvent


; update the original function
Function CheckStageToSet()
    if bCheckLocation
        RegisterForRemoteEvent(Game.GetPlayer(), "OnLocationChange" )
    endif

	if MQ102.GetStageDone(ChargenStageToWatch) == true && Game.GetPlayer().GetLevel() >= PlayerLevelToCheck
        if bCheckLocation
            if Game.GetPlayer().IsInLocation(LocationToCheck) == 0
    		    SetStage(MyStageToSet)
            endif
        else
            SetStage(MyStageToSet)
        endif
	else
		RegisterForRemoteEvent(MQ102, "OnStageSet" )
	endif
EndFunction