This article will cover all the properties within "praVRF:SimulationData", what they do, and how to use them.
SimulationSettings
EntranceMarker: Any ObjectReference to moveto() the player to. Doesn't have to be a XMarkerHeading, doesn't even have to be a marker. But, for best results, use a marker.
DoPreloadTargetArea: if true, PreloadTargetArea() will be called on the EntranceMarker. This will only work if the EntranceMarker is an interior, as "PreloadExteriorCell" seems to cause crashes.
SimulationName: The VR Lounger will be renamed to display this, when the corresponding simulation is loaded. It will also be displayed in the Simulation Menu.
AllowInnerSimulations: If enabled, allows the player to enter simulations while within this simulation. This is only relevant if the player has any way to get another VR Lounger, while within your simulation. If set to false, the player will still be able to build them, but they won't send the player anywhere.
Due to the engine limitation, you can only get as deep as 128 simulations. Also, you can't ever enter the same simulation twice.
LocationKeyword: If your simulation is made up of more than one interior cell, or has interiors connected to the main exterior, you should flag them all with a Location which has this keyword on it. Otherwise, moving between these cells will make the system believe that you just cheated yourself out of the simulation. It will then remove the simulation effects from you, and will assume you are no longer within this simulation.
Alternatively, you can also use IsPlayerInSimulationCallback under AdvancedSimulationSettings.
PreviewScreen: This can be used to customize the screen on the back of the VR Lounger. By default, it will display a "Please Stand By" screen, but, it can actually be set up to display anything.
The default object is "praVRF_SimScreen_Default". You can copy it, and matswap it to display something else. Like, a screenshot from within your simulation.
Make a copy of "Materials\pra\VRFramework\TapePreview.BGSM", and replace the Diffuse texture by your DDS.
Keep in mind that this texture must have a size of power-of-two (256x256, 512x512, 1024x1024, etc). Scale your image into a square, it will be stretched onto the rectangular screen.
AdvancedSimulationSettings
DisableTeleportationCheck: by default, VR Framework will listen to the OnPlayerTeleport event, and try to figure out where you went, potentially de-applying any simulation effects, if it thinks you just cheated yourself to the outside. If you set this setting to true, this check will not be performed while the player is within your simulation.
Use at your own risk!
IsPlayerInSimulationCallback: Alternatively to the above, you can create a custom function within a helper quest or so, which can tell whenever the player is within your simulation or not, if the check is somewhat complicated. The function must not require any arguments, and return a boolean. True if the player is in the simulation, false otherwise. If set up, the result of this function will be trusted 100%.
The property is a struct, made up of a Form, and a string function name.
MenuOptions
AllowExitViaMenu: If set to false, the "Exit Simulation" option in the Simulation Menu will not be available. Could be useful for an "escape-room"-like simulation.
AllowReturnViaMenu: If set to false, the "Return to Start" option in the Simulation Menu will not be available.
Callbacks
The options here can be set up to either call a function on a form, or set a quest stage. "CallbackTarget" must be either a form with a script attached, or a quest.
Then, if it's a quest, "SetThisQuestStage" can be set to something > 0, to set the quest's stage to the given value.
Or, if "CallThisFunction" is set to something except empty string, the function with this name will be called, with the corresponding "ManagerQuest:StackEntryData" as the sole argument.
ManagerQuest:StackEntryData looks like this:Struct StackEntryData
praVRF:VRPodBase pod ; ObjectReference of the pod which the player used to enter the simulation
praVRF:SimulationData sim; The corresponding simulation data
InputEnableLayer enableLayer ; if anything within PlayerControls was set, this was used to enforce these settings
EndStruct
BeforeEnterSimulationCallback: Called during the fadeout while the player is being transported into the simulation
AfterEnterSimulationCallback: Called after the player was transported into the simulation
BeforeExitSimulationCallback: Called during the fadeout while the player is being transported out of simulation
AfterExitSimulationCallback: Called after the player was transported out of the simulation
ReturnToStartCallback: Called if the player uses the "return to start" option via the simulation menu, unless this is disabled via AllowReturnViaMenu
PlayerSettings
SetInsideMemoryHUDMode: calls Game.SetInsideMemoryHUDMode(true) when you enter the simulation (and SetInsideMemoryHUDMode(false) when you exit) if set, whatever it does.
DisablePlayerRadio: Whenever to disable the player's PipBoy radio when entering
AllowFollowers: If enabled, player's followers will follow into the simulation.
Effects
SpellsForPlayer: Give the player these spells while in the simulation
PerksForPlayer: Give the player these perks while in the simulation
SpellsForFollowers: Give the player's followers these spells while in the simulation, if AllowFollowers is enabled.
PerksForFollowers: Give the player's followers these perks while in the simulation, if AllowFollowers is enabled.
ImageSpace: An ImageSpaceModifier which will be applied while inside the simulation.
PlayerControls
All the properties here correspond to the arguments of the DisablePlayerControls function. If any is set, an InputEnableLayer will be created, for while the player is within the simulation. Some of these don't seem to do anything and are probably leftovers from Skyrim (looking at you, abJournalTabs), but have been included just for completeness' sake.
0 comments