Questlight Studio
Docs / Blueprint node reference

Appendix A. Blueprint node reference

Generated from the plugin's reflection data (RSE.Docs.ExportReference). 2247 nodes, events and overridable functions in 287 classes. Kind: function is a callable node, pure has no execution pin, event is an assignable event (Assign / Bind Event), override is a function a Blueprint subclass overrides. Parameters marked out are outputs, ref are passed by reference.

Classes by module: RSE (186); RSECommonUI (1); RSECore (90); RSEGAS (1); RSENet (4); RSEOnline (5).

ARSEATBBattleDirector

Module RSE. Runs and presents a classic battle on an ATB stage (D-023): ATB (D-022) or turn-based (D-050).

NodeKindCategoryParametersReturnsDescription
End Battle (EndBattle)functionRPG Saga|BattleRemoves the battle actors and returns to Idle.
Get Battle (GetBattle)pureRPG Saga|BattleURSEATBBattle*The running (or last) battle, or none.
Get Battle Initiative (GetBattleInitiative)pureRPG Saga|BattleERSEBattleInitiativeInitiative of the running (or last) battle; before a battle, the one the next battle gets.
Get Battle Mode (GetBattleMode)pureRPG Saga|BattleFGameplayTagBattle.Mode.ATB or Battle.Mode.Turn: the running battle's mode; before a battle, the mode it would get.
Get Battle Outcome (GetBattleOutcome)pureRPG Saga|BattleERSEBattleOutcomeOutcome of the running or last battle (Ongoing without one).
Get Encounter (GetEncounterBP)pureRPG Saga|BattleURSEEncounterData*The encounter this director fights (the override while one is fought).
Get Last Rewards (GetLastRewards)pureRPG Saga|BattleFRSEBattleRewardsWhat the last finished battle gave the party (experience, levels, items; D-030). Empty unless it was won.
Get Phase (GetPhase)pureRPG Saga|BattleERSEATBDirectorPhaseIdle, battle or finished.
Get Time Mode (GetTimeMode)pureRPG Saga|BattleERSEATBTimeModeWait or Active (the player's option, else the rules' default; may be switched during the battle).
Get Time Scale (GetTimeScale)pureRPG Saga|BattlefloatATB time scale now (0 = standing still: Wait mode with a menu open; turn-based battles report 1).
Get Unit Actor (GetUnitActor)pureRPG Saga|BattleUnitId: int32ARSEGridUnit*The actor presenting a unit, or none.
Get Unit Id (GetUnitId)pureRPG Saga|BattleActor: ARSEGridUnit*int32Battle id of the unit an actor presents (-1 for none).
Get Unit Name (GetUnitName)pureRPG Saga|BattleUnitId: int32FTextDisplay name of a battle unit.
Is Active (IsActive)pureRPG Saga|BattleboolA battle runs or has just finished on this stage (not Idle).
Is Command Queued (IsCommandQueued)pureRPG Saga|BattleUnitId: int32boolA player command waits for the action being shown to finish (D-065).
Is Playback Idle (IsPlaybackIdle)pureRPG Saga|BattleboolTrue when no events are waiting to be shown and nothing is being presented.
On Event Presented (BP_OnEventPresented)eventRPG Saga|BattleEvent: FRSEBattleEvent (ref)Fired when a battle event is shown: damage numbers, custom HUDs, sounds.
Set Next Initiative (SetNextInitiative)functionRPG Saga|BattleInitiative: ERSEBattleInitiativeInitiative of the next battle started here (D-063: touching a visible enemy from behind, or being caught from behind). The battle consumes it; later battles start Normal again (a retry too).
Set Time Mode (SetTimeMode)functionRPG Saga|BattleInMode: ERSEATBTimeModeSwitches Wait / Active for the running battle (the options keep the player's stored choice).
Start Battle (StartBattle)functionRPG Saga|BattleEncounterOverride: URSEEncounterData* = NoneboolStarts the encounter with the party (first ATBPartySize characters allowed in ATB). EncounterOverride: fight this encounter instead of the director's own, for this battle only (several classic encounters sharing one stage, e.g. encounter triggers). Null = Encounter.

ARSEATBStage

Module RSE. Where an ATB battle takes place (D-023): the party on one side, enemies on the other, each in a front and a back row, plus a fixed battle camera.

NodeKindCategoryParametersReturnsDescription
Frame Camera (FrameCamera)functionRPG Saga|ATBboolD-183: puts the camera at the authored pose, then moves it to a clear one when geometry hides the formation (Camera Framing -> ATB). Runs when play begins; call it again after the level around the stage changed. Returns true when the camera moved.
Is Camera Reframed (IsCameraReframed)pureRPG Saga|ATBboolD-183: the camera was moved away from its authored pose by FrameCamera.

ARSEAbilityDemoPad

Module RSE. A showcase pad (D-062, gallery maps): the player walks up, presses Interact and watches an ability's presentation (D-034 / D-055: its cue timeline, projectile, camera, reactions) played by a caster on a target dummy.

NodeKindCategoryParametersReturnsDescription
Get Ability (GetAbility)pureRPG Saga|WorldURSEAbilityData*The ability this pad shows.
Play Demo (PlayDemo)functionRPG Saga|WorldboolPlays the ability's presentation now (spawns the units on first use). Returns false without an ability or while one plays.

ARSEActionBattleDirector

Module RSE. The presenter of an action battle (D-171, package A3; the D-141 split: URSEActionSimDriver decides, this shows).

NodeKindCategoryParametersReturnsDescription
Get Action Battle (GetBattleBP)pureRPG Saga|Action BattleURSEActionBattle*The battle shown (the driver's on the authority, the proxy on a guest). Read only: commands go through Submit Command.
Get Battle Time (GetBattleTime)pureRPG Saga|Action BattlefloatBattle seconds now (a guest estimates the host's from the last mirror).
Get Encounter (GetEncounter)pureRPG Saga|Action BattleURSEEncounterData*Get Encounter
Get Unit Actor (GetUnitActor)pureRPG Saga|Action BattleUnitId: int32AActor*The world actor of a unit (null when it has none here).
Get Unit Id Of (GetUnitIdOf)pureRPG Saga|Action BattleActor: AActor*int32The unit an actor is (INDEX_NONE when it does not fight here).
Is Battle Active (IsBattleActive)pureRPG Saga|Action BattleboolIs Battle Active
Is Proxy (IsProxy)pureRPG Saga|Action BattleboolThis machine shows the host's battle (a guest).
On Battle Event (BP_OnEventPresented)eventRPG Saga|Action BattleEvent: FRSEBattleEvent (ref)
Try Finisher (TryFinisher)overrideRPG Saga|Action BattleAttacker: AActor*
Victim: AActor*
Context: FRSEPairedContext (ref)
boolA kill (or a stagger) by this machine's player: plays a finisher locally without stopping anyone (D-172). The default calls Try Play Finisher (Options -> Finishers, the paired animation libraries). Returns true when one plays.

ARSEActionCameraRig

Module RSE. The action battle camera of one local player (D-171, package A3): a third-person view behind the character the player commands, turned by the look input, blending between the Combat, Aim (over the shoulder) and Lock On profiles of Action Battle (Presentation), kept off walls by a sphere probe, shake...

NodeKindCategoryParametersReturnsDescription
Add Trauma (AddTrauma)functionRPG Saga|Action BattleAmount: floatAdds camera shake (0..1).
Get Mode (GetMode)pureRPG Saga|Action BattleERSEActionCameraModeGet Mode
Get Target (GetTarget)pureRPG Saga|Action BattleAActor*Get Target
Get Trauma (GetTrauma)pureRPG Saga|Action BattlefloatGet Trauma
Set Mode (SetMode)functionRPG Saga|Action BattleInMode: ERSEActionCameraModeSet Mode
Set Target (SetTarget)functionRPG Saga|Action BattleInTarget: AActor*Follows another character (a character switch) without a cut.

ARSEActionProjectileActor

Module RSE. A projectile of an action battle in the world (D-171, package A3): each machine shows the battle's projectiles with one of these (the arrow, the fireball, the shell).

NodeKindCategoryParametersReturnsDescription
Get Owner Unit (GetOwnerUnit)pureRPG Saga|Action Battleint32Get Owner Unit
Get Projectile Id (GetProjectileId)pureRPG Saga|Action Battleint32Get Projectile Id
On Impact (OnImpact)overrideRPG Saga|Action BattleLocation: FVector (ref)
HitActor: AActor*
It touched something (a unit or a wall): Blueprint impact effects.

ARSEBuildingEntrance

Module RSE. The entrance of a building (D-150, docs/product/buildings.md): put it at the building's door and pick a mode.

NodeKindCategoryParametersReturnsDescription
Detect Door (DetectDoor)functionBuilding EntranceboolD-158: finds the building's real door (a socket named "door", else a door-shaped opening or frame in its geometry), stands the entrance at it (the door's width and height, facing out) and places the exit point in front of it. Keep Placement leaves a hand placed entrance alone. Returns false when no door was found.
Get Door (GetDoor)pureRPG Saga|BuildingsARSEDoor*Get Door
Get Door Height (GetDoorHeight)pureRPG Saga|BuildingsfloatGet Door Height
Get Door Width (GetDoorWidth)pureRPG Saga|BuildingsfloatGet Door Width
Get Exit Transform (GetExitTransform)pureRPG Saga|BuildingsFTransformWhere the party stands when it comes out (the Exit Point, facing away from the building).
Get Interior (GetInterior)pureRPG Saga|BuildingsURSEInteriorData*Get Interior
Get Mode (GetMode)pureRPG Saga|BuildingsERSEBuildingEntranceModeGet Mode
Get Points Problem (GetPointsProblem)pureBuilding EntranceFTextD-153: Validate Exit Point and Check Interior Entry for tools and scripts: what is wrong, empty when both are usable.
Place Exit Point (PlaceExitPoint)functionBuilding EntranceboolD-153: moves the Exit Point onto the spot FindExitSpot finds (the Building Analyzer calls it). Returns false: none found.

ARSECaravan

Module RSE. A merchant caravan on the road (D-157, docs/product/living-npcs.md "Caravans"): place it, draw its route (the spline, along the roads; or use World Tools -> Place Caravan Route), mark the stops and pick a Caravan Data asset.

NodeKindCategoryParametersReturnsDescription
Get Merchant (GetMerchant)pureRPG Saga|CaravanARSENPC*Get Merchant
Get Position (GetPosition)pureRPG Saga|CaravanFRSECaravanPositionWhere it is now on its timetable.
Is Halted (IsHalted)pureRPG Saga|CaravanboolA player near it on the road holds it.
Refresh Now (RefreshNow)functionCaravanRebuilds the timetable and moves everything to the clock's position at once (load, time skip, live tuning).

ARSEChest

Module RSE. A treasure chest (D-042): items and money, opened once (the opened state is a story flag, so it is saved with the story), optionally locked by conditions or a key item.

NodeKindCategoryParametersReturnsDescription
Is Opened (IsOpened)pureRPG Saga|EconomyboolThe chest was opened already (its Opened flag is set; saved with the story).

ARSECinematicCharacter

Module RSE. A character standing in a story scene (D-078): the spawnable that Cinematic from Screenplay puts in a Level Sequence for every speaker.

NodeKindCategoryParametersReturnsDescription
Copy Look From (CopyLookFrom)functionRPG Saga|ScenesSource: AActor*boolTakes the look of another actor's appearance (the real NPC or pawn it stands in for). Returns false when Source has none.
Get Appearance Component (GetAppearanceComponent)pureRPG Saga|ScenesURSEAppearanceComponent*Get Appearance Component
Set Look (SetLook)functionRPG Saga|ScenesInCharacter: URSECharacterData*
InAppearance: TSoftObjectPtr<URSECharacterAppearance>
InVariant: FName
Shows a look: Appearance (and Variant) when set, else the Character's appearance and equipment.

ARSECombatArea

Module RSE. A designed combat place of the map (D-093, free-tactics.md section 11): a clearing, a square, a bridge where battles are meant to happen.

NodeKindCategoryParametersReturnsDescription
Check Area (CheckArea)pureRPG Saga|Combat RolesFRSECombatAreaReportTraces the area (free tiles) and lists the objects whose role keeps them out of combat areas.
Contains Location (ContainsLocation)pureRPG Saga|Combat RolesLocation: FVector (ref)boolWhether a world position lies inside the area's box (height included).

ARSECompanionAIController

Module RSE. The companion AI of a visible party member (D-097, engineering standards section 12): the controller every member has when no player controls it.

NodeKindCategoryParametersReturnsDescription
Follow (Follow)functionRPG Saga|Party FieldBack to following the leader.
Get Life State (GetLifeState)pureRPG Saga|Party FieldFRSEFollowerLifeStateD-129: the member's following and idle state (deterministic from its seed; the authority owns it).
Get Order (GetOrder)pureRPG Saga|Party FieldERSECompanionOrderGet Order
Stay (Stay)functionRPG Saga|Party FieldStops where it stands until told to follow again.

ARSEDoor

Module RSE. A door the player opens and closes (D-110): in exploration by interacting with it, in a Free Tactics battle with the Door command (it costs the action set in Free Tactics -> Doors).

NodeKindCategoryParametersReturnsDescription
Is Locked (IsLocked)pureRPG Saga|InteriorsboolIs Locked
Is Open (IsOpen)pureRPG Saga|InteriorsboolIs Open
On Door Changed (OnDoorChanged)eventRPG Saga|InteriorsDoor: ARSEDoor*
bOpen: bool
Raised when the door opens or closes.
Set Locked (SetLocked)functionRPG Saga|InteriorsbInLocked: boolLocks or unlocks it (a locked door cannot be opened, neither in exploration nor in battle).
Set Open (SetOpen)functionRPG Saga|InteriorsbInOpen: bool
bAnimate: bool = true
Opens or closes the door (swinging, or at once).

ARSEEncounterSite

Module RSE. D-182: where one encounter is fought in every battle mode, so the same encounter can start in any mode (its own, or the session's Battle Mode Override) on one map: - grid Tactics: Tactics Director (its zone is the grid; the deployment tiles and the enemies' tiles fall back to the zone when the encou...

NodeKindCategoryParametersReturnsDescription
Build Mode Report (BuildModeReport)pure, staticRPG Saga|Battle|Mode OverrideWorldContext: UObject*
InEncounter: URSEEncounterData*
Site: ARSEEncounterSite*
FRSEEncounterModeReportThe mode report of Encounter on World (Site: its encounter site, may be none): the data report, then grid Tactics needs a director with a zone (the site's, or one that has the encounter), classic modes an ATB director with a stage.
Find Site For (FindSiteFor)pure, staticRPG Saga|Battle|Mode OverrideWorldContext: UObject*
InEncounter: URSEEncounterData*
ARSEEncounterSite*The site of Encounter on World (its own encounter, or the asset it was copied from by a mode override), or null.
Get Mode Report (GetModeReport)pureRPG Saga|Battle|Mode OverrideFRSEEncounterModeReportWhich modes the encounter can run in at this site: its data report plus this map's battle sites (grid zone, classic stage, live area).
Start Encounter (StartEncounter)functionRPG Saga|Battle|Mode OverrideSource: AActor* = None
ReturnPoint: AActor* = None
boolStarts the encounter in the mode it is fought in now (its own, or the session's Battle Mode Override). Returns false when it did not start.

ARSEEncounterSpawner

Module RSE. Places visible enemy groups in the world (D-063, visible soldiers that start battles on contact; docs/design/random-encounters.md).

NodeKindCategoryParametersReturnsDescription
Force Contact (ForceContact)functionRPG Saga|EncountersStarts the battle of the first live group now, as if touched (Normal initiative). PIE testing.
Get Group Count (GetGroupCount)pureRPG Saga|Encountersint32Groups this spawner places now (Group Count x the frequency option's density x the time and weather density).
Get Group Reinforcements (GetGroupReinforcements)pureRPG Saga|EncountersGroupIndex: int32URSEReinforcementData*D-117: the reinforcements a group calls in its battles: this spawner's own, else its encounter's or pool's, else its behavior's. Null = none.
Is Group Defeated (IsGroupDefeated)pureRPG Saga|EncountersGroupIndex: int32boolThe group has been defeated and has not come back yet.
Is Spawner Enabled (IsSpawnerEnabled)pureRPG Saga|EncountersboolThe spawner places its groups (Enabled in the details).
On Encounter Contact (OnEncounterContact)eventRPG Saga|EncountersSpawner: ARSEEncounterSpawner*
GroupIndex: int32
Initiative: ERSEBattleInitiative
A touch started the battle of GroupIndex.
On Enemy Alerted (OnEnemyAlerted)eventRPG Saga|EncountersSpawner: ARSEEncounterSpawner*
Enemy: ARSERoamingEnemy*
bAlerted: bool
A leader noticed the party (bAlerted) or gave up (false).
On Group Defeated (OnGroupDefeated)eventRPG Saga|EncountersSpawner: ARSEEncounterSpawner*
GroupIndex: int32
A group was defeated and removed.
On Group Spawned (OnGroupSpawned)eventRPG Saga|EncountersSpawner: ARSEEncounterSpawner*
GroupIndex: int32
A group appeared (level start or respawn).
Reset Saved State (ResetSavedState)functionRPG Saga|EncountersForgets the saved state (defeats, group seeds) and places fresh groups. PIE testing.
Respawn All (RespawnAll)functionRPG Saga|EncountersBrings every group back now (clears the defeated state). Also a button for PIE testing.
Set Spawner Enabled (SetSpawnerEnabled)functionRPG Saga|EncountersbInEnabled: boolTurns the spawner on (spawns its live groups) or off (removes them; their state is kept).
Uses Free Tactics (UsesFreeTactics)pureRPG Saga|EncountersGroupIndex: int32boolThe group fights Free Tactics battles (this spawner's Free Tactics, or its encounter's battle mode).

ARSEEncounterTrigger

Module RSE. A volume on the exploration map that starts a battle when the explorer walks in (D-026).

NodeKindCategoryParametersReturnsDescription
Force Start Encounter (ForceStartEncounter)functionEncounterStarts the encounter now, ignoring rules (PIE testing: select the trigger in the PIE outliner).
Is Condition Met (IsConditionMet)overrideRPG Saga|BattleboolStory condition. Extension point: Phase 7 replaces the default with the unified Conditions system (CLAUDE.md 3.4). Default: always true. May be overridden in a Blueprint subclass meanwhile.
Reset Trigger (ResetTrigger)functionEncounterClears the saved state (consumed, counters) and re-arms.
Set Trigger Enabled (SetTriggerEnabled)functionRPG Saga|BattlebInEnabled: boolTurns the trigger on or off (a disabled trigger never starts its battle).
Try Start Encounter (TryStartEncounter)functionRPG Saga|BattleboolStarts the encounter if the rules allow it.

ARSEExplorationCharacter

Module RSE. The party leader walking the world in exploration.

NodeKindCategoryParametersReturnsDescription
Apply Settings (ApplySettings)functionExplorationRe-reads URSEExplorationSettings (speeds, camera). Also a button for live tuning in PIE.
Get Camera Arm (GetCameraArm)pureRPG Saga|Exploration|CameraURSEExplorationCameraArm*The exploration camera's arm (D-113): zoom, style, the view a battle hands back.
Get Idle Intent (GetIdleIntent)pureRPG Saga|Party FieldFRSEIdleIntentThe idle action shown now (inactive = none).
Get Party Member (GetPartyMember)pureRPG Saga|ExplorationURSECharacterData*Get Party Member
Is Fallen (IsFallen)pureRPG Saga|ExplorationboolIs Fallen
Is Pawn Input Blocked by Screen (IsPawnInputBlockedByScreen)pureRPG Saga|ExplorationboolD-152: a menu or another modal screen of this explorer's player is open (Exploration -> Block Pawn Input Under Screens): movement, camera and action input are ignored. Per local player.
Is Sneaking (IsSneaking)pureRPG Saga|ExplorationboolIs Sneaking
On Interact (OnInteract)eventRPG Saga|ExplorationCharacter: ARSEExplorationCharacter*Examine / talk. Phase 7 routes this to interactables; for now Blueprints and level scripts may listen.
Refresh Appearance (RefreshAppearance)functionExplorationLooks like AppearanceOverride, else the party leader (first ATB formation member) through its character data (D-046); without an appearance the placeholder shape stays. Call after the party changes.
Set Fallen (SetFallen)functionRPG Saga|ExplorationbFallen: boolFallen (D-109): lies on the ground (the knock-out pose, or the placeholder tipped over) until revived.
Set Party Member (SetPartyMember)functionRPG Saga|ExplorationMember: URSECharacterData*The party member this character is (null = the party's leader: the first of the formation).
Set Sneaking (SetSneaking)functionRPG Saga|ExplorationbSneak: boolSneaking: a slower walk, much harder to notice (Stealth settings).

ARSEFreeTacticsCameraPawn

Module RSE. The tactical camera of Free Tactics battles (D-097), in the style of modern party tactics games: it orbits a focus point on the ground, rotates freely (steps or held input), zooms, pans relative to its yaw and glides to the active unit and the actions.

NodeKindCategoryParametersReturnsDescription
Focus On (FocusOn)functionRPG Saga|Free Tactics|CameraWorldLocation: FVector
bInstant: bool = false
Glides to a world location (or cuts at once).
Get Tilt Offset (GetTiltOffset)pureRPG Saga|Free Tactics|CamerafloatGet Tilt Offset
Glide To (GlideTo)functionRPG Saga|Free Tactics|CameraWorldLocation: FVector
Seconds: float
D-115: a short glide of the focus to WorldLocation over Seconds (real time, eased in and out) at the current zoom and angle: the turn change reframe. Seconds <= 0 = FocusOn.
Pan (Pan)functionRPG Saga|Free Tactics|CameraInput: FVector2D
DeltaSeconds: float
Pans the focus: Input X = right, Y = forward relative to the camera's yaw.
Rotate By (RotateBy)functionRPG Saga|Free Tactics|CameraDegrees: floatRotates by Degrees (held input, mouse drag).
Rotate Step (RotateStep)functionRPG Saga|Free Tactics|CameraDirection: floatRotates by Free Tactics (Presentation) -> Camera Rotate Step in the sign of Direction.
Set Tilt Offset (SetTiltOffset)functionRPG Saga|Free Tactics|CameraDegrees: floatD-129: the exploration camera's tilt, kept on this camera's angle (degrees; positive = steeper). Not inside interiors.
Set Yaw (SetYaw)functionRPG Saga|Free Tactics|CameraYaw: float
bInstant: bool = false
Sets the yaw (degrees) and optionally cuts to it.
Zoom (Zoom)functionRPG Saga|Free Tactics|CameraAmount: floatPositive zooms in (steps of Camera Zoom Step).

ARSEFreeTacticsDirector

Module RSE. Presents a Free Tactics battle on the live map (D-097, docs/design/free-tactics.md sections 4-6) on every machine (D-141): plays the events back (walking along UnitMoved.Points, abilities through the battle cue player, falls, joins, the turn marker), the ground overlay (movement area, path, ability...

NodeKindCategoryParametersReturnsDescription
Answer Hazard Prompt (AnswerHazardPrompt)functionRPG Saga|Free TacticsbContinue: boolAnswers the warning: continue (the command goes to the host, which validates it again) or pick another path.
Cancel (Cancel)functionRPG Saga|Free TacticsCancel: leaves Target (back to Move), closes a list.
Confirm (Confirm)functionRPG Saga|Free TacticsConfirm: walk to the hovered point (Move), use the aimed ability (Target).
End Player Turn (EndPlayerTurn)functionRPG Saga|Free TacticsEnds the player's turn (facing where the unit looks).
Get Battle (GetBattle)pureRPG Saga|Free TacticsURSEFreeTacticsBattle*The battle this machine shows: the live one on the authority (single player, the host), the proxy on a guest (changing it there changes nothing: the host's state overwrites it). Presentation code reads GetBattleView.
Get Contact Point (GetContactPoint)pureRPG Saga|Free TacticsFVectorWhere the battle ring spread from.
Get Hazard Prompt Selection (GetHazardPromptSelection)pureRPG Saga|Free Tacticsint32The highlighted answer: 0 = continue, 1 = pick another path.
Get Hazard Prompt Text (GetHazardPromptText)pureRPG Saga|Free TacticsFTextThe warning ("Danger: not enough movement to go around. Crossing Fire: 30% Burn, ~12 damage. Continue?").
Get HUDOpacity (GetHUDOpacity)pureRPG Saga|Free TacticsfloatOpacity of the battle HUD's panels now (they fade in with the entry).
Get Input Mode (GetInputMode)pureRPG Saga|Free TacticsERSEFreeInputMode--- Player input (the controller, the HUD, dev commands) ---
Get Script Runner (GetScriptRunner)pureRPG Saga|Free TacticsURSEBattleScriptRunner*The battle's reinforcements and scripted events (the authority only; null on a guest and outside a battle).
Get Selected Target Id (GetSelectedTargetId)pureRPG Saga|Free Tactics|Targetingint32The unit chosen for the aimed ability (INDEX_NONE = none).
Get Targeting View (GetTargetingViewBP)pureRPG Saga|Free Tactics|TargetingFRSEFreeTargetingViewBlueprint: the targeting view.
Get Unit Actor (GetUnitActor)pureRPG Saga|Free TacticsUnitId: int32AActor*The world actor of a unit (null when none).
Get Unit Id Of (GetUnitIdOf)pureRPG Saga|Free TacticsActor: AActor*int32The unit an actor stands for (INDEX_NONE for none).
Get Unit Name (GetUnitName)pureRPG Saga|Free TacticsUnitId: int32FTextGet Unit Name
Is Awaiting Player (IsAwaitingPlayer)pureRPG Saga|Free TacticsboolThe player may act (a player unit's turn, nothing playing).
Is Battle Active (IsBattleActive)pureRPG Saga|Free TacticsboolIs Battle Active
Is Entry Playing (IsEntryPlaying)pureRPG Saga|Free TacticsboolThe battle's entry (the ring spreading, the enemies turning, the HUD fading in) is still playing: the first turn waits.
Is Hazard Prompt Open (IsHazardPromptOpen)pureRPG Saga|Free TacticsboolA walk, jump or carrying ability waits for the player's answer to the danger warning.
Is Picking Unit (IsPickingUnit)pureRPG Saga|Free Tactics|TargetingboolA single-target ability is being aimed (units are picked, not ground points).
Is Proxy (IsProxy)pureRPG Saga|Free TacticsboolD-141: this machine presents another machine's battle (a guest).
On Callout (BP_OnCallout)eventRPG Saga|Free TacticsCallout: FRSEFreeCallout (ref)A bark or an intent to show over a unit (Blueprint HUDs).
On Custom Menu Command (BP_OnCustomMenuCommand)eventRPG Saga|Free TacticsCommand: FGameplayTag
UnitId: int32
On Event Presented (BP_OnEventPresented)eventRPG Saga|Free TacticsEvent: FRSEBattleEvent (ref)A presented battle event (Blueprint).
On Notice (BP_OnNotice)eventRPG Saga|Free TacticsNotice: FInstancedStruct (ref)Every notice this presenter received (Blueprint: a custom notice's presentation).
Select Target (SelectTarget)functionRPG Saga|Free Tactics|TargetingUnitId: int32boolChooses a unit for the aimed single-target ability (Next / Previous, the mouse, scripts). Returns false when it is no candidate.
Set Hazard Prompt Selection (SetHazardPromptSelection)functionRPG Saga|Free TacticsIndex: int32Set Hazard Prompt Selection
Show Ability Preview (ShowAbilityPreview)functionRPG Saga|Free Tactics|TargetingPlayer: APlayerController*
EntryId: FName
Blueprint: preview an ability of the battle menu (custom menus); NAME_None clears it.

ARSEFrontEndPlayerController

Module RSE. Player controller of the main menu map: shows the mouse cursor, puts input in UI-only mode with the main menu focused (keyboard, gamepad and mouse) and carries out the chosen entries: - Continue: loads the most recent save, fades out and opens its map (URSESaveFlowSubsystem); - New Game: resets the...

NodeKindCategoryParametersReturnsDescription
On Transition Started (OnTransitionStarted)overrideRPG Saga|Front EndCalled when a fade-out towards a new map or quitting starts (hook for sounds or music fades in Blueprint).

ARSEGeneratedInterior

Module RSE. A generated interior (D-158, docs/product/buildings.md "Generated interiors"): the one actor of Buildings -> Generated Interior Map.

NodeKindCategoryParametersReturnsDescription
Clear Built (ClearBuilt)functionGenerated InteriorRemoves everything built.
Get Kit Build Stats (GetKitBuildStats)pureRPG Saga|BuildingsFRSEKitBuildStatsD-164 / K7: counts and time of the last kit build.
Set View Floor (SetViewFloor)functionRPG Saga|BuildingsFloor: int32Shows the floors up to Floor and hides the ones above it (the cutaway; -1 = all shown).

ARSEIdleSpot

Module RSE. A place the visible party uses while the leader rests (D-129): a bench to sit on, a wall to lean on (Kind = Idle.Spot.Sit / Idle.Spot.Lean: a Use Spot behaviour walks there, faces the arrow and loops its animation), or a point of interest the members look at (Kind = Idle.Spot.Interest: a statue, a v...

NodeKindCategoryParametersReturnsDescription
Is Point Of Interest (IsPointOfInterest)pureRPG Saga|Party FieldboolA point of interest: members look here (Interest kind, or Also Point Of Interest).

ARSEInteractableActor

Module RSE. Something the player examines or talks to in exploration (exploration.md, "Interactiuni / NPC").

NodeKindCategoryParametersReturnsDescription
Apply Settings (ApplySettings)functionRPG Saga|InteractionRe-applies the range and reach to the volume (live tuning).
Can Interact (Custom) (CanInteractCustom)overrideRPG Saga|InteractionInteractingPawn: APawn*boolExtra availability rule of a Blueprint subclass (the prompt shows only while it is true). Default: true.
Can Interact Now (CanInteractBP)pureRPG Saga|InteractionInteractingPawn: APawn*boolWhether a pawn may interact now (enabled, prompt conditions, Can Interact (Custom)).
Get Interactable Component (GetInteractableComponent)pureRPG Saga|InteractionURSEInteractableComponent*D-165: the component the interaction system focuses and runs (it asks this actor).
Get Prompt Text (GetPromptText)pureRPG Saga|InteractionFTextThe action shown in the prompt.
Interact (Interact)functionRPG Saga|InteractionInteractingPawn: APawn*boolRuns the interaction and/or starts the dialog, now, on this machine: what the Interact command applies on the authority (D-138). Player input goes through RequestInteract. Returns false when it could not interact.
On Interact (ReceiveInteract)overrideRPG Saga|InteractionInteractingPawn: APawn*
bSucceeded: bool
A custom interaction action (D-052): runs after the data (interaction, dialog, puzzle) when the player interacts. A Blueprint subclass that implements it is interactable even without any data (a lever, a switch, a shrine).
On Interacted (OnInteracted)eventRPG Saga|InteractionInteractable: ARSEInteractableActor*
InteractingPawn: APawn*
bSucceeded: bool
Raised after every interaction (Blueprint and level scripting hook).
Request Interact (RequestInteract)functionRPG Saga|InteractionInteractingPawn: APawn*boolInteracts as the player of InteractingPawn through the command bus (D-138): applied at once in single player and on the host, sent to the host from a guest. Returns true when it was applied (or sent).
Set Interaction Enabled (SetInteractionEnabled)functionRPG Saga|InteractionbInEnabled: boolTurns the interaction on or off (off: no prompt, Interact does nothing).

ARSEInteriorVolume

Module RSE. An interior (D-110): a house, a cave, a dungeon room.

NodeKindCategoryParametersReturnsDescription
Contains Point (ContainsPoint)pureRPG Saga|InteriorsWorldPoint: FVectorboolContains Point
Find At (FindAt)pure, staticRPG Saga|InteriorsWorldContextObject: UObject*
WorldPoint: FVector
ARSEInteriorVolume*The highest-priority interior volume containing WorldPoint (null when none).
Get Box (GetBox)pureRPG Saga|InteriorsUBoxComponent*Get Box
On View Changed (OnViewChanged)eventRPG Saga|InteriorsVolume: ARSEInteriorVolume*
bInside: bool
The view (exploration or battle camera) went into or out of this interior.

ARSELadder

Module RSE. A ladder between two floors (D-110; a traversal link since D-121): a body climbs from Bottom Point to Top Point with its kind's motion and animations (Project Settings -> Traversal -> Default Ladder Kind unless the actor has its own).

NodeKindCategoryParametersReturnsDescription
Get World Ends (GetWorldEnds)pureRPG Saga|InteriorsOutBottom: FVector (out)
OutTop: FVector (out)
Both ends in the world (centimeters, on their floors).
Set Ladder Points (SetLadderPoints)functionRPG Saga|InteriorsInBottom: FVector
InTop: FVector
Sets both ends (local, centimeters) and rebuilds the placeholder: scripts, level tools, tests.

ARSELockableActor

Module RSE, display name RSE Lockable. A locked door or chest (D-109): its Lock data (difficulty, who may pick it, keys) plus keys of its own.

NodeKindCategoryParametersReturnsDescription
Get Lock (GetLock)pureRPG Saga|Exploration RPGURSELockData*Get Lock
Is Locked (IsLocked)pureRPG Saga|Exploration RPGboolIs Locked
On Lock Changed (OnLockChanged)eventRPG Saga|Exploration RPGLockable: ARSELockableActor*
bUnlocked: bool
Reset Lock (ResetLock)functionRPG Saga|Exploration RPGLocked again (editor button, dev tools).
Try Pick (TryPick)functionRPG Saga|Exploration RPGMember: URSECharacterData*
bOutSuccess: bool (out)
boolPicks the lock by chance with Member (null = the best member able to): the delegated command and Auto Resolve mode. Returns false when nobody may try.
Unlock (Unlock)functionRPG Saga|Exploration RPGbAnimate: bool = trueOpens the lock (story, a key, a pick): its Unlock Effects run once.

ARSENPC

Module RSE. A talkable NPC: an interactable with a body (a capsule, plus its Appearance as an animated character (D-046) or a placeholder mesh), a speaker component (cues and barks find it), facing the player while talking, and an optional proximity bark.

NodeKindCategoryParametersReturnsDescription
Get Combat Character (GetCombatCharacter)pureRPG Saga|Exploration RPGURSECharacterData*The character it fights as when a battle makes it a combatant (null = it never fights).
Get NPCId (GetNPCId)pureRPG Saga|Exploration RPGFNameIts id for saves and requests: the living NPC id (else the actor's name).
Get NPCName (GetNPCName)pureRPG Saga|Exploration RPGFTextIts name for notifications: its Object Name, else its speaker's name, else its id.
Get Pickpocket (GetPickpocket)pureRPG Saga|Exploration RPGURSEPickpocketData*What it carries for thieves (null = nothing to steal).
Get Talk Component (GetTalkComponent)pureRPG Saga|NPCURSENPCTalkComponent*D-165: its talking behavior (lines, greeting, facing), driven with this NPC's settings.
Is Defeated (IsDefeated)pureRPG Saga|Exploration RPGboolIs Defeated
Is Present (IsPresent)pureRPG Saga|Exploration RPGboolIt is here and could talk (not away, not beaten, not hidden).
Say Line (SayLine)functionRPG Saga|NPCKind: FGameplayTagboolSays a line from its bark pools over its head (its own, its NPC Type's, else the project's default pools, plus the global ones), of Kind when it has such a line (an invalid Kind = any). Local presentation, never blocking. Returns false when it has nothing to say now.

ARSENPCPlace

Module RSE, display name NPC Place. Where living NPCs do their activities (D-104): a spot, an area or a route, found by Place Id from the NPCs' schedules (any actor tagged with the id works as a spot too).

NodeKindCategoryParametersReturnsDescription
Get Route Points (GetRoutePoints)pureRPG Saga|NPCTArray<FVector>The stops in world space (waypoints, else the spline sampled, else the place itself).

ARSENetGameState

Module RSENet. A game state that carries the replicated state sections from the start (D-140).

NodeKindCategoryParametersReturnsDescription
Get Net State (GetNetState)pureRPG Saga|Co-opURSENetStateComponent*Get Net State

ARSENetPlayerState

Module RSENet. A player state that carries the co-op identity and command transport from the start (D-140).

NodeKindCategoryParametersReturnsDescription
Get Net Player (GetNetPlayer)pureRPG Saga|Co-opURSENetPlayerComponent*Get Net Player

ARSEPuzzleDoor

Module RSE. A locked door or mechanism (D-039): open while OpenConditions pass (e.g.

NodeKindCategoryParametersReturnsDescription
Is Open (IsOpen)pureRPG Saga|PuzzlesboolThe door is open now (its Open Conditions pass).
Refresh (Refresh)functionRPG Saga|PuzzlesbAnimate: bool = trueRe-checks OpenConditions (also runs on every story or party change).

ARSERandomEncounterArea

Module RSE. Classic random ATB battles while the explorer walks inside this volume (D-022, D-026).

NodeKindCategoryParametersReturnsDescription
Force Encounter (ForceEncounter)functionRandom EncounterStarts one of the area's battles now (PIE testing).
Set Area Enabled (SetAreaEnabled)functionRPG Saga|BattlebInEnabled: boolTurns random battles in this area on or off.

ARSERoamingEnemy

Module RSE. A visible enemy in the world (D-063): the leader of a spawner's group (behavior profile, detection, chase, alert) or one of its followers (walks behind the leader).

NodeKindCategoryParametersReturnsDescription
Get Awareness (GetAwareness)pureRPG Saga|EncountersERSEStealthAwarenessUnaware, suspicious or alerted (its leader's for followers; alerted while it hunts the party).
Get Detection (GetDetection)pureRPG Saga|EncountersfloatIts detection meter (0..1, full = it noticed the party). Followers share the leader's.
Get Group Index (GetGroupIndex)pureRPG Saga|Encountersint32Group of the spawner it belongs to.
Get Roaming State (GetRoamingState)pureRPG Saga|EncountersERSERoamingStateWhat it is doing: idle, alerted, chasing, fleeing, returning, stunned (after a fled battle) or sleeping (far away).
Get Spawner (GetSpawner)pureRPG Saga|EncountersARSEEncounterSpawner*The spawner that placed it (its group, battle and respawn).
Investigate (Investigate)functionRPG Saga|EncountersPoint: FVector
Seconds: float
boolComes to look at Point for Seconds (a distraction, D-109): the group walks there, looks around and goes back. Ignored while it hunts the party (Exploration RPG -> Alerted Ignore Distractions), in a battle, as a corpse or stunned. Returns true when it goes to look.
Is Aware Of Party (IsAwareOfParty)pureRPG Saga|EncountersboolIt has noticed the party (alerted or chasing).
Is Leader (IsLeader)pureRPG Saga|EncountersboolIt leads its group (followers walk behind the leader and share its awareness).
Is Unaware (IsUnaware)pureRPG Saga|EncountersboolAttacking it now counts as attacking unseen (its meter is below Stealth -> Unseen Below).

ARSESavePoint

Module RSE. A save point in the world (D-010).

NodeKindCategoryParametersReturnsDescription
Use (Use)functionSave PointUses the save point as if the player pressed Interact in range (PIE testing: select it in the PIE outliner).

ARSESceneTrigger

Module RSE. A volume that plays a story scene when the player's pawn walks in (D-043).

NodeKindCategoryParametersReturnsDescription
Force Play (ForcePlay)functionScenePlays the scene now, ignoring seen state and conditions (PIE testing: select the trigger in the PIE outliner).
Try Play (TryPlay)functionRPG Saga|ScenesboolPlays the scene if it is not seen and the conditions pass. Returns true when it was queued.

ARSESurfaceSpot

Module RSE. A surface that lies in the level before any battle (D-112): the water of a ford, a puddle of oil by the barrels, a poison marsh.

NodeKindCategoryParametersReturnsDescription
Get World Corners (GetWorldCorners)pureRPG Saga|Free Tactics|FieldOutCorners: TArray<FVector> (out)The four corners of the rectangle on the ground (world, centimeters), or the circle's center repeated.
Set Spot Enabled (SetSpotEnabled)functionRPG Saga|Free Tactics|FieldbInEnabled: boolTurns the spot on or off (a drained ford, an oil puddle already burnt).

ARSESwimVolume

Module RSE. A traversal volume placed in the level (D-121, docs/design/traversal.md): deep water by default.

NodeKindCategoryParametersReturnsDescription
Contains Point 2D (ContainsPoint2D)pureRPG Saga|TraversalPoint: FVector (ref)boolWhether a world point lies inside the box (in X and Y; any height up to the surface).
Get Kind (GetKind)pureRPG Saga|TraversalURSETraversalVolumeKindData*The kind in use: the actor's own, else Project Settings -> Traversal -> Default Swim Kind.
Get Surface Z (GetSurfaceZ)pureRPG Saga|TraversalfloatHeight of the surface (world, cm): the box's top.
Set Kind (SetKind)functionRPG Saga|TraversalInKind: URSETraversalVolumeKindData*Sets the kind (scripts, level tools, tests). Null = the settings' default.

ARSETacticsBattleDirector

Module RSE. Runs a Tactics encounter on a zone of the live map (D-009) and presents it (D-006).

NodeKindCategoryParametersReturnsDescription
Begin Encounter (BeginEncounter)functionRPG Saga|BattleStarts the encounter: deployment (or auto-deploy), or the legacy battle without encounter data.
End Encounter (EndEncounter)functionRPG Saga|BattleTears the current encounter down and returns to Idle without starting a new one (back to exploration).
Get Battle (GetBattle)pureRPG Saga|BattleURSETacticsBattle*The running (or last) battle, or none.
Get Battle Outcome (GetBattleOutcome)pureRPG Saga|BattleERSEBattleOutcomeOutcome of the running or last battle (Ongoing without one).
Get Encounter (GetEncounterBP)pureRPG Saga|BattleURSEEncounterData*The encounter this director fights.
Get Last Rewards (GetLastRewards)pureRPG Saga|BattleFRSEBattleRewardsWhat the last finished battle gave the party (experience, levels, items; D-030). Empty unless it was won.
Get Phase (GetPhase)pureRPG Saga|BattleERSEDirectorPhaseIdle, deployment, battle or finished.
Get Unit Actor (GetUnitActor)pureRPG Saga|BattleUnitId: int32ARSEGridUnit*The actor presenting a unit, or none.
Get Unit Id (GetUnitId)pureRPG Saga|BattleActor: ARSEGridUnit*int32Battle id of the unit an actor presents (-1 for none).
Get Unit Name (GetUnitName)pureRPG Saga|BattleUnitId: int32FTextDisplay name of a battle unit.
Is Awaiting Command (IsAwaitingCommand)pureRPG Saga|BattleboolTrue when a player-controlled unit is waiting for a command (no events playing).
Is Playback Idle (IsPlaybackIdle)pureRPG Saga|BattleboolTrue when no events are waiting to be shown and nothing is being presented.
On Event Presented (BP_OnEventPresented)eventRPG Saga|BattleEvent: FRSEBattleEvent (ref)Fired when a battle event is shown (after playback ordering): damage numbers, custom HUDs, sounds.
Restart Encounter (RestartEncounter)functionRPG Saga|BattleTears everything down and begins the encounter again.
Set Encounter (SetEncounter)functionRPG Saga|BattleNewEncounter: URSEEncounterData*boolReplaces the encounter this director fights, only while no encounter runs (Idle): one battle site of a map can host another encounter (story tools, dev commands, D-079). Its unit coordinates must fit the site's zone. Returns false during an encounter.
Start Battle (StartBattle)functionRPG Saga|BattleboolEnds deployment and starts the battle.

ARSETacticsZone

Module RSE. A pre-placed area of the live map that turns into a tactical battlefield (decision D-009).

NodeKindCategoryParametersReturnsDescription
Bake Grid (BakeGrid)functionTactics ZoneRebuilds the grid by tracing level geometry, then applies TileOverrides.
Clear Highlights (ClearHighlights)functionTactics ZoneClears the selection highlights (danger, move, path, target and area layers, the cursor, the ability preview's layers).
Measure Surface (MeasureSurface)functionTactics ZoneMeasures the real surface under every tile again, without changing the grid (heights, walkability, terrain).

ARSETimeOfDayActor

Module RSE, display name Time of Day & Weather. The sky of a level (D-101, docs/design/time-weather.md): drop it into any level.

NodeKindCategoryParametersReturnsDescription
Get Active Profile (GetActiveProfile)pureRPG Saga|TimeURSETimeOfDayProfile*The profile in use (the actor's or the default).
Get Displayed Hour (GetDisplayedHour)pureRPG Saga|TimefloatThe hour the sky shows now.
Recapture Sky (RecaptureSky)functionRPG Saga|TimeRecaptures the sky light now.
Snap Now (SnapNow)functionRPG Saga|TimeApplies everything now without blending (after a skip, a load).

ARSETrapActor

Module RSE, display name RSE Trap. A trap in the world (D-109): a pressure plate, a tripwire, a gas vent, an arrow trap (its Trap data).

NodeKindCategoryParametersReturnsDescription
Get Trap (GetTrap)pureRPG Saga|Exploration RPGURSETrapData*Get Trap
Get Trigger Radius (GetTriggerRadius)pureRPG Saga|Exploration RPGfloatThe trap's size on the ground (cm): a party member touching it sets it off.
Is Armed (IsArmed)pureRPG Saga|Exploration RPGboolIt can still go off (not disarmed, not spent).
Is Disarmed (IsDisarmed)pureRPG Saga|Exploration RPGboolIs Disarmed
Is Revealed (IsRevealed)pureRPG Saga|Exploration RPGboolIs Revealed
On Trap Disarmed (OnTrapDisarmed)eventRPG Saga|Exploration RPGTrap: ARSETrapActor*
Member: URSECharacterData*
On Trap Revealed (OnTrapRevealed)eventRPG Saga|Exploration RPGTrap: ARSETrapActor*
Member: URSECharacterData*
On Trap Triggered (OnTrapTriggered)eventRPG Saga|Exploration RPGTrap: ARSETrapActor*
Member: URSECharacterData*
Reset Trap (ResetTrap)functionRPG Saga|Exploration RPGBack to hidden and armed (editor button, dev tools).
Reveal (Reveal)functionRPG Saga|Exploration RPGMember: URSECharacterData*A member spotted it (Member null = found another way): the marker shows.
Set Off (SetOff)functionRPG Saga|Exploration RPGVictim: AActor*Sets it off on Victim (a party pawn; null = the leader).
Try Disarm (TryDisarm)functionRPG Saga|Exploration RPGMember: URSECharacterData*
bOutSuccess: bool (out)
boolTries to disarm it with Member (null = the best member able to). A failure may set it off (the trap's Failure Triggers). Returns false when nobody may try (then bOutSuccess is false too).

ARSETraversalActor

Module RSE. A placed traversal link (D-121, docs/design/traversal.md): a ladder, a rope, a jump across a gap, a vault, a drop, a zip-line.

NodeKindCategoryParametersReturnsDescription
Get Direction From (GetDirectionFrom)pureRPG Saga|TraversalLocation: FVector (ref)ERSETraversalDirectionThe direction a body at Location would take: from the end nearer to it.
Get Kind (GetKind)pureRPG Saga|TraversalURSETraversalLinkKindData*The kind in use: the actor's own, else the settings' default for its shape (GetDefaultKind).
Get World Path (GetWorldPath)pureRPG Saga|TraversalDirection: ERSETraversalDirection
OutPoints: TArray<FVector> (out)
The link's points in the world (centimeters, feet positions), in the order a body takes them going Direction.
Is Bidirectional (IsBidirectional)pureRPG Saga|TraversalboolThe link may be taken from the end point back to the start.
Set Kind (SetKind)functionRPG Saga|TraversalInKind: URSETraversalLinkKindData*Sets the kind (scripts, level tools, tests). Null = the settings' default.
Set Ways (SetWays)functionRPG Saga|TraversalInWays: ERSETraversalWaysSets which ways it may be taken.

Module RSE. A generic placed link (D-121): Start Point, End Point and optional points in between, edited with the viewport widgets.

NodeKindCategoryParametersReturnsDescription
Set Link Points (SetLinkPoints)functionRPG Saga|TraversalInStart: FVector
InEnd: FVector
InVia: TArray<FVector> (ref)
Sets the points (local, centimeters): scripts, level tools, tests.

ARSEWorldInteractable

Module RSE. A ready-made world object of the interaction library (D-150, docs/product/interaction-library.md): pick an Interactable Data asset (a chest, a campfire, a lantern, a signpost, a danger warning, an examine spot, a shrine, a gathering node, a viewpoint, an obstacle, a class-action object) and place it...

NodeKindCategoryParametersReturnsDescription
Get Danger Level (GetDangerLevel)pureRPG Saga|InteractablesfloatHow dangerous this place is (Danger Override, else the area's progression zone, else the settings' default).
Get Data (GetData)pureRPG Saga|InteractablesURSEInteractableData*Get Data
Get State (GetState)pureRPG Saga|InteractablesFRSEInteractableSaveStateThe saved state now.
Get Visual (GetVisual)pureRPG Saga|InteractablesERSEInteractableVisualThe look now (Default, Active, Depleted).
On Reacted (OnReacted)eventRPG Saga|InteractablesInteractable: ARSEWorldInteractable*
Rule: FName
D-157: raised when an ability used on the world changed it (the rule's name).
On Used (OnUsed)eventRPG Saga|InteractablesInteractable: ARSEWorldInteractable*
Outcome: FRSEInteractableOutcome (ref)
Raised after every use on the authority (Blueprint and level scripting).
Refresh Now (RefreshNow)functionInteractableRe-reads the state and the clock and applies the look (live tuning).
Set Data (SetData)functionRPG Saga|InteractablesInData: URSEInteractableData*Sets the kind (tools, Blueprint) and refreshes the look.

ARSEZoneExit

Module RSE. A way to another map (D-044, docs/design/zones-travel.md): a road or a door with a destination map and arrival point.

NodeKindCategoryParametersReturnsDescription
Try Exit (TryExit)functionRPG Saga|TravelInteractingPawn: APawn*ERSEZoneExitResultTries the exit for InteractingPawn's player through the Take Zone Exit command (D-138): on the authority, travel (after the question, if any; in co-op the group travel rule decides) or the blocked lines. On a guest the request goes to the host and the local evaluation is returned.

URSEAIBattleBrain

Module RSECore. The AI state of one battle (D-056): per-unit boss phases and last stands, the team blackboards and the debugger's decision records.

NodeKindCategoryParametersReturnsDescription
Get Focus Target (GetFocusTarget)pureRPG Saga|AITeam: FGameplayTagint32The team's shared focus target, INDEX_NONE if none.
Get Last Decision Record (GetLastDecisionRecord)pureRPG Saga|AIOutRecord: FRSEAIDecisionRecord (out)boolThe last AI decision of a unit with its scored options (debugger).
Get Own Turns (GetOwnTurns)pureRPG Saga|AIUnitId: int32int32Own turns a unit has started in this battle.
Get Phase (GetPhase)pureRPG Saga|AIUnitId: int32int32Boss phase of a unit: 0 = its base behaviour, N = the Nth phase entered.
Get Support Threat (GetSupportThreat)pureRPG Saga|AITeam: FGameplayTag
EnemyId: int32
floatRemembered threat of EnemyId to Team's Support units (tenths of their max HP).
Get Team Value (GetTeamValue)pureRPG Saga|AITeam: FGameplayTag
Key: FName
Default: float = 0.000000
floatA value on a team's AI blackboard (custom AI rules share information through it).
Set Team Value (SetTeamValue)functionRPG Saga|AITeam: FGameplayTag
Key: FName
Value: float
Free blackboard values (custom Blueprint scorers can share state through them).

URSEAIBlueprintLibrary

Module RSECore. Battle reads for Blueprint AI conditions and scorers (D-052, D-056): subclass URSEAICondition / URSEAIScorer in Blueprint, override IsMet / Score and query the battle through these nodes.

NodeKindCategoryParametersReturnsDescription
Are Enemies (AreEnemies)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitA: int32
UnitB: int32
boolWhether two units are on different teams.
Count Units (CountUnits)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
bAllies: bool
MaxDistance: int32 = -1
int32Active units on a side of the deciding unit within MaxDistance (negative = anywhere). Allies include the unit itself.
Evaluate Scalar (EvaluateScalar)pure, staticRPG Saga|AIScalar: FRSEAIScalar (ref)
Intelligence: float
floatA profile's value of an AI scalar at an intelligence (configurator previews, custom scorers).
Get Attribute (GetAttribute)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitId: int32
Attribute: FGameplayTag
floatFinal value of a unit's attribute (Stat.Attack, a derived or custom attribute).
Get Context Battle (GetContextBattle)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)URSEBattle*The battle of the context.
Get Deciding Unit Id (GetDecidingUnitId)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)int32The unit deciding (the AI unit whose option is scored).
Get Distance (GetDistance)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitA: int32
UnitB: int32
int32Distance between two units (tiles in Tactics, 0 in the classic modes).
Get HPPercent (GetHPPercent)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitId: int32
floatHP of a unit in percent of its maximum (0 if missing).
Get Resource (GetResource)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitId: int32
Resource: FGameplayTag
OutPercent: float (out)
floatA resource of a unit (any configured resource: HP, MP, Resonance, Rage...): its value, and its percentage of the maximum.
Get Target Id (GetTargetId)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)int32The option's primary target (-1 for team-level checks and phase triggers).
Get Team Focus Target (GetTeamFocusTarget)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)int32The deciding unit's team focus target (INDEX_NONE if none).
Get Unit (GetUnit)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitId: int32
OutUnit: FRSEBattleUnit (out)
boolA unit of the context's battle. False if it does not exist.
Get Unit Ids (GetUnitIds)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
bAllies: bool
TArray<int32>Active unit ids on a side of the deciding unit (allies include the unit itself).
Has Status (HasStatus)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitId: int32
Status: FGameplayTag
boolWhether a unit has a status matching the tag.
Is Weak To (IsWeakTo)pure, staticRPG Saga|AIContext: FRSEAIContext (ref)
UnitId: int32
Element: FGameplayTag
boolWhether a unit is weak to an element.

URSEAICondition

Module RSECore. A condition of an AI rule, a boss phase trigger or a composite (D-056).

NodeKindCategoryParametersReturnsDescription
Describe (Describe)overrideRPG Saga|AIFStringShort text for the debugger and logs ("HP < 30% (Target)").
Get Requirement Text (GetRequirementText)overrideRPG Saga|AIFTextWhat the player reads when this condition keeps an ability disabled (D-082 Use Conditions): "Only below 30% HP", "Requires a Sword". Empty = no text of its own (the menu then shows a generic reason).
Is Met (IsMet)overrideRPG Saga|AIContext: FRSEAIContext (ref)boolWhether the condition holds for the context (the unit deciding, the option's target).

URSEAIDebugViewModel

Module RSE. In-game AI debugger (D-056): the last AI decision of the running battle (unit, profile, phase, intelligence, the best options with their score terms) and rank labels on the Tactics tiles.

NodeKindCategoryParametersReturnsDescription
Get Debugged Battle (GetDebuggedBattle)pureRPG Saga|UI|AIDebugURSEBattle*Get Debugged Battle
Toggle Debugger (ToggleDebugger)functionRPG Saga|UI|AIDebugTurns RSE.AI.Debug on or off.

URSEAIDecisionPolicy

Module RSECore, display name Custom Decision Policy (Blueprint). D-168: the last word on a unit's decisions, for special enemies scripted without changing the AI.

NodeKindCategoryParametersReturnsDescription
Override Decision (OverrideDecision)overrideRPG Saga|AIContext: FRSEAIContext (ref)
Options: TArray<FRSEAIOptionView> (ref)
ChosenIndex: int32
OutIndex: int32 (out)
boolFinal choice. Options are best first; ChosenIndex is the utility's pick. Return true and set OutIndex to choose another option (an invalid index keeps the pick). Context: the unit deciding, the intelligence, the brain (TargetId empty).
Override Target (OverrideTarget)overrideRPG Saga|AIContext: FRSEAIContext (ref)
Candidates: TArray<int32> (ref)
OutTargetId: int32 (out)
boolTarget of the chosen ability. Candidates: every unit the same ability (or item) was scored on, from the same place, best first; Context.TargetId is the current target and Context.Ability the ability. Return true and set OutTargetId to aim it at another candidate (not a candidate = kept).

URSEAIInterop

Module RSE. Our AI for the buyer's AI (D-175, docs/product/ai-interop.md): what the Behavior Tree tasks, decorators and services, and the StateTree companion's tasks call.

NodeKindCategoryParametersReturnsDescription
Actor Has Status (ActorHasStatus)pure, staticRPG Saga|AI InteropActor: AActor*
Status: FGameplayTag
boolActor's battle unit has a status that matches Status (parents match children). False outside a battle.
Claim Battle Side (ClaimBattleSide)function, staticRPG Saga|AI InteropController: AAIController*
Team: FGameplayTag
The AI controller becomes the brain of one side of the battle (Team): its tree plays that side's units, one at a time (Grid Tactics: the active unit; ATB: a ready unit), and the framework's AI leaves them alone.
Execute Decision (ExecuteDecision)function, staticRPG Saga|AI InteropActor: AActor*
Decision: FRSEAIInteropDecision (ref)
boolRuns a decision picked for Actor on its battle (the authority). Returns true when the battle took it.
Get Actor Battle Mode (GetActorBattleMode)pure, staticRPG Saga|AI InteropActor: AActor*
OutMode: ERSEAIInteropMode (out)
boolThe battle mode Actor's unit fights in. Returns false outside a battle.
Is Actor in Battle (IsActorInBattle)pure, staticRPG Saga|AI InteropActor: AActor*boolActor is a unit of a running battle (a live Free Tactics battle, or one a project registered).
Is Actors Turn (IsActorsTurn)pure, staticRPG Saga|AI InteropActor: AActor*boolIt is Actor's unit's turn in its battle.
Pick Best Action For (PickBestActionFor)function, staticRPG Saga|AI InteropActor: AActor*
Intelligence: float
OutDecision: FRSEAIInteropDecision (out)
boolWhat our AI would do with Actor's turn now. Intelligence negative = the battle's own (false when the battle states none: pass a value 0-1). Read it, then call Execute Decision, or act on it yourself.
Release Battle Side (ReleaseBattleSide)function, staticRPG Saga|AI InteropController: AAIController*The side goes back to the framework's AI.

URSEAIScorer

Module RSECore. A custom consideration added to the score of every ability option (D-056): Weight x Score(context).

NodeKindCategoryParametersReturnsDescription
Score (Score)overrideRPG Saga|AIContext: FRSEAIContext (ref)floatRaw value of the option in Context (the option's target and ability are set).

URSEAIStyleLibrary

Module RSECore. D-168: building AI styles without code (the AI Style wizard, scripts and tests use the same functions).

NodeKindCategoryParametersReturnsDescription
Apply Sliders (ApplySliders)function, staticRPG Saga|AIProfile: URSEAIProfile*
Sliders: FRSEAIStyleSliders (ref)
Turns the sliders into Profile's weights. Profile must hold the base style's values (a copy of it): the sliders scale them, so applying twice compounds. Stores Sliders in Profile->StyleSliders.
Make Boss Phase (MakeBossPhase)pure, staticRPG Saga|AIStep: FRSEAIBossStep (ref)FRSEAIPhaseThe boss phase a simple step stands for.
Make Boss Step (MakeBossStep)pure, staticRPG Saga|AIPhase: FRSEAIPhase (ref)FRSEAIBossStepA phase as a simple step (its first trigger and first summon; what a step cannot express is left out).
Set Boss Steps (SetBossSteps)function, staticRPG Saga|AIProfile: URSEAIProfile*
Steps: TArray<FRSEAIBossStep> (ref)
Replaces Profile's phases with Steps (in order) and marks it a boss style. Empty Steps keeps no phases.

URSEATBHUDViewModel

Module RSE. The classic battle HUD (ATB and turn-based, D-021 / D-022 / D-050, D-052): party rows with resources and gauges, enemy chips, command menu, target preview and marker, time mode or round, turn order strip, log, banner, key prompts.

NodeKindCategoryParametersReturnsDescription
Choose Command (ChooseCommand)functionRPG Saga|UI|Battle HUDIndex: int32Choose Command
Choose Target (ChooseTarget)functionRPG Saga|UI|Battle HUDUnitId: int32While a target is chosen: aims at UnitId and confirms (click on its chip).
Choose Target Entry (ChooseTargetEntry)functionRPG Saga|UI|Battle HUDIndex: int32While a target is chosen: picks target list entry Index and confirms (click on the row).
Hover Command (HoverCommand)functionRPG Saga|UI|Battle HUDIndex: int32Hover Command
Hover Target (HoverTarget)functionRPG Saga|UI|Battle HUDUnitId: int32While a target is chosen: aims at UnitId (mouse over its chip).
Hover Target Entry (HoverTargetEntry)functionRPG Saga|UI|Battle HUDIndex: int32While a target is chosen: puts the cursor on target list entry Index (mouse over the row).
Toggle Time Mode (ToggleTimeMode)functionRPG Saga|UI|Battle HUDSwitches Wait / Active (the hint's key does the same).

URSEAbilityReaction

Module RSECore, display name Reaction. An automatic response of a unit (D-055): counterattack, overwatch, on-hit / on-death triggers.

NodeKindCategoryParametersReturnsDescription
Can Trigger (CanTrigger)overrideRPG Saga|Abilities|ReactionsBattle: URSEBattle*
ReactorId: int32
TriggerUnitId: int32
boolCustom rule on top of the fields above (Blueprint subclasses). Default: true.

URSEAbilityTestLibrary

Module RSECore. Test ability (D-167): runs an ability headless in mini battles and measures it.

NodeKindCategoryParametersReturnsDescription
Ability Test Report to Text (AbilityTestReportToText)pure, staticRPG Saga|Abilities|TestReport: FRSEAbilityTestReport (ref)FStringThe report as plain text (logs, Python, copy to clipboard).
Get Ability Test Presets (GetAbilityTestPresets)pure, staticRPG Saga|Abilities|TestTArray<FRSEAbilityTestPreset>The target presets of Ability Test settings.
Make Ability Test Request (MakeAbilityTestRequest)pure, staticRPG Saga|Abilities|TestAbility: URSEAbilityData*
Mode: FGameplayTag
FRSEAbilityTestRequestA request for Ability with the settings' defaults (caster, default preset, Tactics, default level and runs).
Resolve Test Character (ResolveTestCharacter)pure, staticRPG Saga|Abilities|TestSource: URSEPrimaryDataAsset*URSECharacterData*The character a test unit source stands for: the character itself, or an archetype's template character.
Run Ability Test (RunAbilityTest)function, staticRPG Saga|Abilities|TestRequest: FRSEAbilityTestRequest (ref)FRSEAbilityTestReportUses Request.Ability Runs times, each in a fresh mini battle of the chosen mode (seed Seed + run), from the caster on its targets, and measures it: hits, damage and healing ranges, statuses with the chance that landed, costs, the area, and a step-by-step trace of the first run. Headless and deterministic: the same request always gives the same report.

URSEActionAIController

Module RSECore. The real-time AI of action battles (A2, D-171; docs/design/action-battle.md): the shared utility AI (profiles, roles, scorers, gates, intelligence curves, rules, boss phases, the Decision Policy hook) adapted to real time.

NodeKindCategoryParametersReturnsDescription
Apply Party Order (ApplyPartyOrderBP)functionRPG Saga|Action AICommand: FRSEActionPartyOrderCommand (ref)
OutReason: FText (out)
boolBlueprint form of ApplyPartyOrder.
Get Battle (GetBattle)pureRPG Saga|Action AIURSEActionBattle*Get Battle
Get Intelligence (GetIntelligence)pureRPG Saga|Action AIUnitId: int32floatThe intelligence a unit decides with: its team's, else the party's (Action AI -> Party Intelligence) or Default Intelligence.
Get Intent (GetIntent)pureRPG Saga|Action AIUnitId: int32
OutIntent: FRSEActionAIIntent (out)
boolThe unit's current decision. Returns false when there is none.
Get Leader (GetLeader)pureRPG Saga|Action AIUnitId: int32int32The unit a member's order refers to (the issuing player's unit), INDEX_NONE if none.
Get Party Order (GetPartyOrder)pureRPG Saga|Action AIUnitId: int32ERSEActionPartyOrderA member's order (Action AI -> Default Party Order until one is given).
Get Unit Memory (GetMemoryBP)pureRPG Saga|Action AIUnitId: int32
OutMemory: FRSEActionAIUnitMemory (out)
boolMemory of a unit. Returns false if the controller never saw it.
Initialize (Initialize)functionRPG Saga|Action AIInBattle: URSEActionBattle*
SeedSalt: int32 = 0
Starts driving Battle. SeedSalt: mixed into the battle's seed (two controllers on one battle decide independently).
Is Driving (IsDriving)pureRPG Saga|Action AIUnitId: int32boolWhether the AI drove the unit on the last step.
Request Decision (RequestDecision)functionRPG Saga|Action AIUnitId: int32Makes the unit decide again on the next Think (a script moved it, its target changed).
Run (Run)functionRPG Saga|Action AIMaxSeconds: floatboolRuns the battle (Think, then one step) until it ends or MaxSeconds of battle time pass. Returns true when it ended.
Set Party Order (SetPartyOrder)functionRPG Saga|Action AIUnitId: int32
Order: ERSEActionPartyOrder
Issuer: FRSEPlayerId
boolOrders one party member (host side; guests go through FRSEActionPartyOrderCommand). Returns false for an invalid unit.
Set Team Intelligence (SetTeamIntelligence)functionRPG Saga|Action AITeam: FGameplayTag
Intelligence: float
Intelligence (0-1, D-007) of a team's units (the adaptive value of the side it plays).
Set Team Party Order (SetTeamPartyOrder)functionRPG Saga|Action AITeam: FGameplayTag
Order: ERSEActionPartyOrder
Issuer: FRSEPlayerId
int32Orders every member of Team. Returns how many were ordered.
Think (Think)functionRPG Saga|Action AIDecides, executes and reacts for every driven unit (call before every battle step; host only).

URSEActionAgent

Module RSE. RSE Action Agent

NodeKindCategoryParametersReturnsDescription
Can Accept Action Order (CanAcceptActionOrder)overrideRPG Saga|Action AgentboolThe pawn can take an order now (alive, not stunned, not locked in an animation). The AI waits when it cannot.
Get Action Battle Control (GetActionBattleControl)overrideRPG Saga|Action AgentERSEActionAgentControlWho plays this pawn's unit in an action battle: the framework's AI (default), or the pawn's own brain. Read when the unit joins.
Is Busy with Order (IsBusyWithOrder)overrideRPG Saga|Action AgentboolAn order is still being carried out (a walk in progress, an ability playing).
On Action Battle Joined (OnActionBattleJoined)overrideRPG Saga|Action AgentUnitId: int32The pawn's unit joined an action battle (UnitId is its id there; the nodes find it from the pawn, this is for Blueprint brains).
On Action Battle Left (OnActionBattleLeft)overrideRPG Saga|Action AgentThe action battle ended (or the unit left it).
Order Move To (OrderMoveTo)overrideRPG Saga|Action AgentWorldLocation: FVector (ref)
AcceptanceRadius: float
boolWalk (or run) to WorldLocation and stop within AcceptanceRadius (cm). Returns true when the pawn took the order.
Order Stop (OrderStop)overrideRPG Saga|Action AgentCancels the order in progress (movement and a started ability that can still be cancelled).
Order Use Ability (OrderUseAbility)overrideRPG Saga|Action AgentAbility: URSEAbilityData*
TargetActor: AActor*
TargetLocation: FVector (ref)
boolUse Ability on TargetActor (null: at TargetLocation, a point in the world). The pawn plays it with its own animation and combat code. Returns true when the pawn took the order.

URSEActionAgents

Module RSE. The action agent of an actor: the actor itself when it implements IRSEActionAgent, else its component that does.

NodeKindCategoryParametersReturnsDescription
Agent Use Ability (AgentUseAbility)function, staticRPG Saga|Action AgentActor: AActor*
Ability: URSEAbilityData*
TargetActor: AActor*
TargetLocation: FVector
boolOrders Actor's agent to use an ability. Returns false when Actor is not an agent or it did not take the order.
Can Agent Accept Order (CanAgentAcceptOrder)pure, staticRPG Saga|Action AgentActor: AActor*boolThe agent can take an order now (false for a non-agent).
Find Action Agent (FindActionAgent)pure, staticRPG Saga|Action AgentActor: AActor*UObject*The object that answers IRSEActionAgent for Actor (the actor, or its component), or null.
Get Battle Control (GetBattleControl)pure, staticRPG Saga|Action AgentActor: AActor*ERSEActionAgentControlWho plays Actor's unit in action battles (Framework for a non-agent).
Is Action Agent (IsActionAgent)pure, staticRPG Saga|Action AgentActor: AActor*boolActor implements the interface itself or through a component.
Is Agent Busy (IsAgentBusy)pure, staticRPG Saga|Action AgentActor: AActor*boolThe agent is still carrying out an order (false for a non-agent).
Move Agent To (MoveAgentTo)function, staticRPG Saga|Action AgentActor: AActor*
WorldLocation: FVector
AcceptanceRadius: float = 50.000000
boolOrders Actor's agent to move. Returns false when Actor is not an agent or it did not take the order.
Stop Agent (StopAgent)function, staticRPG Saga|Action AgentActor: AActor*Stops Actor's agent.

URSEActionBattle

Module RSECore. Headless real-time action battle (D-171, docs/design/action-battle.md): the sixth battle mode, from sword fights to RPG shooters, on the same party, abilities, items, damage pipeline, statuses (control statuses included, D-167) and objectives as the other modes (URSEBattle).

NodeKindCategoryParametersReturnsDescription
Advance (Advance)functionRPG Saga|Action BattleDeltaSeconds: floatAdvances simulated time in fixed steps (the remainder is kept for the next call).
Assign Controller (AssignController)functionRPG Saga|Action BattleUnitId: int32
Player: FRSEPlayerId
Gives Player command of a unit (the driver at the start; None = the AI). No event.
Can Use Ability (CanUseAbility)pureRPG Saga|Action BattleUnitId: int32
Ability: URSEAbilityData*
ERSEActionCommandResultWhether UnitId could use Ability now (ignoring targets): busy, statuses, cooldown or gauge, stamina, costs, requirements.
Execute Command (ExecuteCommand)functionRPG Saga|Action BattleCommand: FRSEActionCommand (ref)ERSEActionCommandResultValidates and applies one decision (the only way a controller changes the battle). Ok / Queued = accepted.
Get Action State (GetActionStateBP)pureRPG Saga|Action BattleUnitId: int32
OutState: FRSEActionUnitState (out)
boolThe real-time state of a unit. Returns false for an unknown unit.
Get Attack Reach (GetAttackReach)pureRPG Saga|Action BattleUnitId: int32floatHow far a unit's plain attack reaches (combo step hitbox, fire mode range or the basic attack's reach), for AI and HUDs.
Get Claim Count (GetClaimCount)pureRPG Saga|Action BattleResult: ERSEActionClaimResultint32How many hit claims ended with Result so far (accepted ones as Accepted; anti-abuse statistics).
Get Controlled Unit (GetControlledUnit)pureRPG Saga|Action BattlePlayer: FRSEPlayerIdint32The unit Player commands (INDEX_NONE if none).
Get Cooldown Remaining (GetCooldownRemaining)pureRPG Saga|Action BattleUnitId: int32
Ability: URSEAbilityData*
floatSeconds until Ability is ready for UnitId again (0 = ready, or not on cooldown pacing).
Get Elapsed Time (GetElapsedTime)pureRPG Saga|Action BattlefloatBattle seconds simulated so far.
Get Last Claim Check (GetLastClaimCheck)pureRPG Saga|Action BattleFRSEActionClaimCheckWhat the last hit claim the battle applied or refused found (tests, logs, the HUD's "miss").
Get Obstacles (GetObstacles)pureRPG Saga|Action BattleTArray<FRSEActionObstacle>The obstacles of the headless space (see SetObstacles).
Get Projectiles (GetProjectiles)pureRPG Saga|Action BattleTArray<FRSEActionProjectile>Projectiles in flight.
Get Resolved Rules (GetResolvedRules)pureRPG Saga|Action BattleAbility: URSEAbilityData*FRSEAbilityActionRulesThe action rules Ability uses in this battle (its own, or derived from its other rules).
Get Unit Controller (GetUnitController)pureRPG Saga|Action BattleUnitId: int32FRSEPlayerIdThe player commanding a unit (None = the AI).
Get Unit Gap (GetUnitGap)pureRPG Saga|Action BattleUnitA: int32
UnitB: int32
floatEdge-to-edge distance between two units on the ground plane (meters; a large value when one is missing).
Get Unit Move Speed (GetUnitMoveSpeed)pureRPG Saga|Action BattleUnitId: int32floatWalking speed of a unit when the battle moves it itself (meters per second; 0 for an unknown unit).
Get Unit Place At (GetUnitPlaceAt)pureRPG Saga|Action BattleUnitId: int32
Time: float
OutLocation: FVector (out)
OutYaw: float (out)
boolA unit's place at a battle time from the host's position history (A6). Returns false without history for the unit.
Is Open Flow (IsOpenFlow)pureRPG Saga|Action BattleboolNo results screen in this framing (Open): the presentation shows loot toasts instead.
Set Auto Resolve Hits (SetAutoResolveHits)functionRPG Saga|Action BattlebAuto: boolOn (default): the battle tests its own hit shapes. Off: hits come only from hit claims (the presentation's traces).
Set Battle Area (SetBattleArea)functionRPG Saga|Action BattleCenter: FVector (ref)
Radius: float = 0.000000
The combat area of a Bounded battle (center; radius 0 = the rules' Bounded Area Radius).
Set Obstacles (SetObstacles)functionRPG Saga|Action BattleInObstacles: TArray<FRSEActionObstacle> (ref)Round obstacles of the headless space (A2): units walk around them, shots and projectiles stop at the ones that block shots, the AI uses them as cover. Only read while the battle moves units / resolves hits itself; the presentation's world has its own geometry and leaves this empty.
Set Simulate Movement (SetSimulateMovement)functionRPG Saga|Action BattlebSimulate: boolOn (default): the battle moves units from their move input and dodges (headless). Off: the presentation reports places.
Set Unit Transform (SetUnitTransform)functionRPG Saga|Action BattleUnitId: int32
Location: FVector (ref)
Yaw: float
The presentation reports where a unit's pawn stands (authority only; ignored on a proxy). Call it every frame or step while Simulate Movement is off.
Set Unit Weapon (SetUnitWeapon)functionRPG Saga|Action BattleUnitId: int32
Weapon: URSEActionWeaponData*
Gives a unit an action weapon for this battle (null = back to its equipment / the default).

URSEActionBattleSubsystem

Module RSE. Action battles on the live map (D-171, package A3): starts them where the party stands (an Action encounter from exploration: a trigger, a story effect, a dev command), gathers who takes part (the leader, the party members nearby, the encounter's enemies in the world or in front of the party), owns...

NodeKindCategoryParametersReturnsDescription
Get Active Director (GetActiveDirector)pureRPG Saga|Action BattleARSEActionBattleDirector*The director of the running battle (authority or guest), or null.
Is Battle Active (IsBattleActive)pureRPG Saga|Action BattleboolIs Battle Active
Start Encounter Battle (StartEncounterBattle)functionRPG Saga|Action BattleEncounter: URSEEncounterData*
EnemyActors: TArray<AActor*> (ref)
Source: AActor* = None
ReturnPoint: AActor* = None
boolStarts an action battle with Encounter's enemies where the party stands. EnemyActors stand for its enemies in order; missing ones appear in front of the party. Source gets the exploration's callback; ReturnPoint (optional) is where the explorer stands afterwards. Returns false when a battle cannot start now.

URSEActionCombatComponent

Module RSE, display name RSE Action Combat. "RSE Action Combat" (D-171, package A3; docs/product/components.md): what a character does in real-time action battles, on any pawn (our characters, a project's own Blueprint characters through IRSEExplorerPawn).

NodeKindCategoryParametersReturnsDescription
Find Action Combat (FindActionCombat)pure, staticRPG Saga|Action BattleActor: AActor*URSEActionCombatComponent*The action combat component of Actor, or null.
Get Character Mesh (GetCharacterMesh)pureRPG Saga|Action BattleUSkeletalMeshComponent*The character's main skeletal mesh (the character's mesh, else its first skeletal mesh).
Get Director (GetDirector)pureRPG Saga|Action BattleARSEActionBattleDirector*Get Director
Get Muzzle Location (GetMuzzleLocation)pureRPG Saga|Action BattleFVectorWhere this character's shots start now (world).
Get Unit Id (GetUnitId)pureRPG Saga|Action Battleint32The unit this character is in the running action battle (INDEX_NONE outside one).
Is Hit Window Open (IsHitWindowOpen)pureRPG Saga|Action BattleboolAn attack of this character can land now (its hit window is open).
Is in Action Battle (IsInActionBattle)pureRPG Saga|Action BattleboolIs in Action Battle
On Action Event (OnActionEvent)eventRPG Saga|Action BattleEvent: FRSEBattleEvent (ref)Every battle event about this character (it acts, it is hit, it guards...), after the component reacted.
On Hit Claimed (OnHitClaimed)eventRPG Saga|Action BattleVictim: AActor*
Location: FVector
This machine claimed a hit of this character's attack (the host decides whether it lands).

URSEActionControlsComponent

Module RSE, display name RSE Action Controls. "RSE Action Controls" (D-171, package A3): one local player's controls in an action battle, on their player controller.

NodeKindCategoryParametersReturnsDescription
Add Look (AddLook)functionRPG Saga|Action BattleYawDegrees: float
PitchDegrees: float
Turns the view (degrees).
Cycle Party Order (CyclePartyOrder)functionRPG Saga|Action BattleboolGives the party the next order of Party Order Cycle (after the last one this player gave).
Find Action Controls (FindActionControls)pure, staticRPG Saga|Action BattleController: APlayerController*URSEActionControlsComponent*The controls of Controller (null when it has none).
Get Camera Rig (GetCameraRig)pureRPG Saga|Action BattleARSEActionCameraRig*Get Camera Rig
Get Controlled Unit (GetControlledUnit)pureRPG Saga|Action Battleint32The unit this player commands now (INDEX_NONE without one).
Get Last Party Order (GetLastPartyOrder)pureRPG Saga|Action BattleERSEActionPartyOrderThe last party order this player gave (the rules' Default Party Order before any).
Get Lock Target (GetLockTarget)pureRPG Saga|Action Battleint32The hard-locked unit (INDEX_NONE = none).
Get Mapping Context (GetMappingContext)pureRPG Saga|Action BattleUInputMappingContext*The mapping context the controls use (built from the settings' keys unless one is set there).
Get Selectable Abilities (GetSelectableAbilities)pureRPG Saga|Action BattleTArray<URSEAbilityData*>The abilities the selection cycles through (the controlled unit's, without its basic attack).
Get Selected Ability (GetSelectedAbility)pureRPG Saga|Action BattleURSEAbilityData*Get Selected Ability
Get Soft Target (GetSoftTarget)pureRPG Saga|Action Battleint32The enemy an attack would turn to now without a hard lock (INDEX_NONE = none).
Is Action Input Active (IsActionInputActive)pureRPG Saga|Action BattleboolThe action mapping context is active for this player.
Is Aiming (IsAiming)pureRPG Saga|Action BattleboolIs Aiming
Is Guarding (IsGuarding)pureRPG Saga|Action BattleboolIs Guarding
Issue Party Order (IssuePartyOrder)functionRPG Saga|Action BattleOrder: ERSEActionPartyOrder
UnitId: int32 = -1
boolGives a party order (A2) as this player: UnitId INDEX_NONE = every member the AI drives on the player's side. Goes through the command bus (a guest's to the host); Co-op Rules -> Companion Orders decides who may order whom. Returns true when applied (or forwarded by a guest).
Lock on Unit (LockOnUnit)functionRPG Saga|Action BattleTargetUnitId: int32boolHard lock on a unit (INDEX_NONE releases). Returns whether the battle accepted it.
On Action Input (OnActionInput)eventRPG Saga|Action BattleInput: ERSEActionInput
bPressed: bool
Every input of this player (Blueprint reactions, tutorials).
On Party Order Issued (OnPartyOrderIssued)eventRPG Saga|Action BattleOrder: ERSEActionPartyOrder
bAccepted: bool
A party order this player gave (HUD feedback, tutorials).
Press Input (PressInput)functionRPG Saga|Action BattleInput: ERSEActionInput
bPressed: bool = true
Presses (or releases) an input as if its key did.
Switch Character (SwitchCharacter)functionRPG Saga|Action BattleDirection: int32 = 1boolTakes command of the next party member (Direction > 0) or the previous.
Switch Target (SwitchTarget)functionRPG Saga|Action BattleDirection: int32boolThe next target to the right (Direction > 0) or left.
Toggle Lock On (ToggleLockOn)functionRPG Saga|Action BattleboolLocks on the best target (or releases the lock). Returns true when locked now.

URSEActionInterop

Module RSE. AI interop for action battles (D-175 / D-171, package B2): what the Behavior Tree nodes, the StateTree nodes and Blueprints call to play a unit of a real-time battle with the project's own brain: attacks, abilities, dodge / block / parry, walking to and keeping a range, and the questions those decis...

NodeKindCategoryParametersReturnsDescription
Action Attack (ActionAttack)function, staticRPG Saga|Action InteropActor: AActor*
Target: AActor*
bHeavy: bool = false
boolThe actor's unit starts the weapon's attack on Target (lock-on, facing, combo step or shot). Returns true when the battle took it.
Action Block (ActionBlock)function, staticRPG Saga|Action InteropActor: AActor*
bRaise: bool
boolThe actor's unit raises or lowers its guard.
Action Dodge (ActionDodge)function, staticRPG Saga|Action InteropActor: AActor*
WorldDirection: FVector
boolThe actor's unit dodges toward a world direction (zero = away from the incoming attack).
Action Has Incoming Threat (ActionHasIncomingThreat)pure, staticRPG Saga|Action InteropActor: AActor*
MaxSecondsToHit: float = 0.000000
boolAn attack is on its way to the actor's unit that it has not answered yet.
Action Is Target in Reach (ActionIsTargetInReach)pure, staticRPG Saga|Action InteropActor: AActor*
Target: AActor*
Ability: URSEAbilityData*
MarginCm: float = 0.000000
boolThe actor's weapon (or the ability) reaches Target from where they stand.
Action Parry (ActionParry)function, staticRPG Saga|Action InteropActor: AActor*boolThe actor's unit opens a parry window.
Action Set Own AI (ActionSetOwnAI)function, staticRPG Saga|Action InteropActor: AActor*
bOwnAI: bool
boolThe actor's unit is played by the project's own brain (true) or by the framework's action AI (false).
Action Use Ability (ActionUseAbility)function, staticRPG Saga|Action InteropActor: AActor*
Ability: URSEAbilityData*
Target: AActor*
Location: FVector
boolThe actor's unit uses an ability on Target (or at Location). Returns true when the battle took it.

URSEActionRules

Module RSECore, display name Action Battle. Real-time action battles (D-171, docs/design/action-battle.md).

NodeKindCategoryParametersReturnsDescription
Apply Preset (ApplyPreset)functionRPG Saga|Action BattlePreset: ERSEActionPresetSets every rule to a shipped starting point (Melee, Shooter, Hybrid). The weapon is left as it is.

URSEActionSimDriver

Module RSE. The server side of an action battle (D-171, package A3; the D-141 split of the live battles): owns the headless battle (URSEActionBattle) and runs it on the authority only (single player, the host).

NodeKindCategoryParametersReturnsDescription
Get AI (GetAI)pureRPG Saga|Action BattleURSEActionAIController*The real-time AI of this battle (null before BeginBattle and after EndBattle).
Get Battle (GetBattle)pureRPG Saga|Action BattleURSEActionBattle*Get Battle

URSEAppLifecycleSubsystem

Module RSE. The game's reaction to platform events (D-170), in each game world: listens to URSEPlatformUserSubsystem (RSECore) and - controller disconnect of the primary user: pauses the world (through URSETimeControlSubsystem, so co-op never pauses for everyone) and opens the reconnect screen (Platform ->...

NodeKindCategoryParametersReturnsDescription
Get Reconnect View Model (GetReconnectViewModel)pureRPG Saga|PlatformURSEReconnectViewModel*The reconnect screen's view-model while it is open (null otherwise).
Hide Reconnect Prompt (HideReconnectPrompt)functionRPG Saga|PlatformCloses the reconnect screen and releases its pause.
Is Paused for Platform (IsPausedForPlatform)pureRPG Saga|PlatformboolThis subsystem holds a world pause request now (disconnect or suspend).
Is Reconnect Prompt Open (IsReconnectPromptOpen)pureRPG Saga|PlatformboolThe reconnect screen is open.
On Reconnect Prompt Changed (OnReconnectPromptChanged)eventRPG Saga|PlatformbOpen: boolThe reconnect screen opened or closed.
On Return to Title Requested (OnReturnToTitleRequested)eventRPG Saga|PlatformThe primary user signed out (Platform -> Return To Title On Sign Out): bind it to show a message first.
Show Reconnect Prompt (ShowReconnectPrompt)functionRPG Saga|PlatformboolOpens the reconnect screen and pauses (also for a buyer's own flows). Returns true when it is open.

URSEAppearanceComponent

Module RSE. Builds a modular character on its actor from a URSECharacterAppearance (D-046): the leader skeletal mesh with the Anim Blueprint, follower skeletal parts copying its pose (leader pose), static parts on sockets, material variants, and the visible parts of the equipment worn.

NodeKindCategoryParametersReturnsDescription
Rebuild (Rebuild)functionAppearanceLoads (if needed) and builds again. Editor preview too.

URSEArchetype

Module RSECore. A template content is made from (D-095, docs/design/studio.md section 6): "Knight", "Goblin", "Merchant", "Healing spell".

NodeKindCategoryParametersReturnsDescription
Ensure Template (EnsureTemplate)functionRPG Saga|ArchetypesCreates the Template (of Content Class, else the base class) when it is missing or of the wrong class.
Get Parent Archetype (GetParentArchetype)pureRPG Saga|ArchetypesURSEArchetype*The parent archetype (loaded), or null.
Has Parent Cycle (HasParentCycle)pureRPG Saga|ArchetypesboolThe parent chain loops back (A -> B -> A).

URSEArchetypeLibrary

Module RSECore. Archetype inheritance (D-095, docs/design/studio.md section 6 and section 16): creating content from an archetype, per-field overrides, propagation that asks first (a report with per-asset changes, applied only to the assets the designer checks, overridden fields never touched), "Reset to archetype"...

NodeKindCategoryParametersReturnsDescription
Apply Propagation (ApplyPropagation)function, staticRPG Saga|ArchetypesArchetype: URSEArchetype*
Selected: TArray<UObject*> (ref)
FRSEArchetypeApplyResultPropagates Archetype to the Selected assets only (the checked rows): copies the archetype's value of every inherited field that differs. Overridden fields are never written. The differences are recomputed, so a stale report cannot overwrite anything. Modified assets are marked dirty; child archetypes that changed are listed for propagating next.
Compute Propagation (ComputePropagation)function, staticRPG Saga|ArchetypesArchetype: URSEArchetype*
Candidates: TArray<UObject*> (ref)
FRSEArchetypePropagationReportWhat propagating Archetype would do to Candidates (content assets and child archetypes; others are ignored): per asset, the inherited fields that would change and the overridden fields that differ but are kept. Changes nothing.
Detach from Archetype (DetachFromArchetype)function, staticRPG Saga|ArchetypesAsset: UObject*boolRemoves the archetype link; the asset keeps its current values and stops following the archetype.
Get Archetype (GetArchetype)pure, staticRPG Saga|ArchetypesAsset: UObject*URSEArchetype*The archetype Asset inherits from (content: its archetype; archetype: its parent), loaded; null when none.
Get Archetype Link (GetArchetypeLink)pure, staticRPG Saga|ArchetypesAsset: UObject*FRSEArchetypeLinkThe link of Asset (empty when it has none, or in cooked builds).
Get Field Value Text (GetFieldValueText)pure, staticRPG Saga|ArchetypesAsset: UObject*
Field: FName
FStringShort text of a field's value on Asset (a content asset or an archetype's Template), for lists and reports.
Get Inheritable Fields (GetInheritableFields)pure, staticRPG Saga|ArchetypesAsset: UObject*TArray<FName>Fields Asset can inherit from its archetype (empty without an archetype).
Get Out Of Date Fields (GetOutOfDateFields)pure, staticRPG Saga|ArchetypesAsset: UObject*TArray<FName>Inherited fields whose value differs from the archetype's (the archetype changed and was not propagated yet).
Initialize from Archetype (InitializeFromArchetype)function, staticRPG Saga|ArchetypesContent: UObject*
Archetype: URSEArchetype*
boolMakes Content inherit from Archetype: links it, clears its overrides and copies every archetype field (identity fields listed in Non Inherited Fields are copied once, and only when Content has not set them). Content must be of the archetype's content class (or a subclass). False (and a warning) when it is not, or when Content is itself an archetype (use Set Parent Archetype).
Is Field Inherited (IsFieldInherited)pure, staticRPG Saga|ArchetypesAsset: UObject*
Field: FName
boolThe field comes from the archetype (Asset has one, the field is inheritable and not overridden): shown greyed.
Is Field Overridden (IsFieldOverridden)pure, staticRPG Saga|ArchetypesAsset: UObject*
Field: FName
boolThe author changed this field on Asset (propagation keeps it).
Keep Differences as Overrides (KeepDifferencesAsOverrides)function, staticRPG Saga|ArchetypesAsset: UObject*TArray<FName>Marks every inherited field that differs from the archetype as overridden ("keep my edits"). Returns the fields.
Reset All Fields to Archetype (ResetAllFieldsToArchetype)function, staticRPG Saga|ArchetypesAsset: UObject*boolResets every inheritable field (all overrides dropped).
Reset Field to Archetype (ResetFieldToArchetype)function, staticRPG Saga|ArchetypesAsset: UObject*
Field: FName
bool"Reset to archetype": copies the archetype's value of Field and makes the field inherited again.
Set Field Overridden (SetFieldOverridden)function, staticRPG Saga|ArchetypesAsset: UObject*
Field: FName
bOverridden: bool
boolMarks a field overridden (kept by propagation) or inherited again (the value stays until the next propagation).
Set Parent Archetype (SetParentArchetype)function, staticRPG Saga|ArchetypesChild: URSEArchetype*
Parent: URSEArchetype*
boolMakes Child derive from Parent (its Template inherits Parent's Template), or detaches it when Parent is null. Refused when the classes do not fit or the chain would loop.
Set Template from Content (SetTemplateFromContent)function, staticRPG Saga|ArchetypesArchetype: URSEArchetype*
Source: URSEPrimaryDataAsset*
boolCopies Source (content of the archetype's kind) into Archetype's Template: "make an archetype from this".
Validate Archetype Link (ValidateArchetypeLink)function, staticRPG Saga|ArchetypesAsset: UObject*
OutErrors: TArray<FText> (out)
OutWarnings: TArray<FText> (out)
boolProblems of Asset's archetype link: missing archetype, wrong class, unknown overridden fields, parent loops.

URSEAreaMapViewModel

Module RSE. The full area map screen (D-089, D-092): pan, zoom, legend with category filters, region names, the player, quest objectives and player pins placed with the pin wheel.

NodeKindCategoryParametersReturnsDescription
Activate Marker (ActivateMarker)functionRPG Saga|MapMarker: FRSEMapMarkerView (ref)boolA marker was clicked: an objective opens its quest in the journal (settings). Returns true when it did something.
Aim Pin Wheel (AimPinWheel)functionRPG Saga|MapOffset: FVector2DPicks the slice an offset points at (wheel radii, screen axes), e.g. the stick or the mouse from the wheel's center.
Cancel Pin Wheel (CancelPinWheel)functionRPG Saga|MapCancel Pin Wheel
Center On (CenterOn)functionRPG Saga|MapUV: FVector2DMoves the view so that UV is at the center.
Center on Player (CenterOnPlayer)functionRPG Saga|MapCenter on Player
Confirm Pin Wheel (ConfirmPinWheel)functionRPG Saga|MapboolApplies the selected slice (a new pin, a new type or remove) and closes the wheel. Returns true when applied.
Find Pin At (FindPinAt)pureRPG Saga|MapUV: FVector2Dint32The pin under UV (within the pick radius at the current zoom), or 0.
Focus Quest (FocusQuest)functionRPG Saga|MapQuest: URSEQuestData*boolCenters the view on a quest's objective (journal "Show on map"). Returns false when it has none on this level.
Get View Span (GetViewSpan)pureRPG Saga|MapfloatVisible map span in map units (across the view's shorter side).
Is Category Shown (IsCategoryShown)pureRPG Saga|MapCategory: FGameplayTagboolIs Category Shown
Open Pin Wheel (OpenPinWheel)functionRPG Saga|MapUV: FVector2DboolOpens the pin wheel at UV (map coordinates): the pin types, plus Remove when a pin is there.
Pan (Pan)functionRPG Saga|MapDelta: FVector2DMoves the view by Delta (in view widths: 1 = one whole view).
Place Pin (PlacePin)functionRPG Saga|MapUV: FVector2D
Type: FGameplayTag
PinId: int32 = 0
boolPlaces a pin of Type at UV, or changes the type of PinId (non-zero). Replaces the oldest pin when full (settings).
Select Pin Wheel (SelectPinWheel)functionRPG Saga|MapIndex: int32Select Pin Wheel
Set Legend Focused (SetLegendFocused)functionRPG Saga|MapbFocused: boolMoves the keyboard / gamepad focus into the legend or back to the map.
Toggle Category (ToggleCategory)functionRPG Saga|MapCategory: FGameplayTagShows / hides a category's markers (legend filter).
Toggle Pin At (TogglePinAt)functionRPG Saga|MapUV: FVector2DboolRemoves the pin near UV (map coordinates), or places a pin of the first type there. Returns true when something changed.
Zoom By (ZoomBy)functionRPG Saga|MapSteps: float
Anchor: FVector2D
Zooms by Steps zoom steps (negative = out), keeping Anchor (map coordinates) where it is on screen.

URSEAttributeRegistry

Module RSECore. The attributes and resources of a project (D-054, docs/design/attributes.md).

NodeKindCategoryParametersReturnsDescription
Find Attribute Definition (FindAttributeDefinition)pureRPG Saga|AttributesTag: FGameplayTag
OutDefinition: FRSEAttributeDefinition (out)
boolThe definition of an attribute (name, bounds, formula). False when the registry does not define it.
Find Resource Definition (FindResourceDefinition)pureRPG Saga|AttributesTag: FGameplayTag
OutDefinition: FRSEResourceDefinition (out)
boolThe definition of a resource (maximum, start, regeneration, gains). False when the registry does not define it.
Get Display Name (GetDisplayName)pureRPG Saga|AttributesTag: FGameplayTagFTextPlayer-facing name of an attribute or resource (its definition, else the last part of the tag).
Get HUDResources (GetHUDResources)pureRPG Saga|AttributesbBattleHUD: bool
bPartyMenu: bool
TArray<FGameplayTag>Resources, in HUD order; bBattleHUD / bPartyMenu filter by where they are shown.
Get Short Label (GetShortLabel)pureRPG Saga|AttributesTag: FGameplayTagFTextShort label of an attribute or resource ("HP", "ATK").
Get Visible Attributes (GetVisibleAttributes)pureRPG Saga|AttributesTArray<FGameplayTag>Attributes shown in menus, in UI order.
Reset to Built in Defaults (ResetToBuiltInDefaults)functionAttributesFills Attributes and Resources with the framework's built-in definitions (the class defaults).

URSEAudioSubsystem

Module RSE. The game's audio (D-036, docs/design/audio.md): music, sound effects and the mixer.

NodeKindCategoryParametersReturnsDescription
Apply Music Now (ApplyMusicNow)functionRPG Saga|AudioApplies pending music changes now instead of next frame.
Clear Layer (ClearLayer)functionRPG Saga|AudioLayer: ERSEMusicLayerClears a layer of the music stack: the layer below plays again.
Play Story Music (PlayStoryMusic)functionRPG Saga|AudioTrack: FRSEMusicTrack (ref)
Context: ERSEMusicContext = Story
Story override (Play Music effect, console): covers area music until RestoreMusic.
Restore Music (RestoreMusic)functionRPG Saga|AudioEnds the story override: the music below comes back.
Set Area Music (SetAreaMusic)functionRPG Saga|AudioTrack: FRSEMusicTrack (ref)Area / map music of the current world (URSEAudioWorldSubsystem). Ignored while the base was set explicitly.
Set Base Context (SetBaseContext)functionRPG Saga|AudioContext: ERSEMusicContextSets the base music to a context explicitly (the front end: MainMenu); area music then leaves the base alone until the next map.
Set Context Layer (SetContextLayer)functionRPG Saga|AudioLayer: ERSEMusicLayer
Context: ERSEMusicContext
Sets a layer to a context's settings track (a context without a track clears the layer).
Set Dialog Active (SetDialogActive)functionRPG Saga|AudiobActive: boolDialog music on / off (only when a Dialog context track is set).
Set Layer (SetLayer)functionRPG Saga|AudioLayer: ERSEMusicLayer
Context: ERSEMusicContext
Track: FRSEMusicTrack (ref)
Sets a layer of the music stack to a track (the highest set layer plays).
Stop Story Music (StopStoryMusic)functionRPG Saga|AudioFadeOut: float = -1.000000Silence requested by the story (Stop Music effect) until RestoreMusic. FadeOut < 0 = default.

URSEAuthorityPolicy

Module RSE. Who runs the game logic (D-134, docs/design/networking.md §3.5).

NodeKindCategoryParametersReturnsDescription
Has Authority (HasAuthority)overrideRPG Saga|PlayersWorld: UWorld*boolThis machine applies the game logic in World (single-player: always).
Is Multiplayer Session (IsMultiplayerSession)overrideRPG Saga|PlayersWorld: UWorld*boolMore than one player shares World (a network session, or several local players): the co-op rules apply.

URSEAuthoritySubsystem

Module RSECore. The authority mode and the local player's id for this game instance (D-133).

NodeKindCategoryParametersReturnsDescription
Get Authority Mode (GetAuthorityMode)pureRPG Saga|CommandsERSEAuthorityModeStandalone (single player), Authority (session host) or Proxy (session guest).
Get Local Player Id (GetLocalPlayerId)pureRPG Saga|CommandsFRSEPlayerIdThe player of this machine (the host in single player and on the host).
Get Session Players (GetSessionPlayers)pureRPG Saga|CommandsTArray<FRSEPlayerId>The players of the session (D-138): the host first, then the guests. Single player: only the host. The network layer keeps it up to date (joins, leaves); group decisions (dialog votes) count these players.
Has Authority (HasAuthority)pureRPG Saga|CommandsboolThis machine may change game state: single player or the host of a session.
Is Networked (IsNetworked)pureRPG Saga|CommandsboolA network session is running (host or guest).
On Authority Mode Changed (BP_OnModeChanged)eventRPG Saga|CommandsOldMode: ERSEAuthorityMode
NewMode: ERSEAuthorityMode
The mode changed (a session started or ended).
Set Authority Mode (SetAuthorityMode)functionRPG Saga|CommandsNewMode: ERSEAuthorityMode
NewLocalPlayer: FRSEPlayerId
Sets the mode and this machine's player. Called by the network layer when a session starts or ends (and by tests); Standalone always uses the host id.
Set Session Players (SetSessionPlayers)functionRPG Saga|CommandsPlayers: TArray<FRSEPlayerId> (ref)Sets the session's players (RSENet on join / leave, tests). The host is always included.

URSEBattle

Module RSECore. Rules shared by both battle modes: units, resources, damage and healing, defeat, end of battle and the event stream (D-006).

NodeKindCategoryParametersReturnsDescription
Apply Status (ApplyStatus)functionRPG Saga|BattleSourceId: int32
TargetId: int32
Status: URSEStatusData*
Chance: float
Tries to apply a status (Chance in percent); immunity and stacking follow the status data.
Are Units Enemies (AreUnitsEnemies)pureRPG Saga|BattleUnitA: int32
UnitB: int32
boolWhether two units are on different teams.
Change Resource (ChangeResource)functionRPG Saga|BattleSourceId: int32
TargetId: int32
Resource: FGameplayTag (ref)
Delta: float
floatChanges a unit's resource with a battle event: HP losses go through shields and reactions, HP gains heal. Returns the change applied.
Deal Damage (DealDamageBP)functionRPG Saga|BattleSourceId: int32
TargetId: int32
Amount: float
Element: FGameplayTag
int32Deals HP damage decided by a rule (no stats, no rolls): Amount before the target's affinity to Element (if any); shields, reactions and defeat follow. SourceId may be -1 (the environment). Returns HP lost.
Defeat Unit (DefeatUnit)functionRPG Saga|BattleUnitId: int32Marks a unit defeated and checks for the end of battle.
Get Battle Mode Tag (GetBattleModeTag)pureRPG Saga|BattleFGameplayTagThe battle mode this battle runs (Battle.Mode.Tactics / ATB / Turn / FreeTactics). Each mode class reports its own tag, so systems that care about the mode (AI records, adaptive difficulty, use conditions, statistics) never need a chain of class checks. Empty for the abstract base.
Get Controlling Status (GetControllingStatus)pureRPG Saga|Battle|StatusUnitId: int32URSEStatusData*The status that controls the unit now (the first with a control behavior), or null.
Get Environment Tags (GetEnvironmentTags)pureRPG Saga|BattleFGameplayTagContainerGet Environment Tags
Get Outcome (GetOutcome)pureRPG Saga|BattleERSEBattleOutcomeResult of the battle from the player team's side (Ongoing while it runs).
Get Player Team (GetPlayerTeam)pureRPG Saga|BattleFGameplayTagThe player's team tag in this battle.
Get Seed (GetSeed)pureRPG Saga|Battleint32Seed the battle started with (deterministic rolls after the battle, e.g. loot, D-042).
Get Turns Taken (GetTurnsTaken)pureRPG Saga|BattleTeam: FGameplayTag (ref)int32Turns taken so far by units of a team.
Get Unit (GetUnitBP)pureRPG Saga|BattleUnitId: int32
OutUnit: FRSEBattleUnit (out)
boolA unit of this battle by id. Returns false when there is none.
Get Unit Attribute (GetUnitAttribute)pureRPG Saga|Battle|AttributesUnitId: int32
Attribute: FGameplayTag
floatFinal attribute value of a unit (0 for an unknown unit).
Get Unit Ids (GetUnitIds)pureRPG Saga|BattleTeam: FGameplayTag
bActiveOnly: bool = true
TArray<int32>Ids of the units of a team (empty = every team); bActiveOnly skips fallen and withdrawn ones.
Get Unit Own Team (GetUnitOwnTeam)pureRPG Saga|Battle|StatusUnitId: int32FGameplayTagThe team a unit belongs to, whatever a status (Charm) makes it fight for now.
Get Unit Resource (GetUnitResource)pureRPG Saga|Battle|AttributesUnitId: int32
Resource: FGameplayTag
floatCurrent value of a unit's resource.
Get Unit Resource Max (GetUnitResourceMax)pureRPG Saga|Battle|AttributesUnitId: int32
Resource: FGameplayTag
floatMaximum of a unit's resource (0 when it lacks it).
Get Winning Team (GetWinningTeam)pureRPG Saga|BattleFGameplayTagThe team that won (empty while the battle runs).
Heal Unit (HealUnitBP)functionRPG Saga|BattleSourceId: int32
TargetId: int32
Amount: float
floatRestores HP to a unit (a heal event). Returns HP restored.
Is Battle Over (IsBattleOver)pureRPG Saga|BattleboolThe battle has ended (victory, defeat or escape).
Is Unit Active (IsUnitActive)pureRPG Saga|BattleUnitId: int32boolThe unit stands on the field (not defeated, not withdrawn).
Is Unit Controlled by Status (IsUnitControlledByStatus)pureRPG Saga|Battle|StatusUnitId: int32boolWhether a status takes the player's command of the unit away (the AI acts for it).
Modify Unit Resource (ModifyUnitResource)functionRPG Saga|Battle|AttributesUnitId: int32
Resource: FGameplayTag
Delta: float
Adds to a unit's resource (negative removes), within its bounds; HP at 0 defeats the unit. For custom rules and cues.
On Battle Event (OnBattleEvent)eventRPG Saga|BattleEvent: FRSEBattleEvent (ref)Every battle event, in order (damage, heals, statuses, turns, defeats, the end).
On Resource Changed (OnResourceChanged)eventRPG Saga|Battle|AttributesUnitId: int32
Resource: FGameplayTag
OldValue: float
NewValue: float
Fired whenever a unit's resource value changes (damage, costs, gains, regeneration).
Remove Statuses (RemoveStatuses)functionRPG Saga|BattleSourceId: int32
TargetId: int32
StatusTags: FGameplayTagContainer (ref)
Removes every status on TargetId whose tag matches any of StatusTags.
Roll Int (RollInt)functionRPG Saga|BattleMax: int32int32A deterministic random integer in [0, Max) from the battle's stream (use it instead of Random nodes so replays and the simulator stay exact).
Roll Percent (RollPercent)functionRPG Saga|BattlefloatA deterministic random value in [0, 100) from the battle's stream.
Scan Unit (ScanUnit)functionRPG Saga|BattleSourceId: int32
TargetId: int32
Emits UnitScanned (the bestiary reveals the target's entry).
Set Unit Base Stat (SetUnitBaseStat)functionRPG Saga|Battle|AttributesUnitId: int32
Stat: FGameplayTag
Value: float
boolReplaces the base value of one stat of a unit while the battle runs (D-169, G2): an outside system (the GAS bridge) reports a changed stat. Equipment, Pact and statuses still apply on top; resources above their new maximum are clamped (HP at 0 does not defeat: only damage does). Refused on a proxy or finished battle. Authority code only: other machines get the result through the usual state mirror. Returns true when the value changed.
Shift Turn (ShiftTurn)functionRPG Saga|BattleSourceId: int32
TargetId: int32
TurnFraction: float
Moves the unit's next turn by TurnFraction of a turn: positive = sooner (haste-like), negative = later (delay). Tactics: CT; ATB: the gauge; turn-based: the timeline (CTB) or the place in the round (Round).
Unit Has Status (UnitHasStatus)pureRPG Saga|BattleUnitId: int32
Status: FGameplayTag
boolWhether a unit has a status matching the tag.

URSEBattleBannerViewModel

Module RSE. Text banners of battle presentations (D-034): the ability name plate and the large cinematic titles.

NodeKindCategoryParametersReturnsDescription
On Banner Started (OnBannerStarted)eventRPG Saga|UI|BannerRaised when a style starts showing a new text (widgets play their intro).

URSEBattleCuePlayerComponent

Module RSE. Plays battle presentation timelines (D-034) and times interactive action commands.

NodeKindCategoryParametersReturnsDescription
Add Camera Shake (AddCameraShake)functionRPG Saga|Battle PresentationAmplitude: float
RotationAmplitude: float
Frequency: float
Duration: float
Shakes the battle camera (location amplitude in cm, rotation in degrees, frequency in Hz, seconds).
Flash (Flash)functionRPG Saga|Battle PresentationColor: FLinearColor (ref)
Alpha: float
FadeIn: float
Hold: float
FadeOut: float
Flashes the screen with a color (fade in, hold, fade out in seconds).
Get Caster (GetCaster)pureRPG Saga|Battle PresentationAActor*The actor of the unit using the action.
Get Impact Point (GetImpactPoint)pureRPG Saga|Battle PresentationbOnGround: boolFVectorThe aimed tile / area center (D-055): ground level, or chest height above it. Falls back to the targets' center.
Get Primary Target (GetPrimaryTarget)pureRPG Saga|Battle PresentationAActor*The actor of the action's primary target (none for an empty tile).
Get Subject Point (GetSubjectPoint)pureRPG Saga|Battle PresentationActor: AActor*FVectorChest height location of a unit (what shots look at). Transient pose offsets (shake, lunge, hop, hit reactions) are left out: shots frame the unit's resting place, so a shaking unit never shakes the camera.
Get Subjects (GetSubjects)pureRPG Saga|Battle PresentationSubject: ERSECueSubject
OutActors: TArray<AActor*> (out)
The actors of a cue subject: the caster, the primary target or every affected unit.
Play Hit Reaction (PlayHitReaction)functionRPG Saga|Battle PresentationTarget: AActor*
From: FVector (ref)
Scale: float
bDodge: bool = false
bHeavy: bool = false
Target recoil away from From (hit) or a sidestep (dodge). bHeavy: a critical (the anim set's HitHeavy from the front).

URSEBattleCue_Custom

Module RSE, display name Custom (Blueprint). A presentation step written in Blueprint (D-052): create a Blueprint class from it and override On Cue Start (and optionally On Cue Update / On Cue Stop) to spawn effects, move actors, play sounds or animations on the cue's subjects.

NodeKindCategoryParametersReturnsDescription
On Cue Start (OnCueStart)overrideRPG Saga|Battle PresentationPlayer: URSEBattleCuePlayerComponent*
SubjectActors: TArray<AActor*> (ref)
The cue starts: Player gives the caster, the impact point, camera shakes, flashes.
On Cue Stop (OnCueStop)overrideRPG Saga|Battle PresentationPlayer: URSEBattleCuePlayerComponent*
SubjectActors: TArray<AActor*> (ref)
bSkipped: bool
The cue ended (time up, skipped or stopped): leave things in their final state.
On Cue Update (OnCueUpdate)overrideRPG Saga|Battle PresentationPlayer: URSEBattleCuePlayerComponent*
SubjectActors: TArray<AActor*> (ref)
Alpha: float
Every frame while it runs (bReceiveUpdate): Alpha goes from 0 to 1 over Duration.

URSEBattleHUDViewModel

Module RSE. Common base of the battle HUD view-models (D-052): the battle log, the result banner, the key prompts and the battle events for floating numbers.

NodeKindCategoryParametersReturnsDescription
On Battle Event (OnBattleEvent)eventBattle HUDEvent: FRSEBattleEvent (ref)
WorldLocation: FVector
A battle event presented on a unit (damage, heal, miss, status...): floating numbers.
Refresh Now (RefreshNow)functionRPG Saga|UI|Battle HUDRebuilds the view now (tests; the HUD refreshes every frame on its own).
Set Preview Info (SetPreviewInfo)functionRPG Saga|UI|Battle HUDInfo: FText (ref)Sets (or clears, with empty text) the preview summary line.

URSEBattleLauncherSubsystem

Module RSE. The C++ behind the battle launcher (P55, D-179): starts, restarts and auto-plays a battle of any mode from one FRSEBattleLaunchPreset, on the map the player explores.

NodeKindCategoryParametersReturnsDescription
Get Last Launch (GetLastLaunch)pureRPG Saga|Dev|LauncherOutPreset: FRSEBattleLaunchPreset (out)
OutSeed: int32 (out)
boolThe preset of the last start (valid after one), with the seed it ran on.
Is Auto Play (IsAutoPlay)pureRPG Saga|Dev|LauncherboolIs Auto Play
Is Launcher Visible (IsLauncherVisible)pureRPG Saga|Dev|LauncherboolIs Launcher Visible
Restart Battle (RestartBattle)functionRPG Saga|Dev|LauncherbNewSeed: bool
OutMessage: FString (out)
boolFights the last started battle again. While it runs (or has just ended) it is restarted from its beginning with the party as before it; once exploration has control again it starts anew. New seed: a new seed for the rolls; else the same seed (the same battle again, as far as the player's input is the same, e.g. with auto-play).
Set Auto Play (SetAutoPlay)functionRPG Saga|Dev|LauncherbEnabled: boolThe AI plays the party's units too (RSE.Battle.AutoPlay).
Set Launcher Visible (SetLauncherVisible)functionRPG Saga|Dev|LauncherbVisible: boolShows or hides the launcher panel (and gives it the mouse); the F10 key and RSE.Rooms.Launcher call it.
Start Battle (StartBattle)functionRPG Saga|Dev|LauncherPreset: FRSEBattleLaunchPreset (ref)
OutMessage: FString (out)
boolStarts the preset's battle. A running battle makes this fail (use Restart). OutMessage why it did not start, or what started.

URSEBattleMenuLibrary

Module RSECore. Blueprint access to the battle menu model (custom providers, custom presenters; D-122).

NodeKindCategoryParametersReturnsDescription
Add Menu Entry (AddMenuEntry)function, staticRPG Saga|Battle MenuModel: FRSEBattleMenuModel (ref)
Entry: FRSEBattleMenuEntry (ref)
CategoryLabel: FText (ref)
Shape: ERSEBattleMenuCategoryShape = Group
Adds an entry to the menu (its category is made with Category Label / Shape when missing).
Find Menu Entry (FindMenuEntry)pure, staticRPG Saga|Battle MenuModel: FRSEBattleMenuModel (ref)
EntryId: FName
OutEntry: FRSEBattleMenuEntry (out)
boolThe entry with this id, if any.
Get Menu Unit Character (GetMenuUnitCharacter)pure, staticRPG Saga|Battle MenuContext: FRSEBattleMenuContext (ref)URSECharacterData*The unit the menu is for (its battle unit id) and its character.
Make Ability Menu Entry (MakeAbilityMenuEntry)pure, staticRPG Saga|Battle MenuContext: FRSEBattleMenuContext (ref)
Ability: URSEAbilityData*
CategoryId: FName
FRSEBattleMenuEntryAn entry for an ability of the unit (cost, resource, uses left, reasons), for a custom provider.
Menu Has Ability (MenuHasAbility)pure, staticRPG Saga|Battle MenuModel: FRSEBattleMenuModel (ref)
Ability: URSEAbilityData*
boolThe menu already has this ability (an earlier provider added it).

URSEBattleMenuProvider

Module RSECore, display name Battle Menu Provider. A source of battle menu entries (D-122, docs/design/battle-menus.md): the config's providers fill the active unit's menu in order (movement, the command layout's abilities and items, Pacts, the turn commands, custom ones).

NodeKindCategoryParametersReturnsDescription
Gather (Gather)overrideRPG Saga|Battle MenuContext: FRSEBattleMenuContext (ref)
Model: FRSEBattleMenuModel (ref)
Adds this provider's entries to Model (Context: the battle and the unit).

URSEBattleMenuViewModel

Module RSE. One local player's battle menu (D-122, docs/design/battle-menus.md): the host's model and list as this player sees them, plus the menu's own navigation (open category, page, highlight, ring open).

NodeKindCategoryParametersReturnsDescription
Activate Entry (ActivateEntry)functionRPG Saga|Battle MenuEntryId: FNameboolActivates an entry: the host aims it or issues its command. Disabled entries tell why (the message line).
Activate List Row (ActivateListRow)functionRPG Saga|Battle MenuRow: int32The list's rows (list-shaped presenters).
Cancel Aim (CancelAim)functionRPG Saga|Battle MenuBack out of the aim.
Close Category (CloseCategory)functionRPG Saga|Battle MenuboolBack to the categories. Returns false when already there.
Get Highlighted Node Id (GetHighlightedNodeId)pureRPG Saga|Battle MenuFNameThe highlighted node's id on the current level (a category on the first ring), or none.
Get Hotbar Slots (GetHotbarSlots)pureRPG Saga|Battle MenuMinSlots: int32
PageSize: int32
OutSlots: TArray<FName> (out)
The hotbar's slots for the active unit's character: its saved order, new entries in free slots (RSEBattleMenu::ResolveHotbar).
Get Nodes (GetNodes)pureRPG Saga|Battle MenuOutNodes: TArray<FRSEBattleMenuNode> (out)What the current level shows (RSEBattleMenu::GetNodes): categories, groups, families, entries.
Get Owning Player (GetOwningPlayer)pureRPG Saga|Battle MenuAPlayerController*Get Owning Player
Get Path (GetPath)pureRPG Saga|Battle MenuFRSEBattleMenuPathWhere the menu is: the open category, group and family.
Highlight Category (HighlightCategory)functionRPG Saga|Battle MenuCategoryId: FNameHighlight Category
Highlight Entry (HighlightEntry)functionRPG Saga|Battle MenuEntryId: FNameHighlight Entry
Highlight List Row (HighlightListRow)functionRPG Saga|Battle MenuRow: int32Highlight List Row
Highlight Node (HighlightNode)functionRPG Saga|Battle MenuNodeId: FNameHighlights a node of the current level (the host may preview its entry).
Move Hotbar Slot (MoveHotbarSlot)functionRPG Saga|Battle MenuFrom: int32
To: int32
MinSlots: int32
PageSize: int32
boolMoves a slot onto another (they swap) and saves the order for the character. Returns false when nothing changed.
On Changed (OnChanged)eventRPG Saga|Battle Menu
Open Category by Id (OpenCategoryById)functionRPG Saga|Battle MenuCategoryId: FNameOpen Category by Id
Open Family by Id (OpenFamilyById)functionRPG Saga|Battle MenuCategoryId: FName
FamilyId: FName
Opens a tier family of a category directly (a hotbar slot): its tiers become the level.
Pick Category (PickCategory)functionRPG Saga|Battle MenuCategoryId: FNameboolPicks a category: Direct or single-entry ones act at once, the others open. Returns true when it acted.
Pick Node (PickNode)functionRPG Saga|Battle MenuNodeId: FNameboolPicks a node of the current level: an entry (or a category / family that acts) is used, the others open. Returns true when it acted.
Set Expanded (SetExpanded)functionRPG Saga|Battle MenubInExpanded: boolSet Expanded
Set Page (SetPage)functionRPG Saga|Battle MenuInPage: int32Set Page

URSEBattleModeOverrideLibrary

Module RSECore. D-182: the battle mode override's data side: reports, resolution and the per-mode copy of an encounter.

NodeKindCategoryParametersReturnsDescription
Can Encounter Run in Mode (CanEncounterRunInMode)pure, staticRPG Saga|Battle|Mode OverrideEncounter: URSEEncounterData*
Mode: FGameplayTag
OutWhyNot: FText (out)
boolWhether Encounter's data can run in Mode (OutWhyNot: the first problem).
Get Battle Mode Short Name (GetBattleModeShortName)pure, staticRPG Saga|Battle|Mode OverrideMode: FGameplayTagFStringThe short name of a mode (Tactics, Live, ATB, Turn, Action), for logs, commands and file names.
Get Encounter Mode Report (GetEncounterModeReport)pure, staticRPG Saga|Battle|Mode OverrideEncounter: URSEEncounterData*FRSEEncounterModeReportWhich modes Encounter's data can run in (one entry per overridable mode): its Mode Override switches, the features switched on, an enemy list to bring into another mode, and the automatic fallbacks each mode uses. The map's battle sites (a grid zone, a classic stage) are checked by the world report (RSE Encounter Site -> Build Mode Report).
Make Encounter for Mode (MakeEncounterForMode)function, staticRPG Saga|Battle|Mode OverrideOuter: UObject*
Encounter: URSEEncounterData*
Mode: FGameplayTag
URSEEncounterData*A transient copy of Encounter to fight in Mode: the mode set, the mode's rules profile (Mode Rules Profiles) applied, and the data-only fallbacks (classic rows). The copy keeps the encounter's name, so its asset id (quests, bestiary) is the same. Grid fallbacks need the zone: ApplyGridFallbacks.
Parse Battle Mode (ParseBattleMode)pure, staticRPG Saga|Battle|Mode OverrideName: FStringFGameplayTagBattle.Mode.* from a short name: Tactics / Grid, FreeTactics / Live, ATB, Turn, Action (or a full tag name). Empty when unknown.
Resolve Battle Mode (ResolveBattleMode)pure, staticRPG Saga|Battle|Mode OverrideEncounter: URSEEncounterData*
OverrideMode: FGameplayTag
FRSEBattleModeResolutionThe mode Encounter is fought in with OverrideMode active (empty = no override).

URSEBattleModeOverrideSubsystem

Module RSECore. D-182: the session's battle mode override.

NodeKindCategoryParametersReturnsDescription
Clear Battle Mode Override (ClearBattleModeOverride)functionRPG Saga|Battle|Mode OverrideEncounters start in their own mode again.
Get Battle Mode Override (GetBattleModeOverride)pureRPG Saga|Battle|Mode OverrideFGameplayTagThe override's mode (empty: none).
Has Battle Mode Override (HasBattleModeOverride)pureRPG Saga|Battle|Mode OverrideboolHas Battle Mode Override
On Battle Mode Override Changed (OnBattleModeOverrideChanged)eventRPG Saga|Battle|Mode OverrideMode: FGameplayTagThe override changed (empty tag: cleared).
Resolve Battle Mode (ResolveBattleMode)pureRPG Saga|Battle|Mode OverrideEncounter: URSEEncounterData*FRSEBattleModeResolutionThe mode Encounter is fought in now (the override when the encounter allows it and can run in it).
Set Battle Mode Override (SetBattleModeOverride)functionRPG Saga|Battle|Mode OverrideMode: FGameplayTagboolFights every encounter that allows it in Mode (Battle.Mode.*). An empty tag clears the override. Returns false for a mode that is not overridable.

URSEBattleScriptEffect

Module RSECore, display name Battle Script Effect. What a scripted battle event changes (D-117).

NodeKindCategoryParametersReturnsDescription
Apply (Apply)overrideRPG Saga|Battle ScriptContext: FRSEBattleScriptContext (ref)Applies the effect.
Describe (Describe)overrideRPG Saga|Battle ScriptFTextOne line for the editor and logs.

URSEBattleScriptRunner

Module RSECore. Runs a battle's reinforcements and scripted events (D-117, docs/product/reinforcements.md).

NodeKindCategoryParametersReturnsDescription
Can Queue Wave (CanQueueWave)pureRPG Saga|ReinforcementsCallId: int32boolWhether a called wave may be handed to the battle now (its Delay Rounds passed).
Fire Event (FireEvent)functionRPG Saga|Battle ScriptId: FNameboolFires a scripted event now, whatever its trigger (once-only events that already fired are refused). Returns true when it fired.
Get Call (GetCall)pureRPG Saga|ReinforcementsCallId: int32
OutCall: FRSEReinforcementCallView (out)
boolGet Call
Get Calls (GetCalls)pureRPG Saga|ReinforcementsTArray<FRSEReinforcementCallView>Every call so far (calling, incoming, arrived, cancelled).
Get Incoming Count (GetIncomingCount)pureRPG Saga|ReinforcementsTeam: FGameplayTagint32Units on their way for Team (called, not joined yet).
Get Round (GetRound)pureRPG Saga|Reinforcementsint32The current round as the triggers count it (the battle's own rounds, else counted in turns).
Get Times Fired (GetTimesFired)pureRPG Saga|Battle ScriptId: FNameint32Times a scripted event fired in this battle.
Is Calling (IsCalling)pureRPG Saga|ReinforcementsUnitId: int32boolThe unit is calling for help now.
On Call Cancelled (BP_OnCallCancelled)eventRPG Saga|ReinforcementsCall: FRSEReinforcementCallView (ref)A call was stopped before it completed (Blueprint).
On Call Started (BP_OnCallStarted)eventRPG Saga|ReinforcementsCall: FRSEReinforcementCallView (ref)A unit started calling for help (Blueprint).
On Script Event (BP_OnScriptEvent)eventRPG Saga|Battle ScriptEvent: FRSEBattleScriptEventView (ref)A scripted battle event fired (Blueprint).
On Wave Arrived (BP_OnWaveArrived)eventRPG Saga|ReinforcementsCall: FRSEReinforcementCallView (ref)Every unit of a wave joined the battle (Blueprint).
On Wave Called (BP_OnWaveCalled)eventRPG Saga|ReinforcementsCall: FRSEReinforcementCallView (ref)A wave is on its way (Blueprint).
Process Pending (ProcessPending)functionRPG Saga|ReinforcementsboolThe safe point: evaluates the triggers, completes or cancels calls, fires scripted events (their effects) and brings in auto-joined waves. Never call it from inside a battle event. Returns true when something happened.
Set Auto Join (SetAutoJoin)functionRPG Saga|ReinforcementsbInAutoJoin: boolHeadless joining: called waves enter by themselves at their round (Free Tactics: hidden points of the snapshot).
Start Reinforcements (StartReinforcements)functionRPG Saga|ReinforcementsData: URSEReinforcementData*
CallerId: int32
bSkipCallTime: bool
int32A group calls now (a scripted event, Blueprint): its waves with a Battle Start, When Alerted or Manual trigger are due; the rest follow their triggers. CallerId calls (INDEX_NONE = by the data's Caller rule). bSkipCallTime: no channel. Returns the new group's index.

URSEBattleStartGate

Module RSE. The one rule every battle start goes through (D-120): no battle starts over a story scene, a blocking dialog or a custom block.

NodeKindCategoryParametersReturnsDescription
Add Block (AddBlock)functionRPG Saga|BattleReason: FNameKeeps battles from starting until the matching RemoveBlock (counted per reason): a custom cinematic, a tutorial screen, a network hand-off.
Can Start Now (CanStartNow)pureRPG Saga|BattleboolA battle may start now (nothing blocks and no start is waiting).
Cancel Pending Start (CancelPendingStart)functionRPG Saga|BattleDrops the waiting start without running it.
Get Block Reason (GetBlockReason)pureRPG Saga|BattleFNameWhy no battle can start now: Scene, Dialog or a custom block reason. None = a battle may start.
Has Pending Start (HasPendingStart)pureRPG Saga|BattleboolA start is waiting for the block to lift.
On Deferred Start (OnDeferredStart)eventRPG Saga|BattleLabel: FString
bStarted: bool
A waiting start ran (bStarted: the battle started).
Remove Block (RemoveBlock)functionRPG Saga|BattleReason: FNameRemove Block

URSEBattleTransitionSubsystem

Module RSE. Plays the screen transitions between exploration and battles (D-083).

NodeKindCategoryParametersReturnsDescription
Is Playing (IsPlaying)pureRPG Saga|BattleboolA transition plays.

URSEBestiarySubsystem

Module RSECore. The bestiary (D-047): every enemy type met and defeated, saved as section "Bestiary".

NodeKindCategoryParametersReturnsDescription
Find Entry (FindEntryBP)pureRPG Saga|BestiaryCharacter: URSECharacterData*
OutEntry: FRSEBestiaryEntry (out)
boolThe saved counts of Character. Returns false when it has no entry.
Get Bestiary Characters (GetCharactersBP)pureRPG Saga|BestiaryTArray<URSECharacterData*>Enemies with an entry, sorted by category then name.
Get Knowledge (GetKnowledgeBP)pureRPG Saga|BestiaryCharacter: URSECharacterData*FRSEBestiaryKnowledgeWhat the entry of Character reveals now (name, description, stats, affinities, drops).
On Bestiary Changed (BP_OnChanged)eventRPG Saga|BestiaryFired after any change (menus refresh).
Record Defeat (RecordDefeatBP)functionRPG Saga|BestiaryCharacter: URSECharacterData*Counts one defeat of Character.
Record Encounter (RecordEncounterBP)functionRPG Saga|BestiaryCharacter: URSECharacterData*
Level: int32
Counts one enemy of Character met at Level (a custom encounter, a scripted fight).

URSEBlueprintLibrary_Art

Module RSECore, display name RSEBlueprint Library Art. Portraits and icons for UMG screens (D-075): the same lookups the built-in screens use.

NodeKindCategoryParametersReturnsDescription
Get Character Portrait (GetCharacterPortrait)pure, staticRPG Saga|ArtCharacter: URSECharacterData*
Variant: FName = None
TSoftObjectPtr<UTexture2D>The portrait of a character (its Portrait, a variant's, or the generated art library's). Null = none: show an initial.
Get Icon (GetIcon)pure, staticRPG Saga|ArtAsset: UObject*TSoftObjectPtr<UTexture2D>The icon of an item, ability or status (its Icon, or the generated art library's). Null = none.
Get Quest Image (GetQuestImage)pure, staticRPG Saga|ArtQuest: URSEQuestData*TSoftObjectPtr<UTexture2D>D-155: a quest's journal picture (its Header Image, or the generated art library's). Null = none.
Get Speaker Portrait (GetSpeakerPortrait)pure, staticRPG Saga|ArtSpeaker: URSESpeakerData*
Expression: FGameplayTag
TSoftObjectPtr<UTexture2D>A speaker's dialog portrait for an expression (its Portraits, neutral, its character's portrait, the library's).

URSEBlueprintLibrary_Audio

Module RSE, display name RSEBlueprint Library Audio. Music, sounds and volumes from Blueprint (D-052).

NodeKindCategoryParametersReturnsDescription
Get Audio Subsystem (GetAudioSubsystem)pure, staticRPG Saga|AudioWorldContextObject: UObject*URSEAudioSubsystem*The game's audio: the music stack, the sound catalog and the mixer.
Get Volume (GetVolume)pure, staticRPG Saga|Audio|VolumeChannel: ERSEAudioChannelfloatThe player's volume of a channel (0-1).
Play Music (PlayMusic)function, staticRPG Saga|AudioWorldContextObject: UObject*
Track: FRSEMusicTrack (ref)
Plays a track as story music (covers the area music) until Restore Music.
Play Music Context (PlayMusicContext)function, staticRPG Saga|AudioWorldContextObject: UObject*
Context: ERSEMusicContext
Plays the Audio settings' track of a context (Boss, Victory, a custom mood...) as story music, until Restore Music.
Play Sound 2D (PlaySound2D)function, staticRPG Saga|AudioWorldContextObject: UObject*
Sound: FGameplayTag
VolumeMultiplier: float = 1.000000
PitchMultiplier: float = 1.000000
boolPlays the catalog sound of a tag, not placed in the world (UI, stingers). Returns whether the tag has a sound.
Play Sound at Location (PlaySoundAtLocation)function, staticRPG Saga|AudioWorldContextObject: UObject*
Sound: FGameplayTag
Location: FVector
VolumeMultiplier: float = 1.000000
PitchMultiplier: float = 1.000000
boolPlays the catalog sound of a tag at a location. Returns whether the tag has a sound.
Reset Volumes (ResetVolumes)function, staticRPG Saga|Audio|VolumeEvery channel back to the Audio settings' default volume.
Restore Music (RestoreMusic)function, staticRPG Saga|AudioWorldContextObject: UObject*Ends the story music: the area music comes back.
Set Volume (SetVolume)function, staticRPG Saga|Audio|VolumeChannel: ERSEAudioChannel
Volume: float
bSave: bool = true
Sets and applies a channel volume (0-1); bSave stores it in the player's options.
Stop Music (StopMusic)function, staticRPG Saga|AudioWorldContextObject: UObject*
FadeOut: float = -1.000000
Story silence until Restore Music. FadeOut < 0 = the default fade.

URSEBlueprintLibrary_Battle

Module RSE, display name RSEBlueprint Library Battle. Battles from Blueprint (D-052): start an encounter from its data asset, find the running battle and its outcome, reach the directors.

NodeKindCategoryParametersReturnsDescription
Find ATBDirector (FindATBDirector)pure, staticRPG Saga|BattleWorldContextObject: UObject*
Encounter: URSEEncounterData* = None
ARSEATBBattleDirector*The map's ATB director (battle stage) for an encounter (none = the first one).
Find Tactics Director (FindTacticsDirector)pure, staticRPG Saga|BattleWorldContextObject: UObject*
Encounter: URSEEncounterData* = None
ARSETacticsBattleDirector*The map's Tactics director for an encounter (none = the first one).
Get Current Battle (GetCurrentBattle)pure, staticRPG Saga|BattleWorldContextObject: UObject*URSEBattle*The running battle (units, resources, events), or none.
Get Current Battle Outcome (GetCurrentBattleOutcome)pure, staticRPG Saga|BattleWorldContextObject: UObject*ERSEBattleOutcomeOutcome of the running battle from the player's side (Ongoing while it runs or without a battle).
Get Current Encounter (GetCurrentEncounter)pure, staticRPG Saga|BattleWorldContextObject: UObject*URSEEncounterData*The encounter being fought, or none.
Get Exploration Subsystem (GetExplorationSubsystem)pure, staticRPG Saga|BattleWorldContextObject: UObject*URSEExplorationSubsystem*Hands control from exploration to battles and back (Start Encounter, encounter events).
Get Unit Display Name (GetUnitDisplayName)pure, staticRPG Saga|BattleUnit: FRSEBattleUnit (ref)FTextDisplay name of a battle unit (its character's name).
Is in Battle (IsInBattle)pure, staticRPG Saga|BattleWorldContextObject: UObject*boolA battle is running on this map (started from exploration or directly on a director).
Start Encounter (StartEncounter)function, staticRPG Saga|BattleWorldContextObject: UObject*
Encounter: URSEEncounterData*
Source: AActor* = None
boolStarts a battle from an encounter asset: a Tactics encounter on the map's Tactics director that has it, a classic (ATB / turn-based) one on the map's battle stage. Source: the actor asking (it receives the encounter events).

URSEBlueprintLibrary_CombatRoles

Module RSECore, display name RSEBlueprint Library Combat Roles. Combat roles for Blueprints and scripts (D-093): definitions, asset roles, suggestions.

NodeKindCategoryParametersReturnsDescription
Get Combat Role Definition (GetCombatRoleDefinition)pure, staticRPG Saga|Combat RolesRole: FGameplayTag
OutDefinition: FRSECombatRoleDefinition (out)
boolThe definition of a role. Returns false when the project defines no such role.
Get Combat Roles (GetCombatRoles)pure, staticRPG Saga|Combat RolesTArray<FRSECombatRoleDefinition>Every combat role of the project (Project Settings -> Combat Roles).
Resolve Combat Role (ResolveCombatRole)pure, staticRPG Saga|Combat RolesQuery: FRSECombatRoleQuery (ref)FRSECombatRoleResolutionThe role looked up from a query (per-instance overrides and assets), with the project's registries.
Suggest Combat Role (SuggestCombatRole)pure, staticRPG Saga|Combat RolesShape: FRSECombatRoleShape (ref)FRSECombatRoleSuggestionThe suggested role for a measured shape, with the project's thresholds.

URSEBlueprintLibrary_Commands

Module RSECore, display name RSEBlueprint Library Commands. Blueprint access to the command bus, the players, the authority mode and the seeds (D-133).

NodeKindCategoryParametersReturnsDescription
Equal (Player Id) (EqualEqual_PlayerId)pure, staticRPG Saga|CommandsA: FRSEPlayerId
B: FRSEPlayerId
boolBoth ids are the same player.
Get Authority Mode (GetAuthorityMode)pure, staticRPG Saga|CommandsWorldContextObject: UObject*ERSEAuthorityModeStandalone (single player), Authority (session host) or Proxy (session guest).
Get Host Player Id (GetHostPlayerId)pure, staticRPG Saga|CommandsFRSEPlayerIdThe host's id (slot 0).
Get Local Player Id (GetLocalPlayerId)pure, staticRPG Saga|CommandsWorldContextObject: UObject*FRSEPlayerIdThis machine's player (the host in single player).
Get State Section Revision (GetStateSectionRevision)pure, staticRPG Saga|SaveWorldContextObject: UObject*
SectionId: FName
int32How many times a state section changed (its revision; 0 = never).
Has Game Authority (HasGameAuthority)pure, staticRPG Saga|CommandsWorldContextObject: UObject*boolThis machine may change game state (single player or the session host).
Is Host Player (IsHostPlayer)pure, staticRPG Saga|CommandsPlayer: FRSEPlayerIdboolThe player is the host.
Is Valid Player (IsValidPlayer)pure, staticRPG Saga|CommandsPlayer: FRSEPlayerIdboolA real player (not the game itself).
Make Player Id (MakePlayerId)pure, staticRPG Saga|CommandsSlot: int32FRSEPlayerIdThe id of a session slot (0 = host, 1.. = guests).
Next Game Seed (NextGameSeed)function, staticRPG Saga|SeedsWorldContextObject: UObject*
Stream: FName
int32The next seed of a named stream of the world seed (use it for any random roll that matters to the game).
Submit Command (Game) (SubmitGameCommand)function, staticRPG Saga|CommandsWorldContextObject: UObject*
Command: FInstancedStruct (ref)
FRSECommandResultSends a command as this machine's player (validated and applied by its handler, or sent to the host on a guest).
Was Command Applied (WasCommandApplied)pure, staticRPG Saga|CommandsResult: FRSECommandResult (ref)boolThe command was validated and applied.

URSEBlueprintLibrary_ExploreRPG

Module RSECore, display name RSEBlueprint Library Explore RPG. Exploration RPG rules for Blueprints (D-109).

NodeKindCategoryParametersReturnsDescription
Find Revive Option (FindReviveOption)function, staticRPG Saga|Exploration RPGWorldContextObject: UObject*
Fallen: URSECharacterData*
FRSEReviveOptionThe best way to revive a fallen member now (an item, a spell, help up).
Get Attempt Chance (GetAttemptChance)pure, staticRPG Saga|Exploration RPGWorldContextObject: UObject*
Score: float
Difficulty: float
floatChance (0..1) of an attempt with Score against Difficulty.
Get Member Skill (GetMemberSkill)function, staticRPG Saga|Exploration RPGWorldContextObject: UObject*
Member: URSECharacterData*
Skill: ERSEExploreSkill
floatA party member's score in an exploration skill now (Project Settings -> Exploration RPG -> Skills).
Revive Fallen Member (ReviveFallenMember)function, staticRPG Saga|Exploration RPGWorldContextObject: UObject*
Fallen: URSECharacterData*
boolRevives a fallen member the best way available. Returns true when it got up.

URSEBlueprintLibrary_FollowerLife

Module RSECore, display name RSEBlueprint Library Follower Life. Follower rules for Blueprints (D-129).

NodeKindCategoryParametersReturnsDescription
Get Follower Drift (GetFollowerDrift)pure, staticRPG Saga|Party FieldSeed: int32
Time: float
Radius: float
Period: float
FVector2DA member's smooth drift around its formation slot at Time (cm), deterministic from Seed.
Get Formation Spread (GetFormationSpread)pure, staticRPG Saga|Party FieldProfile: URSEFollowerProfile*
FreeWidth: float
floatThe formation's width for a free width around the leader (cm), from a profile.

URSEBlueprintLibrary_Game

Module RSECore, display name RSEBlueprint Library Game. Game-wide systems from Blueprint (D-052): rules profiles, adaptive difficulty, tutorials, the bestiary and the card collection.

NodeKindCategoryParametersReturnsDescription
Can Challenge Card Opponent (CanChallengeCardOpponent)pure, staticRPG Saga|CardsWorldContextObject: UObject*
Opponent: URSECardOpponentData*
ERSECardChallengeResultWhether the player can challenge an opponent now (conditions, rematch rule, deck).
Challenge Card Opponent (ChallengeCardOpponent)function, staticRPG Saga|CardsWorldContextObject: UObject*
Opponent: URSECardOpponentData*
Opens the card table against an opponent (checks and table screen), like the Start Card Match effect.
Get Active Rules Profile (GetActiveRulesProfile)pure, staticRPG Saga|RulesWorldContextObject: UObject*URSERulesProfile*The rules profile in use (none = the global Project Settings).
Get Bestiary Knowledge (GetBestiaryKnowledge)pure, staticRPG Saga|BestiaryWorldContextObject: UObject*
Enemy: URSECharacterData*
FRSEBestiaryKnowledgeWhat the bestiary reveals about an enemy now.
Get Bestiary Subsystem (GetBestiarySubsystem)pure, staticRPG Saga|BestiaryWorldContextObject: UObject*URSEBestiarySubsystem*The bestiary: enemies met and defeated, what their entries reveal, and its change event.
Get Card Count (GetCardCount)pure, staticRPG Saga|CardsWorldContextObject: UObject*
Card: URSECardData*
int32Copies of a card the player owns.
Get Card Subsystem (GetCardSubsystem)pure, staticRPG Saga|CardsWorldContextObject: UObject*URSECardSubsystem*The card game: collection, deck, matches and their events.
Get Defeat Count (GetDefeatCount)pure, staticRPG Saga|BestiaryWorldContextObject: UObject*
Enemy: URSECharacterData*
int32Times an enemy type was defeated.
Get Difficulty Subsystem (GetDifficultySubsystem)pure, staticRPG Saga|DifficultyWorldContextObject: UObject*URSEDifficultySubsystem*Adaptive enemy intelligence of the game (per battle mode).
Get Enemy Intelligence (GetEnemyIntelligence)pure, staticRPG Saga|DifficultyWorldContextObject: UObject*
Mode: FGameplayTag
floatCurrent adaptive enemy intelligence (0-1) of a battle mode (Battle.Mode.*).
Get Rules Subsystem (GetRulesSubsystem)pure, staticRPG Saga|RulesWorldContextObject: UObject*URSERulesSubsystem*The game's rules profile (switchable by the story; battles copy it when they start).
Get Tutorial Subsystem (GetTutorialSubsystem)pure, staticRPG Saga|TutorialsWorldContextObject: UObject*URSETutorialSubsystem*Contextual tutorials: triggers, seen state and the tutorial event.
Give Card (GiveCard)function, staticRPG Saga|CardsWorldContextObject: UObject*
Card: URSECardData*
Count: int32 = 1
int32Gives copies of a card (capped by the copies limit). Returns copies added.
Is Tutorial Seen (IsTutorialSeen)pure, staticRPG Saga|TutorialsWorldContextObject: UObject*
Tutorial: URSETutorialData*
boolThe tutorial was shown already.
Notify Tutorial Trigger (NotifyTutorialTrigger)function, staticRPG Saga|TutorialsWorldContextObject: UObject*
Trigger: FGameplayTag
URSETutorialData*Reports a game event (Tutorial.Trigger.*): the first unseen tutorial with that trigger shows. Any new tag works as a custom trigger. Returns the tutorial shown, or none.
Set Active Rules Profile (SetActiveRulesProfile)function, staticRPG Saga|RulesWorldContextObject: UObject*
Profile: URSERulesProfile*
Switches the game's rules profile (none = the default profile). Running battles keep theirs.
Set Enemy Intelligence (SetEnemyIntelligence)function, staticRPG Saga|DifficultyWorldContextObject: UObject*
Mode: FGameplayTag
Intelligence: float
Sets the adaptive enemy intelligence (0-1) of a battle mode; adaptation continues from there.
Show Tutorial (ShowTutorial)function, staticRPG Saga|TutorialsWorldContextObject: UObject*
Tutorial: URSETutorialData*
bEvenIfSeen: bool = false
boolShows a tutorial now (marks it seen). bEvenIfSeen: again, even when already seen.

URSEBlueprintLibrary_Growth

Module RSECore, display name RSEBlueprint Library Growth. Progression systems from Blueprint (D-144): the game's system, points, allocations, the board, teachers, mastery and use growth.

NodeKindCategoryParametersReturnsDescription
Allocate Attribute Points (AllocateAttributePoints)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Stat: FGameplayTag
Count: int32 = 1
ERSEGrowthResult--- Changing (party commands) ---
Auto Allocate Growth (AutoAllocateGrowth)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
ERSEGrowthResultSpends the character's points with the allocation policy.
Award Growth Points (AwardGrowthPoints)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Currency: FGameplayTag
Amount: int32 = 1
ERSEGrowthResultGives (or takes) points; Character empty = every member. Host only.
Buy Growth Ability (BuyGrowthAbility)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Ability: URSEAbilityData*
ERSEGrowthResultBuy Growth Ability
Can Learn from Teacher (CanLearnFromTeacher)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Teacher: URSETeacherData*
Ability: URSEAbilityData*
ERSEGrowthResultWhether the character may learn the teacher's offer for Ability now.
Describe Growth Result (DescribeGrowthResult)pure, staticRPG Saga|ProgressionResult: ERSEGrowthResultFTextText of a result ("Not enough points.").
Estimate Class Growth Board Fill Level (EstimateClassGrowthBoardFillLevel)function, staticRPG Saga|Progression|GeneratorClass: URSEClassData*
Profile: URSERulesProfile*
MaxLevel: int32 = 99
int32D-154: Estimate Growth Board Fill Level for a hero of Class (its plan's board), e.g. while generating content.
Estimate Growth Board Fill Level (EstimateGrowthBoardFillLevel)function, staticRPG Saga|Progression|GeneratorCharacter: URSECharacterData*
Profile: URSERulesProfile*
MaxLevel: int32 = 99
StartLevel: int32 = 1
int32D-154: the level at which Character's growth board is full when every point goes to it and battles give a typical playthrough's points (Profile's Battle Points, Simulated Victories Per Level and Enemies Per Victory; empty = the project's settings), counted from Start Level. -1 = not full by Max Level (or no board). Generated boards fill near their Target Level.
Generate Growth Board (GenerateGrowthBoard)function, staticRPG Saga|Progression|GeneratorClass: URSEClassData*
Params: FRSEGrowthGeneratorParams (ref)
Board: URSEGrowthBoard*
Plan: URSEGrowthPlan* = None
Fills Board from Class (deterministic; replaces its nodes and edges) and gives Plan (optional) its board points.
Generate Growth Point Tables (GenerateGrowthPointTables)function, staticRPG Saga|Progression|GeneratorClass: URSEClassData*
Params: FRSEGrowthGeneratorParams (ref)
Plan: URSEGrowthPlan*
Fills Plan's point grants, key attributes and ability catalog from Class (deterministic; replaces them).
Get Ability Rank (GetAbilityRank)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Ability: URSEAbilityData*
FRSEAbilityRankModifierUse growth rank (1 = base) and multipliers of an ability for the character.
Get Allocated Attribute Points (GetAllocatedAttributePoints)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Stat: FGameplayTag
int32Points put into an attribute (Classic + Points).
Get Available Growth Points (GetAvailableGrowthPoints)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Currency: FGameplayTag
int32Points of Currency the character may spend now.
Get Growth Board (GetGrowthBoard)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
URSEGrowthBoard*Get Growth Board
Get Growth Board Problems (GetGrowthBoardProblems)function, staticRPG Saga|Progression|GeneratorBoard: URSEGrowthBoard*
Errors: TArray<FText> (out)
Warnings: TArray<FText> (out)
Structural problems of a board (errors block a valid board; warnings are advice).
Get Growth Currencies (GetGrowthCurrencies)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
TArray<FGameplayTag>The currencies the character spends in the current system.
Get Growth Generator Defaults (GetGrowthGeneratorDefaults)pure, staticRPG Saga|Progression|GeneratorFRSEGrowthGeneratorParamsThe generator inputs of Project Settings -> Progression Systems -> Generator.
Get Growth Node Cost (GetGrowthNodeCost)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
NodeId: FName
int32What unlocking the node would cost now (-1 = not reachable yet).
Get Growth Options (GetGrowthOptions)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
TArray<FRSEGrowthOption>What the character could take now, scored (what Auto would pick from).
Get Growth Plan (GetGrowthPlan)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
URSEGrowthPlan*The character's Growth Plan and board (may be empty).
Get Mastery Points (GetMasteryPoints)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Item: URSEItemData*
Ability: URSEAbilityData*
bMastered: bool (out)
int32Mastery points of an item's ability for the character, and whether it is mastered.
Get Progression System (GetProgressionSystem)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*ERSEProgressionSystemThe progression system the game uses now.
Is Growth Node Unlocked (IsGrowthNodeUnlocked)pure, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
NodeId: FName
boolThe node is open for the character (Classic + Growth Board).
Learn from Teacher (LearnFromTeacher)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Teacher: URSETeacherData*
Ability: URSEAbilityData*
ERSEGrowthResultLearn from Teacher
Respec Character (RespecCharacter)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Teacher: URSETeacherData* = None
ERSEGrowthResultResets the character's spent points (Teacher: the NPC offering it, for NPC mode).
Set Progression System (SetProgressionSystem)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
System: ERSEProgressionSystemChoice
bForce: bool = false
ERSEGrowthResultThe system the game uses from now on (New Game choice; Force skips the settings' check). Host only.
Unlock Growth Node (UnlockGrowthNode)function, staticRPG Saga|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
NodeId: FName
ERSEGrowthResultUnlock Growth Node

URSEBlueprintLibrary_Items

Module RSECore, display name RSEBlueprint Library Items. Items and money from Blueprint (D-052): the shared inventory, money, shop prices and purchases, inns.

NodeKindCategoryParametersReturnsDescription
Add Money (AddMoney)function, staticRPG Saga|EconomyWorldContextObject: UObject*
Amount: int32
int32Adds money (capped by the Economy Max Money). Returns the money actually added.
Buy (Buy)function, staticRPG Saga|EconomyWorldContextObject: UObject*
Shop: URSEShopData*
EntryIndex: int32
Count: int32 = 1
ERSEShopResultPays and adds Count of the entry's item.
Can Buy (CanBuy)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
Shop: URSEShopData*
EntryIndex: int32
Count: int32 = 1
ERSEShopResultWhether the party could buy Count of a shop entry now, or why not (money, stock, availability, room).
Can Sell (CanSell)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
Item: URSEItemData*
Count: int32 = 1
Shop: URSEShopData* = None
ERSEShopResultWhether the party could sell Count of an item now, or why not (key items, not enough, the shop does not buy).
Get Buy Price (GetBuyPrice)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
Shop: URSEShopData*
EntryIndex: int32
int32Price of a shop entry (its override, else the item's price).
Get Inn Cost (GetInnCost)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
CostOverride: int32 = -1
int32Price of a night (CostOverride >= 0, else the Economy default).
Get Inventory Items (GetInventoryItems)function, staticRPG Saga|ItemsWorldContextObject: UObject*
Kind: ERSEItemKind
OutItems: TArray<URSEItemData*> (out)
OutCounts: TArray<int32> (out)
Held items of a kind in acquisition order, with their counts (same index).
Get Inventory Stacks (GetInventoryStacks)pure, staticRPG Saga|ItemsWorldContextObject: UObject*TArray<FRSEItemStack>Every stack of the inventory (item and count).
Get Item Count (GetItemCount)pure, staticRPG Saga|ItemsWorldContextObject: UObject*
Item: URSEItemData*
int32How many of an item the party holds.
Get Item Kind (GetItemKind)pure, staticRPG Saga|ItemsItem: URSEItemData*ERSEItemKindConsumable, equipment, key item or document.
Get Max Buy Count (GetMaxBuyCount)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
Shop: URSEShopData*
EntryIndex: int32
int32Most of an entry the party could buy now (money, stock, stack room).
Get Money (GetMoney)pure, staticRPG Saga|EconomyWorldContextObject: UObject*int32The party's money.
Get Offered Shop Entries (GetOfferedShopEntries)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
Shop: URSEShopData*
TArray<int32>Entries of a shop offered now (availability passes), including sold-out ones.
Get Sell Price (GetSellPrice)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
Item: URSEItemData*
Shop: URSEShopData* = None
int32What a shop pays for one item (Shop empty = the Economy settings' sell ratio).
Get Stock Left (GetStockLeft)pure, staticRPG Saga|EconomyWorldContextObject: UObject*
Shop: URSEShopData*
EntryIndex: int32
int32Stock left of a shop entry (-1 = unlimited).
Give Item (GiveItem)function, staticRPG Saga|ItemsWorldContextObject: UObject*
Item: URSEItemData*
Count: int32 = 1
int32Gives items to the party (capped by the item's stack limit). Returns how many were added.
Has Item (HasItem)pure, staticRPG Saga|ItemsWorldContextObject: UObject*
Item: URSEItemData*
Count: int32 = 1
boolThe party holds at least Count of an item.
Rest at Inn (RestAtInn)function, staticRPG Saga|EconomyWorldContextObject: UObject*
CostOverride: int32 = -1
ERSEInnResultPays and restores every member, then the rest fade plays (like the Rest At Inn effect).
Sell (Sell)function, staticRPG Saga|EconomyWorldContextObject: UObject*
Item: URSEItemData*
Count: int32 = 1
Shop: URSEShopData* = None
ERSEShopResultRemoves Count of Item and pays their sell price.
Spend Money (SpendMoney)function, staticRPG Saga|EconomyWorldContextObject: UObject*
Amount: int32
boolPays Amount if the party has it. Returns false (and pays nothing) otherwise.
Take Item (TakeItem)function, staticRPG Saga|ItemsWorldContextObject: UObject*
Item: URSEItemData*
Count: int32 = 1
int32Takes up to Count items from the party. Returns how many were taken.

URSEBlueprintLibrary_Narrative

Module RSECore, display name RSEBlueprint Library Narrative. Story state from Blueprint (D-052): flags, variables, puzzles, areas and events, conditions and effects, interactions, dialogs and quests.

NodeKindCategoryParametersReturnsDescription
Abort Dialog (AbortDialog)function, staticRPG Saga|DialogWorldContextObject: UObject*Stops the running blocking dialog now (effects already applied stay applied).
Add Member (Context) (EffectAddMember)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Character: URSECharacterData*
boolRecruits a character. Returns false if already a member.
Add Money (Context) (EffectAddMoney)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Amount: int32
int32Adds money (negative: takes up to what the party has). Returns the change applied.
Add to Variable (AddToVariable)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Variable: FGameplayTag
Delta: int32 = 1
int32Adds to a story variable (negative subtracts). Returns the new value.
Can Run Interaction (CanRunInteraction)pure, staticRPG Saga|NarrativeWorldContextObject: UObject*
Interaction: URSEInteractionData*
boolWhether an Interaction asset would run now.
Check Conditions (CheckConditions)pure, staticRPG Saga|NarrativeWorldContextObject: UObject*
Conditions: FRSEConditionSet (ref)
boolWhether a list of conditions passes now (an empty list passes).
Check Conditions (Context) (ContextCheckConditions)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Conditions: FRSEConditionSet (ref)
boolEvaluates a list of conditions in this context (composite Blueprint conditions).
Complete Quest Objective (CompleteQuestObjective)function, staticRPG Saga|QuestsWorldContextObject: UObject*
Quest: URSEQuestData*
Objective: FName
boolCompletes an objective of an active quest's current stage.
Get Dialog Subsystem (GetDialogSubsystem)pure, staticRPG Saga|DialogWorldContextObject: UObject*URSEDialogSubsystem*Dialogs of the game: the running dialog, barks, history and events.
Get Item Count (Context) (ContextGetItemCount)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Item: URSEItemData*
int32How many of an item the party holds in this context.
Get Level (Context) (ContextGetLevel)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Character: URSECharacterData*
int32Level of a character in this context.
Get Money (Context) (ContextGetMoney)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)int32The party's money in this context.
Get Narrative Subsystem (GetNarrativeSubsystem)pure, staticRPG Saga|NarrativeWorldContextObject: UObject*URSENarrativeSubsystem*The story state of the game (flags, variables, puzzles, areas, events) and its events.
Get Party Members (Context) (ContextGetPartyMembers)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)TArray<URSECharacterData*>Characters in the party in this context, in menu order.
Get Quest Status (GetQuestStatus)pure, staticRPG Saga|QuestsWorldContextObject: UObject*
Quest: URSEQuestData*
ERSEQuestStatusStatus of a quest (not started, active, completed, failed...).
Get Quest Subsystem (GetQuestSubsystem)pure, staticRPG Saga|QuestsWorldContextObject: UObject*URSEQuestSubsystem*Quests and endings of the game, with their events.
Get Variable (GetVariable)pure, staticRPG Saga|NarrativeWorldContextObject: UObject*
Variable: FGameplayTag
int32A story variable (Narrative.Var.*); 0 when never set.
Get Variable (Context) (ContextGetVariable)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Variable: FGameplayTag
int32A story variable in this context (0 when never set).
Get World (Context) (ContextGetWorldContext)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)UObject*The game world of a context (null in headless tests). World nodes inside Blueprint effects work without it too.
Give Item (Context) (EffectGiveItem)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Item: URSEItemData*
Count: int32 = 1
int32Gives items to the party (capped by the stack limit). Returns how many were added.
Is Area Unlocked (IsAreaUnlocked)pure, staticRPG Saga|NarrativeWorldContextObject: UObject*
Area: FGameplayTag
boolWhether a story area (Narrative.Area.*) is unlocked.
Is Area Unlocked (Context) (ContextIsAreaUnlocked)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Area: FGameplayTag
boolWhether a story area is unlocked in this context.
Is Dialog Active (IsDialogActive)pure, staticRPG Saga|DialogWorldContextObject: UObject*boolA blocking dialog is running (saving, travel and random encounters wait for it).
Is Event Seen (IsEventSeen)pure, staticRPG Saga|NarrativeWorldContextObject: UObject*
Event: FGameplayTag
boolWhether a scene or event (Narrative.Event.*) was seen.
Is Event Seen (Context) (ContextIsEventSeen)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Event: FGameplayTag
boolWhether a scene or event was seen in this context.
Is Flag Set (IsFlagSet)pure, staticRPG Saga|NarrativeWorldContextObject: UObject*
Flag: FGameplayTag
boolWhether a story flag (Narrative.Flag.*) is set.
Is Flag Set (Context) (ContextIsFlagSet)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Flag: FGameplayTag
boolWhether a flag is set in this context.
Is Party Member (Context) (ContextIsPartyMember)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Character: URSECharacterData*
boolWhether a character is in the party in this context.
Is Puzzle Solved (IsPuzzleSolved)pure, staticRPG Saga|PuzzlesWorldContextObject: UObject*
Puzzle: FGameplayTag
boolWhether a puzzle (Narrative.Puzzle.*) is solved.
Is Puzzle Solved (Context) (ContextIsPuzzleSolved)pure, staticRPG Saga|Narrative|ContextContext: FRSEConditionContext (ref)
Puzzle: FGameplayTag
boolWhether a puzzle is solved in this context.
Is Quest Active (IsQuestActive)pure, staticRPG Saga|QuestsWorldContextObject: UObject*
Quest: URSEQuestData*
boolThe quest is active.
Modify Member Resource (Context) (EffectModifyMemberResource)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Character: URSECharacterData*
Resource: FGameplayTag
Delta: float
Changes a party member's resource (HP, MP, custom) by Delta, within its bounds.
Modify Variable (Context) (EffectModifyVariable)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Variable: FGameplayTag
Op: ERSEVariableOp
Value: int32
Sets (Op Set) or adds to (Op Add) a story variable.
Remove Member (Context) (EffectRemoveMember)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Character: URSECharacterData*
Departure: ERSEDepartureKind = Permanent
boolA character leaves (permanently: its equipment returns to the inventory).
Request Battle (RequestBattle)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Encounter: TSoftObjectPtr<URSEEncounterData>
Asks the game to start a battle (the encounter decides its mode), exactly like the Start Battle effect.
Request Battle (Context) (EffectRequestBattle)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Encounter: TSoftObjectPtr<URSEEncounterData>
Requests a battle (performed after a running dialog, like the Start Battle effect).
Request Dialog (Context) (EffectRequestDialog)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Dialog: TSoftObjectPtr<UObject>
Requests a dialog (after a running dialog, like the Start Dialog effect).
Request Scene (RequestScene)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Scene: TSoftObjectPtr<UObject>
Event: FGameplayTag
bMarkSeen: bool = true
Asks the game to play a scene (Scene Data or a dialog), exactly like the Play Scene effect.
Request Screen (RequestScreen)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Screen: TSoftObjectPtr<UObject>
Asks the game to open the screen of a data asset (a shop, a code lock, a card opponent, a tutorial), like the effects that open them.
Request Screen (Context) (EffectRequestScreen)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Screen: TSoftObjectPtr<UObject>
Requests the screen of a data asset (shop, code lock, card opponent, tutorial).
Restore Party (Context) (EffectRestoreParty)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Character: URSECharacterData* = None
Full HP / MP, no KO, no lasting statuses. Character empty = every member.
Run Effects (RunEffects)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Effects: FRSEEffectList (ref)
int32Runs a list of effects now, in order (each one's Only If gate is checked). Returns how many ran.
Run Effects (Context) (EffectRunEffects)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Effects: FRSEEffectList (ref)
int32Runs a list of effects in this context. Returns how many ran.
Run Interaction (RunInteraction)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Interaction: URSEInteractionData*
ERSEInteractionResultRuns an Interaction asset (conditions, then effects; one-shot ones only once).
Set Area Unlocked (SetAreaUnlocked)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Area: FGameplayTag
bUnlocked: bool = true
Unlocks (or locks again) a story area.
Set Area Unlocked (Context) (EffectSetAreaUnlocked)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Area: FGameplayTag
bUnlocked: bool = true
Unlocks or locks a story area.
Set Event Seen (SetEventSeen)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Event: FGameplayTag
bSeen: bool = true
Marks a scene or event seen (or unseen).
Set Event Seen (Context) (EffectSetEventSeen)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Event: FGameplayTag
bSeen: bool = true
Marks a scene or event seen or unseen.
Set Flag (SetFlag)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Flag: FGameplayTag
bValue: bool = true
Sets or clears a story flag. Quests, doors and conditions react at once.
Set Flag (Context) (EffectSetFlag)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Flag: FGameplayTag
bValue: bool = true
Sets or clears a story flag (reported like the Set Flag effect).
Set Puzzle Solved (SetPuzzleSolved)function, staticRPG Saga|PuzzlesWorldContextObject: UObject*
Puzzle: FGameplayTag
bSolved: bool = true
Marks a puzzle solved (or unsolved again).
Set Puzzle Solved (Context) (EffectSetPuzzleSolved)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Puzzle: FGameplayTag
bSolved: bool = true
Marks a puzzle solved or unsolved.
Set Variable (SetVariable)function, staticRPG Saga|NarrativeWorldContextObject: UObject*
Variable: FGameplayTag
Value: int32
Sets a story variable.
Start Dialog (StartDialog)function, staticRPG Saga|DialogWorldContextObject: UObject*
Dialog: URSEDialogData*
Initiator: FGameplayTag
StartNode: FName = None
boolStarts a dialog (a blocking one waits for the running one; barks start at once). Returns true when it started or was queued.
Start Quest (StartQuest)function, staticRPG Saga|QuestsWorldContextObject: UObject*
Quest: URSEQuestData*
bIgnoreAvailability: bool = false
boolStarts a quest (checks its availability unless bIgnoreAvailability).
Take Item (Context) (EffectTakeItem)function, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)
Item: URSEItemData*
Count: int32 = 1
int32Takes up to Count items from the party. Returns how many were taken.
To Condition Context (EffectToConditionContext)pure, staticRPG Saga|Narrative|ContextContext: FRSEEffectContext (ref)FRSEConditionContextThe read-only view of an effect context (to call the condition Context nodes from an effect).

URSEBlueprintLibrary_Party

Module RSECore, display name RSEBlueprint Library Party. The party from Blueprint (D-052): members and recruitment, the ATB formation, levels and experience, attributes and resources, equipment, field use of abilities and items, and Pacts.

NodeKindCategoryParametersReturnsDescription
Add Experience (AddExperience)function, staticRPG Saga|Party|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Amount: int32
FRSELevelUpResultGives experience to a character: levels, stats, HP / MP and class abilities follow. Returns the levels gained and what they unlocked.
Add Experience to Party (AddExperienceToParty)function, staticRPG Saga|Party|ProgressionWorldContextObject: UObject*
Amount: int32
bOnlyStanding: bool = true
int32Gives the same experience to every member (bOnlyStanding: members that are not KO). Returns total levels gained.
Add Party Member (AddPartyMember)function, staticRPG Saga|PartyWorldContextObject: UObject*
Character: URSECharacterData*
boolRecruits a character (main, secondary or guest). Returns false if already a member.
Award Pact Points (AwardPactPoints)function, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
Points: int32
Gives points to a Pact (spent on its abilities).
Bind Pact (BindPact)function, staticRPG Saga|PactsWorldContextObject: UObject*
Character: URSECharacterData*
Pact: URSEPactData*
ERSEPactBindResultBinds a Pact to a main character (replacing the one it held). Only outside battle.
Can Bind Pact (CanBindPact)pure, staticRPG Saga|PactsWorldContextObject: UObject*
Character: URSECharacterData*
Pact: URSEPactData*
ERSEPactBindResultWhether a character may take a Pact now.
Can Equip (CanEquip)pure, staticRPG Saga|Party|EquipmentWorldContextObject: UObject*
Character: URSECharacterData*
Item: URSEEquipmentData*
SlotId: FName
ERSEEquipResultWhether a character could wear Item in SlotId (class, slot kind, locked guest gear; ignores the inventory).
Can Learn Pact Ability (CanLearnPactAbility)pure, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
Ability: URSEAbilityData*
ERSEPactLearnResultWhether a Pact ability can be learned now, or why not (points, prerequisites).
Cast Ability on Members (CastAbilityOnMembers)function, staticRPG Saga|Party|FieldWorldContextObject: UObject*
User: URSECharacterData*
Ability: URSEAbilityData*
Targets: TArray<URSECharacterData*> (ref)
ERSEFieldUseResultA member casts an ability outside battle (healing, cures) on members; its costs are paid.
Equip (Equip)function, staticRPG Saga|Party|EquipmentWorldContextObject: UObject*
Character: URSECharacterData*
Item: URSEEquipmentData*
SlotId: FName
ERSEEquipResultTakes Item from the inventory and puts it in SlotId; what it replaces goes back to the inventory.
Forget Ability (ForgetAbility)function, staticRPG Saga|Party|AbilitiesWorldContextObject: UObject*
Character: URSECharacterData*
Ability: URSEAbilityData*
ERSEAbilityLearnResultA character forgets an ability: a learned one is removed, a class ability is hidden until learned again. No Change = it does not have it.
Get ATB Formation (GetATBFormation)pure, staticRPG Saga|Party|FormationWorldContextObject: UObject*TArray<URSECharacterData*>Members that fight in ATB / turn-based battles now, in order.
Get ATB Party Size (GetATBPartySize)pure, staticRPG Saga|Party|FormationWorldContextObject: UObject*int32Size of the ATB party (Battle settings of the game's rules profile).
Get ATB Row (GetATBRow)pure, staticRPG Saga|Party|FormationWorldContextObject: UObject*
Character: URSECharacterData*
ERSEATBRowThe ATB row (front / back) a member fights in.
Get Bound Pact (GetBoundPact)pure, staticRPG Saga|PactsWorldContextObject: UObject*
Character: URSECharacterData*
URSEPactData*A character's Pact, or none.
Get Equip Candidates (GetEquipCandidates)pure, staticRPG Saga|Party|EquipmentWorldContextObject: UObject*
Character: URSECharacterData*
SlotId: FName
TArray<URSEEquipmentData*>Inventory equipment the character could wear in SlotId.
Get Equipment (GetEquipment)pure, staticRPG Saga|Party|EquipmentWorldContextObject: UObject*
Character: URSECharacterData*
FRSECharacterEquipmentWhat a character wears (slot id -> item).
Get Equipped Item (GetEquippedItem)pure, staticRPG Saga|Party|EquipmentWorldContextObject: UObject*
Character: URSECharacterData*
SlotId: FName
URSEEquipmentData*The item a character wears in a slot, or none.
Get Experience (GetExperience)pure, staticRPG Saga|Party|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
int32Experience total of a character.
Get Experience to Next Level (GetExperienceToNextLevel)pure, staticRPG Saga|Party|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
int32Experience still missing for the next level (0 at the maximum level).
Get Learned Abilities (GetLearnedAbilities)pure, staticRPG Saga|Party|AbilitiesWorldContextObject: UObject*
Character: URSECharacterData*
TArray<URSEAbilityData*>Abilities a character learned through Learn Ability, in learning order.
Get Learned Pact Abilities (GetLearnedPactAbilities)pure, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
TArray<URSEAbilityData*>Abilities learned with a Pact, in learning order.
Get Level (GetLevel)pure, staticRPG Saga|Party|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
int32Current level of a character.
Get Member Abilities (GetMemberAbilities)pure, staticRPG Saga|PartyWorldContextObject: UObject*
Character: URSECharacterData*
TArray<URSEAbilityData*>Abilities a member has now: its class's for its level, plus those of its equipment and Pact, then the learned ones.
Get Member Attribute (GetMemberAttribute)pure, staticRPG Saga|Party|AttributesWorldContextObject: UObject*
Character: URSECharacterData*
Attribute: FGameplayTag
floatFinal attribute of a member (level, equipment, derived formulas).
Get Member Attributes (GetMemberAttributes)pure, staticRPG Saga|Party|AttributesWorldContextObject: UObject*
Character: URSECharacterData*
FRSEAttributeSetEvery attribute of a member now (level and equipment).
Get Member Resource (GetMemberResource)pure, staticRPG Saga|Party|AttributesWorldContextObject: UObject*
Character: URSECharacterData*
Resource: FGameplayTag
floatCurrent value of a member's resource (HP, MP, custom ones kept after battle).
Get Member Resource Max (GetMemberResourceMax)pure, staticRPG Saga|Party|AttributesWorldContextObject: UObject*
Character: URSECharacterData*
Resource: FGameplayTag
floatMaximum of a member's resource now (level, equipment).
Get Member Vitals (GetMemberVitals)pure, staticRPG Saga|PartyWorldContextObject: UObject*
Character: URSECharacterData*
FRSECharacterVitalsCurrent resources, KO and lasting statuses of a member.
Get Owned Pacts (GetOwnedPacts)pure, staticRPG Saga|PactsWorldContextObject: UObject*TArray<URSEPactData*>Pacts the party has obtained, in the order obtained.
Get Pact Holder (GetPactHolder)pure, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
URSECharacterData*Who holds a Pact, or none.
Get Pact Points (GetPactPoints)pure, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
int32Unspent points of a Pact.
Get Party Members (GetPartyMembers)pure, staticRPG Saga|PartyWorldContextObject: UObject*TArray<URSECharacterData*>Characters in the party, in menu order.
Get Party State (GetPartyState)pure, staticRPG Saga|PartyWorldContextObject: UObject*FRSEPartyStateThe whole party state (members, inventory, money, equipment, formation, Pacts, levels), read-only.
Get Party Subsystem (GetPartySubsystem)pure, staticRPG Saga|PartyWorldContextObject: UObject*URSEPartySubsystem*The party of the game (state, attributes and resources, and their events).
Get Tactics Roster (GetTacticsRoster)pure, staticRPG Saga|Party|FormationWorldContextObject: UObject*TArray<URSECharacterData*>Members that can be deployed in Tactics battles (main and secondary characters).
Give Pact (GivePact)function, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
boolThe party obtains a Pact. Returns false if already owned.
Has Learned Ability (HasLearnedAbility)pure, staticRPG Saga|Party|AbilitiesWorldContextObject: UObject*
Character: URSECharacterData*
Ability: URSEAbilityData*
boolWhether a character learned an ability through Learn Ability (class, equipment and Pact abilities do not count).
Has Pact (HasPact)pure, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
boolThe party owns a Pact.
Is In ATB Formation (IsInATBFormation)pure, staticRPG Saga|Party|FormationWorldContextObject: UObject*
Character: URSECharacterData*
boolThe member fights in ATB / turn-based battles now.
Is Member KO (IsMemberKO)pure, staticRPG Saga|PartyWorldContextObject: UObject*
Character: URSECharacterData*
boolThe member is knocked out (HP 0).
Is Party Member (IsPartyMember)pure, staticRPG Saga|PartyWorldContextObject: UObject*
Character: URSECharacterData*
boolThe character is in the party now.
Learn Ability (LearnAbility)function, staticRPG Saga|Party|AbilitiesWorldContextObject: UObject*
Character: URSECharacterData*
Ability: URSEAbilityData*
ERSEAbilityLearnResultA character learns an ability for good (like the Learn Ability effect; the game shows a notice). No Change = it already has it.
Learn Pact Ability (LearnPactAbility)function, staticRPG Saga|PactsWorldContextObject: UObject*
Pact: URSEPactData*
Ability: URSEAbilityData*
ERSEPactLearnResultSpends Pact points on one of its abilities. Only outside battle.
Modify Member Resource (ModifyMemberResource)function, staticRPG Saga|Party|AttributesWorldContextObject: UObject*
Character: URSECharacterData*
Resource: FGameplayTag
Delta: float
Adds Delta (negative removes) to a member's resource, within its bounds; HP 0 = KO.
Notify Party Changed (NotifyPartyChanged)function, staticRPG Saga|PartyWorldContextObject: UObject*Reports a party change made outside story effects (quests re-evaluate, menus refresh). The nodes above do it themselves.
Preview Equip (PreviewEquip)function, staticRPG Saga|Party|EquipmentWorldContextObject: UObject*
Character: URSECharacterData*
Item: URSEEquipmentData*
OutCurrent: FRSEAttributeSet (out)
OutAfter: FRSEAttributeSet (out)
boolAttributes now and with Item worn instead (equipment comparison). Returns false when the character cannot wear it.
Remove Party Member (RemovePartyMember)function, staticRPG Saga|PartyWorldContextObject: UObject*
Character: URSECharacterData*
Departure: ERSEDepartureKind = Permanent
boolA character leaves: Permanent returns its equipment to the inventory; Parallel Scenario keeps it on the character.
Restore Party (RestoreParty)function, staticRPG Saga|PartyWorldContextObject: UObject*
Character: URSECharacterData* = None
Full HP / MP, no KO, no lasting statuses (rest points, story heals). Character empty = every member.
Set ATB Row (SetATBRow)function, staticRPG Saga|Party|FormationWorldContextObject: UObject*
Character: URSECharacterData*
Row: ERSEATBRow
ERSEFormationResultMoves a member to the front or back ATB row.
Set In ATB Formation (SetInATBFormation)function, staticRPG Saga|Party|FormationWorldContextObject: UObject*
Character: URSECharacterData*
bActive: bool
ERSEFormationResultMoves a member into (bActive) or out of the ATB party.
Set Level (SetLevel)function, staticRPG Saga|Party|ProgressionWorldContextObject: UObject*
Character: URSECharacterData*
Level: int32
FRSELevelUpResultSets a character's level (experience moves to the level's threshold).
Unbind Pact (UnbindPact)function, staticRPG Saga|PactsWorldContextObject: UObject*
Character: URSECharacterData*
ERSEPactBindResultTakes a character's Pact away. Only outside battle.
Unequip (Unequip)function, staticRPG Saga|Party|EquipmentWorldContextObject: UObject*
Character: URSECharacterData*
SlotId: FName
boolReturns the item in SlotId to the inventory.
Use Item on Members (UseItemOnMembers)function, staticRPG Saga|Party|FieldWorldContextObject: UObject*
Item: URSEConsumableData*
Targets: TArray<URSECharacterData*> (ref)
ERSEFieldUseResultUses one consumable on members (a single target, or several when the item hits the whole party).

URSEBlueprintLibrary_PartyField

Module RSECore, display name RSEBlueprint Library Party Field. Party field rules for Blueprints (D-097).

NodeKindCategoryParametersReturnsDescription
Compute Formation Slots (ComputeFormationSlots)pure, staticRPG Saga|Party FieldLeaderLocation: FVector
LeaderYaw: float
Count: int32
TArray<FVector>World places of Count followers behind a leader (Project Settings -> Party Field -> Formation Slots).
Decide Follow Action (DecideFollowAction)pure, staticRPG Saga|Party FieldDistanceToSlot: float
DistanceToLeader: float
ERSEFollowActionWhat a follower does next, from its distance to its place and to the leader.
Get Command Success Chance (GetCommandSuccessChance)pure, staticRPG Saga|Party FieldCommand: URSEPartyCommandData*
Member: URSECharacterData*
floatChance (0..1) that Member's attempt at Command works.

URSEBlueprintLibrary_Save

Module RSE, display name RSEBlueprint Library Save. Saving and loading from Blueprint (D-052).

NodeKindCategoryParametersReturnsDescription
Allow Saving (AllowSaving)function, staticRPG Saga|SaveWorldContextObject: UObject*
Reason: FName
Lifts a save block set with Block Saving (same reason).
Block Saving (BlockSaving)function, staticRPG Saga|SaveWorldContextObject: UObject*
Reason: FName
Scope: ERSESaveBlockScope = All
Blocks saving for a reason until Allow Saving with the same reason (a custom no-save area, a minigame). Scope Consumable Item Only still allows save points. Reasons are counted.
Can Save Now (CanSaveNow)function, staticRPG Saga|SaveWorldContextObject: UObject*
Source: ERSESaveRequestSource
Reasons: TArray<FName> (out)
boolWhether a save is allowed now; Reasons lists what blocks it (Battle, Dialog, Cutscene, NoSaveZone...).
Delete Save Slot (DeleteSaveSlot)function, staticRPG Saga|SaveWorldContextObject: UObject*
SlotName: FString
boolDeletes a save slot (its file and backup).
Get Continue Slot (GetContinueSlot)function, staticRPG Saga|SaveWorldContextObject: UObject*
SlotName: FString (out)
boolThe most recent loadable slot (Continue). Returns false when there is none.
Get Play Time Seconds (GetPlayTimeSeconds)pure, staticRPG Saga|SaveWorldContextObject: UObject*floatPlay time of this game in seconds.
Get Save Flow Subsystem (GetSaveFlowSubsystem)pure, staticRPG Saga|SaveWorldContextObject: UObject*URSESaveFlowSubsystem*The save flow in the world: save points, the save item, the save screen, load and travel.
Get Save Slots (GetSaveSlots)function, staticRPG Saga|SaveWorldContextObject: UObject*TArray<FRSESaveSlotInfo>Every slot's summary (autosaves first, then manual slots; empty ones included).
Get Save Subsystem (GetSaveSubsystem)pure, staticRPG Saga|SaveWorldContextObject: UObject*URSESaveSubsystem*Save files, slots, save rules, play time and the save events.
Get Slot Name (GetSlotName)pure, staticRPG Saga|SaveWorldContextObject: UObject*
SlotIndex: int32
FStringName of manual slot N (0-based).
Has Any Save (HasAnySave)pure, staticRPG Saga|SaveWorldContextObject: UObject*boolAt least one loadable save exists (Continue / Load in a main menu).
Load Game (LoadGame)function, staticRPG Saga|SaveWorldContextObject: UObject*
SlotName: FString
ERSESaveResultLoads a slot and opens its map (the player appears where the save was made).
Open Save Screen (OpenSaveScreen)function, staticRPG Saga|SaveWorldContextObject: UObject*
SavePointId: FName
boolOpens the save screen (slot list), like a save point does.
Save Game (SaveGame)function, staticRPG Saga|SaveWorldContextObject: UObject*
SlotName: FString
SavePointId: FName
ERSESaveResultSaves the game now in a slot, with the player's place (SavePointId: the save point used, if any). Manual saves cannot overwrite the autosave slots.
Start New Game (StartNewGame)function, staticRPG Saga|SaveWorldContextObject: UObject*A new game for every saved system (party, story, quests, cards...), play time back to zero.

URSEBlueprintLibrary_Stealth

Module RSECore, display name RSEBlueprint Library Stealth. Stealth rules for Blueprints (D-097).

NodeKindCategoryParametersReturnsDescription
Advance Detection Meter (AdvanceDetectionMeter)function, staticRPG Saga|StealthMeter: FRSEDetectionMeter (ref)
Rate: float
DeltaSeconds: float
boolAdvances a detection meter (fills at Rate, drains after the decay delay). Returns true the moment it becomes full.
Compute Detection Fill Rate (ComputeDetectionFillRate)pure, staticRPG Saga|StealthInput: FRSEDetectionInput (ref)
Behavior: URSERoamingBehaviorData*
floatHow fast an enemy with Behavior fills its detection meter for what it perceives (meter share per second; 0 = nothing).
Get Detection Awareness (GetDetectionAwareness)pure, staticRPG Saga|StealthMeter: FRSEDetectionMeter (ref)ERSEStealthAwarenessD-151: unaware, suspicious or alerted, from a meter.

URSEBlueprintLibrary_UI

Module RSE, display name RSEBlueprint Library UI. Screens, input prompts, visual styles and player options from Blueprint (D-052).

NodeKindCategoryParametersReturnsDescription
Close Modal Screen (CloseModalScreen)function, staticRPG Saga|UIWorldContextObject: UObject*
Screen: UObject*
Unregisters a custom screen (the HUD comes back; world input waits a moment so the closing press does not reach it).
Get Active Visual Style (GetActiveVisualStyle)pure, staticRPG Saga|Visual StyleWorldContextObject: UObject*URSEVisualStyle*The style applied now, or none.
Get Dialog Text Speed (GetDialogTextSpeed)pure, staticRPG Saga|DialogWorldContextObject: UObject*int32Index into the Dialog settings' text speed steps (the player's option).
Get Gamepad Label Style (GetGamepadLabelStyle)pure, staticRPG Saga|InputERSEGamepadLabelStyleThe gamepad label set in use (the player's choice, else the project's).
Get Input Device (GetInputDevice)pure, staticRPG Saga|InputERSEInputDeviceThe device the key prompts show (the forced one, else the one used last).
Get Key Label (GetKeyLabel)pure, staticRPG Saga|InputKey: FKeyFTextShort label of a key for prompts (theme, active gamepad label set: Xbox, PlayStation, Steam Deck).
Get Keys Label (GetKeysLabel)pure, staticRPG Saga|InputKeys: TArray<FKey> (ref)FTextThe label of the first key of Keys for the device in use (empty when the device has none).
Get Player Option Bool (GetPlayerOptionBool)pure, staticRPG Saga|OptionsKey: FString
bDefault: bool = false
boolA stored bool player option (Default when never set).
Get Player Option Float (GetPlayerOptionFloat)pure, staticRPG Saga|OptionsKey: FString
Default: float = 0.000000
floatA stored float player option (Default when never set).
Get Player Option Int (GetPlayerOptionInt)pure, staticRPG Saga|OptionsKey: FString
Default: int32 = 0
int32A stored player option (Default when never set). Keys are shared with the built-in options screen.
Get Player Option String (GetPlayerOptionString)pure, staticRPG Saga|OptionsKey: FString
Default: FString
FStringA stored text player option (Default when never set).
Get Visual Style Subsystem (GetVisualStyleSubsystem)pure, staticRPG Saga|Visual StyleWorldContextObject: UObject*URSEVisualStyleSubsystem*The visual style layer of the current world (area -> player -> default).
Get Visual Styles (GetVisualStyles)function, staticRPG Saga|Visual StyleTArray<URSEVisualStyle*>The styles the player can pick from, in order.
Is Any Modal Screen Open (IsAnyModalScreenOpen)pure, staticRPG Saga|UIWorldContextObject: UObject*boolAny modal screen is open (menus, dialogs, shops, the card table...).
Is Dialog Auto Advance (IsDialogAutoAdvance)pure, staticRPG Saga|DialogWorldContextObject: UObject*boolDialog lines advance by themselves (the player's option).
Is Game Input Blocked (IsGameInputBlocked)pure, staticRPG Saga|UIWorldContextObject: UObject*boolWorld actions (Interact, the menu key) must wait: a screen is open or has just closed.
Open Modal Screen (OpenModalScreen)function, staticRPG Saga|UIWorldContextObject: UObject*
Screen: UObject*
Options: FRSEModalScreenOptions
Registers a custom screen as open: the exploration / battle HUD hides and world input waits until Close Modal Screen.
Set Dialog Auto Advance (SetDialogAutoAdvance)function, staticRPG Saga|DialogWorldContextObject: UObject*
bEnabled: bool
Turns dialog auto-advance on or off (stored in the player's options).
Set Dialog Text Speed (SetDialogTextSpeed)function, staticRPG Saga|DialogWorldContextObject: UObject*
Step: int32
Sets the text speed step (index into the Dialog settings' steps; stored in the player's options).
Set Gamepad Label Style (SetGamepadLabelStyle)function, staticRPG Saga|InputStyle: ERSEGamepadLabelStyleThe player's gamepad label set (Auto = automatic). Stored in the player's options.
Set Player Option Bool (SetPlayerOptionBool)function, staticRPG Saga|OptionsKey: FString
bValue: bool
Stores a bool player option (GameUserSettings.ini).
Set Player Option Float (SetPlayerOptionFloat)function, staticRPG Saga|OptionsKey: FString
Value: float
Stores a float player option (GameUserSettings.ini).
Set Player Option Int (SetPlayerOptionInt)function, staticRPG Saga|OptionsKey: FString
Value: int32
Stores an integer player option (GameUserSettings.ini).
Set Player Option String (SetPlayerOptionString)function, staticRPG Saga|OptionsKey: FString
Value: FString
Stores a text player option (GameUserSettings.ini).
Set Quest Tracker Hidden (SetQuestTrackerHidden)function, staticRPG Saga|QuestsWorldContextObject: UObject*
Reason: FName
bHidden: bool
Hides the quest tracker while any reason is set (a custom screen, a cutscene). Battles hide it on their own.
Set Visual Style (SetVisualStyle)function, staticRPG Saga|Visual StyleWorldContextObject: UObject*
Style: URSEVisualStyle*
bSave: bool = true
The player's style (none = the default); applied at once, saved per user when bSave.
Show Notification (ShowNotification)function, staticRPG Saga|QuestsWorldContextObject: UObject*
Header: FText
Body: FText
Color: FLinearColor
Shows a notification through the quest HUD (header, body, accent color).
Show Tutorial Screen (ShowTutorialScreen)function, staticRPG Saga|TutorialsWorldContextObject: UObject*
Tutorial: URSETutorialData*
Shows a tutorial screen again without changing its seen state (a Help page).

URSEBlueprintLibrary_World

Module RSE, display name RSEBlueprint Library World. The world from Blueprint (D-052): travel between maps and fast travel, areas, interaction, puzzles, story scenes, shops and the card table.

NodeKindCategoryParametersReturnsDescription
Add Encounter Rate Effect (AddEncounterRateEffect)function, staticRPG Saga|EncountersWorldContextObject: UObject*
SourceId: FName
Multiplier: float
Steps: int32
Seconds: float
boolChanges the random encounter rate for a while (Repel / Lure from a Blueprint): Multiplier 0 = no random battles, 2 = twice as many; Steps and Seconds (0 = not limited) count down while exploring. SourceId: the same id refreshes or ends it.
Discover Place (DiscoverPlace)function, staticRPG Saga|TravelWorldContextObject: UObject*
Place: URSETravelDestinationData*
Discovers a fast-travel place (it appears on the world map).
Fast Travel To (FastTravelTo)function, staticRPG Saga|TravelWorldContextObject: UObject*
Destination: URSETravelDestinationData*
boolFast travel to a world map place (it must be available).
Get Current Area (GetCurrentArea)pure, staticRPG Saga|TravelWorldContextObject: UObject*URSEAreaData*The area the player is in now (area volume, else the map's area), or none.
Get Encounter Rate Multiplier (GetEncounterRateMultiplier)pure, staticRPG Saga|EncountersWorldContextObject: UObject*floatThe random battle chance multiplier now: rate effects x equipment traits x the player's frequency option.
Get Encounter Subsystem (GetEncounterSubsystem)pure, staticRPG Saga|EncountersWorldContextObject: UObject*URSEEncounterSubsystem*The world's random encounter system: rate, rate effects, generated groups, visible enemy events.
Get Fast Travel Block (GetFastTravelBlock)pure, staticRPG Saga|TravelWorldContextObject: UObject*ERSEFastTravelBlockWhether fast travel works now, and why not (battle, dialog, story lock...).
Get Focused Interactable (GetFocusedInteractable)pure, staticRPG Saga|InteractionWorldContextObject: UObject*ARSEInteractableActor*The interactable the prompt shows now, or none.
Get Travel Subsystem (GetTravelSubsystem)pure, staticRPG Saga|TravelWorldContextObject: UObject*URSETravelSubsystem*Zone navigation and fast travel (TravelTo, the world map, the area catalog).
Interact with Focused (InteractWithFocused)function, staticRPG Saga|InteractionWorldContextObject: UObject*boolInteracts with the focused interactable, like pressing Interact.
Is Area Discovered (IsAreaDiscovered)pure, staticRPG Saga|TravelWorldContextObject: UObject*
Area: URSEAreaData*
boolThe player has been to an area.
Is Code Lock Solved (IsCodeLockSolved)pure, staticRPG Saga|PuzzlesWorldContextObject: UObject*
Lock: URSECodeLockData*
boolThe code lock was solved.
Is Exploration Active (IsExplorationActive)pure, staticRPG Saga|ExplorationWorldContextObject: UObject*boolThe explorer has control (no battle, menu, dialog).
Is Place Discovered (IsPlaceDiscovered)pure, staticRPG Saga|TravelWorldContextObject: UObject*
Place: URSETravelDestinationData*
boolA fast-travel place was discovered.
Is Scene Playing (IsScenePlaying)pure, staticRPG Saga|ScenesWorldContextObject: UObject*boolA story scene is on screen.
Is Traveling (IsTraveling)pure, staticRPG Saga|TravelWorldContextObject: UObject*boolA travel is queued, fading out or loading.
Open Card Album (OpenCardAlbum)function, staticRPG Saga|CardsWorldContextObject: UObject*boolOpens the card album / deck editor.
Open Code Lock (OpenCodeLock)function, staticRPG Saga|PuzzlesWorldContextObject: UObject*
Lock: URSECodeLockData*
Opens a code lock screen (unless it is solved), like the Open Code Lock effect.
Open Shop (OpenShop)function, staticRPG Saga|EconomyWorldContextObject: UObject*
Shop: URSEShopData*
Opens a shop screen, like the Open Shop effect.
Open World Map (OpenWorldMap)function, staticRPG Saga|TravelWorldContextObject: UObject*
Reason: FText (out)
boolOpens the world map (after a running dialog). Returns false when fast travel is blocked; Reason says why.
Play Narration (PlayNarration)function, staticRPG Saga|PuzzlesWorldContextObject: UObject*
Lines: TArray<FText> (ref)
Effects: TArray<URSEWorldEffect*> (ref)
boolNarrator lines in the dialog box (examine texts, hints), then optional effects.
Play Rest Fade (PlayRestFade)function, staticRPG Saga|EconomyWorldContextObject: UObject*Plays the inn's fade to black and back (the party is not changed; see Rest At Inn).
Play Scene (PlayScene)function, staticRPG Saga|ScenesWorldContextObject: UObject*
Scene: URSESceneData*
bReplay: bool = false
boolPlays a story scene (queued behind a running one). bReplay: no end effects (theater).
Skip Scene (SkipScene)function, staticRPG Saga|ScenesWorldContextObject: UObject*Skips the running scene now (its end effects still run).
Start Card Match (StartCardMatch)function, staticRPG Saga|CardsWorldContextObject: UObject*
Opponent: URSECardOpponentData*
boolStarts a card match now (no dialog wait; a notice explains a refusal).
Travel to Map (TravelToMap)function, staticRPG Saga|TravelWorldContextObject: UObject*
Map: TSoftObjectPtr<UWorld>
ArrivalPoint: FName
Area: TSoftObjectPtr<URSEAreaData>
boolTravels to a map: fade out with the destination's name, open the map, place the player at the arrival point (ArrivalPoint None = the point for the map left, else the default one). Waits for a running dialog.

URSECameraFocusInterface

Module RSE. RSECamera Focus Interface

NodeKindCategoryParametersReturnsDescription
Get Camera Focus (GetCameraFocus)overrideRPG Saga|CameraOutFeet: TArray<FVector> (out)
OutIgnoredActors: TArray<AActor*> (out)
Feet of the characters to keep visible (world, most important first) and the actors never hidden.

URSECameraHandOffLibrary

Module RSE. D-127: hand-overs of the player's view without a visible jump.

NodeKindCategoryParametersReturnsDescription
Freeze View (FreezeView)function, staticRPG Saga|CameraController: APlayerController*
LifeSeconds: float = 2.000000
ACameraActor*Spawns a transient camera exactly at the controller's current view (location, rotation, field of view, post process) and makes it the view target at once: possessing another pawn no longer moves the picture, and the next Set View Target with Blend blends from this frozen view. The camera destroys itself after Life Seconds (game time; keep it longer than the blend); 0 = the caller destroys it. Returns the camera, or null without a camera manager.

URSECameraOcclusionSubsystem

Module RSE. The camera occlusion of the RPG cameras (D-113, D-116, Camera Occlusion settings).

NodeKindCategoryParametersReturnsDescription
Get Circle Strength (GetCircleStrength)pureRPG Saga|CameraSlot: int32floatD-116: how far the see-through circle is open (0..1) around the focus character Slot (0 = the leader / active unit).
Get Fading Count (GetFadingCount)pureRPG Saga|Cameraint32Objects in the way at the last check that fade instead of hiding (opted-in materials).
Get Ghost Count (GetGhostCount)pureRPG Saga|Cameraint32D-116: objects (or instances) wearing the ghost material now, opening or closing.
Get Hidden Count (GetHiddenCount)pureRPG Saga|Cameraint32Objects hidden now (the fallback, the forced parts and the single instances).
Get Hidden Instance Count (GetHiddenInstanceCount)pureRPG Saga|Cameraint32Single instances of instanced meshes hidden now (D-112: trees of an instanced forest).
Restore All (RestoreAll)functionRPG Saga|CameraShows everything the occlusion hid (a cut, the end of a battle). The next check hides what is still in the way.
Update Now (UpdateNow)functionRPG Saga|CameraRuns a check now (tests, scripts; the timer does it on its own).

URSECardAlbumViewModel

Module RSE. Card album and deck editor (D-028): owned cards by rarity, the deck (max size by the card rules), add / remove, auto-build and the validation message.

NodeKindCategoryParametersReturnsDescription
Activate (Activate)functionRPG Saga|UI|AlbumAdds the selected collection card / removes the selected deck card.
Activate Row (ActivateRow)functionRPG Saga|UI|AlbumInColumn: int32
Index: int32
Selects a row and activates it (a click).
Auto Build (AutoBuild)functionRPG Saga|UI|AlbumAuto Build
Leave (Leave)functionRPG Saga|UI|AlbumCloses the album (the last valid deck stays).
Move Selection (MoveSelection)functionRPG Saga|UI|AlbumDelta: int32Move Selection
Select (Select)functionRPG Saga|UI|AlbumInColumn: int32
Index: int32
Select
Set Column (SetColumn)functionRPG Saga|UI|AlbumInColumn: int32Set Column

URSECardChallengerComponent

Module RSE. Makes any actor (an NPC, a sign, a table) a card opponent (D-028).

NodeKindCategoryParametersReturnsDescription
Can Challenge (CanChallenge)pureRPG Saga|CardsERSECardChallengeResultWhether the player can challenge now (conditions, rematch rule, deck).
Challenge (Challenge)functionRPG Saga|CardsAsks for a match (the card presentation checks CanChallenge again and explains a refusal).

URSECardPresentationSubsystem

Module RSE. Card game director in the world (D-028).

NodeKindCategoryParametersReturnsDescription
Is Card Screen Open (IsBusy)pureRPG Saga|CardsboolA card screen (table or album) is open.
On Challenge Refused (BP_OnChallengeRefused)eventRPG Saga|CardsOpponent: URSECardOpponentData*
Reason: ERSECardChallengeResult
A challenge was refused (conditions, rematch rule, deck; Blueprint).
On Match Presented (BP_OnMatchPresented)eventRPG Saga|CardsResult: FRSECardMatchResult (ref)The table closed after a match (Blueprint).
Open Album (OpenAlbum)functionRPG Saga|CardsboolOpens the album / deck editor. Returns false when busy.
Start Challenge (StartChallenge)functionRPG Saga|CardsOpponent: URSECardOpponentData*boolStarts a match against Opponent now. Returns false when refused (a notice explains why).

URSECardSubsystem

Module RSECore. Owns the player's card collection for the session and runs matches (D-028).

NodeKindCategoryParametersReturnsDescription
Auto Build Deck (AutoBuildDeck)functionRPG Saga|CardsReplaces the deck with the strongest one from the owned cards (RSECardDeck::BuildBest).
Can Challenge (CanChallenge)pureRPG Saga|CardsOpponent: URSECardOpponentData*ERSECardChallengeResultWhether the player can challenge Opponent now (conditions, rematch rule, deck).
Get Card Collection (GetCollectionBP)pureRPG Saga|CardsFRSECardCollectionOwned cards and counts, the deck and the record against each opponent (read-only).
Get Card Count (GetCardCount)pureRPG Saga|CardsCard: URSECardData*int32Copies of a card the player owns.
Get Deck (GetDeckBP)pureRPG Saga|CardsTArray<URSECardData*>The player's deck, in order.
Get Wins (GetWins)pureRPG Saga|CardsOpponent: URSECardOpponentData*int32Matches won against an opponent.
Give Card (GiveCard)functionRPG Saga|CardsCard: URSECardData*
Count: int32 = 1
int32Adds copies (capped by MaxCopiesPerCard). Returns copies added.
On Card Collection Changed (OnCardCollectionChanged)eventRPG Saga|CardsOwned cards or the deck changed.
On Card Match Finished (OnCardMatchFinished)eventRPG Saga|CardsResult: FRSECardMatchResult (ref)A match was played and applied (the table replays it).
On Card Match Requested (OnCardMatchRequested)eventRPG Saga|CardsOpponent: TSoftObjectPtr<URSECardOpponentData> (ref)A Start Card Match effect or Request Match asked for a match.
Play Match (Instant) (PlayMatchBP)functionRPG Saga|CardsOpponent: URSECardOpponentData*
Seed: int32
OutResult: FRSECardMatchResult (out)
boolPlays and applies a whole match at once, without the table screen (record, stake, rewards). Seed 0 = the next seed of the game's Cards stream (world seed).
Request Match (RequestMatchBP)functionRPG Saga|CardsOpponent: URSECardOpponentData*Asks the presentation to start a match (checks come there), like the Start Card Match effect.
Set Deck (SetDeck)functionRPG Saga|CardsDeck: TArray<URSECardData*> (ref)ERSEDeckValidationReplaces the deck if it is valid.
Simulate Match (SimulateMatchBP)pureRPG Saga|CardsOpponent: URSECardOpponentData*
Seed: int32
OutResult: FRSECardMatchResult (out)
boolThe same match without changing anything (previews).
Take Card (TakeCard)functionRPG Saga|CardsCard: URSECardData*
Count: int32 = 1
int32Removes up to Count copies; the deck loses copies no longer owned. Returns copies removed.
Validate Deck (ValidateDeck)pureRPG Saga|CardsDeck: TArray<URSECardData*> (ref)ERSEDeckValidationWhether a deck is valid (size, owned copies), or why not.

URSECardTableViewModel

Module RSE. The War card table (D-028): replays a finished match (RSECardTimeline) step by step, then shows the result.

NodeKindCategoryParametersReturnsDescription
Continue (Continue)functionRPG Saga|UI|CardsLeaves the result (only once it is shown).
Cycle Speed (CycleSpeed)functionRPG Saga|UI|CardsNext replay speed (Cards UI -> SpeedOptions).
Get Match Card (GetMatchCard)pureRPG Saga|UI|CardsMatchCard: int32URSECardData*The card of a match card index (steps refer to cards by index).
On Step (OnStep)eventRPG Saga|UI|CardsStep: FRSECardAnimStep (ref)Every replay step as it starts (animate it).
Skip to Result (SkipToResult)functionRPG Saga|UI|CardsJumps to the end of the replay and shows the result.

URSECharacterAnimInstance

Module RSE. Animation logic of every character (D-046, CLAUDE.md 3.5), in C++ so Anim Blueprints stay thin: - locomotion values for the blend space (Speed, Direction, bIsMoving), measured from the movement component or, for actors moved directly (grid units, battle cue moves), from their motion; plus the inputs...

NodeKindCategoryParametersReturnsDescription
Get Battle State (GetBattleState)pureRPG Saga|AnimationERSEAnimBattleStateThe battle pose state the animation shows (idle, ready, hit, KO...).
Get Last Hit Direction (GetLastHitDirection)pureRPG Saga|AnimationERSEHitDirectionSide the last hit came from (Front before any hit).
Get Stance Overlay Alpha (GetStanceOverlayAlpha)pureRPG Saga|AnimationfloatD-185 addendum 2: the weight of the upper body stance now (0..1).
Get Stance Overlay Sequence (GetStanceOverlaySequence)pureRPG Saga|AnimationUAnimSequenceBase*D-185 addendum 2: the stance clip playing over the upper body (null when none).
Play Approach (PlayApproach)functionRPG Saga|AnimationfloatThe anim set's dash toward a target (battle cue Move, To Target). Returns seconds (0 = none: locomotion shows the move).
Play Reaction (PlayReaction)functionRPG Saga|AnimationReaction: ERSEAnimReactionfloatPlays a one-shot reaction over the current state (not while Down), as if from the front. Returns seconds it lasts (0 = none).
Play Reaction From (PlayReactionFrom)functionRPG Saga|AnimationReaction: ERSEAnimReaction
FromLocation: FVector (ref)
bHeavy: bool = false
floatPlays a one-shot reaction to a hit coming from a world location: the anim set's animation for that side (and HitHeavy for a heavy hit from the front). A knock-out soon after falls the same way. Returns seconds (0 = none).
Play Weapon Recoil (PlayWeaponRecoil)functionRPG Saga|AnimationHoldType: ERSEWeaponHoldType = Auto
Scale: float = 1.000000
floatD-185 addendum 2: kicks the procedural recoil (the spine and the weapon arm pitch, then recover): guns without a fire clip. The held weapon's kick (its hold profile, else the Weapon Hold settings' Recoil Defaults); HoldType picks the settings' kick when nothing is held. Needs the recoil nodes of the Anim Blueprint (Add Weapon Layers). Returns seconds it lasts (0 = off).
Set Battle State (SetBattleState)functionRPG Saga|AnimationNewState: ERSEAnimBattleStateEnters a battle state: its animation loops (Down and a non-looping Victory hold their last pose).
Set Variant Seed (SetVariantSeed)functionRPG Saga|AnimationSeed: int32Seed of the random animation variants (RSECharacterAnim::MakeSeed: battle seed + unit id). Resets the play counts, so the same battle events pick the same variants.

URSEClockHUDSubsystem

Module RSE. Shows the HUD clock while exploring in levels that have a Time of Day actor (D-101).

NodeKindCategoryParametersReturnsDescription
Set Clock Hidden (SetClockHidden)functionRPG Saga|TimebHidden: boolHides the clock (a cinematic, a screenshot) until shown again.

URSECodeLockViewModel

Module RSE. A code lock (D-039): digit, symbol or clock-hand wheels.

NodeKindCategoryParametersReturnsDescription
Leave (Leave)functionRPG Saga|UI|CodeLockLeave
Select Wheel (SelectWheel)functionRPG Saga|UI|CodeLockWheel: int32Select Wheel
Step Selected Wheel (StepSelectedWheel)functionRPG Saga|UI|CodeLockDirection: int32Moves the wheel selection (-1 left, +1 right, wrapping).
Submit (Submit)functionRPG Saga|UI|CodeLockEnters the code (D-138: the Submit Code command, checked on the authority): opens (and closes the screen), shows the wrong text, or locks out, when the outcome arrives.
Turn Wheel (TurnWheel)functionRPG Saga|UI|CodeLockDelta: int32Turns the selected wheel by Delta positions.
Turn Wheel At (TurnWheelAt)functionRPG Saga|UI|CodeLockWheel: int32
Delta: int32
Selects Wheel and turns it (the arrows above / below each wheel).

URSECombatRoleLibrary

Module RSE. Combat roles of placed objects (D-093): the role of a component, an actor or an asset, the cover information of a hit (for line of sight, cover and movement queries such as Free Tactics' cover query), and whether a place is inside a Combat Area.

NodeKindCategoryParametersReturnsDescription
Can Place At (CanPlaceAt)pure, staticRPG Saga|Combat RolesWorldContext: UObject*
Asset: UObject*
Location: FVector
boolWhether placement tools may put Asset (a mesh, Blueprint or class) at Location: false when its role keeps it out of Combat Areas and Location is inside one.
Can Place in Combat Area (CanPlaceInCombatArea)pure, staticRPG Saga|Combat RolesAsset: UObject*boolWhether Asset (a mesh, Blueprint or class) may be placed inside Combat Areas (false when its role keeps it out).
Get Actor Role (GetActorRole)pure, staticRPG Saga|Combat RolesActor: AActor*FRSECombatRoleResolutionThe role of a placed actor (its Combat Role component or tag, else its root mesh's or class's role).
Get Asset Role (GetAssetRole)pure, staticRPG Saga|Combat RolesAsset: UObject*FRSECombatRoleResolutionThe role stored for an asset: a static mesh, a Blueprint or an actor class (parents' roles are inherited).
Get Component Role (GetComponentRole)pure, staticRPG Saga|Combat RolesComponent: UPrimitiveComponent*FRSECombatRoleResolutionThe role of a placed component (all instances of an instanced mesh share it).
Get Cover Info (GetCoverInfo)pure, staticRPG Saga|Combat RolesComponent: UPrimitiveComponent*
InstanceIndex: int32 = -1
FRSECombatRoleCoverCover and blocking information of a placed component (a line trace's Hit Component and Item): the role's flags and the blocking volume in world space (the mesh's simple collision bounds, per instance for instanced meshes).
Is in Combat Area (IsInCombatArea)pure, staticRPG Saga|Combat RolesWorldContext: UObject*
Location: FVector
boolWhether a world position lies inside an enabled Combat Area of the level.

URSECommandHandler

Module RSECore. Validates and applies one command type (D-133).

NodeKindCategoryParametersReturnsDescription
Apply (Apply)overrideRPG Saga|CommandsContext: FRSECommandContext (ref)
Command: FInstancedStruct (ref)
Changes the state (only after Validate passed). Fire the system's own events as usual.
Get Command Type (GetCommandType)overrideRPG Saga|CommandsUScriptStruct*The command struct this handler applies (derived from RSE Command). Default: Command Type.
Validate (Validate)overrideRPG Saga|CommandsContext: FRSECommandContext (ref)
Command: FInstancedStruct (ref)
OutReason: FText (out)
boolWhether the command may run now (the sender, the state, the arguments). Must not change state. Return false with a Reason the player can read. Default: true.

URSECommandSubsystem

Module RSECore. The command bus (D-124 §3.3, D-133): the one path by which player actions change game state, in every mode.

NodeKindCategoryParametersReturnsDescription
Can Submit (CanSubmit)pureRPG Saga|CommandsCommand: FInstancedStruct (ref)FRSECommandResultWhether a command would be accepted now (handler found, permission, Validate), without applying it. On a guest: local check only.
Get Current Instigator (GetCurrentInstigator)pureRPG Saga|CommandsFRSEPlayerIdSender of the command being applied right now, else this machine's player.
Get Permission (GetPermission)pureRPG Saga|CommandsCommandType: UScriptStruct*ERSECommandPermissionWho may send CommandType now: the project's permission rule, else its handler's permission (AnyPlayer without a handler).
Has Handler (HasHandler)pureRPG Saga|CommandsCommandType: UScriptStruct*boolA handler is registered for CommandType or one of its base structs.
Is Allowed For (IsAllowedFor)pureRPG Saga|CommandsCommandType: UScriptStruct*
Player: FRSEPlayerId
boolWhether Player may send CommandType by permission alone (no state check): the UI greys out what a guest may not do. The game itself (None) and the host always may.
Is Applying Command (IsApplyingCommand)pureRPG Saga|CommandsboolA command is being applied right now (handlers, effects).
On Command Result (OnCommandResult)eventRPG Saga|CommandsResult: FRSECommandResult (ref)A command sent from this machine or applied on it has a result (Applied, Rejected...).
Register Handler Class (RegisterHandlerClass)functionRPG Saga|CommandsHandlerClass: TSubclassOf<URSECommandHandler>URSECommandHandler*Creates a handler of HandlerClass and registers it. Returns the handler, or null.
Register Handler Object (RegisterHandlerObject)functionRPG Saga|CommandsHandler: URSECommandHandler*Adds a handler object for its command type; one already registered for that type is replaced (with a warning).
Set Command Outcome (SetCommandOutcome)pureRPG Saga|CommandsOutcome: FInstancedStruct (ref)Attaches what the command being validated or applied did, in its system's terms (any USTRUCT): it is returned in the command's result (FRSECommandResult::Outcome) and sent back to a guest. Call it from a handler's Validate or Apply; the last call wins. Outside a handler it does nothing.
Submit Command (Submit)functionRPG Saga|CommandsCommand: FInstancedStruct (ref)FRSECommandResultSends a command as this machine's player. Command: any struct derived from RSE Command (Make Instanced Struct).
Submit Command As (SubmitAs)functionRPG Saga|CommandsCommand: FInstancedStruct (ref)
Instigator: FRSEPlayerId
FRSECommandResultSends a command for another player or for the game itself (FRSEPlayerId::None): AI, scripted sequences, tools, tests. Only where this machine has authority; a guest gets Not Allowed.
Unregister Handler (UnregisterHandler)functionRPG Saga|CommandsCommandType: UScriptStruct*Removes the handler of CommandType (exactly that type).

URSECommonUISubsystem

Module RSECommonUI. One local player's CommonUI host layer (D-176, docs/product/common-ui.md).

NodeKindCategoryParametersReturnsDescription
Find Screen Host (FindScreenHost)pureRPG Saga|UI|Common UIScreen: URSEScreenWidget*URSECommonScreenHost*The host of Screen while it is on a layer, else null.
Get Layer Stack (GetLayerStack)functionRPG Saga|UI|Common UILayer: ERSECommonUILayerUCommonActivatableWidgetContainerBase*The stack of Layer (made with the layout when needed). Null without a local player controller or Slate.
Get Layout (GetLayout)pureRPG Saga|UI|Common UIURSECommonUILayout*The layout made for this player (null when the project registered its own stacks or none was needed yet).
Get RSE Common UI (GetFor)pure, staticRPG Saga|UI|Common UIPlayer: UObject*URSECommonUISubsystem*The CommonUI host layer of the local player behind Player (a controller, pawn, widget or local player), or null.
Pop Screen (PopScreen)functionRPG Saga|UI|Common UIScreen: URSEScreenWidget*Pops Screen's host from its stack (the screen itself stays alive; its owner removes it).
Push Screen (PushScreen)functionRPG Saga|UI|Common UIScreen: URSEScreenWidget*
Layer: ERSECommonUILayer
URSECommonScreenHost*Pushes an RPG Saga screen onto Layer in a screen host. Returns the host (null when the layer has no stack).
Push Widget to Layer (PushWidgetToLayer)functionRPG Saga|UI|Common UILayer: ERSECommonUILayer
WidgetClass: TSubclassOf<UCommonActivatableWidget>
UCommonActivatableWidget*Pushes one of the project's activatable widgets onto Layer (above our screens there).
Register Layer Stack (RegisterLayerStack)functionRPG Saga|UI|Common UILayer: ERSECommonUILayer
Stack: UCommonActivatableWidgetContainerBase*
Uses Stack for Layer (a stack of the project's own primary layout). While any stack is registered no layout is made; layers without a stack then fall back to the nearest registered one below (else above).

URSECompanionOrderPolicy

Module RSECore. Who may order which companion in co-op (D-142).

NodeKindCategoryParametersReturnsDescription
Can Order (CanOrder)overrideRPG Saga|Co-opIssuer: FRSEPlayerId
Member: FPrimaryAssetId
MemberController: FRSEPlayerId
bMultiplayer: bool
boolWhether Issuer may order Member (invalid = "the best member", chosen later among the free ones), which MemberController drives now (invalid = the companion AI). bMultiplayer: several players share the world.

URSECompassView

Module RSE. The compass bar (D-092): cardinal points and ticks turning with the camera, markers at their bearing with the distance in meters and an up / down arrow, faded by distance.

NodeKindCategoryParametersReturnsDescription
Show View Model (ShowViewModel)functionRPG Saga|MapViewModel: URSECompassViewModel*Shows a compass view-model's places.

URSECondition_Custom

Module RSECore, display name Custom (Blueprint). A condition written in Blueprint: create a Blueprint class from it, override Is Condition Met and read the game through the "Context" nodes (RPG Saga\|Narrative\|Context) or any other node.

NodeKindCategoryParametersReturnsDescription
Is Condition Met (IsConditionMet)overrideRPG Saga|ConditionsContext: FRSEConditionContext (ref)boolWhether the condition holds now.

URSECoopEncounterPolicy

Module RSECore. Turns an encounter request into the battle to fight now (D-142).

NodeKindCategoryParametersReturnsDescription
Resolve (Resolve)overrideRPG Saga|Co-opEncounter: URSEEncounterData*
SessionPlayers: int32
FRSECoopEncounterResolutionThe battle Encounter becomes with SessionPlayers players in the session (0 or 1 = single player).

URSECoopNoticeSubsystem

Module RSE. One path for the co-op notices (D-142, docs/design/networking.md §9): any system calls Notify (one player) or NotifyAll; the presentation router delivers it to the player's machine (RSENet for a remote one), where it shows through the HUD's notification (the quest HUD's notice) and On Notice (for a...

NodeKindCategoryParametersReturnsDescription
Notify (Notify)functionRPG Saga|Co-opPlayer: FRSEPlayerId
Title: FText (ref)
Detail: FText (ref)
Kind: ERSECoopNoticeKind = Info
boolShows a notice to Player (their machine). Returns whether it was shown or sent.
Notify All (NotifyAll)functionRPG Saga|Co-opTitle: FText (ref)
Detail: FText (ref)
Kind: ERSECoopNoticeKind = Info
int32Shows a notice to every player (the authority's players; elsewhere the local ones). Returns players reached.
On Notice (OnNotice)eventRPG Saga|Co-opPlayer: APlayerController*
Notice: FRSEPresentation_Notice (ref)
Every notice shown on this machine (after the repeat filter).

URSECoverProvider

Module RSECore, display name Cover Provider. The pluggable answer to "what cover does this blocker give?" for Free Tactics line of sight and cover (D-091).

NodeKindCategoryParametersReturnsDescription
Get Blocker Cover (GetBlockerCover)overrideRPG Saga|Free TacticsBlocker: FRSENavBlocker (ref)ERSECoverLevelCover the blocker gives. Full blocks sight and projectiles; Partial protects a target standing close behind it; None lets everything through (never return Auto).

URSEDetectionMeterComponent

Module RSE. The detection meter over a visible enemy (D-097): a screen-space bar that fills while the enemy sees or hears the party and turns into "!" when it notices it.

NodeKindCategoryParametersReturnsDescription
Get Shown Value (GetShownValue)pureRPG Saga|StealthfloatThe value shown now.
Set Detection (SetDetection)functionRPG Saga|StealthValue: float
bAlerted: bool
Shows Value (0..1; hidden at or below Stealth -> Show Meter Above unless bAlerted).
Set Prompt (SetPrompt)functionRPG Saga|StealthPrompt: FText (ref)D-151: a prompt under the meter (shown even while the meter is empty); empty text = none.

URSEDialogControlPolicy

Module RSECore. Who controls a dialog in co-op (D-094, D-138): "the one who started it speaks, the others watch; story choices by the host, the speaker or a vote".

NodeKindCategoryParametersReturnsDescription
Can Control Flow (CanControlFlow)overrideRPG Saga|Dialog|Co-opPlayer: FRSEPlayerId
Speaker: FRSEPlayerId
boolWhether Player may advance lines, skip and finish waits of Speaker's dialog. Default: the speaker, and the host by setting.
Get Choice Decider (GetChoiceDecider)overrideRPG Saga|Dialog|Co-opDialog: URSEDialogData*
NodeId: FName
NodeDecider: ERSEDialogChoiceDecider
ERSEDialogChoiceDeciderWho picks the option of a choice. NodeDecider is the choice node's own setting (Default = the rules decide). Default: the node's setting, else Story Choice Decider for dialog assets and System Choice Decider for prompts made at run time (puzzles, travel questions).
Get Voters (GetVoters)overrideRPG Saga|Dialog|Co-opWorldContext: UObject*
OutVoters: TArray<FRSEPlayerId> (out)
Who votes on a vote choice. Default: the session's players (URSEAuthoritySubsystem::GetSessionPlayers).
Resolve Vote (ResolveVote)overrideRPG Saga|Dialog|Co-opVotes: TArray<FRSEDialogVote> (ref)
Options: TArray<FName> (ref)
Speaker: FRSEPlayerId
FNameThe winning option of a vote. Options = the choice's available options in display order. Default: the majority; a tie goes to the speaker's vote, then the host's, then the first of the tied options. None = no votes (nothing is picked).

URSEDialogLayout

Module RSE. How the dialog screen is arranged (P61).

NodeKindCategoryParametersReturnsDescription
Get Box Width Fraction (GetBoxWidthFraction)pure, staticRPG Saga|UI LayoutbCinematic: boolfloatThe width share of the classic box (Dialog UI -> Box Width Fraction, or the cinematic one).
Get Column Width (GetColumnWidth)overrideRPG Saga|UI LayoutfloatThe column's fixed width the screen builds (0 = none: the layout's anchors give the width).
Update Anchor (UpdateAnchor)overrideRPG Saga|UI LayoutContext: URSEScreenLayoutContext*
ScreenPosition: FVector2D
bOnScreen: bool
World-anchored layouts: moves the column to the speaker. ScreenPosition is over the speaker's head (layout units); bOnScreen false = no speaker actor or off screen (show the line somewhere readable). Called every frame while a line shows, so it must only move slots (no new widgets).

URSEDialogSubsystem

Module RSECore. Owns the dialogs of the game session (dialog-proposal.md 5.2): - one blocking dialog at a time (IsDialogActive: read by input, saving and random encounters) plus barks; - starts dialogs requested by the StartDialog effect (URSENarrativeSubsystem::GetEvents().OnDialogRequested); - defers requests mad...

NodeKindCategoryParametersReturnsDescription
Can Player Choose (CanPlayerChoose)pureRPG Saga|DialogPlayer: FRSEPlayerIdboolWhether Player may answer the active dialog's choice now (always true for a vote's voters).
Can Player Control Flow (CanPlayerControlFlow)pureRPG Saga|DialogPlayer: FRSEPlayerIdboolWhether Player may advance, skip or finish waits of the active dialog.
Get Active Choice Decider (GetActiveChoiceDecider)pureRPG Saga|DialogERSEDialogChoiceDeciderWho picks the option of the choice on screen (Speaker, Host or Vote; Default resolved by the policy).
Get Active Run Id (GetActiveRunId)pureRPG Saga|Dialogint32The running blocking dialog's run number (0 = none). Commands name it, so they never touch another dialog.
Get Active Speaker (GetActiveSpeaker)pureRPG Saga|DialogFRSEPlayerIdThe player who started the running blocking dialog: they speak, the others watch.
Get Deferred Request Count (GetDeferredRequestCount)pureRPG Saga|Dialogint32Number of dialog requests (battles, scenes, screens) waiting for the running dialog to end.
Get Vote Seconds Left (GetVoteSecondsLeft)pureRPG Saga|DialogfloatSeconds the running vote has left (0 = no vote, or no timeout).
Get Votes (GetVotes)pureRPG Saga|DialogTArray<FRSEDialogVote>Votes cast on the choice on screen (vote choices only).
Is Dialog Active (IsDialogActive)pureRPG Saga|DialogboolA blocking dialog is running.
Is Mirroring Dialog (IsMirroringDialog)pureRPG Saga|DialogboolThe active dialog is the authority's, shown here (a guest).
On Bark Started (BP_OnBarkStarted)eventRPG Saga|DialogDialog: URSEDialogData*A bark (ambient line over an NPC) started.
On Dialog Ended (BP_OnDialogEnded)eventRPG Saga|DialogOutcome: FGameplayTag
bCompleted: bool
A blocking dialog ended: its outcome tag and whether it reached its end (false when aborted).
On Dialog Started (BP_OnDialogStarted)eventRPG Saga|DialogDialog: URSEDialogData*A blocking dialog started (Blueprint).
On Dialog Votes Changed (BP_OnVotesChanged)eventRPG Saga|DialogNodeId: FName
Votes: TArray<FRSEDialogVote> (ref)
Set Control Policy (SetControlPolicy)functionRPG Saga|DialogPolicy: URSEDialogControlPolicy*Replaces the policy at run time (a session rule, a mode); null = back to the settings' class.

URSEDialogViewModel

Module RSE. The dialog (dialog-proposal.md 6.2-6.5): blocking dialog box with speaker, portraits, typewriter text, choices, backlog, auto-advance, fast-forward and skip; plus barks and emote balloons.

NodeKindCategoryParametersReturnsDescription
Advance (Advance)functionRPG Saga|UI|DialogLine: reveals the rest, or goes to the next line. Title card: skips it.
Cancel Choice (CancelChoice)functionRPG Saga|UI|DialogPicks the choice's cancel option (when it has one).
Choose Option (ChooseOption)functionRPG Saga|UI|DialogIndex: int32Highlights an option and confirms it (a click).
Confirm Choice (ConfirmChoice)functionRPG Saga|UI|DialogConfirms the highlighted option (locked ones do nothing).
Finish Title Card (FinishTitleCard)functionRPG Saga|UI|DialogFinish Title Card
Get Choices Text (GetChoicesText)pureRPG Saga|UI|DialogFTextThe choices as one text, one per line, the selected one marked (simple dialog screens).
Handle Click (HandleClick)functionRPG Saga|UI|DialogAdvance on a mouse click (Dialog UI -> bClickToAdvance).
Handle Dialog Key (HandleDialogKey)functionRPG Saga|UI|DialogKey: FKey
bPressed: bool
bRepeat: bool
boolEvery dialog key of the Dialog UI settings (advance, up / down, cancel, backlog, auto, fast-forward, skip), as the built-in box reads them. bPressed false = key up (fast-forward release). Returns true when the key is a dialog key.
Move Choice (MoveChoice)functionRPG Saga|UI|DialogDelta: int32Move Choice
On Screen Fx (OnScreenFx)eventRPG Saga|UI|DialogStyle: FRSEDialogScreenFxStyle (ref)
Seconds: float
A cue asked for a screen effect (fade, flash, shake).
Select Choice (SelectChoice)functionRPG Saga|UI|DialogIndex: int32Select Choice
Set Fast Forward (SetFastForward)functionRPG Saga|UI|DialogbHeld: boolFast-forward held (read lines type at once and advance quickly).
Skip Scene (SkipScene)functionRPG Saga|UI|DialogSkips the scene (skippable dialogs; a Level Sequence scene is skipped as a whole).
Toggle Auto Advance (ToggleAutoAdvance)functionRPG Saga|UI|DialogToggle Auto Advance
Toggle Backlog (ToggleBacklog)functionRPG Saga|UI|DialogToggle Backlog

URSEDifficultySubsystem

Module RSECore. Adaptive difficulty controller (CLAUDE.md 2.8, D-007): one per game session, one value per battle mode.

NodeKindCategoryParametersReturnsDescription
Get Difficulty State (GetStateBP)pureRPG Saga|DifficultyFRSEDifficultyStateThe whole adaptive state (per mode: intelligence, recent battles), read-only.
Get Intelligence For Encounter (GetIntelligenceForEncounterBP)pureRPG Saga|DifficultyEncounter: URSEEncounterData*floatEnemy intelligence a battle of Encounter would use now (its mode, its bounds, the override).
Get Mode Intelligence (GetModeIntelligence)pureRPG Saga|DifficultyMode: FGameplayTag (ref)floatCurrent adaptive enemy intelligence (0-1) of a battle mode, before encounter bounds and overrides.
Set Mode Intelligence (SetModeIntelligence)functionRPG Saga|DifficultyMode: FGameplayTag
Intelligence: float
Sets the adaptive enemy intelligence (0-1) of a battle mode, e.g. a chapter that starts harder. The adaptation continues from there (the Difficulty settings' limits still apply to battles). Saved.

URSEDoorComponent

Module RSE, display name RSE Door. Door behavior for any actor (D-165, docs/product/components.md): add it with an RSE Interactable component to your own door actor; Interact opens and closes it (a locked one says Interiors -> Locked Door Text), the prompt follows ("Open" / "Close"), and the swinging part (Swing Component: your leaf...

NodeKindCategoryParametersReturnsDescription
Get Prompt Text (GetPromptText)pureRPG Saga|InteriorsFTextThe prompt now: Open Text / Close Text, else Interiors -> Open / Close Door Text.
Is Locked (IsLocked)pureRPG Saga|InteriorsboolIs Locked
Is Open (IsOpen)pureRPG Saga|InteriorsboolIs Open
On Door Changed (OnDoorChanged)eventRPG Saga|InteriorsDoor: URSEDoorComponent*
bOpen: bool
Raised when the door opens or closes.
Set Locked (SetLocked)functionRPG Saga|InteriorsbInLocked: boolLocks or unlocks it (a locked door does not open).
Set Open (SetOpen)functionRPG Saga|InteriorsbInOpen: bool
bAnimate: bool = true
Opens or closes the door (swinging, or at once).
Use Door (UseDoor)functionRPG Saga|InteriorsWhat Interact does: says the locked line, or opens / closes it.

URSEDoorDetectorLibrary

Module RSE. Door detection for Blueprint and Python (D-158).

NodeKindCategoryParametersReturnsDescription
Find Building Door (FindBuildingDoor)function, staticRPG Saga|BuildingsBuilding: AActor*FRSEDoorFindingFinds the door of a building whose door is modelled into its mesh (sockets, then its geometry).

URSEEffect_Custom

Module RSECore, display name Custom (Blueprint). A custom effect written in Blueprint (D-052): subclass it, override On Apply and use the battle's Blueprint API (resources, attributes, statuses through other effects).

NodeKindCategoryParametersReturnsDescription
On Apply (OnApply)overrideRPG Saga|AbilitiesBattle: URSEBattle*
SourceId: int32
TargetId: int32
TargetTile: FRSEGridCoord
PowerMultiplier: float
Applies the effect. Change the battle through its nodes (Deal Damage, Heal Unit, Change Resource, Apply Status, Shift Turn...) and draw random numbers with Roll Int / Roll Percent so replays and the simulator stay deterministic.
Preview Damage (PreviewDamage)overrideRPG Saga|AbilitiesBattle: URSEBattle*
SourceId: int32
TargetId: int32
PowerMultiplier: float
floatExpected HP damage on the target (negative = healing), without rolling and without changing the battle: the damage forecast and the AI read it. Default 0 (the AI then sees no value in the effect). The source may be hypothetical.

URSEEncounterSubsystem

Module RSE. Random encounters v2 in the world (D-063, docs/design/random-encounters.md): - counts world steps while the explorer walks (rate effect durations, step respawns of visible groups; saved in the World section); - the encounter rate multiplier: party rate effects x equipment traits x the player's frequ...

NodeKindCategoryParametersReturnsDescription
Add Rate Effect (AddRateEffect)functionRPG Saga|EncountersEffect: FRSEEncounterRateEffect (ref)boolAdds a rate effect (the Encounters settings' stacking rules apply). Returns true if the state changed.
Compose Encounter (ComposeEncounter)functionRPG Saga|EncountersPool: URSEEncounterPoolData*
Seed: int32 = 0
URSEEncounterData*A new group from Pool for the current party and progression zone (the pool's zone, else the current area's). Seed 0 = a random one. The encounter is transient and kept alive while it may be fought. Null when the pool has no usable entry.
Get Active Rate Effects (GetActiveRateEffects)pureRPG Saga|EncountersTArray<FRSEEncounterRateEffect>The party's active rate effects (steps and seconds left).
Get Detection Scale (GetDetectionScale)pureRPG Saga|EncountersfloatVisible enemies' detection radius scale from the rate (Encounters settings: Rate Scales Enemy Detection).
Get Encounter Rate Multiplier (GetEncounterRateMultiplier)pureRPG Saga|EncountersfloatMultiplier of the random battle chance now: rate effects x equipment traits x the frequency option x the time and weather rules (Encounter Rate, D-101 / D-104), capped by the Encounters settings' Max Rate Multiplier (0 = none).
Get Frequency Index (GetFrequencyIndex)pureRPG Saga|Encountersint32The player's battle frequency choice (index into GetFrequencyNames).
Get Frequency Names (GetFrequencyNames)pureRPG Saga|EncountersTArray<FText>Names of the player's battle frequency choices (Encounters settings), in menu order.
Get Party Level (GetPartyLevel)pureRPG Saga|Encountersint32Party level used for generated groups (the ATB formation, Progression "Party Level Source").
Get Rate Effects Multiplier (GetRateEffectsMultiplier)pureRPG Saga|EncountersfloatOnly the active rate effects (items, abilities, story effects), without traits and the option.
Get World Steps (GetWorldSteps)pureRPG Saga|Encountersint64World steps walked over the whole game (saved).
Is Contact Allowed (IsContactAllowed)pureRPG Saga|EncountersboolVisible enemies may start a battle now (no battle running, the post-battle grace is over, exploration has control).
On Encounter Contact (BP_OnEncounterContact)eventRPG Saga|EncountersSpawner: ARSEEncounterSpawner*
Encounter: URSEEncounterData*
Initiative: ERSEBattleInitiative
On Encounter Rate Changed (BP_OnRateChanged)eventRPG Saga|EncountersMultiplier: float--- Events ---
On Enemy Alerted (BP_OnEnemyAlerted)eventRPG Saga|EncountersSpawner: ARSEEncounterSpawner*
Enemy: ARSERoamingEnemy*
bAlerted: bool
Remove Rate Effect (RemoveRateEffect)functionRPG Saga|EncountersSourceId: FNameboolEnds the rate effect of SourceId (None = every effect). Returns true if one ended.
Set Frequency Index (SetFrequencyIndex)functionRPG Saga|EncountersIndex: int32Stores the player's battle frequency choice (GameUserSettings.ini, with the other options).
Start Classic Encounter (StartClassicEncounter)functionRPG Saga|EncountersEncounter: URSEEncounterData*
Initiative: ERSEBattleInitiative
Director: ARSEATBBattleDirector* = None
Source: AActor* = None
boolStarts a classic battle (ATB / turn-based) with Encounter on Director (null = the map's classic battle director), with an initiative. Source receives the exploration's encounter-ended callback. Returns true if it started.

URSEEquipmentSlotSet

Module RSECore. A preset of character equipment slots (D-126): the classic JRPG set (weapon, off-hand, head, body, two accessories) or the ARPG set (helmet, body armor, hands, legs, feet, main hand, off-hand, two accessories).

NodeKindCategoryParametersReturnsDescription
Matches Project Settings (MatchesProjectSettings)pureRPG Saga|ItemsboolThe preset is what Project Settings -> Items uses now (same slot ids, types and off-hand).

URSEExplorationCameraArm

Module RSE. The exploration camera's arm (D-113).

NodeKindCategoryParametersReturnsDescription
Add Tilt Input (AddTiltInput)functionRPG Saga|Exploration|CameraLookUpDegrees: floatD-129: tilts the view (degrees; positive = up, toward the horizon), within the tactical camera's tilt limits. The player's Invert Camera Tilt option applies. Ignored inside interiors (the profile frames the view) and with tilting off.
Get Current Distance (GetCurrentDistance)pureRPG Saga|Exploration|CamerafloatThe zoom now (cm from the party) and where it glides.
Get Current Pitch (GetCurrentPitch)pureRPG Saga|Exploration|CamerafloatThe view's angle below the horizon now (degrees; the interior profile's inside a volume).
Get Current Tilt (GetCurrentTilt)pureRPG Saga|Exploration|CamerafloatD-129: the tilt now (it glides toward the target).
Get Target Distance (GetTargetDistance)pureRPG Saga|Exploration|CamerafloatGet Target Distance
Get Target Tilt (GetTargetTilt)pureRPG Saga|Exploration|CamerafloatD-129: the tilt the view aims at (degrees added to the zoom's angle; positive = steeper).
Is Tactical (IsTactical)pureRPG Saga|Exploration|CameraboolIs Tactical
Match View (MatchView)functionRPG Saga|Exploration|CameraYaw: float
Distance: float
Takes over a view (a battle camera handing back): the yaw goes to the controller, the zoom to Distance (clamped), the pan is cleared and the follow lag forgotten, so the view does not glide from where it was before.
Reset Tilt (ResetTilt)functionRPG Saga|Exploration|CamerabInstant: bool = falseD-129: puts the tilt back to the zoom's angle (bInstant cuts instead of gliding).
Set Target Distance (SetTargetDistance)functionRPG Saga|Exploration|CameraDistance: float
bInstant: bool = false
Zooms to Distance (clamped); bInstant cuts.
Set Target Tilt (SetTargetTilt)functionRPG Saga|Exploration|CameraTilt: float
bInstant: bool = false
D-129: sets the tilt (degrees, clamped; positive = steeper); bInstant cuts.

URSEExplorationCameraSubsystem

Module RSE. The exploration camera's shared state (D-113): the style in use (project settings, the level's RSE Exploration Camera actor, or a runtime choice such as an options menu), the tactical camera's values, and the zoom the party leaders share (switching the leader or coming back from a battle keeps the v...

NodeKindCategoryParametersReturnsDescription
Clear Camera Style (ClearCameraStyle)functionRPG Saga|Exploration|CameraBack to the level's or the project's style.
Get Camera Style (GetCameraStyle)pureRPG Saga|Exploration|CameraERSEExplorationCameraStyleThe style the exploration camera uses here: a runtime choice, else the level's, else Project Settings -> Exploration.
Get Tilt (GetTilt)pureRPG Saga|Exploration|CamerafloatD-129: the tilt the party's leaders share (degrees added to the zoom's angle; positive = steeper), clamped.
Get Zoom Distance (GetZoomDistance)pureRPG Saga|Exploration|CamerafloatThe zoom the tactical camera aims at (cm from the party).
Set Camera Style (SetCameraStyle)functionRPG Saga|Exploration|CameraStyle: ERSEExplorationCameraStyleSwitches the exploration camera's style now (an options menu, a story segment); every explorer re-reads it.
Set Zoom Distance (SetZoomDistance)functionRPG Saga|Exploration|CameraDistance: float
bInstant: bool = false
Zooms the tactical camera (cm, clamped to its limits); bInstant cuts instead of gliding.

URSEExplorationSubsystem

Module RSE. Hands control from third-person exploration to a battle and back (D-026).

NodeKindCategoryParametersReturnsDescription
Get Battle Mode For (GetBattleModeFor)pureRPG Saga|Battle|Mode OverrideEncounter: URSEEncounterData*FGameplayTagD-182: the mode Encounter would be fought in now (its own, or the session's Battle Mode Override when the encounter allows it).
Get Current Battle (GetCurrentBattleBP)pureRPG Saga|BattleURSEBattle*The battle of the running encounter, or none.
Get Current Encounter (GetCurrentEncounterBP)pureRPG Saga|BattleURSEEncounterData*The encounter being fought, or none.
Get Encounter Kind (GetEncounterKind)pureRPG Saga|BattleERSEExplorationBattleKindThe system of the running encounter (None outside battle).
Is Exploration Active (IsExplorationActive)pureRPG Saga|ExplorationboolTrue while the explorer has control (no battle, party menu closed).
Is in Encounter (IsInEncounter)pureRPG Saga|BattleboolA battle started from exploration is running (until control is back in exploration).
On Encounter Ended (BP_OnEncounterEnded)eventRPG Saga|BattleSource: AActor*
Kind: ERSEExplorationBattleKind
Outcome: ERSEBattleOutcome
Control is back in exploration after a battle (Blueprint).
On Encounter Started (BP_OnEncounterStarted)eventRPG Saga|BattleSource: AActor*
Kind: ERSEExplorationBattleKind
A battle started from exploration (Blueprint).
Start ATBEncounter (StartATBEncounter)functionRPG Saga|BattleDirector: ARSEATBBattleDirector*
Source: AActor* = None
ReturnPoint: AActor* = None
EncounterOverride: URSEEncounterData* = None
boolStarts a classic encounter (ATB or turn-based) on the director's stage; EncounterOverride replaces the director's encounter for this battle.
Start Encounter (StartEncounter)functionRPG Saga|BattleEncounter: URSEEncounterData*
Source: AActor* = None
ReturnPoint: AActor* = None
boolStarts a battle from an encounter asset (D-052): Tactics encounters on the map's Tactics director that has this encounter; classic ones (ATB, turn-based) on the map's ATB director (one with this encounter first, else any). The Start Battle story effect comes here too. Returns false when no director fits or an encounter is running.
Start Tactics Encounter (StartTacticsEncounter)functionRPG Saga|BattleDirector: ARSETacticsBattleDirector*
Source: AActor* = None
ReturnPoint: AActor* = None
boolStarts a Tactics encounter on the director's zone. ReturnPoint (optional) is where the explorer stands afterwards.

URSEExploreRPGSubsystem

Module RSE. The exploration RPG actions in the world (D-109, docs/design/exploration.md "Explorare RPG"): passive perception of traps by the visible party, "Search here", traps going off on the party and in Free Tactics battles, the lockpick screen, stealing from NPCs, distractions (aim, throw, the enemies come...

NodeKindCategoryParametersReturnsDescription
Begin Aim (BeginAim)functionRPG Saga|Exploration RPGboolStarts aiming (shows the landing marker).
Check Perception (CheckPerception)functionRPG Saga|Exploration RPGint32Runs the passive perception check now (it also runs on a timer). Returns traps spotted.
End Aim (EndAim)functionRPG Saga|Exploration RPGbThrow: boolboolStops aiming; bThrow throws at the aim point.
Get Aim Point (GetAimPoint)pureRPG Saga|Exploration RPGFVectorWhere a throw would land now (valid while aiming).
Get Lockpick (GetLockpick)pureRPG Saga|Exploration RPGURSELockpickViewModel*The open lockpick screen's view model (null when closed).
Get Member Score (GetMemberScore)pureRPG Saga|Exploration RPGMember: URSECharacterData*
Skill: ERSEExploreSkill
floatMember's score in Skill now.
Is Aiming (IsAiming)pureRPG Saga|Exploration RPGboolIs Aiming
Make Noise (MakeNoise)functionRPG Saga|Exploration RPGPoint: FVector
Radius: float
bInvestigateOnly: bool
int32A noise at Point: visible enemies within Radius come to look (bInvestigateOnly) or notice the party. Returns enemies reached.
On Distraction Landed (OnDistractionLanded)eventRPG Saga|Exploration RPGLocation: FVector
On Steal Attempted (OnStealAttempted)eventRPG Saga|Exploration RPGNPC: ARSENPC*
Result: ERSEStealResult
Thief: URSECharacterData*
Refresh Fallen (RefreshFallen)functionRPG Saga|Exploration RPGApplies the fallen rules to the visible party now (after a battle, a load): get up, lie down, or be carried.
Revive Member (ReviveMember)functionRPG Saga|Exploration RPGMember: URSECharacterData*boolRevives a fallen member the best way available (item, spell, help up).
Search At (SearchAt)functionRPG Saga|Exploration RPGPoint: FVector
Searcher: URSECharacterData*
int32"Search here" (D-097 command): Searcher's perception gets the search bonus around Point for a while; checks at once.
Throw At (ThrowAt)functionRPG Saga|Exploration RPGPoint: FVectorboolThrows a distraction at Point as this machine's player (D-138: the Throw Distraction command; the authority throws from their pawn): an item is used if the rules say so; the enemies near it come to look. Returns true when applied (or sent).

URSEExplorerComponent

Module RSE, display name RSE Explorer. Makes any pawn an explorer (D-165, docs/product/components.md): add it to your own character (a Blueprint character keeps its parent class) and the interaction prompt, the Interact key, encounters, stealth and the party systems treat it as the player's explorer.

NodeKindCategoryParametersReturnsDescription
Get Pawn (GetPawn)pureRPG Saga|ExplorerAPawn*The pawn this component explores with (its owner).
Interact (Interact)functionRPG Saga|ExplorerThe Interact input: runs what the pawn's prompt shows (the interaction system listens) and raises On Interact.
On Explorer State Changed (OnExplorerStateChanged)eventRPG Saga|ExplorerExplorer: URSEExplorerComponent*Party member, sneaking, in battle or fallen changed.
On Interact (OnInteract)eventRPG Saga|ExplorerPawn: APawn*The Interact input reached the pawn (Blueprint and level scripting hook).

URSEExplorerPawn

Module RSE. RSE Explorer Pawn

NodeKindCategoryParametersReturnsDescription
Get Explorer Party Member (GetExplorerPartyMember)overrideRPG Saga|ExplorerURSECharacterData*The party member this pawn is (null = the party's leader: the first of the formation).
Is Explorer Fallen (IsExplorerFallen)overrideRPG Saga|ExplorerboolFallen (D-109): lies on the ground until revived.
Is Explorer in Battle (IsExplorerInBattle)overrideRPG Saga|ExplorerboolA Free Tactics battle moves this pawn (its own movement and input wait).
Is Explorer Input Blocked (IsExplorerInputBlocked)overrideRPG Saga|ExplorerboolA menu or another modal screen of this pawn's player is open: its world actions wait (D-152).
Is Explorer Sneaking (IsExplorerSneaking)overrideRPG Saga|ExplorerboolSneaking (D-097): much harder to notice; sneak attacks and placing members need it.
Set Explorer Fallen (SetExplorerFallen)overrideRPG Saga|ExplorerbFallen: boolSet Explorer Fallen
Set Explorer in Battle (SetExplorerInBattle)overrideRPG Saga|ExplorerbInBattle: boolSet Explorer in Battle
Set Explorer Party Member (SetExplorerPartyMember)overrideRPG Saga|ExplorerMember: URSECharacterData*Set Explorer Party Member
Set Explorer Sneaking (SetExplorerSneaking)overrideRPG Saga|ExplorerbSneaking: boolSet Explorer Sneaking

URSEExplorers

Module RSE. The explorer of an actor (D-165): the actor itself when it implements IRSEExplorerPawn, else its component that does (URSEExplorerComponent).

NodeKindCategoryParametersReturnsDescription
Explorer Interact (ExplorerInteract)function, staticRPG Saga|ExplorerPawn: APawn*boolInteracts with what Pawn's prompt shows (the Interact input of a pawn that implements IRSEExplorerPawn itself; the explorer component and ARSEExplorationCharacter do it on their own). Returns true when it interacted.
Find Explorer (FindExplorer)pure, staticRPG Saga|ExplorerActor: AActor*UObject*The object that answers IRSEExplorerPawn for Actor (the actor, or its explorer component), or null.
Get Camera Arm (GetCameraArm)pure, staticRPG Saga|ExplorerActor: AActor*URSEExplorationCameraArm*The exploration camera arm of Actor (D-113), or null.
Get Explorer Party Member (GetPartyMember)pure, staticRPG Saga|ExplorerActor: AActor*URSECharacterData*The party member the explorer is (null when it is not an explorer, or is the leader without a member set).
Is Explorer (IsExplorer)pure, staticRPG Saga|ExplorerActor: AActor*boolActor is an explorer (implements the interface or carries an explorer component).
Is Explorer Fallen (IsFallen)pure, staticRPG Saga|ExplorerActor: AActor*boolIs Explorer Fallen
Is Explorer In Battle (IsInBattle)pure, staticRPG Saga|ExplorerActor: AActor*boolIs Explorer In Battle
Is Explorer Input Blocked (IsInputBlocked)pure, staticRPG Saga|ExplorerActor: AActor*boolIs Explorer Input Blocked
Is Explorer Sneaking (IsSneaking)pure, staticRPG Saga|ExplorerActor: AActor*boolIs Explorer Sneaking
Set Explorer Fallen (SetFallen)function, staticRPG Saga|ExplorerActor: AActor*
bFallen: bool
Set Explorer Fallen
Set Explorer In Battle (SetInBattle)function, staticRPG Saga|ExplorerActor: AActor*
bInBattle: bool
Set Explorer In Battle
Set Explorer Party Member (SetPartyMember)function, staticRPG Saga|ExplorerActor: AActor*
Member: URSECharacterData*
Set Explorer Party Member
Set Explorer Sneaking (SetSneaking)function, staticRPG Saga|ExplorerActor: AActor*
bSneaking: bool
Set Explorer Sneaking

URSEFallRecoverySubsystem

Module RSE. The safety net against gaps in a level's collision (D-112, Exploration settings -> Fall Recovery): on a timer it remembers where each explorer (the leader and the visible party; D-165: any character with IRSEExplorerPawn or an RSE Explorer component) last stood on solid ground, and puts back one tha...

NodeKindCategoryParametersReturnsDescription
On Character Recovered (OnCharacterRecovered)eventRPG Saga|ExplorationExplorer: ACharacter*
From: FVector
D-165: any explorer character was put back (also the ones On Explorer Recovered does not name).
On Explorer Recovered (OnExplorerRecovered)eventRPG Saga|ExplorationExplorer: ARSEExplorationCharacter*
From: FVector
An explorer was put back (From: where it was lost).
Recover Explorer (RecoverExplorer)functionRPG Saga|ExplorationExplorer: ACharacter*boolPuts an explorer back on the spot it last stood on safely. Returns false when no safe spot is known.

URSEFeatureLibrary

Module RSECore. Blueprint access to the feature toggles, so project code can adapt (hide a button when a system is off).

NodeKindCategoryParametersReturnsDescription
Is Feature Enabled (IsFeatureEnabled)pure, staticRPG Saga|FeaturesFeature: ERSEFeatureboolWhether a framework system is switched on (Project Settings -> RPG Saga Engine -> Features).

URSEFitText

Module RSE. UMG wrapper of SRSEFitText: a single line label that ends with "..." instead of being cut (D-106).

NodeKindCategoryParametersReturnsDescription
Get Text (GetText)pureRPG Saga|UIFTextThe whole text (not the shortened one on screen).
Set Color and Opacity (SetColorAndOpacity)functionRPG Saga|UIInColor: FSlateColorColor of the text (the shadow keeps its own).
Set Text (SetText)functionRPG Saga|UIInText: FText (ref)The text; it is shortened with an ellipsis only on screen, when its space is too narrow.

URSEFormulaTesterLibrary

Module RSECore. The formula tester (D-166): pick a character, class or archetype, a level and equipment, then see every attribute and derived stat computed step by step (base, formula result, add, percent, multiply, override, clamp, final), with the formula text and the problems highlighted (unknown variable, cycle...

NodeKindCategoryParametersReturnsDescription
Format Formula Test Report (FormatFormulaTestReport)pure, staticRPG Saga|Attributes|Formula TesterResult: FRSEFormulaTestResult (ref)FStringThe result as readable text, one line per stat and one per problem (logs, Python, bug reports).
Format Stat Trace (FormatStatTrace)pure, staticRPG Saga|Attributes|Formula TesterTrace: FRSEStatTrace (ref)FStringOne stat as a line: "Max HP = 120 (base 100 -> +10 -> x1.2 ...)".
Run Formula Test (RunFormulaTest)function, staticRPG Saga|Attributes|Formula TesterInput: FRSEFormulaTestInput (ref)FRSEFormulaTestResultRun Formula Test

URSEFoundationLibrary

Module RSECore. The Game Foundation API (D-095, docs/design/studio.md section 5 and section 16) for the Studio's foundation wizard and tools.

NodeKindCategoryParametersReturnsDescription
Analyze Impact (AnalyzeImpact)function, staticRPG Saga|FoundationFoundation: URSEGameFoundation*
Content: TArray<UObject*> (ref)
FRSEFoundationImpactReportEvery reference in Content (and, per settings, in framework settings) to a tag under a managed root (Stat, Resource, Element, Equip.Slot, Equip.Type, Ability.Type, Item.Category) that Foundation does not define, plus one proposed replacement per tag (the preset's suggestion, else a defined tag with the same name, else removal).
Apply Foundation (ApplyFoundation)function, staticRPG Saga|FoundationFoundation: URSEGameFoundation*
Target: FRSEFoundationApplyTarget (ref)
Options: FRSEFoundationApplyOptions (ref)
FRSEFoundationApplyReportWrites Foundation into Target: validation first (errors: nothing written), then the breaking-change check on Options.Content (breaking and not allowed: nothing written, the report holds the impact and proposed mapping).
Apply Replacement Mapping (ApplyReplacementMapping)function, staticRPG Saga|FoundationContent: TArray<UObject*> (ref)
Mapping: TArray<FRSEFoundationReplacement> (ref)
TArray<UObject*>Rewrites the tags of Mapping in Content (empty To = the reference is removed). Instanced sub-objects included. Returns the modified assets (marked dirty). Settings objects are never changed here.
Capture Current Setup (CaptureCurrentSetup)function, staticRPG Saga|FoundationFoundation: URSEGameFoundation*
Profile: URSERulesProfile*
Fills Foundation from the setup that applies under Profile (null = the global settings): registry, formulas, affinities, slots, command menu, modes, progression, economy, terms. Element, equipment kind, item and ability category lists are filled from the tags the setup uses. "Start from my current setup".
Get Foundation Presets (GetFoundationPresets)function, staticRPG Saga|FoundationTArray<URSEGameFoundation*>Foundations found in the library folders (Game Foundation settings), presets first by Sort Order.
Get Game Term (GetGameTerm)pure, staticRPG Saga|FoundationId: FName
Fallback: FText
FTextThe game's word for Id (Party, Class, Magic, Money...; HP / MP: also the attribute registry), or Fallback when the game does not define it.
Get Known Game Terms (GetKnownGameTerms)function, staticRPG Saga|FoundationTArray<FRSEGameTermInfo>Every word screens ask for (Party, Lv, EXP, HP...), with its default and current text (D-100).
Get Missing Tags (GetMissingTags)function, staticRPG Saga|FoundationFoundation: URSEGameFoundation*TArray<FName>Gameplay tags Foundation needs that the project does not have (the editor can add them before applying).
Get Tag Display Name (GetTagDisplayName)pure, staticRPG Saga|FoundationTag: FGameplayTagFTextThe player-facing name of a tag (Game Terms, else the last part of the tag).
Is Foundation Valid (IsFoundationValid)pure, staticRPG Saga|FoundationFoundation: URSEGameFoundation*boolTrue when ValidateFoundation has no errors.
Resolve Game Terms (ResolveGameTerms)pure, staticRPG Saga|FoundationText: FTextFTextText with its {Term.<Id>} arguments filled with the game's words; other arguments stay for a later Format Text.
Run Foundation Test Battle (RunFoundationTestBattle)function, staticRPG Saga|FoundationFoundation: URSEGameFoundation*TArray<FRSEFoundationTestBattle>A quick simulated battle with generated units (Game Foundation settings -> Test Battle) in every mode the foundation enables, applied to a transient sandbox: shows the setup is consistent and playable. Nothing in the project changes.
Run Starter Content Battles (RunStarterContentBattles)function, staticRPG Saga|FoundationFoundation: URSEGameFoundation*
Runs: int32
TArray<FRSEFoundationStarterBattleResult>Plays the foundation's starter content in the simulator (D-100): the starter party, at each battle's party level, against each starter encounter in its own mode, on a sandbox with the foundation applied (Game Foundation -> Starter Balance: runs, intelligence, target band). Runs = 0: the settings' value. Nothing in the project changes.
Validate Foundation (ValidateFoundation)function, staticRPG Saga|FoundationFoundation: URSEGameFoundation*TArray<FRSEFoundationIssue>Every problem of Foundation (missing required stats, formulas that do not compile, unknown tags, empty menus...).

URSEFreeTacticsBattle

Module RSECore. Headless Free Tactics battle (D-091, docs/design/free-tactics.md): the Tactics rules in free space.

NodeKindCategoryParametersReturnsDescription
Add Move Trigger (AddMoveTrigger)functionRPG Saga|Free TacticsTrigger: FRSEFreeMoveTrigger (ref)int32Adds a trap on the ground (D-109). Returns its id (the FieldId of its ZoneTriggered event).
Apply Surprise (ApplySurprise)functionRPG Saga|Free TacticsOpenerTeam: FGameplayTag
SurprisedUnitIds: TArray<int32> (ref)
A surprise round (call after StartBattle, before the first turn): SurprisedUnitIds lose their first turn (a TurnEnded with Battle.Turn.Surprised); OpenerTeam acts first (individual order: full Charge Time; team order: it opens round 1). Ignored when Free Tactics -> Surprise Rounds is off.
Can Act At (CanActAt)pureRPG Saga|Free Tactics|TraversalPoint: FVectorboolWhether a unit standing at Point may use abilities and items (false inside a volume whose kind forbids it: swimming).
Can Flee Battle (CanFleeBattle)pureRPG Saga|Free TacticsboolThe party may run away from this battle (the encounter allows it and Free Tactics -> Fleeing is on).
Check Door (CheckDoor)pureRPG Saga|Free TacticsUnitId: int32
DoorIndex: int32
ERSEFreeDoorCheckWhether UnitId (the active unit) may open or close the door now: in reach on its floor, unlocked, nobody in the way, the budget.
Check Flee (CheckFlee)pureRPG Saga|Free TacticsUnitId: int32
Point: FVector
ERSEFreeFleeCheckWhether UnitId (the active unit, on the player's team) could flee from Point now: fleeing allowed, Point within its movement (its own spot = no walk), and no enemy there within Escape Radius that sees it (Escape Hidden Radius when it does not). The enemies are taken where they stand now.
Check Jump (CheckJumpBP)pureRPG Saga|Free Tactics|FieldUnitId: int32
Point: FVector
OutPlan: FRSEFreeJumpPlan (out)
ERSEFreeJumpCheckBlueprint: CheckJump.
Create Surface Circle (CreateSurfaceCircle)functionRPG Saga|Free Tactics|FieldCreatorId: int32
Data: URSETileZoneData*
Center: FVector
Radius: float
DurationOverride: int32 = -1
int32A round surface (Blueprint, dev commands).
Damage Object (DamageObject)functionRPG Saga|Free Tactics|FieldSourceId: int32
ObjectId: int32
Amount: float
Damages an object; at 0 HP it breaks (its blocker leaves the snapshot: paths, sight and cover change), and may explode.
End Battle as Escape (EndBattleAsEscape)functionRPG Saga|Free TacticsEnds the battle as an escape (Fled): a flee ability, a story exit.
Execute Command (ExecuteCommand)functionRPG Saga|Free TacticsCommand: FRSEFreeTacticsCommand (ref)ERSEFreeCommandResultThe single entry point of decisions: validates Command (the active unit's, affordable, reachable, a valid target) and applies it. Nothing changes when it is refused.
Get Controller (GetController)pureRPG Saga|Free TacticsUnitId: int32URSEFreeTacticsController*Who decides for a unit: its own controller, else its team's; null = nobody (the caller drives it).
Get Door Count (GetDoorCount)pureRPG Saga|Free Tacticsint32Doors of the battle area (the snapshot's).
Get Escape Progress (GetEscapeProgress)pureRPG Saga|Free TacticsUnitId: int32int32Rounds the escaping unit has spent out of reach so far (INDEX_NONE when it is not escaping).
Get Escaped Count (GetEscapedCount)pureRPG Saga|Free Tacticsint32Units of the player's team that got away.
Get Joined Unit Id (GetJoinedUnitId)pureRPG Saga|Free TacticsTicket: int32int32Unit id of a queued unit once it joined (INDEX_NONE while it waits, or for an unknown ticket).
Get Objects (GetObjectsBP)pureRPG Saga|Free Tactics|FieldTArray<FRSEFreeObject>Get Objects
Get Overwatches (GetOverwatchesBP)pureRPG Saga|Free TacticsTArray<FRSEFreeOverwatch>Blueprint: the units on watch now.
Get Queued Join Count (GetQueuedJoinCount)pureRPG Saga|Free Tacticsint32Units waiting to join.
Get Round (GetRound)pureRPG Saga|Free Tacticsint32Rounds started (1 = the first). Team-based order: every team had its phase. Individual order: a round lasts as many turns as there were units standing when it began (D-097), so joining, fleeing and surprise work the same in both orders.
Get Route Hazards (GetActiveUnitRouteHazards)pureRPG Saga|Free Tactics|FieldGoal: FVectorFRSEFreeRouteHazardReportBlueprint: what the active unit's walk to Goal goes through (empty when unreachable).
Get Surfaces (GetSurfacesBP)pureRPG Saga|Free Tactics|FieldTArray<FRSEFreeSurface>Blueprint: every surface on the field.
Has Escaped (HasEscaped)pureRPG Saga|Free TacticsUnitId: int32boolThe unit ran away and is out of the battle (not defeated: it keeps its HP and is written back to the party).
Insert Turn (InsertTurn)functionRPG Saga|Free TacticsUnitId: int32D-117: UnitId acts next: an extra turn inserted before the next regular one (a scripted battle event's "acts now"). Its CT and round bookkeeping are not touched; several insertions keep their order. Ignored for a unit that is not standing.
Is Door Open (IsDoorOpen)pureRPG Saga|Free TacticsDoorIndex: int32boolIs Door Open
Is Escaping (IsEscaping)pureRPG Saga|Free TacticsUnitId: int32boolThe unit fled and waits out Escape Rounds before it leaves.
Is Overwatch Ability (IsOverwatchAbility)pureRPG Saga|Free TacticsAbility: URSEAbilityData*boolWhether Ability is an Overwatch stance here (its Free Tactics Rules -> Overwatch).
Is Surprised (IsSurprised)pureRPG Saga|Free TacticsUnitId: int32boolThe unit will lose its next turn to a surprise.
Preview From Destination (PreviewFromDestinationBP)pureRPG Saga|Free Tactics|FieldUnitId: int32
Destination: FVector
TArray<FRSEFreeDestinationPreview>Blueprint: PreviewFromDestination.
Queue Join (QueueJoin)functionRPG Saga|Free TacticsSpawn: FRSEBattleUnitSpawn (ref)int32A unit that noticed the battle joins it (an enemy walking over, a party member arriving): at the start of the next round (Free Tactics -> Join At Next Round), else before the next turn. Place it with Spawn.Location (bHasLocation). Returns a ticket to move it while it waits (UpdateQueuedJoin) and to find its unit id afterwards (GetJoinedUnitId).
Remove Surface (RemoveSurface)functionRPG Saga|Free Tactics|FieldSurfaceId: int32Remove Surface
Set Can Flee (SetCanFlee)functionRPG Saga|Free TacticsbInCanFlee: boolWhether this battle may be fled at all (the encounter's Can Flee). Free Tactics -> Fleeing must be on as well.
Set Cover Provider (SetCoverProvider)functionRPG Saga|Free TacticsProvider: URSECoverProvider*Replaces the cover provider for this battle (asset combat roles, tests). Null = back to the settings' provider.
Set Team Controller (SetTeamController)functionRPG Saga|Free TacticsTeam: FGameplayTag
Controller: URSEFreeTacticsController*
The controller of every unit of Team without its own (null clears it).
Set Unit Controller (SetUnitController)functionRPG Saga|Free TacticsUnitId: int32
Controller: URSEFreeTacticsController*
The controller of one unit (a guest, a charmed unit; null clears it).
Spawn Object (SpawnObject)functionRPG Saga|Free Tactics|FieldCreatorId: int32
Data: URSEFieldObjectData*
Point: FVector
int32Places an object of Data at Point (Spawn Object in Free Tactics): a blocker with HP. Returns its id or INDEX_NONE.
Toggle Door (ToggleDoor)functionRPG Saga|Free TacticsDoorIndex: int32boolOpens or closes a door with the active unit (a Door command). Returns false when refused (nothing changes).
Update Queued Join (UpdateQueuedJoin)functionRPG Saga|Free TacticsTicket: int32
Location: FVector
Yaw: float
boolWhere a queued unit stands now (battle space, meters): it enters the battle there. Returns false for an unknown or joined ticket.

URSEFreeTacticsController

Module RSECore, display name Free Tactics Controller. Who decides for a unit in Free Tactics (D-091): the local player, the AI, later a remote player.

NodeKindCategoryParametersReturnsDescription
On Command Rejected (OnCommandRejected)overrideRPG Saga|Free TacticsBattle: URSEFreeTacticsBattle*
Command: FRSEFreeTacticsCommand (ref)
Result: ERSEFreeCommandResult
The battle refused a command this controller provided (it will be asked again, or the turn is ended for it).
Provide Command (ProvideCommand)overrideRPG Saga|Free TacticsBattle: URSEFreeTacticsBattle*
UnitId: int32
OutCommand: FRSEFreeTacticsCommand (out)
boolThe next command for UnitId (the active unit), or false to wait (a player who has not decided yet). Must not change the battle: the battle validates and applies the command.
Uses AIRoutes (UsesAIRoutes)overrideRPG Saga|Free TacticsboolD-121: the units it decides for route like the AI (links whose kind keeps them from the AI are closed to them).

URSEFreeTacticsHUDViewModel

Module RSE. The data and the actions of the Free Tactics battle HUD (D-097, D-052): turn order, the active unit, the command menu (the command menu layout of D-065), the target preview with hit chances and position factors, the path cost, messages and hints.

NodeKindCategoryParametersReturnsDescription
Activate Entry (ActivateEntry)functionRPG Saga|Free Tactics|HUDIndex: int32Activates a command menu entry (a click).
Answer Hazard (AnswerHazard)functionRPG Saga|Free Tactics|HUDbContinue: boolD-156: answers the danger warning (a click on its buttons).
End Turn (EndTurn)functionRPG Saga|Free Tactics|HUDEnd Turn
Get Battle Menu (GetBattleMenu)pureRPG Saga|Free Tactics|HUDURSEBattleMenuViewModel*D-122: this player's battle menu (every menu style shows it; Widget Blueprints may too).
Get Director (GetDirector)pureRPG Saga|Free Tactics|HUDARSEFreeTacticsDirector*Get Director
Highlight Entry (HighlightEntry)functionRPG Saga|Free Tactics|HUDIndex: int32Highlights a command menu entry (mouse over).
Highlight Hazard Answer (HighlightHazardAnswer)functionRPG Saga|Free Tactics|HUDIndex: int32D-156: highlights one of the warning's answers (mouse over: 0 = continue, 1 = pick another path).

URSEFreeTacticsQueuedController

Module RSECore, display name Free Tactics Queued Controller. A controller fed from outside (D-097): the local player's input (the Free Tactics director queues what the player chose), later a remote player's messages.

NodeKindCategoryParametersReturnsDescription
Clear Queue (ClearQueue)functionRPG Saga|Free TacticsForgets the commands not taken yet.
Clear Rejection (ClearRejection)functionRPG Saga|Free TacticsClear Rejection
Get Last Rejection (GetLastRejection)pureRPG Saga|Free TacticsERSEFreeCommandResultWhy the last refused command was refused (Ok when none was refused since the last ClearRejection).
Get Queued Count (GetQueuedCount)pureRPG Saga|Free Tacticsint32Commands waiting to be taken.
Queue Command (QueueCommand)functionRPG Saga|Free TacticsCommand: FRSEFreeTacticsCommand (ref)Adds a command; the battle takes it the next time it asks this controller (RunControllers).

URSEFreeTacticsSimDriver

Module RSE. The server side of a Free Tactics battle (D-141, docs/design/networking.md §3.6): owns the headless battle (URSEFreeTacticsBattle) and runs it on the authority only (single player, the host): the controllers (one queued controller per player, the AI for the enemies and for the units no player plays)...

NodeKindCategoryParametersReturnsDescription
Get Battle (GetBattle)pureRPG Saga|Free TacticsURSEFreeTacticsBattle*Get Battle

URSEFreeTacticsSubsystem

Module RSE. Free Tactics on the live map (D-097): starts battles where the party stands (a visible group that noticed the party or was attacked, an encounter, a dev command), gathers who takes part (the group, the enemies called for help, the party members nearby), owns the world's battle director and relays th...

NodeKindCategoryParametersReturnsDescription
Get Active Director (GetActiveDirector)pureRPG Saga|Free TacticsARSEFreeTacticsDirector*The director of the running battle, or null.
Is Battle Active (IsBattleActive)pureRPG Saga|Free TacticsboolIs Battle Active
Start Encounter Battle (StartEncounterBattle)functionRPG Saga|Free TacticsEncounter: URSEEncounterData*
Opening: ERSEFreeOpening
EnemyActors: TArray<AActor*> (ref)
Source: AActor* = None
boolStarts a Free Tactics battle with Encounter's enemies (story battles, triggers, dev commands). EnemyActors stand for its enemies in order; missing ones appear near the first (or in front of the party). Source gets the exploration's callback.
Start Group Battle (StartGroupBattle)functionRPG Saga|Free TacticsSpawner: ARSEEncounterSpawner*
GroupIndex: int32
Opening: ERSEFreeOpening
boolStarts the battle of a visible group of Spawner (it noticed the party, or the party touched it). Enemies of other groups within Free Tactics -> Call For Help Radius join from the start; party members within Party Join Radius of the leader fight from where they stand. Returns false when a battle cannot start now.

URSEFreeTargetingLibrary

Module RSECore. D-146: the targeting rules for Blueprints (custom HUDs, tutorials).

NodeKindCategoryParametersReturnsDescription
Gather Targets (GatherTargets)function, staticRPG Saga|Free Tactics|TargetingBattle: URSEFreeTacticsBattle*
UnitId: int32
Origin: FVector
Ability: URSEAbilityData*
bItem: bool
ViewYaw: float
TArray<FRSEFreeTargetCandidate>Every unit the ability's side holds, with whether UnitId at Origin can aim it there and why not (sorted by distance).
Get Target Side (GetTargetSide)pure, staticRPG Saga|Free Tactics|TargetingAbility: URSEAbilityData*ERSEFreeTargetSideWhom an ability is for.
Make Target Cycle (MakeTargetCycle)pure, staticRPG Saga|Free Tactics|TargetingCandidates: TArray<FRSEFreeTargetCandidate> (ref)
Order: ERSEFreeTargetCycleOrder
TArray<int32>The valid targets in the order Next / Previous target walks.
Pick Default Target (PickDefaultTarget)pure, staticRPG Saga|Free Tactics|TargetingCandidates: TArray<FRSEFreeTargetCandidate> (ref)
Side: ERSEFreeTargetSide
HostilePick: ERSEFreeHostileAutoPick
SupportPick: ERSEFreeSupportAutoPick
int32The target highlighted first.

URSEGASBridgeComponent

Module RSEGAS, display name RSE GAS Bridge. Puts a Gameplay Ability System character into RPG Saga Engine battles (D-169).

NodeKindCategoryParametersReturnsDescription
Activate Bridge (ActivateBridge)functionRPG Saga|GASStarts answering for the character (called at Begin Play; call it yourself for an actor that never begins play).
Bind to Battle Unit (BindToBattleUnit)functionRPG Saga|GASBattle: URSEBattle*
UnitId: int32
boolMirrors a battle unit (done by itself when the battle builds the unit through the stat source).
Deactivate Bridge (DeactivateBridge)functionRPG Saga|GASStops answering and unbinds from any battle (called at End Play).
Get Ability System (GetAbilitySystem)pureRPG Saga|GASUAbilitySystemComponent*The ASC used: the one set with Set Ability System, else the owner's.
Get Battle (GetBattle)pureRPG Saga|GASURSEBattle*Get Battle
Get Mapped Value (GetMappedValue)pureRPG Saga|GASRSETag: FGameplayTag
bFound: bool (out)
floatThe current value of the GAS attribute mapped to an RSE stat or resource, in RSE units (UI).
Get Unit Id (GetUnitId)pureRPG Saga|GASint32Get Unit Id
Is Bound (IsBound)pureRPG Saga|GASboolIs Bound
On Battle Event Forwarded (OnBattleEventForwarded)eventRPG Saga|GASEvent: FRSEBattleEvent (ref)
EventTag: FGameplayTag
An RSE battle event of the bound unit was sent to the ASC (EventTag empty when only the ability map sent one).
On Bound (OnBound)eventRPG Saga|GASBattle: URSEBattle*
UnitId: int32
--- Events (GAS -> RSE side) ---
On Gameplay Cue Triggered (OnGameplayCueTriggered)eventRPG Saga|GASCueTag: FGameplayTag
CueEvent: ERSEGASCueEvent
A Gameplay Cue was triggered on this actor by an RSE presentation cue (Gameplay Cue cue, G2).
On GASAttribute Changed (OnGASAttributeChanged)eventRPG Saga|GASRSETag: FGameplayTag
OldValue: float
NewValue: float
A mapped GAS attribute changed by something other than the bridge (values in RSE units).
On GASTag Changed (OnGASTagChanged)eventRPG Saga|GASTag: FGameplayTag
bPresent: bool
A status tag of the status map was added or removed by something other than the bridge.
On Unbound (OnUnbound)eventRPG Saga|GAS
Read Stats (ReadStats)pureRPG Saga|GASOutStats: FRSEExternalUnitStats (out)
Battle: URSEBattle* = None
boolWhat the ASC supplies for a battle unit now (In rows; resources vs stats per the battle's attribute registry, or the global one). Returns false without an ASC or an attribute map.
Set Ability System (SetAbilitySystem)functionRPG Saga|GASAbilitySystem: UAbilitySystemComponent*Uses this ASC instead of the owner's (e.g. one kept on the Player State).
Unbind (Unbind)functionRPG Saga|GASStops mirroring the battle unit (done by itself when the battle ends).

URSEGameOverViewModel

Module RSE. Game over (D-031): Retry battle / Load last save / Return to main menu, with the cursor.

NodeKindCategoryParametersReturnsDescription
Choose (Choose)functionRPG Saga|UI|GameOverIndex: int32Chooses an option (disabled ones do nothing).
Move Selection (MoveSelection)functionRPG Saga|UI|GameOverDirection: int32Moves the cursor to the next enabled option (+1 down, -1 up).
Select (Select)functionRPG Saga|UI|GameOverIndex: int32Puts the cursor on an option (mouse hover).

URSEGroupTravelPolicy

Module RSE. Who leads the group out of a zone in co-op (D-124 §6.6, D-138).

NodeKindCategoryParametersReturnsDescription
Decide (Decide)overrideRPG Saga|Travel|Co-opRequest: FRSETravelRequest (ref)
Instigator: FRSEPlayerId
bMultiplayer: bool
ERSEGroupTravelDecisionWhat Request (made by Instigator; None = the game itself) does now. bMultiplayer: several players share the world.

URSEGroupTravelPresenter

Module RSE. The co-op screens of group travel (D-138 rule, D-142 screens): the host's countdown shows on every player's screen (the destination and the seconds, with how to stay on the host's), its cancel closes them with a notice; a guest who walks into an exit asks the host, who answers a question box ("Playe...

NodeKindCategoryParametersReturnsDescription
Get Seconds Left (GetSecondsLeft)pureRPG Saga|Travel|Co-opfloatSeconds left on this machine's countdown screen.
Is Countdown Shown (IsCountdownShown)pureRPG Saga|Travel|Co-opboolThe countdown shows on this machine now.
On Group Travel Shown (OnGroupTravelShown)eventRPG Saga|Travel|Co-opTravel: FRSEPresentation_GroupTravel (ref)Every countdown screen this machine shows or closes (a project's own widget).

URSEGrowthAllocationPolicy

Module RSECore. Spends a character's points when nobody builds it by hand (D-144): AI-controlled members, autoplay, the battle simulator, Balance My Campaign and the Progression Designer, so balance stays valid under every progression system.

NodeKindCategoryParametersReturnsDescription
Choose Option (ChooseOption)overrideRPG Saga|ProgressionCharacter: URSECharacterData*
Level: int32
Options: TArray<FRSEGrowthOption> (ref)
int32Which option to take next (index into Options), or -1 to stop spending. Default: the best Score per point of cost, the earliest listed on ties.
Should Stop (ShouldStop)overrideRPG Saga|ProgressionCharacter: URSECharacterData*
Level: int32
StepsTaken: int32
boolWhether the policy keeps points for later (e.g. saving for an expensive node). Default: never.

URSEGrowthViewModel

Module RSE. The Growth page (D-144): the selected member's points and the points page (Classic + Points) or the board (Classic + Growth Board), plus mastery and ranks.

NodeKindCategoryParametersReturnsDescription
Cancel Pending (CancelPending)functionRPG Saga|UI|GrowthNo.
Choose Node Menu Option (ChooseNodeMenuOption)functionRPG Saga|UI|GrowthIndex: int32boolRuns an entry of the node menu (Unlock sends the command at once: the free undo takes it back).
Close Node Menu (CloseNodeMenu)functionRPG Saga|UI|GrowthClose Node Menu
Confirm Pending (ConfirmPending)functionRPG Saga|UI|GrowthboolYes: sends the waiting action's command.
End Session (EndSession)functionRPG Saga|UI|GrowthThe page closed (D-149): the undo steps of the members changed here become final (a Clear Growth Undo command each) and the node menu closes. The page calls it when it leaves the screen.
Get Content Count (GetContentCount)pureRPG Saga|UI|Growthint32Number of rows of the points page (attributes + catalog).
Get Currency Name (GetCurrencyName)pureRPG Saga|UI|GrowthCurrency: FGameplayTagFTextGet Currency Name
Get Member Column Count (GetMemberColumnCount)pureRPG Saga|UI|Growthint32Number of rows of the member column (members + Auto + Undo + Respec).
Get Selected Character (GetSelectedCharacter)pureRPG Saga|UI|GrowthURSECharacterData*Get Selected Character
Open Node Menu (OpenNodeMenu)functionRPG Saga|UI|GrowthNodeIndex: int32boolOpens the node menu next to a board node (D-149): Unlock (with its cost), Details, Cancel.
Refresh (Refresh)functionRPG Saga|UI|GrowthReads the party state again (keeps the selection).
Request Auto (RequestAuto)functionRPG Saga|UI|GrowthboolRequest Auto
Request Buy (RequestBuy)functionRPG Saga|UI|GrowthAbility: URSEAbilityData*boolRequest Buy
Request Raise (RequestRaise)functionRPG Saga|UI|GrowthStat: FGameplayTagboolRequest Raise
Request Respec (RequestRespec)functionRPG Saga|UI|GrowthboolRequest Respec
Request Selected Action (RequestSelectedAction)functionRPG Saga|UI|GrowthboolAsks to raise / buy / unlock the selected row or node (a Yes / No follows).
Request Undo (RequestUndo)functionRPG Saga|UI|GrowthboolTakes the selected member's newest step back for free (D-149).
Request Unlock (RequestUnlock)functionRPG Saga|UI|GrowthNodeId: FNameboolRequest Unlock
Select Content (SelectContent)functionRPG Saga|UI|GrowthIndex: int32Puts the cursor on a content row (points page) or a node (board, by index).
Select Member (SelectMember)functionRPG Saga|UI|GrowthIndex: int32Select Member
Select Node by Id (SelectNodeById)functionRPG Saga|UI|GrowthNodeId: FNameboolSelect Node by Id
Set Details Open (SetDetailsOpen)functionRPG Saga|UI|GrowthbOpen: boolShows or hides the board's details panel.
Set Legend Open (SetLegendOpen)functionRPG Saga|UI|GrowthbOpen: boolShows or hides the legend of node kinds over the board (D-154: the strip's Help button).

URSEHUDLayoutSubsystem

Module RSE. P32d: the screen areas the HUD elements of one local player take (the quest tracker, a minimap a game adds...), so that transient UI (the reward feed's toasts) places itself around them instead of on top of them.

NodeKindCategoryParametersReturnsDescription
Clear Occupied (ClearOccupied)functionRPG Saga|HUDId: FNameClear Occupied
Set Occupied HUD Area (SetOccupiedArea)functionRPG Saga|HUDId: FName
AbsoluteTopLeft: FVector2D
AbsoluteBottomRight: FVector2D
Blueprint form: a widget's area this frame (absolute Slate coordinates, e.g. from its cached geometry). Call while it shows.

URSEIdleBehavior

Module RSECore. One idle behaviour (D-129): how likely (Weight), how often (Cooldown) and what it does.

NodeKindCategoryParametersReturnsDescription
Can Run (CanRun)overrideRPG Saga|Party FieldContext: FRSEIdleContext (ref)boolWhether it can run in this context (an animation the look has, a free spot, another member nearby).
Make Intent (MakeIntent)overrideRPG Saga|Party FieldContext: FRSEIdleContext (ref)
Seed: int32
OutIntent: FRSEIdleIntent (out)
Fills the intent (kind, animations, target, duration). Seed: the deterministic random choice of this pick.

URSEInputDeviceSubsystem

Module RSE. Tracks the device in use (keyboard / mouse or gamepad) through a Slate input pre-processor, so key prompts show the labels of that device only (RSEKeyPrompts, D-038 / D-040).

NodeKindCategoryParametersReturnsDescription
Get Input Device (GetLastDevice)pure, staticRPG Saga|InputERSEInputDeviceThe device the prompts show: the forced one, else the one used last.
Is Menu Focused (IsMenuFocused)pure, staticRPG Saga|InputboolWhether any registered menu has focus (the left stick navigates it).
Is Steam Deck (IsSteamDeck)pure, staticRPG Saga|InputboolRunning on a Steam Deck (SteamDeck=1 environment variable, -SteamDeck, or URSEInputSettings::bSimulateSteamDeck).
Is Using Gamepad (IsUsingGamepad)pure, staticRPG Saga|InputboolThe prompts show gamepad buttons now.
Is Using Touch (IsUsingTouch)pure, staticRPG Saga|InputboolD-180: the player uses a touch screen now (touch hints, on-screen controls).
Notify Prompts Changed (NotifyPromptsChanged)function, staticRPG Saga|InputRe-reads the forced device and label set and broadcasts OnDeviceChanged (options, CVars).
On Input Device Changed (BP_OnDeviceChanged)eventRPG Saga|InputDevice: ERSEInputDeviceThe prompt device changed (keyboard / mouse or gamepad; Blueprint).

URSEInteractableComponent

Module RSE, display name RSE Interactable. Makes any actor interactable (D-165, docs/product/components.md): add it to your own actor (no parent class needed) and the player's prompt focuses it ("[E] Examine") and the Interact key runs it, exactly as an RSE interactable actor: - a Library Kind (D-150: a chest, a campfire, a lantern, a shrine...

NodeKindCategoryParametersReturnsDescription
Apply Settings (ApplySettings)functionRPG Saga|InteractionRe-applies the range and reach to the volume (live tuning).
Can Interact (Custom) (CanInteractCustom)overrideRPG Saga|InteractionInteractingPawn: APawn*boolExtra availability rule of a Blueprint subclass (the prompt shows only while it is true). Default: true.
Can Interact Now (CanInteractNow)pureRPG Saga|InteractionInteractingPawn: APawn*boolWhether a pawn may interact now.
Get Kind (GetKind)pureRPG Saga|InteractionURSEInteractableData*The library kind (null = none).
Get Kind State (GetKindState)pureRPG Saga|InteractionFRSEInteractableSaveStateThe kind's saved state now.
Get Prompt Text (GetPromptText)pureRPG Saga|InteractionFTextThe action shown in the prompt ("Open", "Talk"); the kind's prompt when it has one.
Get Visual (GetVisual)pureRPG Saga|InteractionERSEInteractableVisualThe kind's look now (Default, Active, Depleted).
Interact (Interact)functionRPG Saga|InteractionInteractingPawn: APawn*boolRuns it now, on this machine (what the Interact command applies on the authority). Returns false when it could not.
Is Interaction Enabled (IsInteractionEnabled)pureRPG Saga|InteractionboolIs Interaction Enabled
On Focus Changed (OnFocusChanged)eventRPG Saga|InteractionInteractable: URSEInteractableComponent*
Pawn: APawn*
bFocused: bool
A player's prompt moved onto (bFocused) or off this object: highlight it, play a sound.
On Interact (ReceiveInteract)overrideRPG Saga|InteractionInteractingPawn: APawn*
bSucceeded: bool
A custom action of a Blueprint subclass of the component: runs after the data.
On Interacted (OnInteracted)eventRPG Saga|InteractionInteractable: URSEInteractableComponent*
InteractingPawn: APawn*
bSucceeded: bool
Raised after every interaction (on an RSE interactable actor's own component: after the actor's, bSucceeded = it ran).
On Interaction Dialog Ended (OnInteractionDialogEnded)eventRPG Saga|InteractionInteractable: URSEInteractableComponent*The blocking dialog this interaction started has ended.
On Interaction Started (OnInteractionStarted)eventRPG Saga|InteractionInteractable: URSEInteractableComponent*
InteractingPawn: APawn*
Before the interaction runs (turn toward the player, stop walking).
On Kind Used (OnKindUsed)eventRPG Saga|InteractionInteractable: URSEInteractableComponent*
InteractingPawn: APawn*
Outcome: FRSEInteractableOutcome (ref)
The library kind was used on the authority (its outcome: lines, items, the look).
On No Response (OnNoResponse)eventRPG Saga|InteractionInteractable: URSEInteractableComponent*
InteractingPawn: APawn*
The interaction ran and nothing answered the player (no dialog, the conditions failed): say a line here.
On Visual Changed (OnVisualChanged)eventRPG Saga|InteractionInteractable: URSEInteractableComponent*
Visual: ERSEInteractableVisual
The kind's look changed (a lantern lit, a chest emptied): show it on your own meshes.
Request Interact (RequestInteract)functionRPG Saga|InteractionInteractingPawn: APawn*boolInteracts as the player of InteractingPawn through the command bus (D-138). Returns true when applied (or sent).
Set Interaction Enabled (SetInteractionEnabled)functionRPG Saga|InteractionbInEnabled: boolTurns the interaction on or off (off: no prompt, Interact does nothing).
Set Kind (SetKind)functionRPG Saga|InteractionInKind: URSEInteractableData*Sets the library kind (tools, Blueprint) and starts its state over.

URSEInteractionPromptViewModel

Module RSE. The interaction prompt (D-060): key cap + action ("[E] Talk") above the focused interactable (its prompt point) or at a screen point.

NodeKindCategoryParametersReturnsDescription
Compute Screen Position (ComputeScreenPosition)pureRPG Saga|UI|InteractionPromptSize: FVector2D
OutPosition: FVector2D (out)
boolWhere the prompt's bottom-center goes now, in viewport units, for a prompt of PromptSize. Returns true when it follows the object; false = the settings' screen anchor (OutPosition is that point).

URSEInteractionSubsystem

Module RSE. Routes the explorer's Interact to the interactable in focus and shows the prompt ("[E] Talk").

NodeKindCategoryParametersReturnsDescription
Get Focused (GetFocused)pureRPG Saga|InteractionARSEInteractableActor*The RSE interactable actor the prompt of this machine's primary player shows now, or none (see GetFocusedComponent).
Get Focused Actor For (GetFocusedActorFor)pureRPG Saga|InteractionPawn: APawn*AActor*The actor Pawn's prompt shows now (whatever its class), or none.
Get Focused Component (GetFocusedComponent)pureRPG Saga|InteractionURSEInteractableComponent*The interactable (any actor's RSE Interactable component) the primary player's prompt shows now, or none.
Get Focused Component For (GetFocusedComponentFor)pureRPG Saga|InteractionPawn: APawn*URSEInteractableComponent*The interactable (any actor's RSE Interactable component) Pawn's prompt shows now, or none.
Get Focused For (GetFocusedFor)pureRPG Saga|InteractionPawn: APawn*ARSEInteractableActor*The RSE interactable actor Pawn's prompt shows now, or none (see GetFocusedComponentFor).
Interact with Focused (InteractWithFocused)functionRPG Saga|InteractionboolInteracts with the primary player's focused interactable (the explorer's Interact calls the pawn's own). Returns true when it did.
Interact with Focused For (InteractWithFocusedFor)functionRPG Saga|InteractionPawn: APawn*boolInteracts with the object Pawn's prompt shows (its focus), without re-picking at the press: what the player read is what runs. Only when that object is gone or cannot be used any more is the focus re-evaluated first. Returns true when it was applied (or sent).
Is Interaction Allowed (IsInteractionAllowed)pureRPG Saga|InteractionboolInteraction is possible now for the primary player (exploration active, no dialog or scene, no modal screen open or just closed).

URSEInteriorCameraSubsystem

Module RSE. The exploration camera inside interiors (D-110): when the local player's explorer enters an Interior Volume, its spring arm, look limits, field of view and (with a fixed angle) the view direction blend to the volume's profile; leaving every volume blends back to what the camera was outside.

NodeKindCategoryParametersReturnsDescription
Get Active Volume (GetActiveVolume)pureRPG Saga|InteriorsARSEInteriorVolume*The interior whose profile the explorer camera uses now (null outside).
Is Blending (IsBlending)pureRPG Saga|InteriorsboolThe camera is still blending between two profiles.

URSEInteriorKitData

Module RSECore. A modular interior kit (D-164): pieces of one pack that fit together on a module grid.

NodeKindCategoryParametersReturnsDescription
Get Coverage (GetCoverage)pureRPG Saga|InteriorsFGameplayTagContainerWhich piece kinds the kit has (exact kinds).
Get Kind for Slot (GetKindForSlot)pureRPG Saga|InteriorsSlot: FGameplayTagFGameplayTagThe first piece kind of a plan slot this kit has (its Slot Kinds, else the built-in table); invalid when none.
Get Kit Id (GetKitId)pureRPG Saga|InteriorsFNameKitId, else the asset's name.
Has Kind (HasKind)pureRPG Saga|InteriorsKind: FGameplayTagboolWhether the kit has a piece of exactly Kind.
Pick Kit Piece (PickPieceBP)pureRPG Saga|InteriorsKind: FGameplayTag
Span: float
Seed: int32
OutPiece: FRSEKitPiece (out)
boolPickPiece for Blueprint: Returns false when nothing fits.

URSEInteriorTravelSubsystem

Module RSE. Separate interiors (D-150): the trip from a building entrance of mode Separate Interior into its interior and back.

NodeKindCategoryParametersReturnsDescription
Are Battles Blocked (AreBattlesBlocked)pureRPG Saga|BuildingsboolD-153: battles are refused now: the party is in a separate interior whose rules forbid them.
Is Busy (IsBusy)pureRPG Saga|BuildingsboolA blackout is running (the trip is half way).
Is Inside (IsInside)pureRPG Saga|BuildingsboolIs Inside

URSEInventoryPermissionPolicy

Module RSECore. Who may change what (co-op, D-094 / D-124): the host can let guests manage the shared stash and their own characters, or more.

NodeKindCategoryParametersReturnsDescription
Can Change Equipment (CanChangeEquipment)overrideRPG Saga|Items|PermissionsIssuer: FRSEInventoryIssuer (ref)
Character: URSECharacterData*
boolWhether Issuer may change Character's equipment. Default: yes (guests' fixed equipment stays locked by its data, D-011).
Can Issue (CanIssue)overrideRPG Saga|Items|PermissionsIssuer: FRSEInventoryIssuer (ref)
Command: FRSEInventoryCommand (ref)
boolWhether Issuer may send Command at all. Default: yes.
Can Issue Party Command (CanIssuePartyCommand)overrideRPG Saga|Items|PermissionsIssuer: FRSEInventoryIssuer (ref)
Command: FInstancedStruct (ref)
boolWhether Issuer may send a party command (D-137): Command is the payload (Equip Item, Bind Pact, Buy Item, Set Formation...; inventory commands also pass Can Issue). The bus' own permission (host-only story commands) is checked first. Default: yes.
Can Use Container (CanUseContainer)overrideRPG Saga|Items|PermissionsIssuer: FRSEInventoryIssuer (ref)
Container: FRSEContainerRef (ref)
bTakeOut: bool
boolD-143: whether Issuer may take items out of (bTakeOut) or put items into Container (a member's bag, the stash, the pending loot): moves, transfers, Give to..., use and discard. Co-op: a host may keep guests out of the members other players lead. Default: yes.

URSEInventorySubsystem

Module RSECore. Inventory commands (D-123) on the command bus (D-137): every move, equip, unequip, use, sort or discard from an inventory screen is a FRSEInventoryCommand, a party command.

NodeKindCategoryParametersReturnsDescription
Can Change Equipment (CanChangeEquipment)pureRPG Saga|Items|CommandsIssuer: FRSEInventoryIssuer (ref)
Character: URSECharacterData*
boolWhether Issuer may change Character's equipment (permission policy and the character's own lock).
Is Allowed (IsAllowed)pureRPG Saga|Items|CommandsCommand: FRSEInventoryCommand (ref)
Issuer: FRSEInventoryIssuer (ref)
boolWhether Issuer may send Command (permission policy only; the command may still fail its own rules).
On Command Applied (OnCommandApplied)eventRPG Saga|Items|CommandsCommand: FRSEInventoryCommand (ref)
Outcome: FRSEInventoryCommandOutcome (ref)
A command was applied successfully (on the host or in single player), or refused when sent from this subsystem.
Set Policy (SetPolicy)functionRPG Saga|Items|CommandsInPolicy: URSEInventoryPermissionPolicy*Replaces the policy at run time (D-137): the host's session rules (co-op: what guests may change), tests. Null = back to Items -> Permission Policy Class. Only the authority's policy decides (commands are validated there).
Submit Command (SubmitCommand)functionRPG Saga|Items|CommandsCommand: FRSEInventoryCommand (ref)
Issuer: FRSEInventoryIssuer (ref)
FRSEInventoryCommandOutcomeSends Command through the command bus (D-137) and returns its outcome. Issuer: this machine's player, or (with authority: the host, tools, tests) another player whose command it is; the bus decides who the sender really is. On a guest the outcome is Pending and OnCommandApplied follows on the host.

URSEInventoryViewModel

Module RSE. The grid inventory presenter (D-123): data and commands of an inventory screen, for any screen style (our grid page, a Widget Blueprint, later a chest or a shop).

NodeKindCategoryParametersReturnsDescription
Activate Item (ActivateItem)functionRPG Saga|UI|InventoryItem: URSEItemData*boolDouble-click / right-click: equip equipment, use consumables, read documents, use key items on the object in front.
Auto Distribute (AutoDistribute)functionRPG Saga|UI|InventoryboolDeals every bag again by the Smart rule (and the open stash's upgrades): one command.
Can Equip in Slot (CanEquipInSlot)pureRPG Saga|UI|InventoryItem: URSEItemData*
SlotId: FName
boolWhether the selected character can wear Item in SlotId now (drop highlights).
Can Give To (CanGiveTo)pureRPG Saga|UI|InventoryItem: URSEItemData*
MemberIndex: int32
boolWhether member Index's bag can take Item now (drop highlights on the party strip).
Can Place At (CanPlaceAt)pureRPG Saga|UI|InventoryItem: URSEItemData*
Cell: FIntPoint
boolWhether Item (of the current tab) fits at Cell, ignoring its own place (drop highlights). Items not on the grid count as new.
Combine Items (CombineItems)functionRPG Saga|UI|InventoryFirst: URSEItemData*
Second: URSEItemData*
boolCombines two key items (through the party menu, D-039).
Discard Item (DiscardItem)functionRPG Saga|UI|InventoryItem: URSEItemData*boolThrows one Item away (Items -> Allow Discard).
Equip Item (EquipItem)functionRPG Saga|UI|InventoryItem: URSEItemData*
SlotId: FName
ReturnCell: FIntPoint
boolThe selected character equips Item in SlotId (None = automatic); what comes off lands at ReturnCell when free.
Get Actions (GetActions)pureRPG Saga|UI|InventoryItem: URSEItemData*
FromSlot: FName
TArray<FRSEMenuEntryView>Actions for a piece of the grid (FromSlot None) or a worn item (FromSlot set): Equip, Use, Read, Use on..., Combine, Move, Unequip, Discard, Cancel.
Get Current Container (GetCurrentContainer)pureRPG Saga|UI|InventoryFRSEContainerRefThe container of the current tab.
Get Issuer (GetIssuer)pureRPG Saga|UI|InventoryFRSEInventoryIssuerWho this screen acts for (its local player; host in single player).
Get Selected Character (GetSelectedCharacter)pureRPG Saga|UI|InventoryURSECharacterData*Get Selected Character
Get Selected Equipment (GetSelectedEquipment)pureRPG Saga|UI|InventoryFRSECharacterEquipmentWhat the selected character wears now (the paperdoll's live preview shows it, D-126).
Get Stat Preview (GetStatPreview)pureRPG Saga|UI|InventoryItem: URSEItemData*
SlotId: FName
TArray<FRSEStatChangeView>The selected character's stats with Item in SlotId (None = its automatic slot); Item null = SlotId emptied.
Get Tooltip (GetTooltip)pureRPG Saga|UI|InventoryItem: URSEItemData*FRSEItemTooltipViewTooltip of Item, compared with the selected character's equipment.
Give Item To (GiveItemTo)functionRPG Saga|UI|InventoryItem: URSEItemData*
MemberIndex: int32
boolGives Item (the whole stack) from the current container to member Index's bag (Give to..., a drop on a portrait).
Move Item (MoveItem)functionRPG Saga|UI|InventoryItem: URSEItemData*
Cell: FIntPoint
boolMoves Item to Cell of the current tab (swaps with a single piece in the way).
Refresh (Refresh)functionRPG Saga|UI|InventoryRebuilds every list from the game.
Select Member (SelectMember)functionRPG Saga|UI|InventoryIndex: int32Select Member
Select Tab (SelectTab)functionRPG Saga|UI|InventoryIndex: int32Select Tab
Send to Stash (SendToStash)functionRPG Saga|UI|InventoryItem: URSEItemData*boolMoves Item (the whole stack) from the current bag into the stash (only where the stash opens).
Set Message (SetMessage)functionRPG Saga|UI|InventoryInMessage: FText (ref)Sets Message (and the host menu's message).
Sort Tab (SortTab)functionRPG Saga|UI|InventoryboolRe-packs the current tab.
Submit (Submit)functionRPG Saga|UI|InventoryCommand: FRSEInventoryCommand (ref)FRSEInventoryCommandOutcomeThe single dispatch point: sends Command for this view-model's player and refreshes.
Take Item (TakeItem)functionRPG Saga|UI|InventoryItem: URSEItemData*boolTakes Item (the whole stack) from the stash or the pending loot into the selected member's bag.
Unequip Slot (UnequipSlot)functionRPG Saga|UI|InventorySlotId: FName
Cell: FIntPoint
boolThe selected character's SlotId goes back to the inventory, at Cell when free ((-1, -1) = anywhere).
Use Item (UseItem)functionRPG Saga|UI|InventoryItem: URSEItemData*boolUses a consumable on the selected character (or the whole party when the item allows only that). Save items open the save screen.
Use Key Item on Target (UseKeyItemOnTarget)functionRPG Saga|UI|InventoryItem: URSEItemData*boolUses a key item on the object the player stands at (through the party menu, D-039).

URSEKeyPromptProvider

Module RSE. RSE Key Prompt Provider

NodeKindCategoryParametersReturnsDescription
Get Key Prompt Icon (GetKeyPromptIcon)overrideRPG Saga|Input|PromptsKeys: TArray<FKey> (ref)
Device: ERSEInputDevice
OutIcon: FRSEKeyPromptIcon (out)
boolAn icon for Keys (one key, or a set shown as one prompt: the D-pad's up / down) on Device. Returns false to show the text key cap. Default: no icon.
Get Key Prompt Label (GetKeyPromptLabel)overrideRPG Saga|Input|PromptsKey: FKey (ref)
LabelStyle: ERSEGamepadLabelStyle
FTextShort label of Key in the gamepad label set LabelStyle (Xbox, PlayStation, Steam Deck). Default: UI Theme -> Key Prompts.

URSELeashPolicy

Module RSE. The co-op leash rules (D-094, D-142): who is leashed, to what, how far, and when it applies.

NodeKindCategoryParametersReturnsDescription
Applies Now (AppliesNow)overrideRPG Saga|Co-op|LeashWorldContext: UObject*boolWhether the leash applies now in WorldContext's world. Default: not during scenes, dialogs, battles, travels.
Get Anchor (GetAnchor)overrideRPG Saga|Co-op|LeashAnchor: ERSELeashAnchor
HostLocation: FVector
bHasHost: bool
PlayerLocations: TArray<FVector> (ref)
FVectorThe anchor point. HostLocation: the host's explorer (when it has one); PlayerLocations: every player's explorer.
Is Leashed (IsLeashed)overrideRPG Saga|Co-op|LeashPlayer: FRSEPlayerId
Anchor: ERSELeashAnchor
boolWhether Player is tied to the anchor. Default: the guests (Host anchor), everyone (Group Center).

URSELeashSubsystem

Module RSE. Keeps the co-op group together (D-094 leash, D-142): on the authority, every Leash Check Interval it measures each leashed player's explorer against the anchor; past the radius the player gets a warning notice (on their machine), and after the grace seconds is brought back beside the anchor.

NodeKindCategoryParametersReturnsDescription
Get Effective Radius (GetEffectiveRadius)pureRPG Saga|Co-op|LeashfloatThe radius on this map (its Co-op Map Settings, else Co-op Flow), or 0 when the leash is off here.

URSELobbyViewModel

Module RSEOnline. The lobby screen's data and actions (D-135): host / find / join / leave / invite, the found sessions, the players and the local character choice.

NodeKindCategoryParametersReturnsDescription
Cycle Character (CycleCharacter)functionRPG Saga|Online|LobbyDirection: int32Picks the previous (-1) or next (+1) selectable character.
Find (Find)functionRPG Saga|Online|LobbySearches for sessions.
Host (Host)functionRPG Saga|Online|LobbyHosts a session with the project's online settings.
Invite (Invite)functionRPG Saga|Online|LobbyOpens the online service's invite overlay.
Join (Join)functionRPG Saga|Online|LobbyResultIndex: int32Joins the session of a row (its Result Index).
Leave (Leave)functionRPG Saga|Online|LobbyLeaves or ends the session.
Select Session (SelectSession)functionRPG Saga|Online|LobbyRowIndex: int32Highlights a session row (mouse hover).

URSELocalPlayerUISubsystem

Module RSE. One local player's UI context (D-134, docs/design/networking.md §3.8): its modal screen stack, whether its world actions are blocked, its HUD groups and the focus of its screens.

NodeKindCategoryParametersReturnsDescription
Close Party Menu (ClosePartyMenu)functionRPG Saga|UI|HostCloses the party menu when it is open.
Close Screen (CloseScreen)functionRPG Saga|UI|ScreensScreen: UObject*Close Screen
Focus Top Screen (FocusTopScreen)pureRPG Saga|UI|ScreensboolGives the focus back to this player's top screen. Returns false when there is none.
Get Fallback UIHost (GetFallbackUIHost)pureRPG Saga|UI|HostUObject*The host set with Set Fallback UI Host, or null.
Get Local Player UI (GetFor)pure, staticRPG Saga|UI|ScreensPlayer: UObject*URSELocalPlayerUISubsystem*The UI context of the local player behind Player (a controller, pawn, widget or local player), or null.
Get Party Menu (GetPartyMenu)functionRPG Saga|UI|HostbCreate: bool = trueURSEPartyMenuViewModel*This player's party menu (made by a standalone host when the player has no UI host and bCreate).
Get Player Controller (GetPlayerController)pureRPG Saga|UI|ScreensAPlayerController*This player's controller in the current world.
Get Screen Presenter (GetScreenPresenter)pureRPG Saga|UI|HostUObject*Get Screen Presenter
Get Top Focusable Screen (GetTopFocusableScreen)pureRPG Saga|UI|ScreensUUserWidget*This player's top focusable screen, or null.
Get UIHost (GetUIHost)functionRPG Saga|UI|HostbCreate: bool = trueUObject*This player's UI host: the one set with Set UI Host, else the player's HUD when it implements IRSEUIHost, else (bCreate) a standalone host made now. Null without a player controller (or without one and !bCreate).
Is Any Screen Open (IsAnyScreenOpen)pureRPG Saga|UI|ScreensboolThis player has a screen open (its own or a shared one).
Is Game Input Blocked (IsGameInputBlocked)pureRPG Saga|UI|ScreensboolThis player's world actions must be ignored now (a screen is open or has just closed).
Is HUDGroup Hidden (IsHUDGroupHidden)pureRPG Saga|UI|ScreensGroup: ERSEHUDGroupboolOne of this player's screens hides Group.
On Screens Changed (OnScreensChanged)eventRPG Saga|UI|ScreensbAnyScreenOpen: boolOne of this player's screens opened or closed (bAnyScreenOpen: for this player).
Open Growth (OpenGrowth)function, staticRPG Saga|UI|HostPlayer: APlayerController*boolOpens Player's progression (the party menu's Growth page), with any HUD class.
Open Inventory (OpenInventory)function, staticRPG Saga|UI|HostPlayer: APlayerController*boolOpens Player's inventory (the party menu's Items page), with any HUD class.
Open Party Menu (Player) (OpenPartyMenu)function, staticRPG Saga|UI|HostPlayer: APlayerController*
Page: ERSEPartyMenuPage
boolOpens Player's party menu on Page, with any HUD class.
Open Party Menu Page (OpenPartyMenuPage)functionRPG Saga|UI|HostPage: ERSEPartyMenuPageboolOpens the party menu on Page (or moves it there). Returns false when it cannot open or the page is not offered.
Open Screen (OpenScreen)functionRPG Saga|UI|ScreensScreen: UObject*
Options: FRSEModalScreenOptions (ref)
Opens Screen on this player's stack (see URSEModalScreenSubsystem::OpenScreenFor).
Set Fallback UIHost (SetFallbackUIHost)functionRPG Saga|UI|HostHost: UObject*D-176: the host used when the player has no explicit host and its HUD is not one (before the standalone host), e.g. the Common UI host (RSECommonUI module). An object implementing IRSEUIHost; null = none.
Set Screen Presenter (SetScreenPresenter)functionRPG Saga|UI|HostPresenter: UObject*D-176: what puts this player's screens on screen (an object implementing IRSEScreenPresenter, e.g. the Common UI host's layer stacks in the RSECommonUI module). Null = the viewport (the screens add themselves).
Set UIHost (SetUIHost)functionRPG Saga|UI|HostHost: UObject*Uses Host (an object implementing IRSEUIHost: a HUD, a controller, a manager) for this player's screens. Null = automatic.

URSELockpickViewModel

Module RSE. The lockpick screen's data and actions (D-109, D-052): a Widget Blueprint may replace the built-in screen.

NodeKindCategoryParametersReturnsDescription
Get Marker (GetMarker)pureRPG Saga|Exploration RPGfloatThe marker's place on the bar (0..1).
Give Up (GiveUp)functionRPG Saga|Exploration RPGGives up (Back): counts as a failure without breaking anything.
Press (Press)functionRPG Saga|Exploration RPGERSELockpickStepThe press (Confirm, a click): sets the pin or counts a miss.

URSELootDistributionRule

Module RSECore. Who receives an item the party gained in the Per Character mode (D-143): chests, battle rewards (boss loot included), quest rewards, shop purchases, pick-ups, the Auto-distribute button.

NodeKindCategoryParametersReturnsDescription
Rank Targets (RankTargets)overrideRPG Saga|Items|LootState: FRSEPartyState (ref)
Query: FRSELootQuery (ref)
OutTargets: TArray<FRSELootTarget> (out)
Ranks where Query's items should go, best first. Default: the members in party order.

URSEMainMenuViewModel

Module RSE. The title screen and main menu (D-026): the game title, an optional "press any key" state and the [Continue] / New Game / Load / Options / Quit entries (Continue and Load depend on the saves, D-010).

NodeKindCategoryParametersReturnsDescription
Back to Title (BackToTitle)functionRPG Saga|UI|MainMenuBack to the title state (when the settings show one).
Choose (Choose)functionRPG Saga|UI|MainMenuChooses the selected entry.
Choose Entry (ChooseEntry)functionRPG Saga|UI|MainMenuIndex: int32Selects an entry and chooses it (a click).
Move Selection (MoveSelection)functionRPG Saga|UI|MainMenuDirection: int32Move Selection
On Fade Changed (OnFadeChanged)eventRPG Saga|UI|MainMenuOpacity: floatThe fade overlay's opacity changed (every frame while a fade runs).
Press Any Key (PressAnyKey)functionRPG Saga|UI|MainMenuLeaves the title state.
Press Any Key From (PressAnyKeyFrom)functionRPG Saga|UI|MainMenuDevice: FInputDeviceIdD-170, "press start": leaves the title state and makes the user of Device the primary user (whose saves are used; Platform -> Select User On Press Start). An invalid device keeps the current user.
Refresh Entries (RefreshEntries)functionRPG Saga|UI|MainMenuRebuilds the entries from the saves (Continue, Load), keeping the cursor on the same action.
Select (Select)functionRPG Saga|UI|MainMenuIndex: int32Select
Set Message (SetMessage)functionRPG Saga|UI|MainMenuInMessage: FText (ref)Set Message

URSEMapBadge

Module RSE. One marker badge (shape, color, glyph) as the maps draw it (D-092): the legend's rows use it.

NodeKindCategoryParametersReturnsDescription
Set Badge (SetBadge)functionRPG Saga|MapInShape: ERSEMapMarkerShape
InColor: FLinearColor
InGlyph: FText (ref)
InOpacity: float = 1.000000
Sets what the badge shows.

URSEMapData

Module RSECore. The area map of one level (D-089): the top-down picture Generate Map made, where it lies in the world, and what the designers added by hand (name, regions, markers, hidden categories).

NodeKindCategoryParametersReturnsDescription
Get Map Id (GetMapId)pureRPG Saga|MapFNameThe id saves use for this map's fog and pins.

URSEMapMarkerComponent

Module RSE, display name RSE Map Marker. Puts its actor on the area map and the minimap (D-089).

NodeKindCategoryParametersReturnsDescription
Set Category (SetCategory)functionRPG Saga|MapInCategory: FGameplayTagSet Category
Set Show Marker (SetShowMarker)functionRPG Saga|MapbShow: boolSet Show Marker

URSEMapMarkerSource

Module RSE. RSEMap Marker Source

NodeKindCategoryParametersReturnsDescription
Should Show Map Marker (ShouldShowMapMarker)overrideRPG Saga|MapboolWhether this actor's marker shows now.

URSEMapStyle

Module RSECore. The look of a generated area map (D-089): what Generate Map does to the top-down picture of the level.

NodeKindCategoryParametersReturnsDescription
Apply Preset (ApplyPreset)functionPresetSets every look parameter below to the values of Preset (materials and pictures are kept).

URSEMapSubsystem

Module RSECore. The saved state of the area maps (D-089): explored areas (fog of war) and player pins, by map id.

NodeKindCategoryParametersReturnsDescription
Add Pin (AddPin)functionRPG Saga|MapMapId: FName
WorldLocation: FVector2D
MaxPins: int32 = 0
Type: FGameplayTag = ()
bReplaceOldest: bool = false
int32Adds a pin of Type at a world X / Y. MaxPins 0 = no limit. When the map has MaxPins pins already, bReplaceOldest removes the oldest one to make room, else the pin is refused. Returns the pin id (0 = refused, or sent to the host by a co-op guest: the pin then arrives with the Map section). The sender is the pin's owner.
Get Explored Fraction (GetExploredFraction)pureRPG Saga|MapMapId: FNamefloatShare of the map explored (0..1).
Get Pins (GetPins)pureRPG Saga|MapMapId: FNameTArray<FRSEMapPin>The pins of a map.
Is Revealed (IsRevealed)pureRPG Saga|MapMapId: FName
UV: FVector2D
boolThe point of the map was explored (false while the map has no fog mask yet).
Move Pin (MovePin)functionRPG Saga|MapPinId: int32
WorldLocation: FVector2D
boolMoves a pin to a world X / Y.
On Changed (OnChanged)eventRPG Saga|MapMapId: FNameFires after the fog or the pins of a map changed.
Remove Pin (RemovePin)functionRPG Saga|MapPinId: int32boolRemove Pin
Reset Fog (ResetFog)functionRPG Saga|MapMapId: FNameForgets what was explored on a map (a command: host only in co-op).
Reveal At (RevealAt)functionRPG Saga|MapMapId: FName
UV: FVector2D
RadiusUV: float
FogSize: int32
boolReveals the map around UV (map coordinates 0..1) within RadiusUV; the mask is made at FogSize cells per side on first use. Returns true when new cells were revealed (OnChanged fires).
Set Pin Type (SetPinType)functionRPG Saga|MapPinId: int32
Type: FGameplayTag
boolChanges a pin's type. Returns false when there is no such pin.

URSEMapView

Module RSE. Draws an area map (D-089): the map picture, fog of war, region names, markers and the player arrow, for any view (center, zoom, rotation), round or square.

NodeKindCategoryParametersReturnsDescription
Local to Map (LocalToMap)pureRPG Saga|MapLocal: FVector2DFVector2DMap coordinates under a point of this widget (local pixels).
Show View Model (ShowViewModel)functionRPG Saga|MapViewModel: URSEMapViewModel*Shows a minimap view-model (its zoom, shape and rotation) or an area map view-model (its view).

URSEMapViewModel

Module RSE. What the map screens show (D-089): the map picture and fog, the player, the markers and the tracked objective.

NodeKindCategoryParametersReturnsDescription
Has Map (HasMap)pureRPG Saga|MapboolA map is loaded for this level.

URSEMapWorldSubsystem

Module RSE. The area map and minimap of a game world (D-089).

NodeKindCategoryParametersReturnsDescription
Can Open Area Map (CanOpenAreaMap)pureRPG Saga|MapboolD-148: the level has a map and the area map may open now (no battle, no scene hiding the maps).
Can Show Quest on Map (CanShowQuestOnMap)pureRPG Saga|MapQuest: URSEQuestData*boolThe quest has an objective with a place this level can show (on it, or the exit toward it).
Close Area Map (CloseAreaMap)functionRPG Saga|MapCloses the area map (the screen, or the party menu shown on its Map tab).
Cycle Minimap Zoom (CycleMinimapZoom)functionRPG Saga|MapNext minimap zoom level.
Get Map Data (GetMapData)pureRPG Saga|MapURSEMapData*The level's map (null while loading or when the level has none).
Get Markers (GetMarkers)pureRPG Saga|MapTArray<FRSEMapMarkerView>Every marker of the world now (filters of the map data and fog applied, player filters not).
Get Objective Location (GetObjectiveLocation)pureRPG Saga|MapOutText: FText (out)
OutLocation: FVector (out)
boolThe tracked quest's current objective with a map target: its text and world location (or the exit toward its level).
Is Area Map Open (IsAreaMapOpen)pureRPG Saga|MapboolThe area map shows now (its screen, or the party menu on the Map tab).
Is Fog Enabled (IsFogEnabled)pureRPG Saga|MapboolFog of war is on for the current map.
Is Minimap Shown (IsMinimapShown)pureRPG Saga|MapboolThe minimap is on screen now (the level has a map, no battle, cutscene or option hides it).
Open Area Map (OpenAreaMap)functionRPG Saga|MapController: APlayerController*boolOpens the area map for Controller. D-148: on the party menu's Map tab (Map & Minimap -> Area Map In Party Menu); the area map screen alone when that is off or the player has no built-in party menu. Returns false when there is no map or it cannot open now.
Open Area Map at Quest (OpenAreaMapAtQuest)functionRPG Saga|MapController: APlayerController*
Quest: URSEQuestData*
boolOpens the area map centered on a quest's objective (journal "Show on map").
Open Journal At (OpenJournalAt)functionRPG Saga|MapController: APlayerController*
Quest: URSEQuestData*
boolCloses the area map and opens the party menu's journal on Quest.
Set Map (SetMap)functionRPG Saga|MapMap: URSEMapData*Uses Map for this world (normally found by level); the texture is loaded if needed. Tests pass a map without a picture.
Set Minimap Info (SetMinimapInfo)functionRPG Saga|MapSource: FName
Text: FText
Extension point of the minimap (D-104): a line shown under it, by source (the clock uses "Clock"; a quest timer, a region's danger level...). Lines show in source name order; an empty Text removes the source's line.
Set Minimap Suppressed (SetMinimapSuppressed)functionRPG Saga|MapReason: FName
bSuppressed: bool
Hides the minimap while any reason is set (cutscenes use "Scene"). Battles and modal screens are handled automatically.

URSEMenuExtension

Module RSE. One entry a module or a project adds to the framework's menus without touching them (D-142; RSEOnline adds Host Game, Join Game and Invite this way).

NodeKindCategoryParametersReturnsDescription
Execute (Execute)overrideRPG Saga|UI|Menu ExtensionPlayer: APlayerController*ERSEMenuFollowUpThe entry was chosen. Returns what the menu does next.
Is Enabled (IsEnabled)overrideRPG Saga|UI|Menu ExtensionPlayer: APlayerController*
OutReason: FText (out)
boolWhether the entry can be chosen now (OutReason: shown beside a disabled entry). Default: yes.
Is Visible (IsVisible)overrideRPG Saga|UI|Menu ExtensionPlayer: APlayerController*boolWhether the entry shows now for Player (null on a title screen without a player). Default: yes.

URSEMenuExtensionSubsystem

Module RSE. The menus' extension entries (D-142, an extension point of RSE's front end and in-game menu).

NodeKindCategoryParametersReturnsDescription
Register (Register)functionRPG Saga|UI|Menu ExtensionExtension: URSEMenuExtension*Adds Extension (replaces one with the same Id).
Unregister (Unregister)functionRPG Saga|UI|Menu ExtensionId: FNameUnregister

URSEMinimapViewModel

Module RSE. The HUD minimap (D-089): zoom levels, shape and rotation from Map & Minimap settings.

NodeKindCategoryParametersReturnsDescription
Cycle Zoom (CycleZoom)functionRPG Saga|MapNext zoom level (wraps).
Get View Rotation (GetViewRotation)pureRPG Saga|MapfloatMap angle drawn up: the player's heading, the camera's, or 0 = north (Rotation Mode).
Get View Span (GetViewSpan)pureRPG Saga|MapfloatVisible map width in map units (1 = the whole map).

URSEModalScreenSubsystem

Module RSE. Knows which modal screens (menus, dialogs, shops, card table, results...) are open, so the always-on HUD never shows through them (docs/design/ui-theme.md, "Ecrane modale").

NodeKindCategoryParametersReturnsDescription
Close Screen (CloseScreen)functionRPG Saga|UI|ScreensScreen: UObject*Close Screen
Is Any Screen Open (IsAnyScreenOpen)pureRPG Saga|UI|ScreensboolAny player has a screen open.
Is Any Screen Open For (IsAnyScreenOpenFor)pureRPG Saga|UI|ScreensPlayer: UObject*boolPlayer (a controller, local player, pawn or widget) has a screen open (its own or a shared one).
Is Game Input Blocked (IsGameInputBlocked)pureRPG Saga|UI|ScreensboolWorld actions (Interact, the menu key) must be ignored now: a screen is open or has just closed (any player).
Is Game Input Blocked For (IsGameInputBlockedFor)pureRPG Saga|UI|ScreensPlayer: UObject*boolPlayer's world actions must be ignored now: one of its screens (or a shared one) is open or has just closed.
Is HUDGroup Hidden (IsHUDGroupHidden)pureRPG Saga|UI|ScreensGroup: ERSEHUDGroupboolAn open screen hides Group (for any player).
Is HUDGroup Hidden For (IsHUDGroupHiddenFor)pureRPG Saga|UI|ScreensGroup: ERSEHUDGroup
Player: UObject*
boolAn open screen of Player hides Group.
Is Input Guarded (IsInputGuarded)pureRPG Saga|UI|ScreensboolA screen closed moments ago (URSEUISettings::ScreenCloseInputGuard), for any player.
Is Input Guarded For (IsInputGuardedFor)pureRPG Saga|UI|ScreensPlayer: UObject*boolIs Input Guarded For
Is Quest Tracker Hidden (IsQuestTrackerHidden)pureRPG Saga|UI|ScreensboolIs Quest Tracker Hidden
Is Quest Tracker Hidden For (IsQuestTrackerHiddenFor)pureRPG Saga|UI|ScreensPlayer: UObject*boolIs Quest Tracker Hidden For
Is Screen Open (IsScreenOpen)pureRPG Saga|UI|ScreensScreen: UObject*boolIs Screen Open
On Screens Changed (OnScreensChanged)eventRPG Saga|UI|ScreensbAnyScreenOpen: boolA screen opened or closed (closing is reported on the next tick, so a screen that opens another does not flicker the HUD).
Open Screen (OpenScreen)functionRPG Saga|UI|ScreensScreen: UObject*
Options: FRSEModalScreenOptions (ref)
Registers Screen as open (again: updates its options) on its owning player's stack.
Open Screen For (OpenScreenFor)functionRPG Saga|UI|ScreensScreen: UObject*
Options: FRSEModalScreenOptions (ref)
Player: UObject*
Registers Screen as open on Player's stack (a controller, local player, pawn or widget of that player); a Player that resolves to no local player puts it on the shared stack (it blocks every player).
Validate Screens (ValidateScreens)functionRPG Saga|UI|Screensint32D-152, the safety net: forgets the registered screens that are not on screen any more (GetLiveness), e.g. a screen widget embedded in a menu that was hidden, or removed from the viewport without closing. Runs by itself when a screen opens or closes and before the first query of each frame; a forgotten screen logs a warning and the HUD comes back. Returns how many screens were forgotten.

URSENPCActivityBehavior

Module RSECore, display name NPC Activity Behavior. A scripted activity (D-173, docs/product/living-npcs.md "Activity behaviours"): what a living NPC does while it stays at its place, beyond an animation.

NodeKindCategoryParametersReturnsDescription
Begin (Begin)overrideRPG Saga|NPCNPC: AActor*
Activity: FRSENPCActivity (ref)
The NPC starts the activity (it arrived at its place). NPC is its actor; get its Living NPC component for walking and animations.
Can Interrupt (CanInterrupt)overrideRPG Saga|NPCNPC: AActor*
Reason: ERSENPCInterruptReason
boolMay the NPC stop now? False = it finishes first (the schedule's change waits; the player's talk waits). Danger is never refused.
End (End)overrideRPG Saga|NPCNPC: AActor*
bInterrupted: bool
The activity ends (a new one starts, a conversation, danger, the NPC sleeps). bInterrupted: it was cut short. Clean up here.
Get Activity (GetActivity)pureRPG Saga|NPCFRSENPCActivityThe activity it runs for (valid between Begin and End).
Get NPC (GetNPC)pureRPG Saga|NPCAActor*The NPC doing it (valid between Begin and End).
Get Run Seconds (GetRunSeconds)pureRPG Saga|NPCfloatSeconds this activity has run (since Begin).
Tick (Tick)overrideRPG Saga|NPCNPC: AActor*
DeltaSeconds: float
Every Tick Interval while the NPC does the activity. DeltaSeconds: since the last call.

URSENPCBehaviorComponent

Module RSE, display name Living NPC. A living NPC (D-104, docs/product/living-npcs.md): put it on an RSE NPC (it has one already) or on any actor or pawn.

NodeKindCategoryParametersReturnsDescription
Begin Talk (BeginTalk)functionRPG Saga|NPCPawn: APawn*Starts a conversation: stops walking and its activity, faces Pawn.
Clear Danger (ClearDanger)functionRPG Saga|NPCThe danger is over: a reacting NPC returns to its schedule after its Return Delay.
End Chat (EndChat)functionRPG Saga|NPCEnds the talk with its partner (both go back to what they did).
End Talk (EndTalk)functionRPG Saga|NPCDelayOverride: float = -1.000000The conversation ended: it goes on after the settings' Resume Delay (DelayOverride >= 0: after that many seconds).
Face Location (FaceLocation)functionRPG Saga|NPCLocation: FVector
bInstant: bool = false
Turns toward a point of the world.
Face Yaw (FaceYaw)functionRPG Saga|NPCYaw: float
bInstant: bool = false
Turns toward a yaw (degrees); bInstant skips the turn.
Get Activity Behavior (GetActivityBehavior)pureRPG Saga|NPCURSENPCActivityBehavior*The scripted activity running now (null = none).
Get Activity Location (GetActivityLocation)pureRPG Saga|NPCOutLocation: FVector (out)
OutRotation: FRotator (out)
boolWhere its current activity happens.
Get Battle Response (GetBattleResponse)pureRPG Saga|NPCERSENPCBattleResponseThe response it chose for the running battle (Ignore when it does not react).
Get Behavior State (GetBehaviorState)pureRPG Saga|NPCERSENPCBehaviorStateGet Behavior State
Get Chat Partner (GetChatPartner)pureRPG Saga|NPCURSENPCBehaviorComponent*Get Chat Partner
Get Crime Phase (GetCrimePhase)pureRPG Saga|NPCERSENPCCrimePhaseThe phase of its crime response (None when it answers nothing).
Get Current Activity (GetCurrentActivity)pureRPG Saga|NPCFRSENPCActivityWhat it does now (its schedule's activity; it may still be walking there).
Get NPCId (GetNPCId)pureRPG Saga|NPCFNameThe id the story knows it by.
Get Place Location (GetPlaceLocation)pureRPG Saga|NPCPlaceId: FName
OutLocation: FVector (out)
OutRotation: FRotator (out)
boolWhere a place is (an NPC Place actor with this id, or any actor tagged with it). Returns false when the level has none.
Is Available (IsAvailable)pureRPG Saga|NPCboolIt is in the level and may be talked to (not away, its activity is interactable).
Is in Idle Action (IsInIdleAction)pureRPG Saga|NPCboolIt does an idle action of its idle life now (a gesture, a stroll, a seat on a bench).
Is Reacting (IsReacting)pureRPG Saga|NPCboolIt reacts to a battle now (fleeing, watching, cowering, helping) or waits to.
Is Walking (IsWalking)pureRPG Saga|NPCboolIt is walking now.
Notify Danger (NotifyDanger)functionRPG Saga|NPCLocation: FVector
Radius: float = 0.000000
A battle began at Location, Radius wide (the area it needs): the NPC decides by its reaction (distance, response) and reacts after its delay. The NPC world subsystem calls it for every NPC when an encounter starts on the live map (and when an NPC wakes during one); levels and Blueprints may call it for their own dangers. Authority only.
On Activity Changed (OnActivityChanged)eventRPG Saga|NPCComponent: URSENPCBehaviorComponent*
Activity: FGameplayTag
The activity changed (the hour, the weather, the story); it may still be walking there.
On Chat (OnChat)eventRPG Saga|NPCComponent: URSENPCBehaviorComponent*
Partner: URSENPCBehaviorComponent*
bStarted: bool
It started or ended a talk with another NPC.
On Crime Response (OnCrimeResponse)eventRPG Saga|NPCComponent: URSENPCBehaviorComponent*
Crime: FGameplayTag
Phase: ERSENPCCrimePhase
A guard's answer to a crime changed phase (warning, chasing, caught, over).
On Idle Custom (OnIdleCustom)eventRPG Saga|NPCComponent: URSENPCBehaviorComponent*
CustomTag: FGameplayTag
An idle behaviour of kind Custom was chosen: play it (Blueprint).
On Reaction (OnReaction)eventRPG Saga|NPCComponent: URSENPCBehaviorComponent*
Response: ERSENPCBattleResponse
bStarted: bool
It began reacting to a battle (Started), or went back to its day.
Play Activity Anim (PlayActivityAnim)functionRPG Saga|NPCAnimActivity: FGameplayTag (ref)Plays the animation of an activity tag (Project Settings -> Living NPCs -> Activity Animations / Idle Slots) while it stands.
Refresh Schedule (RefreshSchedule)functionRPG Saga|NPCbSnap: bool = falseLooks at the schedule again (the clock or the story changed). bSnap: appear at the new place at once (skips, loads).
Report Crime (ReportCrime)functionRPG Saga|NPCCrime: FRSENPCCrime (ref)boolA crime happened: a guard (its reaction has Crime rules) that sees or hears it answers: warns, chases, runs the rule's effects. Returns true when it noticed the crime and answers. Authority only.
Stop Activity Anim (StopActivityAnim)functionRPG Saga|NPCStop Activity Anim
Try Start Chat (TryStartChat)functionRPG Saga|NPCSearchRadius: float = 450.000000
Seconds: float = 12.000000
boolStarts a talk with the nearest free living NPC within SearchRadius: they face each other and trade lines (Bark.Kind.Chat) for Seconds. Returns true when a partner was found.
Wander Step (WanderStep)functionRPG Saga|NPCWalks to a new random point around its place (a wander step), whatever its Movement is.

URSENPCSubsystem

Module RSECore. The living NPCs' story state (D-104, docs/design/exploration.md "NPC-uri vii"): headless, saved (section "NPCs").

NodeKindCategoryParametersReturnsDescription
Clear NPCOverride (ClearNPCOverride)functionRPG Saga|NPCNPCId: FNameThe NPC follows its own schedule again.
Get NPCActivity (GetNPCActivity)pureRPG Saga|NPCNPCId: FNameFGameplayTagThe activity tag of an NPC now (from its schedule and override; empty when unknown).
Get NPCOverride (GetNPCOverride)pureRPG Saga|NPCNPCId: FName
OutOverride: FRSENPCOverride (out)
boolThe NPC's override (false = none).
Is NPCAt Activity (IsNPCAtActivity)pureRPG Saga|NPCNPCId: FName
Activities: FGameplayTagContainer
boolThe NPC does one of Activities now (empty = it is present at all, not away). By schedule, not by where the actor walks.
On NPCOverride Changed (OnNPCOverrideChanged)eventRPG Saga|NPCNPCId: FNameAn NPC's override changed (set, cleared, loaded: NPCId None = all).
Set NPCOverride (SetNPCOverride)functionRPG Saga|NPCNPCId: FName
Override: FRSENPCOverride (ref)
Changes an NPC's day (story): another schedule, or a forced activity. Saved.

URSENPCTalkComponent

Module RSE, display name RSE NPC Talk. Talking NPC behavior for any actor (D-165, docs/product/components.md): add it next to an RSE Interactable component (with a Dialog, an Interaction, or nothing at all) on your own character or actor.

NodeKindCategoryParametersReturnsDescription
Get Last Line (GetLastLine)pureRPG Saga|NPCFTextThe last line it said.
Has Lines (HasLines)pureRPG Saga|NPCboolIt has lines to say.
On Line Said (OnLineSaid)eventRPG Saga|NPCTalker: URSENPCTalkComponent*
Line: FText (ref)
A line was said (Blueprint and level scripting hook).
Request Automatic Line (RequestAutomaticLine)functionRPG Saga|NPCKind: FGameplayTagAsks the bark director (budget, cooldown, silence under dialogs and screens) to let it say an automatic line.
Say Line (SayLine)functionRPG Saga|NPCKind: FGameplayTagboolSays a line of Kind from its pools. Returns false when it has nothing to say now.
Try Bark (TryBark)functionRPG Saga|NPCboolStarts the proximity greeting now (bark dialog, else a line), within its cooldown. Returns true when one was asked for.

URSENPCWorldSubsystem

Module RSE. The living NPCs of a level (D-104): one place that listens to the clock, the weather and the story overrides and tells every NPC to look at its schedule again (hour, phase, weather: walk there; time skip, load: appear there), and one batch timer that puts NPCs far from the player (or long off screen...

NodeKindCategoryParametersReturnsDescription
Clear Raised Danger (ClearRaisedDanger)functionRPG Saga|NPCThe danger raised by RaiseDanger is over: the NPCs go back to their day.
Raise Danger (RaiseDanger)functionRPG Saga|NPCLocation: FVector
Radius: float = 0.000000
A danger at Location (a brawl, a monster in the street, a scripted scare): every NPC within its reaction's Trigger Distance reacts (flee, watch, cower, help). The running battle on the live map raises one by itself. Authority only.
Refresh All (RefreshAll)functionRPG Saga|NPCbSnap: boolEvery living NPC of the level looks at its schedule again.
Report Crime (ReportCrime)functionRPG Saga|NPCCrime: FRSENPCCrime (ref)int32A crime happened: the guards (NPCs whose reaction has Crime rules) that see or hear it answer. During a battle on the map the crime waits for its end (the guards come after the fight). The theft of a pickpocket, an attack on an NPC and the Report Crime effect arrive here by themselves; levels and Blueprints may report their own. Returns how many guards noticed it now.

URSENarrativeSubsystem

Module RSECore. Owns the global narrative state for the game session (survives level changes) and the narrative events the presentation listens to.

NodeKindCategoryParametersReturnsDescription
Can Run Interaction (CanRunInteraction)pureRPG Saga|NarrativeInteraction: URSEInteractionData*boolWhether an Interaction asset would run now (conditions, one-shot state).
Get Flag (GetFlag)pureRPG Saga|NarrativeFlag: FGameplayTagboolRead access for light level scripting (the Narrative library also writes: Set Flag, Set Variable...).
Get Narrative State (GetStateBP)pureRPG Saga|NarrativeFRSENarrativeStateThe whole story state (flags, variables, puzzles, areas, events, discovered places), read-only.
Get Variable (GetVariable)pureRPG Saga|NarrativeVariable: FGameplayTagint32A story variable (0 when never set).
Is Area Unlocked (IsAreaUnlocked)pureRPG Saga|NarrativeArea: FGameplayTagboolWhether a story area is unlocked.
Is Event Seen (IsEventSeen)pureRPG Saga|NarrativeEvent: FGameplayTagboolWhether a scene or event was seen.
Is Puzzle Solved (IsPuzzleSolved)pureRPG Saga|NarrativePuzzle: FGameplayTagboolWhether a puzzle is solved.
On Battle Requested (OnBattleRequested)eventRPG Saga|NarrativeEncounter: TSoftObjectPtr<URSEEncounterData> (ref)A Start Battle effect asked for a battle.
On Dialog Requested (OnDialogRequested)eventRPG Saga|NarrativeAsset: TSoftObjectPtr<UObject> (ref)A Start Dialog effect asked for a dialog.
On Narrative Changed (OnNarrativeChanged)eventRPG Saga|NarrativeKey: FGameplayTagA flag, variable, puzzle, area or event changed value (Key is its tag).
On Party Changed (OnPartyChanged)eventRPG Saga|NarrativeMembers, equipment, inventory, money or vitals were changed by an effect.
On Rest Requested (OnRestRequested)eventRPG Saga|NarrativeThe party rested at an inn (the state is already restored).
On Scene Requested (OnSceneRequested)eventRPG Saga|NarrativeScene: TSoftObjectPtr<UObject> (ref)
Event: FGameplayTag
A Play Scene effect asked for a scene.
On Screen Requested (OnScreenRequested)eventRPG Saga|NarrativeAsset: TSoftObjectPtr<UObject> (ref)An effect asked for the screen of a data asset (shop, code lock, card opponent, tutorial).
On World Requested (OnWorldRequested)eventRPG Saga|NarrativeRequest: FRSEWorldRequest (ref)A battle with context (opening, scene combatants) or an alarm (D-109: Start Battle with an opening, Alert Enemies).
Run Interaction (RunInteraction)functionRPG Saga|NarrativeInteraction: URSEInteractionData*ERSEInteractionResultRuns an interaction against this game instance's state. Null = ConditionsFailed.

URSENavSnapshotCapture

Module RSE. Reads a battle area of the world into a navigation snapshot for Free Tactics (D-091, docs/design/free-tactics.md).

NodeKindCategoryParametersReturnsDescription
Battle to World (BattleToWorld)pure, staticRPG Saga|Free TacticsSnapshot: FRSENavSnapshot (ref)
BattlePoint: FVector (ref)
FVectorWorld position (centimeters) of a battle space point of Snapshot.
Capture Area (CaptureArea)function, staticRPG Saga|Free TacticsWorldContextObject: UObject*
AreaTransform: FTransform (ref)
SizeMeters: FVector2D
IgnoredActors: TArray<AActor*> (ref)
FRSENavSnapshotCaptures the area whose corner is at AreaTransform's origin (its yaw orients it) and whose size is SizeMeters (X, Y), with cells of Free Tactics -> Snapshot Cell Size. Battle space = meters from that corner; the snapshot's WorldTransform maps back. IgnoredActors (the battle's units, for example) are not captured.
World to Battle (WorldToBattle)pure, staticRPG Saga|Free TacticsSnapshot: FRSENavSnapshot (ref)
WorldPoint: FVector (ref)
FVectorBattle space point (meters) of a world position of Snapshot's area.

URSENetPlayerComponent

Module RSENet. One player of a co-op session (D-124 §3.7, D-140), on the player's APlayerState: its session slot (FRSEPlayerId, 0 = the host), the party member it plays and its admission (play, or watch until the battle ends).

NodeKindCategoryParametersReturnsDescription
Get Admission (GetAdmission)pureRPG Saga|Co-opERSEJoinAdmissionGet Admission
Get Character (GetCharacter)pureRPG Saga|Co-opFPrimaryAssetIdThe party member the player plays (the lobby's choice, then what the host gave).
Get Player Id (GetPlayerId)pureRPG Saga|Co-opFRSEPlayerIdThe player's session slot (None until the host set it).

URSENetSubsystem

Module RSENet. The co-op layer of one game instance (D-140, docs/design/networking.md §3, docs/product/coop.md).

NodeKindCategoryParametersReturnsDescription
Get Net Role (GetNetRole)pureRPG Saga|Co-opERSEAuthorityModeStandalone, Authority (host) or Proxy (guest), as set on the RSECore authority subsystem.
Get Stats (GetStats)pureRPG Saga|Co-opFRSENetTrafficStatsWhat the co-op layer sent and received since the session started.
Has Initial State (HasInitialState)pureRPG Saga|Co-opboolGuest: the first complete state from the host has been applied. Host and single player: always true.
Is Coop Active (IsCoopActive)pureRPG Saga|Co-opboolA co-op session runs on this machine (host or guest).
On Peer Command Result (OnPeerCommandResult)eventRPG Saga|Co-opResult: FRSECommandResult (ref)Another player's command result (Broadcast Result Types), on every machine.

URSENightLightComponent

Module RSE, display name Night Light. Turns the lights of its actor on at dusk and off at dawn (D-101): lamps, torches, windows.

NodeKindCategoryParametersReturnsDescription
Clear Forced (ClearForced)functionRPG Saga|TimeClear Forced
Force State (ForceState)functionRPG Saga|TimebOn: boolForces the light on or off for the story (clears with ClearForced).
Get Level (GetLevel)pureRPG Saga|TimefloatOn now (after fade), as last computed.

URSEOptionsViewModel

Module RSE. The options screen (D-038): tabs Game / Audio / Display / Controls.

NodeKindCategoryParametersReturnsDescription
Activate (Activate)functionRPG Saga|UI|OptionsRuns the selected row: an action, or the next value of a choice; Keep / Revert during the video question.
Change Row Value (ChangeRowValue)functionRPG Saga|UI|OptionsIndex: int32
Direction: int32
Changes a row's value by Direction (arrows next to a row).
Change Value (ChangeValue)functionRPG Saga|UI|OptionsDirection: int32Changes the selected row's value by Direction (-1 / +1).
Confirm Video (ConfirmVideo)functionRPG Saga|UI|OptionsbKeep: boolAnswers the video question.
Leave (Leave)functionRPG Saga|UI|OptionsLeaves the screen (display choices not applied are dropped).
Move Selection (MoveSelection)functionRPG Saga|UI|OptionsDirection: int32Move Selection
Select (Select)functionRPG Saga|UI|OptionsIndex: int32Puts the cursor on a row (mouse hover); the video question's options when it is open.
Set Choice (SetChoice)functionRPG Saga|UI|OptionsIndex: int32
Choice: int32
Sets a choice row directly.
Set Page (SetPage)functionRPG Saga|UI|OptionsNewPage: ERSEOptionsPageSet Page
Set Slider Value (SetSliderValue)functionRPG Saga|UI|OptionsIndex: int32
Value: float
bFinal: bool = true
Sets a slider row's value (snapped to its step). bFinal: the drag ended (sound, full refresh).
Switch Page (SwitchPage)functionRPG Saga|UI|OptionsDirection: int32Switch Page

URSEPairedAnimationLibrary

Module RSE. The pairs a project can pick from (D-172): finishers, counters, parries, grabs and phase moments, chosen by their conditions and weights.

NodeKindCategoryParametersReturnsDescription
Select Pair (SelectPair)pureRPG Saga|Paired AnimationsContext: FRSEPairedContext (ref)
Roll: float
URSEPairedAnimationData*A pair that fits Context, weighted; Roll in [0, 1) picks it (deterministic for a given roll). Null when none fits.

URSEPairedAnimationLibraryFunctions

Module RSE. Paired animation nodes (D-172).

NodeKindCategoryParametersReturnsDescription
Compute Pair Alignment (ComputePairAlignment)pure, staticRPG Saga|Paired AnimationsAttacker: FTransform (ref)
Victim: FTransform (ref)
Relative: FRSEPairedRelativeTransform (ref)
Mode: ERSEPairedAlignMode
FRSEPairedAlignmentAlignment of a pair for two transforms (where both stand when the montages start).
Find Pair (FindPair)function, staticRPG Saga|Paired AnimationsContext: FRSEPairedContext (ref)
Roll: float = 0.000000
URSEPairedAnimationData*Finds a pair for Context in the project's libraries (Project Settings -> Paired Animations), weighted by Roll (0..1). Null when none fits.
Get Finisher Frequency (GetFinisherFrequency)pure, staticRPG Saga|Paired AnimationsERSEFinisherFrequencyThe player's finisher setting (Options -> Finishers): Off, Sometimes or Always.
Play Paired Animation (PlayPairedAnimation)function, staticRPG Saga|Paired AnimationsWorldContext: UObject*
Pair: URSEPairedAnimationData*
Attacker: AActor*
Victim: AActor*
bLocalCamera: bool
bVictimFalls: bool
OnFinished: FRSEOnPairedFinished
boolPlays a pair on two actors now (action battles, cutscene moments, boss phase hooks). Call it on the machine that should see it: the killer's, in co-op. bLocalCamera: the cinematic camera and slow motion for this machine's player. On Finished fires when both montages end (at once when nothing could play).
Set Finisher Frequency (SetFinisherFrequency)function, staticRPG Saga|Paired AnimationsFrequency: ERSEFinisherFrequencySets the player's finisher setting (saved in GameUserSettings).
Try Play Finisher (TryPlayFinisher)function, staticRPG Saga|Paired AnimationsWorldContext: UObject*
Attacker: AActor*
Victim: AActor*
Context: FRSEPairedContext (ref)
Roll: float
OnFinished: FRSEOnPairedFinished
boolA finisher for an action battle kill (or stagger): checks Options -> Finishers and the chance, finds a pair and plays it locally. Call it only for the kills of this machine's player. Returns true when a finisher plays.

URSEPaperdollPreview

Module RSE. The picture in the middle of the inventory paperdoll (D-126): the selected party member, live, wearing its equipment.

NodeKindCategoryParametersReturnsDescription
Begin (Begin)overrideRPG Saga|UI|InventoryPlayer: APlayerController*The screen opened for Player (the world the preview may live in).
End (End)overrideRPG Saga|UI|InventoryThe screen closed: release everything.
Get Picture (GetPicture)overrideRPG Saga|UI|InventoryUTexture*The picture to draw now, or null while there is none (loading, no look): the board falls back to the portrait.
Get Yaw (GetYaw)pureRPG Saga|UI|InventoryfloatGet Yaw
Get Zoom (GetZoom)pureRPG Saga|UI|InventoryfloatGet Zoom
Notify Shown (NotifyShown)overrideRPG Saga|UI|InventoryPixelSize: FVector2DThe picture is on screen this frame, drawn at PixelSize (providers capture only while shown).
Project Body Part (ProjectBodyPart)overrideRPG Saga|UI|InventoryBodyPart: FGameplayTag
OutUV: FVector2D (out)
boolWhere a body part (Inventory UI -> Body Anchors, its bones) is in the picture now, 0..1; false = unknown (the anchor's fixed point is used).
Set Yaw (SetYaw)overrideRPG Saga|UI|InventoryInYaw: floatTurns the character (degrees around its vertical axis, 0 = the framing's view).
Set Zoom (SetZoom)overrideRPG Saga|UI|InventoryInZoom: floatZoom (1 = the whole figure; clamped to Inventory UI -> Preview Zoom Range).
Show Character (ShowCharacter)overrideRPG Saga|UI|InventoryCharacter: URSECharacterData*
Equipment: FRSECharacterEquipment (ref)
Shows Character wearing Equipment (called after every change; same values = nothing to do). Null = none.

URSEPartyCommandMenuViewModel

Module RSE. The radial menu's data and actions (D-097, D-052): Widget Blueprints may replace the built-in radial widget.

NodeKindCategoryParametersReturnsDescription
Choose (Choose)functionRPG Saga|Party FieldIndex: int32Carries out an entry (a click, Confirm).

URSEPartyControlSubsystem

Module RSECore. Owner of who controls each party member in the field (D-097, D-124 §3.7, D-133): the host, a guest, or the companion AI.

NodeKindCategoryParametersReturnsDescription
Get Control State (GetControlState)pureRPG Saga|Party|ControlFRSEPartyControlStateWho controls each member.
Get Controlling Player (GetControllingPlayer)pureRPG Saga|Party|ControlMember: FPrimaryAssetIdFRSEPlayerIdThe player who controls Member; None for the companion AI.
Get Leader (GetLeader)pureRPG Saga|Party|ControlPlayer: FRSEPlayerIdFPrimaryAssetIdThe member Player leads; invalid when none.
On Party Control Changed (BP_OnControlChanged)eventRPG Saga|Party|ControlThe control changed (a command applied, a sync, a load).

URSEPartyFieldSubsystem

Module RSE. The visible party in exploration (D-097, docs/design/coop-pvp.md section 2): spawns the party members behind the leader (Project Settings -> Party Field), keeps who controls whom (FRSEPartyControlState: the local player leads, the others have a companion AI), switches the leader, and performs delega...

NodeKindCategoryParametersReturnsDescription
Cycle Leader (CycleLeader)functionRPG Saga|Party FieldStep: int32 = 1boolMakes the next (Step 1) or previous (-1) member the leader: the local player takes its pawn.
Force Idle Now (ForceIdleNow)functionRPG Saga|Party FieldD-129 (dev, tests): every follower starts its idle life at its next think.
Get Leader Pawn (GetLeaderPawn)pureRPG Saga|Party FieldARSEExplorationCharacter*The pawn the local player controls.
Is Command Menu Open (IsCommandMenuOpen)pureRPG Saga|Party FieldboolIs Command Menu Open
On Follower Idle (OnFollowerIdle)eventRPG Saga|Party FieldMember: ARSEExplorationCharacter*
Intent: FRSEIdleIntent (ref)
A resting member started an idle action (Custom behaviours: the game carries them out).
Refresh Followers (RefreshFollowers)functionRPG Saga|Party FieldSpawns or removes the followers to match the party (Party Field settings, the formation). Call after the party changed.
Set Leader (SetLeader)functionRPG Saga|Party FieldMember: URSECharacterData*boolMakes Member's pawn the leader.
Toggle Command Menu (ToggleCommandMenu)functionRPG Saga|Party FieldOpens or closes the radial menu.

URSEPartyMenuViewModel

Module RSE. The party menu (D-024 / D-025, D-039, D-013, D-027 / D-029, D-047, D-038): data of every page and every action that changes the game (use items and abilities, equip, formation, Pacts, quests, key items, help, options, world map).

NodeKindCategoryParametersReturnsDescription
Abandon Quest (AbandonQuest)functionRPG Saga|UI|PartyMenuQuest: URSEQuestData*
bConfirmed: bool
boolAbandons a side quest (bConfirmed false = only asks, when the settings want a confirmation). Returns true when abandoned.
Can Cast Ability (CanCastAbility)functionRPG Saga|UI|PartyMenuCaster: URSECharacterData*
Ability: URSEAbilityData*
boolCan Cast Ability
Can Change Equipment (CanChangeEquipment)pureRPG Saga|UI|PartyMenuMember: URSECharacterData*boolMember's equipment can be changed (guests' cannot).
Can Fight Classic Battles Here (CanFightClassicBattlesHere)pureRPG Saga|UI|PartyMenuboolClassic (ATB / turn-based) battles can start in this level (it has an ATB battle director).
Can Open (CanOpen)pureRPG Saga|UI|PartyMenuboolThe menu may open now (not blocked by a battle).
Can Show Quest on Map (CanShowQuestOnMap)pureRPG Saga|UI|PartyMenuQuest: URSEQuestData*boolQuest has an objective the area map of this level can show.
Can Target Whole Party (CanTargetWholeParty)pure, staticRPG Saga|UI|PartyMenuAbility: URSEAbilityData*boolAbility (for items: the item's use ability) can also target the whole party at once (Target null in UseItem / CastAbility).
Can Use Item (CanUseItem)functionRPG Saga|UI|PartyMenuItem: URSEConsumableData*boolWhether Item can be used from the menu now (message when not). Save items open the save screen.
Cast Ability (CastAbility)functionRPG Saga|UI|PartyMenuCaster: URSECharacterData*
Ability: URSEAbilityData*
Target: URSECharacterData*
boolCasts Ability from Caster on Target (null = the whole party when allowed). Returns true when cast.
Cast Ability on World (CastAbilityOnWorld)functionRPG Saga|UI|PartyMenuCaster: URSECharacterData*
Ability: URSEAbilityData*
boolD-157: casts Ability from Caster on the surroundings (the Cast On World command). Returns true when it was sent.
Close Menu (CloseMenu)functionRPG Saga|UI|PartyMenuCloses the menu (the options screen too).
Combine Items (CombineItems)functionRPG Saga|UI|PartyMenuFirst: URSEItemData*
Second: URSEItemData*
URSEItemData*Tries a combination of two key items (D-039). Returns the new item, or null.
Equip (Equip)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*
SlotId: FName
Item: URSEEquipmentData*
boolEquip
Get Abilities (GetAbilities)pureRPG Saga|UI|PartyMenuMember: URSECharacterData*TArray<FRSEPartyAbilityView>Get Abilities
Get Battle Access (GetBattleAccess)pureRPG Saga|UI|PartyMenuERSEPartyMenuBattleAccessWhat this player's menu may do now (D-128): outside battles Allowed; in a battle UI -> Party Menu In Battle. Per menu (each local player owns one), so co-op screens decide for themselves.
Get Equip Candidates (GetEquipCandidates)pureRPG Saga|UI|PartyMenuMember: URSECharacterData*
SlotId: FName
TArray<FRSEItemView>Inventory items that fit SlotId for Member.
Get Equip Preview (GetEquipPreview)pureRPG Saga|UI|PartyMenuMember: URSECharacterData*
SlotId: FName
Item: URSEEquipmentData*
TArray<FRSEStatChangeView>Member's menu stats now and with Item in SlotId (Item null = the slot emptied; OutCanEquip false when it does not fit).
Get Equipment (GetEquipment)pureRPG Saga|UI|PartyMenuMember: URSECharacterData*TArray<FRSEEquipSlotView>Get Equipment
Get Formation Page Kind (GetFormationPageKind)pureRPG Saga|UI|PartyMenuERSEFormationPageKindWhat the Formation tab is now (UI -> Formation Page; Auto: classic battles where the player is).
Get Items Of Kind (GetItemsOfKind)pureRPG Saga|UI|PartyMenuKind: ERSEItemKindTArray<FRSEItemView>Items of one kind (Items page tabs).
Get Map Page (GetMapPage)pureRPG Saga|UI|PartyMenuURSEAreaMapViewModel*The area map shown by the Map tab (made by the level's map subsystem; null without a map).
Get Member Status (GetMemberStatus)pureRPG Saga|UI|PartyMenuMember: URSECharacterData*FRSEMemberStatusViewOne member as the Status page shows it.
Get Page Label (GetPageLabel)pure, staticRPG Saga|UI|PartyMenuPage: ERSEPartyMenuPageFTextD-148: the page's tab label.
Get Party Order (GetPartyOrder)pureRPG Saga|UI|PartyMenuTArray<FRSEPartyOrderView>The Party page's rows: leader, followers in order with their places, those out of the formation.
Get Quest Map Preview (GetQuestMapPreview)pureRPG Saga|UI|PartyMenuQuest: URSEQuestData*
OutMap: UTexture2D* (out)
OutObjectiveUV: FVector2D (out)
OutPlayerUV: FVector2D (out)
bOutHasPlayer: bool (out)
boolThe mini-map of a quest's current objective: this level's map picture, the objective's map coordinates and the player's. Returns false when the level's map cannot show the quest.
Get Row Effects (GetRowEffects)pure, staticRPG Saga|UI|PartyMenuFRSERowEffectsViewWhat the front and back rows do to melee damage (the battle rules of the game's profile).
Get Selected Member (GetSelectedMember)pureRPG Saga|UI|PartyMenuURSECharacterData*The selected member (the first when none was chosen).
Get Selected Member Index (GetSelectedMemberIndex)pureRPG Saga|UI|PartyMenuint32The selected member's row in Members (the first when none was chosen; INDEX_NONE without members).
Get Start Page (GetStartPage)pureRPG Saga|UI|PartyMenuERSEPartyMenuPageD-148: the page Tab / Esc open on (UI -> Party Menu Start Page, else the first tab shown).
Get Stats (GetStats)pureRPG Saga|UI|PartyMenuMember: URSECharacterData*TArray<FRSEStatChangeView>Member's menu stats now (Current = After).
Get Tab Label (GetTabLabel)pureRPG Saga|UI|PartyMenuPage: ERSEPartyMenuPageFTextD-155: a tab's label as shown now (the Formation tab is "Party" in live-only games).
Get Tab Order (GetTabOrder)pureRPG Saga|UI|PartyMenuTArray<ERSEPartyMenuPage>D-148: the tabs shown now, in order.
Get Targets (GetTargets)pureRPG Saga|UI|PartyMenuCaster: URSECharacterData*
Ability: URSEAbilityData*
TArray<FRSEMemberView>Members an item or ability can be used on now (Caster null for items).
Handle Page Key (HandlePageKey)functionRPG Saga|UI|PartyMenuPage: ERSEPartyMenuPageERSEPartyMenuKeyResultD-148: a page key was pressed (I, J, M, K..., UI -> Party Menu Page Actions): opens the menu on Page, moves to it, or closes the menu when it is already there (Game Flow -> Screen Keys Toggle).
Is in Battle (IsInBattle)pureRPG Saga|UI|PartyMenuboolThis player's party is in a battle now (Free Tactics, Tactics or ATB; D-128).
Is Page Available (IsPageAvailable)pureRPG Saga|UI|PartyMenuPage: ERSEPartyMenuPageboolD-148: the page can be shown now: in the tab order (UI -> Party Menu Tab Order), Growth with a progression system beyond Classic, Map when the level has a map, Equipment unless the grid inventory holds it.
Is Read Only (IsReadOnly)pureRPG Saga|UI|PartyMenuboolLook only: every change is refused (UI -> Party Menu In Battle = View Only during a battle).
Is Sub Screen Open (IsSubScreenOpen)pureRPG Saga|UI|PartyMenuboolThe options screen or a tutorial is open over the menu (the menu waits).
Learn Pact Ability (LearnPactAbility)functionRPG Saga|UI|PartyMenuPact: URSEPactData*
Ability: URSEAbilityData*
boolLearn Pact Ability
Make Leader (MakeLeader)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*boolMakes Member the leader (the explorer the player controls; co-op: asks the host).
Move in Formation (MoveInFormation)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*
Offset: int32
boolMoves Member Offset places in the formation's order (negative = earlier): battle party and follower order.
Open (Open)functionRPG Saga|UI|PartyMenuOpens the menu (remembers the object the player stands at, for "Use on ..."). During a battle only when UI -> Party Menu In Battle allows it (D-128; blocked: Message says why and the menu stays closed).
Open Growth For (OpenGrowthFor)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*boolMoves to the Growth page with Member selected (the Status page's growth button).
Open Journal (OpenJournal)functionRPG Saga|UI|PartyMenuQuest: URSEQuestData*Opens the menu on the journal with Quest selected (the area map's objectives, D-092).
Open on Page (OpenOnPage)functionRPG Saga|UI|PartyMenuPage: ERSEPartyMenuPageboolD-148: opens the menu on Page, or moves the open menu to it. Returns false when the menu cannot open or the page is not offered.
Open Options (OpenOptions)functionRPG Saga|UI|PartyMenuboolOpens the options screen over the menu.
Open World Map (OpenWorldMap)functionRPG Saga|UI|PartyMenuboolOpens the world map (needs the map item when the settings set one).
Read Tutorial (ReadTutorial)functionRPG Saga|UI|PartyMenuTutorial: URSETutorialData*boolReads a seen tutorial again (over the menu).
Refresh (Refresh)functionRPG Saga|UI|PartyMenuRebuilds every list from the game.
Run Menu Extension (RunMenuExtension)functionRPG Saga|UI|PartyMenuId: FNameboolRuns the menu extension row Id of the Options page (D-142: Host Game, Invite, a project's own entries). Returns false when there is no such enabled entry.
Select Member (SelectMember)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*Selects Member on every page with a member list (null = the first member).
Set Message (SetMessage)functionRPG Saga|UI|PartyMenuInMessage: FText (ref)Set Message
Set Page (SetPage)functionRPG Saga|UI|PartyMenuNewPage: ERSEPartyMenuPageSet Page
Should Cast on World (ShouldCastOnWorld)pureRPG Saga|UI|PartyMenuCaster: URSECharacterData*
Ability: URSEAbilityData*
boolD-157: choosing Ability casts it on the surroundings instead of a member: it is usable on the world and either has no party use or something around the leader reacts to it (a torch to light, fog to clear).
Show Blocked Notice (ShowBlockedNotice)functionRPG Saga|UI|PartyMenuTells this player the menu cannot open now (D-128: a toast on their reward feed, and Message).
Show Quest on Map (ShowQuestOnMap)functionRPG Saga|UI|PartyMenuQuest: URSEQuestData*boolCloses the menu and opens the area map on Quest's objective (journal "Show on map", D-092).
Toggle Battle Party (ToggleBattleParty)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*boolMoves Member into / out of the ATB party.
Toggle Pact Binding (TogglePactBinding)functionRPG Saga|UI|PartyMenuPact: URSEPactData*
Member: URSECharacterData*
boolBinds Pact to Member, or unbinds it when Member holds it already.
Toggle Row (ToggleRow)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*boolFront row <-> back row.
Track Quest (TrackQuest)functionRPG Saga|UI|PartyMenuQuest: URSEQuestData*boolTracks Quest (null = stop tracking).
Unequip (Unequip)functionRPG Saga|UI|PartyMenuMember: URSECharacterData*
SlotId: FName
boolUnequip
Use Item (UseItem)functionRPG Saga|UI|PartyMenuItem: URSEConsumableData*
Target: URSECharacterData*
FromBag: URSECharacterData* = None
boolUses a consumable on Target (null = the whole party when the item allows it). Returns true when used.
Use Key Item on Target (UseKeyItemOnTarget)functionRPG Saga|UI|PartyMenuItem: URSEItemData*boolUses a key item on the object the player stands at (the menu closes; the object answers).
Use Save Item (UseSaveItem)functionRPG Saga|UI|PartyMenuItem: URSEConsumableData*boolUses a save-anywhere item (D-010): opens the save screen. Returns true when the screen opened.
Use Status Action (UseStatusAction)functionRPG Saga|UI|PartyMenuAction: FRSEStatusActionView (ref)
Target: URSECharacterData*
boolUses a Status page action on Target (an ability through its caster, an item from the party). Returns true when sent.
Zoom Map (ZoomMap)functionRPG Saga|UI|PartyMenuSteps: floatboolZooms the Map tab's map by Steps (the camera zoom input: wheel, triggers). Returns true when the Map tab is shown.

URSEPartySubsystem

Module RSECore. Owns the player's party state for the whole game session (survives level changes).

NodeKindCategoryParametersReturnsDescription
Get Attribute Registry (GetAttributeRegistry)pureRPG Saga|Party|AttributesURSEAttributeRegistry*Attribute and resource definitions of the game's rules profile.
Get Member Attribute (GetMemberAttribute)pureRPG Saga|Party|AttributesCharacter: URSECharacterData*
Attribute: FGameplayTag
floatFinal attribute of Character at its current level with its current equipment (derived attributes included).
Get Member Resource (GetMemberResource)pureRPG Saga|Party|AttributesCharacter: URSECharacterData*
Resource: FGameplayTag
floatCurrent value of a persistent resource (HP, MP, custom ones marked Persists After Battle).
Get Member Resource Max (GetMemberResourceMax)pureRPG Saga|Party|AttributesCharacter: URSECharacterData*
Resource: FGameplayTag
floatMaximum of a member's resource at its level with its equipment.
Modify Member Resource (ModifyMemberResource)functionRPG Saga|Party|AttributesCharacter: URSECharacterData*
Resource: FGameplayTag
Delta: float
Adds Delta to a resource (see SetMemberResource).
On Ability Learned (OnAbilityLearned)eventRPG Saga|PartyCharacter: URSECharacterData*
Ability: URSEAbilityData*
bLearned: bool
A character of this party learned or forgot an ability for good (Learn Ability / Forget Ability, scrolls; D-082).
On Member Resource Changed (OnMemberResourceChanged)eventRPG Saga|Party|AttributesCharacter: URSECharacterData*
Resource: FGameplayTag
OldValue: float
NewValue: float
A member's resource changed through SetMemberResource / ModifyMemberResource (battles report theirs on URSEBattle::OnResourceChanged).
Set Member Resource (SetMemberResource)functionRPG Saga|Party|AttributesCharacter: URSECharacterData*
Resource: FGameplayTag
Value: float
Sets a resource (clamped to [0, max]); HP 0 marks the member KO, HP above 0 clears KO. Fires OnMemberResourceChanged. Sends the Set Member Resource command (D-137; host only).

URSEPassiveModifier

Module RSECore, display name Passive Modifier. A conditional passive bonus (D-055): while every condition holds (the AI condition classes, e.g.

NodeKindCategoryParametersReturnsDescription
Is Active For (IsActiveFor)overrideRPG Saga|Abilities|PassivesBattle: URSEBattle*
UnitId: int32
boolCustom rule on top of the conditions (Blueprint subclasses). Default: true.

URSEPlatformUserSubsystem

Module RSECore. The platform user layer (D-170, docs/product/platforms.md).

NodeKindCategoryParametersReturnsDescription
Get Connected Input Devices (GetConnectedInputDevices)pureRPG Saga|PlatformUser: FPlatformUserId
OutDevices: TArray<FInputDeviceId> (out)
Input devices of User that are connected now (the platform's mapping).
Get Primary User (GetPrimaryUser)pureRPG Saga|PlatformFPlatformUserIdThe user that plays (and owns the saves).
Get Primary User Index (GetPrimaryUserIndex)pureRPG Saga|Platformint32The primary user's local user index (index-based platform APIs).
Has Selected Primary User (HasSelectedPrimaryUser)pureRPG Saga|PlatformboolThe primary user was picked by a "press start" (false until then, and again after Reset Primary User Selection).
Is App Suspended (IsAppSuspended)pureRPG Saga|PlatformboolThe app is suspended (between Report App Suspended and Report App Resumed).
Is Primary User Signed In (IsPrimaryUserSignedIn)pureRPG Saga|PlatformboolIs Primary User Signed In
Is User Signed In (IsUserSignedIn)pureRPG Saga|PlatformUser: FPlatformUserIdboolUser is signed in (users are signed in unless the platform reported a sign-out).
On App Resumed (BP_OnAppResumed)eventRPG Saga|Platform
On App Suspended (BP_OnAppSuspended)eventRPG Saga|Platform
On Controller Connection Changed (BP_OnControllerConnectionChanged)eventRPG Saga|PlatformUser: FPlatformUserId
Device: FInputDeviceId
bConnected: bool
bPrimaryUser: bool
On Primary User Changed (BP_OnPrimaryUserChanged)eventRPG Saga|PlatformNewUser: FPlatformUserId
On User Login Changed (BP_OnUserLoginChanged)eventRPG Saga|PlatformUser: FPlatformUserId
bSignedIn: bool
bPrimaryUser: bool
Report App Resumed (ReportAppResumed)functionRPG Saga|PlatformThe app is back in the foreground.
Report App Suspended (ReportAppSuspended)functionRPG Saga|PlatformThe app goes to the background (suspend): save writes in flight are flushed (Save -> Suspend Flush Timeout).
Report Controller Connection Changed (ReportControllerConnectionChanged)functionRPG Saga|PlatformUser: FPlatformUserId
Device: FInputDeviceId
bConnected: bool
An input device of User connected or disconnected (IPlatformInputDeviceMapper).
Report User Login Changed (ReportUserLoginChanged)functionRPG Saga|PlatformUser: FPlatformUserId
bSignedIn: bool
A user signed in or out (FCoreDelegates::OnUserLoginChangedEvent, or the buyer's online login flow).
Reset Primary User Selection (ResetPrimaryUserSelection)functionRPG Saga|PlatformBack to the title screen: the next "press start" picks the user again (the current one stays until then).
Select Primary User (SelectPrimaryUser)functionRPG Saga|PlatformUser: FPlatformUserIdboolMakes User the primary user (selected). Returns false for an invalid user.
Select Primary User from Input Device (SelectPrimaryUserFromInputDevice)functionRPG Saga|PlatformDevice: FInputDeviceIdbool"Press start": the user of Device (the platform's device-to-user mapping) becomes the primary user. An invalid device keeps the current user but still counts as the selection. Returns true when the primary user is now set.

URSEPlayerProvider

Module RSE. Lists the players of a world for URSEPlayers (D-134).

NodeKindCategoryParametersReturnsDescription
Get Host Controller (GetHostController)overrideRPG Saga|PlayersWorld: UWorld*APlayerController*The host's controller (slot 0): the player who owns the party leader, counts the random-encounter steps and leads zone travel (D-124 §6). Null on a network client (the host's controller lives on the server).
Get Player Controllers (GetPlayerControllers)overrideRPG Saga|PlayersWorld: UWorld*
OutControllers: TArray<APlayerController*> (out)
Every player controller of World this machine knows, host first.
Get Player Slot (GetPlayerSlot)overrideRPG Saga|PlayersWorld: UWorld*
Controller: APlayerController*
int32The player's slot (0 = host), or -1 when the controller is not a known player.

URSEPlayers

Module RSE. The players registry (D-134, docs/design/networking.md §3.8): the one place RSE asks "who are the players".

NodeKindCategoryParametersReturnsDescription
Get Controller For (GetControllerFor)pure, staticRPG Saga|PlayersWorldContext: UObject*
PlayerId: FRSEPlayerId
APlayerController*The controller of a player id (the instigator of a command), or null.
Get Controller for Slot (GetControllerForSlot)pure, staticRPG Saga|PlayersWorldContext: UObject*
Slot: int32
APlayerController*The controller of a player slot, or null.
Get Host Controller (GetHostController)pure, staticRPG Saga|PlayersWorldContext: UObject*APlayerController*The host's controller (slot 0, owns the party leader). Null on a network client.
Get Host Pawn (GetHostPawn)pure, staticRPG Saga|PlayersWorldContext: UObject*APawn*The host's pawn (the party leader in exploration), or null.
Get Local Player Controllers (GetLocalPlayerControllers)function, staticRPG Saga|PlayersWorldContext: UObject*
OutControllers: TArray<APlayerController*> (out)
The players of this machine (local controllers), in local player order.
Get Nearest Player Pawn (GetNearestPlayerPawn)function, staticRPG Saga|PlayersWorldContext: UObject*
Location: FVector
OutDistance: float (out)
APawn*The player pawn closest to Location (null without players); OutDistance in cm (-1 without players).
Get Pawn For (GetPawnFor)pure, staticRPG Saga|PlayersWorldContext: UObject*
PlayerId: FRSEPlayerId
APawn*The pawn of a player id, or null.
Get Player Controllers (GetPlayerControllers)function, staticRPG Saga|PlayersWorldContext: UObject*
OutControllers: TArray<APlayerController*> (out)
Every player controller this machine knows (server: all players; client: its own), host first.
Get Player Id (GetPlayerId)pure, staticRPG Saga|PlayersController: APlayerController*FRSEPlayerIdThe player id (D-133) of a controller: its slot; None for a controller that is not a player.
Get Player Pawns (GetPlayerPawns)function, staticRPG Saga|PlayersWorldContext: UObject*
OutPawns: TArray<APawn*> (out)
The pawns of every player (players without a pawn are skipped).
Get Player Slot (GetPlayerSlot)pure, staticRPG Saga|PlayersController: APlayerController*int32The player's slot (0 = host), -1 for a controller that is not a player.
Get Primary Local Controller (GetPrimaryLocalController)pure, staticRPG Saga|PlayersWorldContext: UObject*APlayerController*This machine's first local player: for presentation that has no better owner (screens, camera, sounds).
Has Authority (HasAuthority)pure, staticRPG Saga|PlayersWorldContext: UObject*boolThis machine runs the game logic (single-player: always). Logic timers and world-state changes check it.
Is Any Player Within (IsAnyPlayerWithin)pure, staticRPG Saga|PlayersWorldContext: UObject*
Location: FVector
Radius: float
boolSome player's pawn stands within Radius cm of Location.
Is Multiplayer Session (IsMultiplayerSession)pure, staticRPG Saga|PlayersWorldContext: UObject*boolSeveral players share the world: the co-op rules apply (no world pause, no world time dilation, no tutorials).
Is Player Pawn (IsPlayerPawn)pure, staticRPG Saga|PlayersPawn: APawn*boolPawn is controlled by a player (any player, local or remote).
Resolve Player Controller (ResolvePlayerController)pure, staticRPG Saga|PlayersWorldContext: UObject*
Instigator: UObject*
bFallbackToLocal: bool = true
APlayerController*The player behind Instigator: a controller itself, a pawn's controller, a widget's owning player, a local player's controller, an actor's instigator or owner, a component's owner. Falls back to the primary local controller when bFallbackToLocal is set and nothing resolves (presentation that must show somewhere).

URSEPuzzleSubsystem

Module RSECore. The puzzle actions on the authority (D-039, D-138): code attempts and item combinations arrive as commands from any player and are applied here, headless.

NodeKindCategoryParametersReturnsDescription
On Code Lock Outcome (BP_OnCodeLockOutcome)eventRPG Saga|PuzzlesOutcome: FRSECodeLockOutcome (ref)
On Combine Outcome (BP_OnCombineOutcome)eventRPG Saga|PuzzlesOutcome: FRSECombineOutcome (ref)

URSEQuestPresentationSubsystem

Module RSE. Presents the quest system in game worlds (docs/design/quests.md): creates the quest HUD (tracker + toasts) for the first local player and feeds it from FRSEQuestEvents.

NodeKindCategoryParametersReturnsDescription
Is Battle Active (IsBattleActive)pureRSE|QuestsboolA Tactics or ATB battle is running (deployment included).
Set Tracker Suppressed (SetTrackerSuppressed)functionRSE|QuestsReason: FName
bSuppressed: bool
Hides the tracker while any reason is set (e.g. "Dialog", "Cutscene"). Battles are handled automatically.

URSEQuestSubsystem

Module RSECore. Runs quests (D-027, docs/design/quests.md) on top of the narrative state and the shared conditions/effects.

NodeKindCategoryParametersReturnsDescription
Abandon Quest (AbandonQuest)functionRPG Saga|QuestsQuest: URSEQuestData*boolAbandons an active quest that allows it (CanAbandonQuest).
Can Abandon Quest (CanAbandonQuest)pureRPG Saga|QuestsQuest: URSEQuestData*boolActive, bCanAbandon and a side quest (D-029: only side quests can be abandoned).
Can Local Player Abandon Quest (CanLocalPlayerAbandonQuest)pureRPG Saga|QuestsQuest: URSEQuestData*boolCanAbandonQuest, and this machine's player may send Abandon Quest (co-op: host only by default, D-139). For the UI.
Complete Objective (CompleteObjective)functionRPG Saga|QuestsQuest: URSEQuestData*
Objective: FName
boolCompletes an objective of the current stage of an active quest.
Complete Quest (CompleteQuest)functionRPG Saga|QuestsQuest: URSEQuestData*
Outcome: FName = None
boolFinishes an active quest with an outcome (None = default success). A failure outcome fails it.
Confirm Point Of No Return (ConfirmPointOfNoReturn)functionRPG Saga|QuestsboolSets the point-of-no-return flag: at-risk quests fail and the ending locks (if the set says so).
Evaluate Ending (EvaluateEnding)pureRPG Saga|QuestsFGameplayTagThe ending the story leads to now (the locked one after the point of no return, when the set locks it).
Fail Quest (FailQuest)functionRPG Saga|QuestsQuest: URSEQuestData*
Outcome: FName = None
boolFails an active quest (Outcome None = default failure; must be a failure outcome otherwise).
Get Available Quests (GetAvailableQuests)pureRPG Saga|QuestsOutQuests: TArray<URSEQuestData*> (out)Known quests that could be started now.
Get Current Stage (GetCurrentStage)pureRPG Saga|QuestsQuest: URSEQuestData*FNameThe stage an active quest is at (its last stage once finished).
Get Ending Score (GetEndingScore)pureRPG Saga|Questsint32Hidden score variable plus key choices made.
Get Journal (GetJournal)pureRPG Saga|QuestsQuest: URSEQuestData*
OutEntries: TArray<FRSEQuestJournalEntry> (out)
boolJournal entries of the stages entered, then the outcome's.
Get Known Quests (GetKnownQuestsBP)pureRPG Saga|QuestsTArray<URSEQuestData*>Every quest the system knows (registered or started), in evaluation order.
Get Objective Views (GetObjectiveViews)pureRPG Saga|QuestsQuest: URSEQuestData*
OutObjectives: TArray<FRSEQuestObjectiveView> (out)
boolObjectives of the current (or last) stage the player may see: active ones and completed ones; hidden ones once completed.
Get Outcome (GetOutcome)pureRPG Saga|QuestsQuest: URSEQuestData*FNameThe outcome a finished quest ended with (None while it runs).
Get Quest Status (GetQuestStatus)pureRPG Saga|QuestsQuest: URSEQuestData*ERSEQuestStatusStatus of a quest: not started, active, completed, failed, missed or abandoned.
Get Quests (GetQuests)pureRPG Saga|QuestsStatus: ERSEQuestStatus
OutQuests: TArray<URSEQuestData*> (out)
Quests with Status, in start order (finish order for Completed / Failed / Missed). NotStarted = known quests never started.
Get Quests Failing At Point Of No Return (GetQuestsFailingAtPointOfNoReturnBP)pureRPG Saga|QuestsOutQuests: TArray<URSEQuestData*> (out)Active quests that fail at the point of no return (for a custom warning screen).
Get Tracked Quest (GetTrackedQuest)pureRPG Saga|QuestsURSEQuestData*The quest on the HUD tracker, or none.
Is Objective Complete (IsObjectiveComplete)pureRPG Saga|QuestsQuest: URSEQuestData*
Objective: FName
boolWhether an objective of a quest is complete.
Is Point Of No Return Passed (IsPointOfNoReturnPassed)pureRPG Saga|QuestsboolThe story passed its point of no return (the ending may be locked).
Is Quest Available (IsQuestAvailable)pureRPG Saga|QuestsQuest: URSEQuestData*boolNot active or finished and AvailableWhen passes (e.g. show a marker over the giver).
On Ending Changed (OnEndingChanged)eventRPG Saga|QuestsOldEnding: FGameplayTag
NewEnding: FGameplayTag
The ending the story leads to changed (hidden from the player; story tools).
On Objective Updated (OnObjectiveUpdated)eventRPG Saga|QuestsQuest: URSEQuestData*
Objective: FName
An objective completed, or its counter changed.
On Point Of No Return Passed (OnPointOfNoReturnPassed)eventRPG Saga|QuestsThe point of no return was confirmed: at-risk quests failed, the ending locked.
On Point Of No Return Requested (OnPointOfNoReturnRequested)eventRPG Saga|QuestsWarning: FText (ref)
QuestsThatWillFail: TArray<URSEQuestData*> (ref)
Show Warning (and the quests that will fail); call Confirm Point Of No Return on "yes".
On Quest Finished (OnQuestFinished)eventRPG Saga|QuestsQuest: URSEQuestData*
Status: ERSEQuestStatus
Outcome: FName
Completed, Failed, Missed or Abandoned (Outcome None when abandoned or without an outcome).
On Quest Started (OnQuestStarted)eventRPG Saga|QuestsQuest: URSEQuestData*A quest started.
On Stage Changed (OnStageChanged)eventRPG Saga|QuestsQuest: URSEQuestData*
OldStage: FName
NewStage: FName
An active quest moved to another stage.
On Tracked Quest Changed (OnTrackedQuestChanged)eventRPG Saga|QuestsQuest: URSEQuestData*The HUD tracker's quest changed (Quest may be none).
Refresh Quests (RefreshQuests)functionRPG Saga|QuestsRe-evaluates every quest now (objectives, transitions, failures, auto-start, ending).
Request Point Of No Return (RequestPointOfNoReturn)functionRPG Saga|QuestsboolAsks the presentation to confirm the point of no return (OnPointOfNoReturnRequested). False if already passed or not configured.
Set Stage (SetStage)functionRPG Saga|QuestsQuest: URSEQuestData*
Stage: FName
boolMoves an active quest to a stage (scripted advance).
Set Tracked Quest (SetTrackedQuest)functionRPG Saga|QuestsQuest: URSEQuestData*boolQuest on the HUD tracker (null = none). Only active quests can be tracked.
Start Quest (StartQuest)functionRPG Saga|QuestsQuest: URSEQuestData*
bIgnoreAvailability: bool = false
boolStarts a NotStarted or Abandoned quest. Checks AvailableWhen unless bIgnoreAvailability.

URSERPGCameraArm

Module RSE. The spring arm of the RPG cameras (D-113): the tactical exploration camera and the Free Tactics camera.

NodeKindCategoryParametersReturnsDescription
Get Terrain Lift (GetTerrainLift)pureRPG Saga|CamerafloatHow far the camera is lifted over the terrain now (cm; debugging, tests).
Reset Smoothing (ResetSmoothing)functionRPG Saga|CameraForgets the follow lag and the terrain lift (after a cut or a hand-off: no glide from a stale place).

URSEReconnectViewModel

Module RSE. The reconnect screen (D-170): shown while the primary user's controller is disconnected.

NodeKindCategoryParametersReturnsDescription
Continue (Continue)functionRPG Saga|PlatformboolDismisses the screen when allowed (the lifecycle subsystem resumes the game). Returns true when it closed.

URSEResultsViewModel

Module RSE. Victory results (D-030): rewards, member cards and battle statistics.

NodeKindCategoryParametersReturnsDescription
Continue (Continue)functionRPG Saga|UI|ResultsEnds the screen (the battle continues to the world).

URSERewardFeedSubsystem

Module RSE. Presents rewards without a blocking screen (D-128, docs/design/battle-rewards.md).

NodeKindCategoryParametersReturnsDescription
Is Playing (IsPlaying)pureRPG Saga|RewardsboolA feed still shows something.
Present Battle Rewards (PresentBattleRewards)functionRPG Saga|RewardsRewards: FRSEBattleRewards (ref)Shows a battle's rewards as the feed (floating texts and toasts) on every local player's screen.
Push Floater (PushFloater)functionRPG Saga|RewardsFloater: FRSERewardFloater (ref)
Over: AActor*
Delay: float = 0.000000
Floating texts (experience, level up) over Over, for every local player.
Push Toast (PushToast)functionRPG Saga|RewardsToast: FRSERewardToast (ref)
Player: APlayerController* = None
Adds a toast to Player's feed (null = every local player).
Skip (Skip)functionRPG Saga|RewardsHurries every feed off the screen.

URSERewardToastProvider

Module RSE. Makes toasts from a battle's rewards (D-128).

NodeKindCategoryParametersReturnsDescription
Gather Toasts (GatherToasts)overrideRPG Saga|RewardsContext: FRSERewardFeedContext (ref)
OutToasts: TArray<FRSERewardToast> (out)
Adds this provider's toasts for Context.

URSERulesProfile

Module RSECore. A set of gameplay-rule overrides (D-035, docs/design/rules-profiles.md): e.g.

NodeKindCategoryParametersReturnsDescription
Add Section (AddSection)functionRPG Saga|RulesClass: TSubclassOf<URSEDeveloperSettings>URSEDeveloperSettings*Adds an override section of Class, initialised from the global settings (or returns the existing one). Null if Class is not a profile section class. Marks the asset dirty; the caller saves it.
Get Own Section (GetOwnSection)pureRPG Saga|RulesClass: TSubclassOf<URSEDeveloperSettings>URSEDeveloperSettings*This profile's own section of Class, for editing (null if none).
Remove Section (RemoveSection)functionRPG Saga|RulesClass: TSubclassOf<URSEDeveloperSettings>boolRemoves the section of Class. Returns false if there was none. Marks the asset dirty.

URSERulesSubsystem

Module RSECore. The game-level rules resolver (D-035): holds the game's active profile (runtime-switchable, saved by id in the "Rules" section) and resolves the profile of a battle (encounter override -> active profile -> global).

NodeKindCategoryParametersReturnsDescription
Get Active Profile (GetActiveProfile)pureRPG Saga|RulesURSERulesProfile*The game's rules profile: the one set by the story, else the default from the settings. None = the global rules.
Get Active Profile Id (GetActiveProfileId)pureRPG Saga|RulesFPrimaryAssetIdId of the profile set by the story (invalid = the default is used).
On Rules Profile Changed (BP_OnProfileChanged)eventRPG Saga|RulesNewProfile: URSERulesProfile*The game's rules profile changed (story, load, new game).
Resolve for Encounter (ResolveForEncounter)pureRPG Saga|RulesEncounter: URSEEncounterData*URSERulesProfile*The profile a battle of Encounter uses (encounter override -> active profile -> global). Encounter may be none.
Set Active Profile (SetActiveProfile)functionRPG Saga|RulesProfile: URSERulesProfile*Switches the game's rules profile (none = back to the default profile). Running battles keep theirs. Saved. A player's choice (D-139): sends Set Rules Profile, host only in co-op. Game logic (the Set Rules Profile effect, a new game) uses ApplyActiveProfile.

URSESaveFlowSubsystem

Module RSE. The save/load user flow in the world (D-010), on top of RSECore's URSESaveSubsystem: - fills GatherLocation (map, save point id or pawn transform, area name); - load: LoadGame applies the save, then opens its map; the exploration game mode calls ApplyPendingLocation when the player spawns there, whi...

NodeKindCategoryParametersReturnsDescription
Can Save Now (CanSaveNowBP)pureRPG Saga|SaveSource: ERSESaveRequestSource
OutReasons: TArray<FName> (out)
boolWhether a save from Source is allowed now (save blocks, plus no battle running); OutReasons lists why not.
Close Save Screen (CloseSaveScreen)functionRPG Saga|SaveCloses the save screen.
Decode Thumbnail (DecodeThumbnail)function, staticRPG Saga|SaveBytes: TArray<uint8> (ref)UTexture2D*A texture from a save's thumbnail bytes, or null.
Find Continue Slot (FindContinueSlot)pureRPG Saga|SaveOutSlotName: FString (out)boolMost recent loadable slot (Continue). Returns false when there is none.
Get Result Text (GetResultText)pure, staticRPG Saga|SaveResult: ERSESaveResult
bLoading: bool
FTextPlayer-facing text for a save / load result (empty for Ok).
Has Any Save (HasAnySave)pureRPG Saga|SaveboolAt least one loadable save exists (main menu Load / Continue).
Is Save Item (IsSaveItem)pure, staticRPG Saga|SaveItem: URSEItemData*boolItem is the save item (the party menu routes it to UseSaveItem instead of a use ability).
Is Save Screen Open (IsSaveScreenOpen)pureRPG Saga|SaveboolThe save screen is open.
Load Game (LoadGame)functionRPG Saga|SaveSlotName: FString
bDeferTravel: bool = false
ERSESaveResultLoads SlotName (state applied at once, in the game instance) and opens its map. With bDeferTravel the map opens only on TravelToLoadedGame (the main menu fades out first). Loads started elsewhere (URSESaveSubsystem::LoadFromSlot) travel immediately.
Open Save Screen (OpenSaveScreen)functionRPG Saga|SaveRequest: FRSESaveRequest (ref)boolOpens the save screen for Request over the current world.
Save to Slot (SaveToSlot)functionRPG Saga|SaveSlotName: FString
Request: FRSESaveRequest (ref)
ERSESaveResultSaves the current game with the flow's location info. Used by the save screen and dev commands.
Travel to Loaded Game (TravelToLoadedGame)functionRPG Saga|SaveboolOpens the map of the last loaded save. Returns false if nothing is pending.
Use Save Item (UseSaveItem)functionRPG Saga|SaveItem: URSEItemData*ERSESaveResultThe save item was chosen (party menu hook, dev command). Blocked in battles, dialogs, cutscenes and no-save zones; otherwise opens the save screen. The item is removed only after a successful save.
Use Save Point (UseSavePoint)functionRPG Saga|SaveSavePointId: FNameERSESaveResultA save point was used: restores the party (setting), autosaves (setting) and requests a save, which opens the save screen.

URSESaveInteropLibrary

Module RSECore. Save interop (D-165): the state of any RPG Saga Engine save section (narrative flags, dialog, quests, inventory, party, map, time...) as bytes or JSON, so a project that has its own SaveGame can keep our state inside it, and put it back when its game loads.

NodeKindCategoryParametersReturnsDescription
Export Section To Bytes (ExportSectionToBytes)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
SectionId: FName
OutBytes: TArray<uint8> (out)
OutVersion: int32 (out)
boolOne section's current state in its own save format, with its format version. Returns false when no system owns that section.
Export Section To JSON (ExportSectionToJson)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
SectionId: FName
OutJson: FString (out)
boolOne section as JSON (the same text format, one entry).
Export Sections To Bytes (ExportSectionsToBytes)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
SectionIds: TArray<FName> (ref)
OutBytes: TArray<uint8> (out)
int32Several sections in one byte array. SectionIds empty = every section. Returns how many sections were written.
Export Sections To JSON (ExportSectionsToJson)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
SectionIds: TArray<FName> (ref)
OutJson: FString (out)
int32Several sections as a JSON text (data in Base64), for a text based SaveGame, a cloud save or a log. SectionIds empty = every section.
Get Save Section Ids (GetSectionIds)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
OutSectionIds: TArray<FName> (out)
Ids of the save sections the running game has, in load order (Party, Narrative, Quests...). Session-only sections are left out.
Import Section From Bytes (ImportSectionFromBytes)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
SectionId: FName
Bytes: TArray<uint8> (ref)
Version: int32
boolReplaces one section's state with bytes written by Export Section To Bytes. Returns false when the section is unknown or the data cannot be read.
Import Section From JSON (ImportSectionFromJson)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
Json: FString
boolApplies a JSON text that holds a single section. Returns false unless exactly that text applied.
Import Sections From Bytes (ImportSectionsFromBytes)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
Bytes: TArray<uint8> (ref)
OutImported: TArray<FName> (out)
int32Applies a byte array written by Export Sections To Bytes. Returns how many sections were applied; OutImported lists them.
Import Sections From JSON (ImportSectionsFromJson)function, staticRPG Saga|Save|InteropWorldContextObject: UObject*
Json: FString
OutImported: TArray<FName> (out)
int32Applies a text written by Export Sections To JSON. Returns how many sections were applied; OutImported lists them.

URSESaveSessionPolicy

Module RSECore. Who may save and load during a co-op session (D-124 §4, D-139), and what a refused player reads.

NodeKindCategoryParametersReturnsDescription
Can Load (CanLoad)overrideRPG Saga|SaveQuery: FRSESaveSessionQuery (ref)
OutReason: FText (out)
boolWhether this load may happen; false with a reason. Default: not on a guest; the host only with bAllowLoadInSession.
Can Save (CanSave)overrideRPG Saga|SaveQuery: FRSESaveSessionQuery (ref)
OutReason: FText (out)
boolWhether this save may happen; false with a reason the player reads. Default: not on a guest.
On Loaded in Session (OnLoadedInSession)overrideRPG Saga|SaveSlotName: FStringA save was loaded on the host while a session runs (after every system applied it). Default: nothing; RSENet also listens to URSESaveSubsystem::OnLoadedInSession to re-send the state and move everyone to the loaded map.

URSESaveSlotsViewModel

Module RSE. The save / load slot screen (D-010, D-045): one row per slot, autosave first, with thumbnail, area, party, play time, money and date.

NodeKindCategoryParametersReturnsDescription
Answer Overwrite (AnswerOverwrite)functionRPG Saga|UI|SavebYes: boolAnswers the overwrite question.
Choose (Choose)functionRPG Saga|UI|SaveChooses the selected slot (asks first when saving over a save; answers the question when it is open).
Choose Slot (ChooseSlot)functionRPG Saga|UI|SaveIndex: int32Selects a slot and chooses it (a click).
Leave (Leave)functionRPG Saga|UI|SaveLeaves the screen (or the overwrite question).
Move Selection (MoveSelection)functionRPG Saga|UI|SaveDirection: int32Move Selection
Refresh Slots (RefreshSlots)functionRPG Saga|UI|SaveRe-reads the slots, keeping the selected one.
Select (Select)functionRPG Saga|UI|SaveIndex: int32Select

URSESaveSubsystem

Module RSECore. Saves and loads the whole game (D-010).

NodeKindCategoryParametersReturnsDescription
Autosave (Autosave)functionRPG Saga|SaveSavePointId: FNameERSESaveResultWrites to the next autosave slot (called by save points before the slot menu; SavePointId may be None).
Can Save Now (CanSaveNowBP)pureRPG Saga|SaveSource: ERSESaveRequestSource
OutReasons: TArray<FName> (out)
boolWhether a save from Source is allowed now; OutReasons lists the blocks that apply (battle, dialog, no-save zone...).
Delete Slot (DeleteSlot)functionRPG Saga|SaveSlotName: FStringboolDeletes a save slot (its file and backup).
Does Slot Exist (DoesSlotExist)pureRPG Saga|SaveSlotName: FStringboolA save exists in the slot.
Flush Pending Writes (FlushPendingWrites)functionRPG Saga|Save|PlatformTimeoutSeconds: floatboolWaits at most TimeoutSeconds for writes in flight (app suspend). Returns true when nothing is left.
Get Autosave Slot Name (GetAutosaveSlotName)pureRPG Saga|SaveFStringName of the (first) autosave slot.
Get Autosave Slot Names (GetAutosaveSlotNames)pureRPG Saga|SaveOutSlots: TArray<FString> (out)Every autosave slot in rotation order (empty without autosave).
Get Backend Type (GetBackendType)pureRPG Saga|Save|PlatformERSESaveBackendTypeWhich backend the project uses.
Get Last Save Result (GetLastSaveResult)pureRPG Saga|SaveERSESaveResultResult of the last save that finished (async saves: once they complete).
Get Play Time Seconds (GetPlayTimeSeconds)pureRPG Saga|SavedoublePlay time of this game in seconds.
Get Save User (GetSaveUser)pureRPG Saga|Save|PlatformFRSESaveUserWhose saves are read and written: the primary platform user (URSEPlatformUserSubsystem keeps it current).
Get Seconds Since Last Autosave (GetSecondsSinceLastAutosave)pureRPG Saga|SavedoubleSeconds since the last successful autosave in this session (a large value when none).
Get Slot Info (GetSlotInfo)pureRPG Saga|SaveSlotName: FString
OutInfo: FRSESaveSlotInfo (out)
boolMetadata of one slot. Returns false if the slot is empty or unreadable (a damaged slot without a readable backup reports bExists and bCorrupt; one read from its backup reports bFromBackup).
Get Slot Infos (GetSlotInfos)pureRPG Saga|SaveOutInfos: TArray<FRSESaveSlotInfo> (out)Metadata of every manual slot (and the autosave slot first, when enabled), empty slots included.
Get Slot Name (GetSlotName)pureRPG Saga|SaveSlotIndex: int32FStringName of manual save slot N (0-based).
Get State Section Revision (GetSectionRevision)pureRPG Saga|SaveSectionId: FNameint32How many times SectionId changed this session (0 = never).
Get Stored Slot Names (GetStoredSlotNames)pureRPG Saga|Save|PlatformOutSlots: TArray<FString> (out)Every slot the backend stores for the current user (also slots outside the configured slot names).
Is Autosave Slot (IsAutosaveSlot)pureRPG Saga|SaveSlotName: FStringboolSlotName is one of the autosave slots (protected from manual saves).
Is Busy (IsBusy)pureRPG Saga|SaveboolAn asynchronous save or load is running.
Is Play Time Running (IsPlayTimeRunning)pureRPG Saga|SaveboolThe play time clock runs (paused in menus).
Load from Slot (LoadFromSlot)functionRPG Saga|SaveSlotName: FStringERSESaveResultReads and applies a save to every system. In the game prefer Load Game (Save library), which also opens the saved map.
Load from Slot Async (LoadFromSlotAsync)functionRPG Saga|SaveSlotName: FStringERSESaveResultSame as LoadFromSlot with the file read on a worker thread; OnLoaded or OnLoadFailed report the outcome.
Mark State Section Changed (MarkSectionChanged)functionRPG Saga|SaveSectionId: FNameSectionId's state changed: its revision grows now; OnSectionChanged follows once per frame (coalesced).
On Load Failed (BP_OnLoadFailed)eventRPG Saga|SaveSlotName: FString
Result: ERSESaveResult
A load failed (the slot and why).
On Loaded (BP_OnLoaded)eventRPG Saga|SaveSlotName: FStringA save was applied to every system (the saved map opens next).
On Save Failed (BP_OnSaveFailed)eventRPG Saga|SaveSlotName: FString
Result: ERSESaveResult
A save failed: the slot and why (No Space, User Signed Out, Failed). Async saves report when they complete.
On Save Requested (BP_OnSaveRequested)eventRPG Saga|SaveRequest: FRSESaveRequest (ref)A save was requested and is allowed now (the save screen opens).
On Saved (BP_OnSaved)eventRPG Saga|SaveSlotName: FString
bSuccess: bool
A save finished (async saves report later).
On State Section Changed (BP_OnSectionChanged)eventRPG Saga|SaveSectionId: FName
Revision: int32
A state section changed (once per frame per section).
Pick Autosave Slot (PickAutosaveSlot)pureRPG Saga|SaveFStringWhere the next autosave goes: the first empty autosave slot, else the oldest one.
Pop Save Block (PopSaveBlock)functionRPG Saga|SaveReason: FNameLifts one save block pushed with the same reason.
Push Save Block (PushSaveBlock)functionRPG Saga|SaveReason: FName
Scope: ERSESaveBlockScope = All
Blocks saving until the matching Pop. Reasons are counted, so overlapping zones stack.
Request Save (RequestSave)functionRPG Saga|SaveRequest: FRSESaveRequest (ref)ERSESaveResultValidates a request (blocks) and broadcasts OnSaveRequested so the RSE module can show the slot menu.
Reset All for New Game (ResetAllForNewGame)functionRPG Saga|SaveNew game for everything that is saved: every participant resets (IRSESaveParticipant::ResetForNewGame, in registration order) and play time restarts. The single entry point of New Game (D-045).
Save to Slot (SaveToSlot)functionRPG Saga|SaveSlotName: FString
Request: FRSESaveRequest (ref)
ERSESaveResultBuilds and writes a save now, without the save screen. In the game world prefer Save Game (Save library), which also records the location.
Save to Slot Async (SaveToSlotAsync)functionRPG Saga|SaveSlotName: FString
Request: FRSESaveRequest (ref)
ERSESaveResultSame as SaveToSlot, but the file is written on a worker thread. The state is captured immediately.
Set Play Time Running (SetPlayTimeRunning)functionRPG Saga|SavebRunning: boolPauses the clock (main menu, pause menu).
Set Save User (SetSaveUser)functionRPG Saga|Save|PlatformUser: FRSESaveUser (ref)Switches whose saves are used (the platform user layer calls it on user changes and sign-in / sign-out).

URSESceneOverlayViewModel

Module RSE. The overlay of a story scene (D-043): letterbox bars, the skip key hint and the skip confirmation.

NodeKindCategoryParametersReturnsDescription
Answer Skip (AnswerSkip)functionRPG Saga|UI|ScenebSkip: boolAnswers the question.
Request Skip (RequestSkip)functionRPG Saga|UI|SceneAsks to skip (the skip key outside the question).
Select Answer (SelectAnswer)functionRPG Saga|UI|SceneIndex: int32Moves the cursor of the question.

URSEScenePlayerSubsystem

Module RSE. Plays story scenes (D-043, docs/design/scenes.md): URSESceneData assets requested by the Play Scene effect (FRSENarrativeEvents::OnSceneRequested) or directly (PlayScene, the scene trigger, the theater later).

NodeKindCategoryParametersReturnsDescription
Can Local Player Skip (CanLocalPlayerSkip)pureRPG Saga|ScenesboolWhether this machine's player may ask to skip the scene on screen (the host, a voter, anyone, by the rule).
Get Current Scene (GetCurrentScene)pureRPG Saga|ScenesURSESceneData*The scene on screen, or none.
Get Num Pending (GetNumPending)pureRPG Saga|Scenesint32Scenes waiting behind the current one.
Is Scene Playing (IsScenePlaying)pureRPG Saga|ScenesboolA scene is on screen (from its start to the end of the camera return).
On Scene Playing Changed (BP_OnScenePlayingChanged)eventRPG Saga|ScenesbPlaying: boolA scene started (true) or ended, camera back (false). Blueprint.
Play Scene (PlayScene)functionRPG Saga|ScenesScene: URSESceneData*
bReplay: bool = false
boolQueues Scene (plays at once when nothing else runs). Replays run no end effects. Returns false if refused (duplicate, no sequence).
Request Skip (RequestSkip)functionRPG Saga|ScenesboolSkip key: opens the confirmation (or skips at once, see URSESceneSettings::bConfirmSkip). Returns true if handled.
Skip Now (SkipNow)functionRPG Saga|ScenesSkips now: drops the dialogs, jumps to the end, returns the camera.
Submit Skip (SubmitSkip)functionRPG Saga|ScenesboolAsks to skip the scene on screen through the command bus (Skip Scene): the authority's skip policy decides (the host, a vote, anyone) and the skip reaches every machine. Single player: skips at once. Returns whether it was sent or applied.

URSESceneSkipPolicy

Module RSE. Who may skip a story scene in co-op (D-094: the host, or a vote).

NodeKindCategoryParametersReturnsDescription
Decide (Decide)overrideRPG Saga|Scenes|Co-opPlayer: FRSEPlayerId
Scene: URSESceneData*
bMultiplayer: bool
ERSESceneSkipDecisionWhat Player's request to skip Scene does. bMultiplayer: several players share the world.
Get Votes Needed (GetVotesNeeded)overrideRPG Saga|Scenes|Co-opPlayers: int32int32Votes needed to skip with Players players in the session. Default: Co-op Flow -> Scene Skip Vote Share of them (at least 1).

URSEScreenLayout

Module RSE. Base of the screen layouts (D-162 P61, docs/product/ui-styles.md "Layouts"): one class per arrangement of a screen.

NodeKindCategoryParametersReturnsDescription
Arrange (Arrange)overrideRPG Saga|UI LayoutContext: URSEScreenLayoutContext*Places the screen's parts (Context: the parts and the helpers).
Get Layout Name (GetLayoutName)pureRPG Saga|UI LayoutFTextThe name in menus (Display Name, else the class name).

URSEScreenLayoutContext

Module RSE. What a screen hands its layout (D-162 P61): the canvas, the screen's parts by name (built by the screen with the active UI style) and a few helpers to place or group them.

NodeKindCategoryParametersReturnsDescription
Get Canvas (GetCanvas)pureRPG Saga|UI LayoutUCanvasPanel*Get Canvas
Get Canvas Size (GetCanvasSize)pureRPG Saga|UI LayoutFVector2DThe canvas size in layout units (the last drawn size; 1920 x 1080 before the first frame).
Get Margin (GetMargin)pureRPG Saga|UI LayoutfloatThe screen margin (UI -> Screen Margin), in layout units (1080p reference).
Get Part (GetPart)pureRPG Saga|UI LayoutPart: FNameUWidget*The part with this name (null when the screen has none, e.g. a part only some variants use).
Get Part Names (GetPartNames)pureRPG Saga|UI LayoutTArray<FName>Every part name, in stacking order.
Get Safe Insets (GetSafeInsets)pureRPG Saga|UI LayoutFMarginD-180: the safe-area insets every Place helper keeps parts inside (notch, rounded corners, home indicator; zero on PC), in layout units. Full-screen parts ignore them.
Get Screen (GetScreen)pureRPG Saga|UI LayoutURSEHUDWidgetBase*The screen widget being arranged.
Group Parts (GroupParts)functionRPG Saga|UI LayoutGroupName: FName
Parts: TArray<FName> (ref)
bHorizontal: bool
Spacing: float
HAlign: TEnumAsByte<EHorizontalAlignment>
VAlign: TEnumAsByte<EVerticalAlignment>
bFramed: bool = false
FrameKind: ERSEPanelKind = Hud
FillPart: FName = None
UWidget*Puts parts side by side (or one under the other) in a new part GroupName, Spacing apart, optionally in the style's frame of FrameKind. Missing parts are skipped. FillPart (optional) takes the room left in the group (a bar stretched across the screen: the parts after it end at the far edge). Returns the group (place it like any part).
Has Flag (HasFlag)pureRPG Saga|UI LayoutFlag: FNameboolHas Flag
Has Part (HasPart)pureRPG Saga|UI LayoutPart: FNameboolHas Part
Hide Part (HidePart)functionRPG Saga|UI LayoutPart: FNameKeeps a part off screen (the screen still updates it).
Place Part (PlacePart)functionRPG Saga|UI LayoutPart: FName
Anchor: FVector2D
Alignment: FVector2D
Offset: FVector2D
UCanvasPanelSlot*Places a part at a normalized point of the screen (Anchor 0..1), its own point Alignment there, moved by Offset; it keeps its own size. Placing a part again moves it (it keeps its stacking order).
Place Part Fitted (PlacePartFitted)functionRPG Saga|UI LayoutPart: FNameUCanvasPanelSlot*Centers a part at its own size; on a screen too small for it, it shrinks as a whole (menus of a fixed size).
Place Part Full Screen (PlacePartFullScreen)functionRPG Saga|UI LayoutPart: FNameUCanvasPanelSlot*A full-screen part (backdrops, dims).
Place Part Stretched (PlacePartStretched)functionRPG Saga|UI LayoutPart: FName
Anchors: FAnchors
Offsets: FMargin
Alignment: FVector2D
bAutoSize: bool = false
UCanvasPanelSlot*Places a part with anchors that may stretch (Anchors min != max: Offsets are margins from the anchors).

URSEScreenLibrary

Module RSE. Theme, palette, key prompts and UI sounds for Widget Blueprints (D-052).

NodeKindCategoryParametersReturnsDescription
Apply Text Role (ApplyTextRole)function, staticRPG Saga|UI|ThemeText: UTextBlock*
Role: ERSETextRole
Applies a text role (font, shadow, the role's color) to Text.
Apply Text Role Color (ApplyTextRoleColor)function, staticRPG Saga|UI|ThemeText: UTextBlock*
Role: ERSETextRole
Color: FLinearColor
Applies a text role with a palette color.
Fill Member Cards (FillMemberCards)function, staticRPG Saga|UI|ListsPanel: UPanelWidget*
CardClass: TSubclassOf<URSEMemberCardWidget>
Members: TArray<FRSEMemberView> (ref)
Fills Panel with one CardClass card per member (cards already there are reused, extra ones removed). The card Widget Blueprint derives from RSEMemberCardWidget and names its widgets NameText, HPBar... (see there).
Get Action Key Label (GetActionKeyLabel)pure, staticRPG Saga|UI|PromptsPlayer: APlayerController*
Action: UInputAction*
FTextLabel of the key mapped to an Enhanced Input action for the device in use. Player may be null.
Get Generic Action Text (GetGenericActionText)pure, staticRPG Saga|UI|PromptsMenuKey: ERSEMenuKeyFTextGeneric action names of the theme (Confirm, Back, Select, Page, Close).
Get Key Label (GetKeyLabel)pure, staticRPG Saga|UI|PromptsKey: FKeyFTextLabel of a key ("Enter", "A", "✕" in the PlayStation label set).
Get Key Prompt Icon (GetKeyPromptIcon)function, staticRPG Saga|UI|PromptsKey: FKey
Icon: FRSEKeyPromptIcon (out)
boolD-176: the key prompt provider's icon for Key on the device in use (Common UI controller data with the companion plugin). Returns false: show the text label (Get Key Label).
Get Keys Label (GetKeysLabel)pure, staticRPG Saga|UI|PromptsKeys: TArray<FKey> (ref)FTextLabel of the primary key of Keys for the device in use (empty when it has none).
Get Menu Key Label (GetMenuKeyLabel)pure, staticRPG Saga|UI|PromptsMenuKey: ERSEMenuKeyFTextLabel of a generic menu key for the device in use.
Get Panel Brush (GetPanelBrush)pure, staticRPG Saga|UI|ThemeKind: ERSEPanelKindFSlateBrushThe brush of a panel kind (rounded gradient box with the theme's outline).
Get Panel Style (GetPanelStyle)pure, staticRPG Saga|UI|ThemeKind: ERSEPanelKindFRSEUIPanelStyleThe style of a panel kind (colors, padding, corner radius).
Get Row Style (GetRowStyle)pure, staticRPG Saga|UI|ThemeFRSEUIRowStyleThe list row style (selected / active / hover fills, cursor).
Get Spacing (GetSpacing)pure, staticRPG Saga|UI|ThemeStep: ERSEUISpacingfloatA spacing step of the theme.
Get Tag Label (GetTagLabel)pure, staticRPG Saga|UI|ThemeTag: FGameplayTagFTextName of a stat or resource tag for menus (UI -> TagLabels, else the attribute registry's display name).
Get Theme Font (GetThemeFont)pure, staticRPG Saga|UI|ThemeRole: ERSETextRole
SizeOverride: int32 = 0
FSlateFontInfoFont of a text role (UI Theme -> Fonts). SizeOverride > 0 replaces the role's size.
Get Theme Text Color (GetThemeTextColor)pure, staticRPG Saga|UI|ThemeRole: ERSETextRoleFLinearColorDefault color of a text role.
Get UIColor (GetUIColor)pure, staticRPG Saga|UI|ThemeColor: ERSEUIColorFLinearColorA palette color.
Is Using Gamepad (IsUsingGamepad)pure, staticRPG Saga|UI|PromptsboolThe player uses a gamepad now (prompts show gamepad buttons).
Join Menu Entries (JoinMenuEntries)pure, staticRPG Saga|UI|ListsEntries: TArray<FRSEMenuEntryView> (ref)FTextMenu entries as one text, one per line, the selected one marked with the theme's cursor glyph.
Join Text Lines (JoinTextLines)pure, staticRPG Saga|UI|ListsLines: TArray<FRSETextLineView> (ref)FTextLines as one text, one per line ("Text Detail").
Join Texts (JoinTexts)pure, staticRPG Saga|UI|ListsTexts: TArray<FText> (ref)
Separator: FText (ref)
FTextTexts joined with Separator (a line break when empty).
Make Menu Prompt (MakeMenuPrompt)pure, staticRPG Saga|UI|PromptsMenuKey: ERSEMenuKey
Action: FText
FRSEKeyPromptViewA prompt for a menu key (skip it when Key is empty).
Play UISound (PlayUISound)function, staticRPG Saga|UI|SoundWorldContextObject: UObject*
Sound: ERSEUISound
Plays a UI sound (Audio.UI.* in the sound catalog).

URSEScreenPresenter

Module RSE. RSE Screen Presenter

NodeKindCategoryParametersReturnsDescription
Dismiss Screen (DismissScreen)overrideRPG Saga|UI|HostScreen: URSEScreenWidget*Screen presented by this presenter is closing (it leaves its parent right after).
Present Screen (PresentScreen)overrideRPG Saga|UI|HostScreen: URSEScreenWidget*
Player: APlayerController*
ZOrder: int32
boolShows Screen for Player (ZOrder: the screen's viewport order, a hint). Returns false to let the screen add itself to the viewport.

URSEScreenViewModel

Module RSE. The data and the actions of one screen, for the screen's widget (D-052, docs/design/umg-screens.md).

NodeKindCategoryParametersReturnsDescription
Back (Back)overrideRPG Saga|UI|ViewModelboolBack / cancel (Esc, gamepad B). Returns true when the view-model used it.
Close (Close)functionRPG Saga|UI|ViewModelCloses the screen: OnClosed fires once, the host removes the widget.
Confirm (Confirm)overrideRPG Saga|UI|ViewModelboolConfirm / accept (Enter, gamepad A). Returns true when the view-model used it.
Get Owning Player (GetOwningPlayer)pureRPG Saga|UI|ViewModelAPlayerController*Get Owning Player
Get Revision (GetRevision)pureRPG Saga|UI|ViewModelint32Change counter: grows on every NotifyChanged (widgets can skip rebuilds when it did not move).
Is Closed (IsClosed)pureRPG Saga|UI|ViewModelboolThe screen was closed (Close ran). Actions do nothing after it.
Navigate (Navigate)overrideRPG Saga|UI|ViewModelDirection: FIntPointboolCursor movement: X = right, Y = down (one step per press). Returns true when used.
On Changed (OnChanged)eventRPG Saga|UI|ViewModelThe data changed: widgets rebuild what they show.
On Closed (OnClosed)eventRPG Saga|UI|ViewModelThe screen is done (the host removes the widget). Fired once.
Page (Page)overrideRPG Saga|UI|ViewModelDirection: int32boolPrevious (-1) / next (+1) page, tab or category. Returns true when used.
Play UISound (PlayUISound)functionRPG Saga|UI|ViewModelSound: ERSEUISoundPlays a UI sound in the owner's world. Actions play their own feedback (Confirm, Error...), so every screen of the view-model sounds the same; bSilent view-models (tests, previews) play nothing.

URSESeedSource

Module RSECore. The game's source of seeds (D-124 §3.6, D-133): every random roll with an effect on the game draws its seed here instead of FMath::Rand, so a game is reproducible from its world seed (tests, replays) and the host is the only one deciding (co-op).

NodeKindCategoryParametersReturnsDescription
Get Draw Count (GetDrawCount)pureRPG Saga|SeedsStream: FNameint32How many seeds Stream has drawn.
Get World Seed (GetWorldSeed)pureRPG Saga|Seedsint32The game's root seed.
Next Seed (NextSeed)functionRPG Saga|SeedsStream: FNameint32The next seed of Stream (never 0). Use one per random event: a battle, an encounter roll, a match.
Set World Seed (SetWorldSeed)functionRPG Saga|SeedsSeed: int32Starts every stream again from Seed (replays, tests). 0 = a new random world seed.

URSESessionAsyncAction

Module RSEOnline. Latent Blueprint nodes for the session flow (D-135): Host Session, Find Sessions and Join Session with success and failure pins.

NodeKindCategoryParametersReturnsDescription
Find Sessions (Async) (FindSessionsAsync)function, staticRPG Saga|OnlineWorldContextObject: UObject*URSESessionAsyncAction*Searches for sessions. Succeeds with the results (possibly none).
Host Session (Async) (HostSessionAsync)function, staticRPG Saga|OnlineWorldContextObject: UObject*
Params: FRSEHostSessionParams
URSESessionAsyncAction*Hosts a session (Project Settings -> RPG Saga Engine -> Online; Params override some). Succeeds when hosting.
Join Session (Async) (JoinSessionAsync)function, staticRPG Saga|OnlineWorldContextObject: UObject*
ResultIndex: int32
URSESessionAsyncAction*Joins a search result and travels to the host. Succeeds when connected (after the map loaded).
On Failure (OnFailure)eventRPG Saga|OnlineResults: TArray<FRSESessionSearchResult> (ref)
Error: FRSESessionErrorInfo (ref)
The operation failed or was refused; Error says why (its Message is for the player).
On Success (OnSuccess)eventRPG Saga|OnlineResults: TArray<FRSESessionSearchResult> (ref)
Error: FRSESessionErrorInfo (ref)
Hosting, connected, or the search finished. Results: the sessions found (Find only).

URSESessionLibrary

Module RSEOnline. Helpers for session screens.

NodeKindCategoryParametersReturnsDescription
Get Session Error Message (GetSessionErrorMessage)pure, staticRPG Saga|OnlineError: ERSESessionErrorFTextThe player-facing (localized) message of a session error.
Get Session State Text (GetSessionStateText)pure, staticRPG Saga|OnlineState: ERSESessionStateFTextA session state in words ("Hosting", "Searching for sessions...").
Is Session Joinable (IsSessionJoinable)pure, staticRPG Saga|OnlineResult: FRSESessionSearchResult (ref)boolThe result can be joined now (same game version, a free place).

URSESessionProvider

Module RSEOnline. The one interface between the session flow and an online service (D-135).

NodeKindCategoryParametersReturnsDescription
Cancel Find Sessions (CancelFindSessions)overrideRPG Saga|Online|ProviderStop a running search (no answer needed; a late ReportFindComplete is ignored).
Find Sessions (FindSessions)overrideRPG Saga|Online|ProviderRequest: FRSEProviderFindRequest (ref)Search for sessions. Answer: ReportFindComplete.
Get Display Name (GetDisplayName)overrideRPG Saga|Online|ProviderFTextShort name for logs and the lobby screen ("LAN", "Steam").
Get Local Player Name (GetLocalPlayerName)overrideRPG Saga|Online|ProviderFStringThe local player's name on the service (empty = unknown).
Get Local Player Net Id (GetLocalPlayerNetId)overrideRPG Saga|Online|ProviderFStringThe local player's id on the service (string form; empty when unknown).
Host Session (HostSession)overrideRPG Saga|Online|ProviderRequest: FRSEProviderHostRequest (ref)Create and advertise a session. Answer: ReportHostComplete.
Invite Friend (InviteFriend)overrideRPG Saga|Online|ProviderFriendNetId: FStringboolInvite one friend to the current session. Returns false when the invitation could not be sent.
Is Available (IsAvailable)overrideRPG Saga|Online|ProviderOutReason: FString (out)boolThe service can host and find sessions now. OutReason explains why not (logs).
Join Session (JoinSession)overrideRPG Saga|Online|ProviderResultIndex: int32Join the search result ResultIndex (or the accepted invitation's index). Answer: ReportJoinComplete.
Leave Session (LeaveSession)overrideRPG Saga|Online|ProviderLeave (client) or end (host) the session. Answer: ReportLeaveComplete.
Query Friends (QueryFriends)overrideRPG Saga|Online|ProviderRead the friends list. Answer: ReportFriends.
Register Player (RegisterPlayer)overrideRPG Saga|Online|ProviderPlayerNetId: FString
bJoined: bool
Host: a player joined (bJoined) or left the game; services that track members register them. No answer.
Report Connection Lost (ReportConnectionLost)functionRPG Saga|Online|ProviderError: ERSESessionError
Detail: FString
The service lost the session (not the game connection; the engine reports that one).
Report Find Complete (ReportFindComplete)functionRPG Saga|Online|ProviderbSuccess: bool
Results: TArray<FRSESessionSearchResult> (ref)
Error: ERSESessionError
Detail: FString
Report Find Complete
Report Friends (ReportFriends)functionRPG Saga|Online|ProviderFriends: TArray<FRSEFriendInfo> (ref)Report Friends
Report Host Complete (ReportHostComplete)functionRPG Saga|Online|ProviderbSuccess: bool
Error: ERSESessionError
Detail: FString
--- Answers to the manager ---
Report Invite Accepted (ReportInviteAccepted)functionRPG Saga|Online|ProviderResult: FRSESessionSearchResult (ref)The player accepted an invitation (overlay or launch command line); Result is joinable with JoinSession(Result.ResultIndex).
Report Join Complete (ReportJoinComplete)functionRPG Saga|Online|ProviderbSuccess: bool
ConnectAddress: FString
Error: ERSESessionError
Detail: FString
ConnectAddress: what the client travels to (an IP:port, or the service's own address form).
Report Leave Complete (ReportLeaveComplete)functionRPG Saga|Online|ProviderReport Leave Complete
Show Invite UI (ShowInviteUI)overrideRPG Saga|Online|ProviderboolOpen the service's own invite overlay. Returns false when it has none.
Supports Invites (SupportsInvites)overrideRPG Saga|Online|ProviderboolThe service has friends and invitations.
Update Lobby (UpdateLobby)overrideRPG Saga|Online|ProviderLobby: FRSELobbyData (ref)Host: advertise the changed lobby (slots, characters, battle flag). No answer.

URSESessionRulesSubsystem

Module RSECore. Owner of the session's rules of play (D-139).

NodeKindCategoryParametersReturnsDescription
Can Change Rules (CanChangeRules)pureRPG Saga|RulesboolWhether this machine's player may change the session rules now (single player and the host: yes).
Get Rule Value (GetRuleValue)pureRPG Saga|RulesOptionId: FName
OutValue: int32 (out)
boolThe session's value of a rule; false when none was published yet (then the machine's own setting holds).
Is Session Rule (IsSessionRule)pure, staticRPG Saga|RulesOptionId: FNameboolOptionId is a session rule (Rules Profiles -> Co-op -> Session Rule Options).
On Session Rule Changed (BP_OnRuleChanged)eventRPG Saga|RulesOptionId: FName
Value: int32

URSESessionSubsystem

Module RSEOnline. Online sessions for Blueprints and the game (D-135, docs/product/online-sessions.md): Host / Find / Join / Leave, invitations, the lobby (slots, characters, join-in-progress admission) and reconnecting, with the provider chosen in Project Settings -> RPG Saga Engine -> Online.

NodeKindCategoryParametersReturnsDescription
Can Invite (CanInvite)pureRPG Saga|OnlineboolInvitations are possible now (the service has them and a session is running).
Close Lobby Screen (CloseLobbyScreen)functionRPG Saga|OnlineCloses the lobby screen when it is open.
Find Sessions (FindSessions)functionRPG Saga|OnlineboolSearches for sessions. OnSessionsFound brings the results (also when there are none).
Get Last Error (GetLastError)pureRPG Saga|OnlineFRSESessionErrorInfoGet Last Error
Get Lobby (GetLobby)pureRPG Saga|OnlineFRSELobbyDataHost: the live lobby. Client: the lobby the host advertised when it was joined.
Get Local Admission (GetLocalAdmission)pureRPG Saga|OnlineERSEJoinAdmissionGet Local Admission
Get Preferred Character (GetPreferredCharacter)pureRPG Saga|OnlineFPrimaryAssetIdGet Preferred Character
Get Provider Name (GetProviderName)pureRPG Saga|OnlineFTextThe provider's name ("LAN", "Steam").
Get Search Results (GetSearchResults)pureRPG Saga|OnlineTArray<FRSESessionSearchResult>Get Search Results
Get Selectable Characters (GetSelectableCharacters)pureRPG Saga|OnlineTArray<FPrimaryAssetId>The characters players can choose (main party members).
Get Session Role (GetSessionRole)pureRPG Saga|OnlineERSESessionRoleGet Session Role
Get Session State (GetSessionState)pureRPG Saga|OnlineERSESessionState--- State ---
Host Session (HostSession)functionRPG Saga|OnlineParams: FRSEHostSessionParams (ref)boolHosts a session with the settings of Project Settings -> RPG Saga Engine -> Online (Params override some). On success the host listens on the current map (or opens Host Map) and OnStateChanged reports Hosting. Returns false when refused at once (busy, already in a session, service unavailable); OnSessionError tells why.
Invite Friend (InviteFriend)functionRPG Saga|OnlineFriendNetId: FStringboolInvites one friend (its Net Id from the friends list) to the current session.
Is Host (IsHost)pureRPG Saga|OnlineboolThis machine hosts the session.
Is in Session (IsInSession)pureRPG Saga|OnlineboolHosting, connected, or reconnecting to a session.
Is Multiplayer (IsMultiplayer)pureRPG Saga|OnlineboolThe session has more than one connected player (co-op rules apply: no tutorials, encounters in live battles).
Is Using Fallback Provider (IsUsingFallbackProvider)pureRPG Saga|OnlineboolThe chosen provider was unavailable and LAN is used instead (Online -> Fallback To LAN).
Join Session (JoinSession)functionRPG Saga|OnlineResultIndex: int32boolJoins a search result (its Result Index) and travels to the host. OnStateChanged reports Connected on arrival.
Leave Session (LeaveSession)functionRPG Saga|OnlineboolLeaves (client) or ends (host) the session; also cancels a search or a reconnect.
On Friends Received (OnFriendsReceived)eventRPG Saga|OnlineFriends: TArray<FRSEFriendInfo> (ref)
On Invite Accepted (OnInviteAccepted)eventRPG Saga|OnlineInvite: FRSESessionSearchResult (ref)The player accepted an invitation; the subsystem joins it (leaving the current session first).
On Lobby Changed (OnLobbyChanged)eventRPG Saga|OnlineLobby: FRSELobbyData (ref)
On Local Admission Changed (OnLocalAdmissionChanged)eventRPG Saga|OnlineAdmission: ERSEJoinAdmissionClient: the host's admission for this player changed (SetLocalAdmission).
On Player Admission Changed (OnPlayerAdmissionChanged)eventRPG Saga|OnlineSlot: FRSELobbySlot (ref)
Admission: ERSEJoinAdmission
Host: a spectating player may play now (the battle ended). The co-op rules give them their character here.
On Player Joined (OnPlayerJoined)eventRPG Saga|OnlineSlot: FRSELobbySlot (ref)
Admission: ERSEJoinAdmission
Host: a player entered, with their slot and what they may do (play, or spectate until the battle ends).
On Player Left (OnPlayerLeft)eventRPG Saga|OnlineSlot: FRSELobbySlot (ref)Host: a player left (their slot is kept for a reconnect when Online -> Keep Slots For Reconnect is on).
On Session Error (OnSessionError)eventRPG Saga|OnlineError: FRSESessionErrorInfo (ref)
On Sessions Found (OnSessionsFound)eventRPG Saga|OnlineResults: TArray<FRSESessionSearchResult> (ref)
On State Changed (OnStateChanged)eventRPG Saga|OnlineNewState: ERSESessionState
OldState: ERSESessionState
--- Events ---
Open Lobby Screen (OpenLobbyScreen)functionRPG Saga|OnlinePlayer: APlayerController*URSELobbyViewModel*Opens the lobby screen (Online -> Lobby Widget Class, else the built-in screen) for Player.
Query Friends (QueryFriends)functionRPG Saga|OnlineboolReads the friends list. OnFriendsReceived brings it.
Set Battle in Progress (SetBattleInProgress)functionRPG Saga|OnlinebInProgress: boolHost: a battle started or ended. Joiners during a battle follow Online -> Join In Progress Policy; when the battle ends, spectating players get OnPlayerAdmissionChanged (Play). Once called, the game owns the flag; until then it follows the party's battle flag at each join.
Set Host on Next Map (SetHostOnNextMap)functionRPG Saga|OnlinebHost: boolThe next game map this machine opens hosts a session on arrival (the main menu's Host Game, D-142).
Set Local Admission (SetLocalAdmission)functionRPG Saga|OnlineAdmission: ERSEJoinAdmissionClient: what the host allows this player now (the co-op transport sets it from the host's answer).
Set Preferred Character (SetPreferredCharacter)functionRPG Saga|OnlineCharacter: FPrimaryAssetIdboolThe party character the local player wants to play. The host's slot takes it at once (when free); a client sends it when joining and the host gives it when free (else another free character).
Set Slot Character (SetSlotCharacter)functionRPG Saga|OnlineSlotIndex: int32
Character: FPrimaryAssetId
boolHost: gives a lobby slot another character. Returns false when taken or not selectable.
Show Invite UI (ShowInviteUI)functionRPG Saga|OnlineboolOpens the online service's invite overlay (Steam, EOS).
Will Host on Next Map (WillHostOnNextMap)pureRPG Saga|OnlineboolWill Host on Next Map

URSEShopViewModel

Module RSE. The shop (D-042): buy / sell tabs, item categories, the list with prices and stock, the quantity step, the party's money and an equipment comparison per member.

NodeKindCategoryParametersReturnsDescription
Begin Quantity (BeginQuantity)functionRPG Saga|UI|ShopOpens the quantity step for the selected row (or says why it cannot be bought / sold).
Buy (Buy)functionRPG Saga|UI|ShopRowIndex: int32
Count: int32
boolBuys Count of a row of the Buy tab directly. Returns true when bought.
Cancel Quantity (CancelQuantity)functionRPG Saga|UI|ShopCancel Quantity
Confirm Quantity (ConfirmQuantity)functionRPG Saga|UI|ShopBuys / sells Quantity of the selected row.
Get Selected Row (GetSelectedRow)pureRPG Saga|UI|ShopOutRow: FRSEShopRowView (out)boolGet Selected Row
Leave (Leave)functionRPG Saga|UI|ShopLeaves the shop.
Move Selection (MoveSelection)functionRPG Saga|UI|ShopDirection: int32Move Selection
Refresh (Refresh)functionRPG Saga|UI|ShopRebuilds the data from the party and the shop (after outside changes).
Select (Select)functionRPG Saga|UI|ShopIndex: int32Puts the cursor on a row (closes the quantity step).
Sell (Sell)functionRPG Saga|UI|ShopRowIndex: int32
Count: int32
boolSells Count of a row of the Sell tab directly. Returns true when sold.
Set Category (SetCategory)functionRPG Saga|UI|ShopIndex: int32Set Category
Set Mode (SetMode)functionRPG Saga|UI|ShopInMode: ERSEShopMode--- Actions ---
Set Quantity (SetQuantity)functionRPG Saga|UI|ShopInQuantity: int32Set Quantity
Step Category (StepCategory)functionRPG Saga|UI|ShopDirection: int32Step Category
Step Quantity (StepQuantity)functionRPG Saga|UI|ShopDelta: int32Changes the quantity: single steps wrap (1 <-> max), big steps clamp.
Switch Mode (SwitchMode)functionRPG Saga|UI|ShopSwitch Mode

URSESpeakerComponent

Module RSE. Binds an actor to a dialog speaker (dialog-proposal.md 6.6): camera cues frame it, emotes play on it, barks float above it.

NodeKindCategoryParametersReturnsDescription
Get Speaker Tag (GetSpeakerTag)pureRPG Saga|DialogFGameplayTagSpeakerTag, or the Speaker asset's tag.

URSEStatSourceLibrary

Module RSECore. The registered stat sources (D-169).

NodeKindCategoryParametersReturnsDescription
Gather Stats (GatherStats)function, staticRPG Saga|Characters|Stat SourceSpawn: FRSEBattleUnitSpawn (ref)
Battle: URSEBattle*
UnitId: int32
OutStats: FRSEExternalUnitStats (out)
URSEUnitStatSource*The stats the registered sources supply for Spawn (the first source, by Priority, that applies). Used by the battle when it builds a unit; Blueprint may call it to preview. Returns the source used, or null when none applies.
Get Stat Sources (GetStatSources)pure, staticRPG Saga|Characters|Stat SourceTArray<URSEUnitStatSource*>The registered stat sources still alive, highest Priority first.
Has Stat Sources (HasStatSources)pure, staticRPG Saga|Characters|Stat SourceboolWhether any stat source is registered (battles skip the lookup otherwise).
Register Stat Source (RegisterStatSource)function, staticRPG Saga|Characters|Stat SourceSource: URSEUnitStatSource*Adds a stat source for every battle built from now on (until unregistered or destroyed). Registering twice does nothing.
Unregister Stat Source (UnregisterStatSource)function, staticRPG Saga|Characters|Stat SourceSource: URSEUnitStatSource*boolRemoves a stat source. Returns true when it was registered.

URSEStatusBehavior

Module RSECore. What a status does to how its bearer acts (D-167): control effects such as Confuse, Charm and Berserk.

NodeKindCategoryParametersReturnsDescription
Allows Ability (AllowsAbility)overrideRPG Saga|Status BehaviorAbility: URSEAbilityData*boolWhether the unit may still use Ability (abilities and consumables alike; a consumable passes its Use Ability). Default: yes.
Can Target Self (CanTargetSelf)overrideRPG Saga|Status BehaviorboolWhether Redirect Target may send the action back at its own user.
Get Control Team (GetControlTeam)overrideRPG Saga|Status BehaviorBattle: URSEBattle*
UnitId: int32
SourceId: int32
FGameplayTagThe team the unit fights for while the status lasts (Team.*). Empty = its own. SourceId = the unit that applied the status (INDEX_NONE if none).
On Turn Started (OnTurnStarted)overrideRPG Saga|Status BehaviorBattle: URSEBattle*
UnitId: int32
The bearer's turn starts (after its status ticks): custom behaviors may act on the battle here.
Redirect Target (RedirectTarget)overrideRPG Saga|Status BehaviorBattle: URSEBattle*
UnitId: int32
Ability: URSEAbilityData*
TargetId: int32
Candidates: TArray<int32> (ref)
int32Where a single-target action of the unit really goes. Candidates = the units the action could reach in this battle mode (any side, the user excluded unless Self Allowed). Return TargetId to keep it. Use the battle's Roll Int / Roll Percent.
Redirects Targets (RedirectsTargets)overrideRPG Saga|Status BehaviorboolWhether this behavior ever redirects targets (the battle skips building candidates otherwise).

URSEStealthAmbushSubsystem

Module RSE. Stealth ambushes on the live map (D-151): the detection shapes on the ground (ARSEStealthOverlay, local), the takedown and ambush prompts, the Strike and Place keys, the takedowns, placing the members before an ambush, the alarm during the ambush battle and the return to stealth after a silent one.

NodeKindCategoryParametersReturnsDescription
Is Placed (IsPlaced)pureRPG Saga|StealthPawn: APawn*boolWhether Pawn holds a spot for an ambush.
Request Place (RequestPlace)functionRPG Saga|StealthPawn: APawn*boolThe player's Place (input, scripts): sneaking = hold this spot and take the next member; else regroup.
Request Strike (RequestStrike)functionRPG Saga|StealthPawn: APawn*boolThe player's Strike (input, scripts): sends the Stealth Strike command for Pawn. Returns true when sent or applied.
Was Last Battle Silent (WasLastBattleSilent)pureRPG Saga|StealthboolThe last battle ended silently (the party went back to sneaking).

URSEStealthRules

Module RSECore. D-151: the stealth rules a game may change (Stealth -> Rules Class): takedowns, the noise of battle actions, who answers an alarm, the return to stealth.

NodeKindCategoryParametersReturnsDescription
Answers Alarm (AnswersAlarm)overrideRPG Saga|StealthSource: FVector (ref)
Radius: float
Listener: FRSEAlarmListener (ref)
boolWhether Listener answers an alarm from Source reaching Radius. Default: inside the radius and able to answer.
Evaluate Takedown (EvaluateTakedown)overrideRPG Saga|StealthInput: FRSETakedownInput (ref)FRSETakedownResultHow a takedown goes. Default: RSETakedown::Evaluate.
Get Action Noise Radius (GetActionNoiseRadius)overrideRPG Saga|StealthAbility: URSEAbilityData*
bUserIsSilent: bool
floatHow far an action is heard in an ambush battle (cm; 0 = silent). Default: RSEAmbush::GetActionNoiseRadius.
Should Return to Stealth (ShouldReturnToStealth)overrideRPG Saga|StealthTracker: FRSEAmbushTracker (ref)
Outcome: ERSEBattleOutcome
bAnyOutsideAware: bool
boolWhether the party goes back to sneaking after the battle. Default: RSEAmbush::ShouldReturnToStealth.

URSETacticsHUDViewModel

Module RSE. The Tactics battle HUD (D-021, D-052): turn order and objective, active unit panel, command menu, attack forecast (D-033), path cost label, deployment panel and start confirmation (D-018), log, banner, key prompts.

NodeKindCategoryParametersReturnsDescription
Answer Start Confirm (AnswerStartConfirm)functionRPG Saga|UI|Battle HUDbStart: boolAnswers the start confirmation (true = start now).
Choose Command (ChooseCommand)functionRPG Saga|UI|Battle HUDIndex: int32Runs command Index (like pressing Confirm on it).
Hover Command (HoverCommand)functionRPG Saga|UI|Battle HUDIndex: int32Moves the command cursor (mouse hover).
Hover Start Confirm (HoverStartConfirm)functionRPG Saga|UI|Battle HUDChoice: int32Hover Start Confirm
Run Deploy Action (RunDeployAction)functionRPG Saga|UI|Battle HUDAction: ERSEDeployActionRun Deploy Action
Select Roster Entry (SelectRosterEntry)functionRPG Saga|UI|Battle HUDIndex: int32Select Roster Entry

URSETacticsInputHost

Module RSE. RSE Tactics Input Host

NodeKindCategoryParametersReturnsDescription
Get Host ATBCommands (GetHostATBCommands)overrideRPG Saga|BattleURSEATBCommandComponent*The classic (ATB) battle commands of this controller (null = none).
Get Host Target Preview (GetHostTargetPreview)overrideRPG Saga|BattleARSETargetPreview*The target preview actor (rings and areas under the units), or null.
Get Tactics Director (GetTacticsDirector)overrideRPG Saga|BattleARSETacticsBattleDirector*The Tactics battle this controller plays now (null = none).
Is Host Party Menu Open (IsHostPartyMenuOpen)overrideRPG Saga|BattleboolThe party menu is open and reads this controller's (forwarded) input.
Reset Host for New Encounter (ResetHostForNewEncounter)overrideRPG Saga|BattleA retried battle starts over: drop the selection, the previews and the menus.
Set Tactics Director (SetTacticsDirector)overrideRPG Saga|BattleDirector: ARSETacticsBattleDirector*boolSwitches to Director's Tactics battle. Returns false while another battle of this controller still runs.

URSETeacherViewModel

Module RSE. The teacher screen (D-144): the lessons (price, requirements), who may learn the selected one, a respec row when the teacher offers it, a Yes / No before paying.

NodeKindCategoryParametersReturnsDescription
Cancel Pending (CancelPending)functionRPG Saga|UI|GrowthCancel Pending
Confirm Pending (ConfirmPending)functionRPG Saga|UI|GrowthboolConfirm Pending
Get Row Count (GetRowCount)pureRPG Saga|UI|Growthint32Get Row Count
Get Teacher (GetTeacher)pureRPG Saga|UI|GrowthURSETeacherData*Get Teacher
Is Respec Row (IsRespecRow)pureRPG Saga|UI|GrowthboolThe respec row is under the cursor.
Refresh (Refresh)functionRPG Saga|UI|GrowthRefresh
Request Learn (RequestLearn)functionRPG Saga|UI|GrowthboolAsks Yes / No for the selected lesson (or respec) for the selected learner.
Select Learner (SelectLearner)functionRPG Saga|UI|GrowthIndex: int32Select Learner
Select Row (SelectRow)functionRPG Saga|UI|GrowthRow: int32Select Row

URSETimeControlSubsystem

Module RSE. The only place that pauses the world or changes its time dilation (D-134).

NodeKindCategoryParametersReturnsDescription
Are Tutorials Allowed (AreTutorialsAllowed)pureRPG Saga|Players|TimeboolTutorial screens may show now (the policy).
Get Requested Time Dilation (GetRequestedTimeDilation)pureRPG Saga|Players|TimefloatThe dilation the requests ask for now (1 without requests).
Is Dilation Held By (IsDilationHeldBy)pureRPG Saga|Players|TimeRequester: UObject*boolIs Dilation Held By
Is Pause Held By (IsPauseHeldBy)pureRPG Saga|Players|TimeRequester: UObject*boolIs Pause Held By
Release Pause (ReleasePause)functionRPG Saga|Players|TimeRequester: UObject*Drops Requester's pause; the world unpauses when no holder is left.
Release Time Dilation (ReleaseTimeDilation)functionRPG Saga|Players|TimeRequester: UObject*Drops Requester's dilation request.
Request Pause (RequestPause)functionRPG Saga|Players|TimeRequester: UObject*
ForPlayer: APlayerController* = None
boolPauses the world for Requester (ForPlayer: whose screen asks, for the policy). Returns true when Requester now holds the pause; false when the policy refuses or the world was already paused by someone else (then nothing to release).
Request Time Dilation (RequestTimeDilation)functionRPG Saga|Players|TimeRequester: UObject*
Dilation: float
boolSets Requester's world time dilation (clamped to 0.0001..1; the smallest request wins). Returns false when the policy refuses (nothing changes: dilate your own actors with CustomTimeDilation instead, or skip the effect).

URSETimePolicy

Module RSE. Decides who may stop or slow the whole world (D-134, docs/design/networking.md §3.9).

NodeKindCategoryParametersReturnsDescription
Apply World Pause (ApplyWorldPause)overrideRPG Saga|Players|TimeWorld: UWorld*
bPaused: bool
boolPauses or unpauses the world once the request is allowed (default: the engine's game pause). Returns true on success.
Are Tutorials Allowed (AreTutorialsAllowed)overrideRPG Saga|Players|TimeWorld: UWorld*boolMay tutorial screens show at all?
Can Dilate World (CanDilateWorld)overrideRPG Saga|Players|TimeWorld: UWorld*
Requester: UObject*
boolMay Requester (hit-stop, block slow motion, the live battle's entry slow motion) change the world's time dilation?
Can Pause World (CanPauseWorld)overrideRPG Saga|Players|TimeWorld: UWorld*
Requester: UObject*
ForPlayer: APlayerController*
boolMay Requester (a tutorial screen, a pause menu) pause the whole world for ForPlayer?
Is World Paused (IsWorldPaused)overrideRPG Saga|Players|TimeWorld: UWorld*boolThe world is paused now (default: the engine's game pause).

URSETimeSubsystem

Module RSECore. The game clock and the weather (D-101, docs/design/time-weather.md).

NodeKindCategoryParametersReturnsDescription
Advance Time (AdvanceTime)functionRPG Saga|TimeHours: floatMoves the clock forward by Hours at once (a wait, a journey).
Get Behavior Modifiers (GetBehaviorModifiers)pureRPG Saga|TimeEnemyTags: FGameplayTagContainer (ref)FRSETimeBehaviorModifiersMultipliers for a roaming enemy now (Time & Weather Rules of the game's rules profile): every rule whose phases, weather and target tags match multiplies in. EnemyTags: the enemy's tags (character / behavior), for rules that target some enemies only. The roaming code multiplies its detection, chase and density by these.
Get Clock Pause Reasons (GetClockPauseReasons)pureRPG Saga|TimeTArray<FName>Why the clock is not moving (empty = it is): Stopped, Disabled, Battle, Dialog, Cutscene, PlayTime, Level, or pushed reasons.
Get Day (GetDay)pureRPG Saga|Timeint32--- Clock: queries ---
Get Day Text (GetDayText)pureRPG Saga|TimeFText"Day 3" in the settings' format.
Get Environment Tags (GetEnvironmentTags)pureRPG Saga|TimeFGameplayTagContainerPhase of day + weather, as tags (battles take these as their environment).
Get Game Hours Per Real Second (GetGameHoursPerRealSecond)pureRPG Saga|TimefloatGame hours per real second at the current speed.
Get Game Time (GetGameTime)pureRPG Saga|TimeFRSEGameTimeGet Game Time
Get Hour (GetHour)pureRPG Saga|TimefloatHour of the day with fractions (13.5 = 13:30).
Get Hour and Minute (GetHourAndMinute)pureRPG Saga|TimeHour: int32 (out)
Minute: int32 (out)
The whole hour (0..23) and the minute (0..59).
Get Phase (GetPhase)pureRPG Saga|TimeFGameplayTagThe phase of the day now (Time.Phase.Dawn / Day / Dusk / Night, or the project's own).
Get Phase Display Name (GetPhaseDisplayName)pureRPG Saga|TimeFTextThe phase's name from the settings.
Get Previous Weather (GetPreviousWeather)pureRPG Saga|WeatherFGameplayTagThe weather fading out during a transition (empty when settled).
Get Season (GetSeason)pureRPG Saga|TimeFGameplayTagThe season now (empty without seasons).
Get Time Scale (GetTimeScale)pureRPG Saga|TimefloatThe story's clock speed (1 = normal).
Get Time Text (GetTimeText)pureRPG Saga|TimeFText"14:05" (or "2:05 PM") in the settings' format.
Get Weather (GetWeather)pureRPG Saga|WeatherFGameplayTagThe weather now (during a transition, the incoming one).
Get Weather Blend (GetWeatherBlend)pureRPG Saga|WeatherfloatTransition progress: 0 = all the previous weather, 1 = settled.
Get Weather Display Name (GetWeatherDisplayName)pureRPG Saga|WeatherFTextThe weather's name (its type's Display Name).
Get Weather Table (GetWeatherTable)pureRPG Saga|WeatherURSEWeatherTableData*Get Weather Table
Get Weather Type (GetWeatherType)pureRPG Saga|WeatherWeather: FGameplayTagURSEWeatherTypeData*The type data of a weather tag (null = not listed in the Weather settings).
Is Clock Running (IsClockRunning)pureRPG Saga|TimeboolThe clock is moving now (enabled, not stopped by the story, not paused by a battle, dialog, scene, menu or level).
Is Phase (IsPhase)pureRPG Saga|TimePhase: FGameplayTagboolThe phase is Phase (or a child of it).
Is Weather (IsWeather)pureRPG Saga|WeatherWeather: FGameplayTagboolThe weather is Weather or a kind of it (Weather.Rain holds in a storm).
Is Weather Locked (IsWeatherLocked)pureRPG Saga|WeatherboolIs Weather Locked
Lock Weather (LockWeather)functionRPG Saga|WeatherWeather: FGameplayTag
TransitionSeconds: float = -1.000000
Forces the weather: no rolls until Unlock (saved). Weather empty = keep the current one.
On Day Changed (OnDayChanged)eventRPG Saga|TimeDay: int32
On Hour Changed (OnHourChanged)eventRPG Saga|TimeDay: int32
Hour: int32
--- Events ---
On Phase Changed (OnPhaseChanged)eventRPG Saga|TimeOldPhase: FGameplayTag
NewPhase: FGameplayTag
On Time Skipped (OnTimeSkipped)eventRPG Saga|TimeFrom: FRSEGameTime
To: FRSEGameTime
On Time State Changed (OnTimeStateChanged)eventRPG Saga|TimeLoaded, new game, pause / speed / lock changed.
On Weather Changed (OnWeatherChanged)eventRPG Saga|WeatherOldWeather: FGameplayTag
NewWeather: FGameplayTag
TransitionSeconds: float
Pop Clock Pause (PopClockPause)functionRPG Saga|TimeReason: FNamePop Clock Pause
Push Clock Pause (PushClockPause)functionRPG Saga|TimeReason: FNamePauses the clock for Reason until the matching Pop (reasons are counted; not saved).
Query Schedule (QuerySchedule)pureRPG Saga|TimeSchedule: FRSETimeSchedule (ref)
Activity: FGameplayTag (out)
Location: FName (out)
EntryIndex: int32 (out)
boolWhat an NPC does now: the first schedule entry that holds (hours or phase, weather, story conditions). Returns false when none does (use the schedule's defaults, filled in Activity / Location).
Resolve Encounter Pool (ResolveEncounterPool)pureRPG Saga|TimePool: URSEEncounterPoolData*URSEEncounterPoolData*The encounter pool to use instead of Pool now (night creatures...): Pool when no swap applies.
Roll Weather (RollWeather)functionRPG Saga|WeatherbInstant: bool = falseRolls the next weather from the table now (unless locked).
Set Clock Stopped (SetClockStopped)functionRPG Saga|TimebStopped: boolStops or starts the clock for the story (saved: stays stopped until started).
Set Day (SetDay)functionRPG Saga|TimeDay: int32Sets the day number (the hour stays).
Set Time (SetTime)functionRPG Saga|TimeHour: float
Mode: ERSESetTimeMode = NextOccurrence
Moves the clock to Hour (NextOccurrence: forward to the next time it shows Hour; SameDay: that hour today).
Set Time Scale (SetTimeScale)functionRPG Saga|TimeScale: floatThe story's clock speed (0.5 = half speed, 2 = double). Saved.
Set Weather (SetWeather)functionRPG Saga|WeatherWeather: FGameplayTag
TransitionSeconds: float = -1.000000
DurationHours: float = 0.000000
boolChanges the weather. TransitionSeconds < 0 = the weather type's; DurationHours 0 = rolled from the type / table. Returns false when the weather is not a listed type.
Set Weather Table (SetWeatherTable)functionRPG Saga|WeatherTable: URSEWeatherTableData*The weather table of the current level / zone (null = the settings' default). Levels and weather volumes set it.
Unlock Weather (UnlockWeather)functionRPG Saga|WeatherUnlock Weather

URSETouchActionResolver

Module RSE, display name Custom (Blueprint). Optional custom resolution of a touch action (Blueprint or C++): replaces the source of an action reference.

NodeKindCategoryParametersReturnsDescription
Resolve Action (ResolveAction)overrideRPG Saga|TouchController: APlayerController*UInputAction*The input action for Controller now (null: the control does nothing).

URSETouchInputSubsystem

Module RSE. "RSE Touch Input" (D-180, docs/product/mobile.md): one local player's touch controls.

NodeKindCategoryParametersReturnsDescription
Clear Context Override (ClearContextOverride)functionRPG Saga|TouchGoes back to the context the game is in (Set Touch Context Override undone).
Get Active Context (GetActiveContext)pureRPG Saga|TouchERSETouchContextThe moment of play the controls are for now.
Get Active Layout (GetActiveLayout)pureRPG Saga|TouchURSETouchLayout*The layout in use now (null: no controls, no gestures).
Get Control Opacity (GetControlOpacity)pure, staticRPG Saga|TouchfloatThe player's Touch Controls Opacity (multiplies the rest opacity of the controls; Touch -> Control Opacity Range).
Get Control Scale (GetControlScale)pure, staticRPG Saga|TouchfloatThe player's Touch Controls Size (multiplies control sizes; Touch -> Control Scale Range).
Get Controls Widget (GetControlsWidget)pureRPG Saga|TouchURSETouchControlsWidget*The widget drawing the controls (null until the first touch layout shows).
Get Touch Input (GetFor)pure, staticRPG Saga|TouchController: APlayerController*URSETouchInputSubsystem*The touch subsystem of Controller's local player (null for remote controllers).
Inject Action (InjectAction)functionRPG Saga|TouchAction: UInputAction*
Value: FVector
boolPresses Action once with Value (converted to the action's value type). Returns false without an Enhanced Input subsystem.
Is Emulating Touch (IsEmulatingTouch)pure, staticRPG Saga|TouchboolThe mouse acts as a finger now (Set Emulate Touch, RSE.Input.Touch.Emulate).
Is Left Handed (IsLeftHanded)pure, staticRPG Saga|TouchboolThe controls are mirrored for left-handed players (anchors, offsets and gesture regions flip left / right).
Is Moving to Tap (IsMovingToTap)pureRPG Saga|TouchboolTap-to-move is walking the explorer now.
Is Touch Available (IsTouchAvailable)pure, staticRPG Saga|TouchboolTouch is a device here: a phone, the touch device in use, emulation or the phone simulation (the options show the touch rows).
On Context Changed (OnContextChanged)eventRPG Saga|TouchContext: ERSETouchContextThe context changed (Blueprint reactions, tutorials).
Press Control (PressControl)functionRPG Saga|TouchControlId: FName
bPressed: bool
boolPresses (or releases) a control of the active layout as a finger would. Returns false when the layout has no such control.
Refresh Context (RefreshContext)functionRPG Saga|TouchReads the context again and applies it (layout, widget, hints).
Resolve Context (ResolveContext)pureRPG Saga|TouchERSETouchContextThe context the game is in now (what the poll finds): an open screen, the battle kind, exploration.
Select Radial Item (SelectRadialItem)functionRPG Saga|TouchControlId: FName
Item: int32
boolPicks an item of a radial control (presses its action once).
Set Context Override (SetContextOverride)functionRPG Saga|TouchContext: ERSETouchContextForces a context (a scripted scene, a minigame of your own); Clear Touch Context Override goes back to the game's.
Set Control Axis (SetControlAxis)functionRPG Saga|TouchControlId: FName
Axis: FVector2D
boolMoves a joystick control (X right, Y up, -1..1; zero releases it). Cancels tap-to-move.
Set Emulate Touch (SetEmulateTouch)function, staticRPG Saga|TouchbEmulate: boolMouse as a finger on PC (Slate's fake touch events).
Set Layout Override (SetLayoutOverride)functionRPG Saga|TouchContext: ERSETouchContext
Layout: URSETouchLayout*
Uses Layout for Context instead of the project's (null clears).
Should Show Controls (ShouldShowControls)pureRPG Saga|TouchboolThe on-screen controls should show now (Touch -> Show Controls and the device in use).
Start Move To (StartMoveTo)functionRPG Saga|TouchWorldPoint: FVectorWalks the explorer to WorldPoint through the Move action (what a Move To tap does).
Stop Move To (StopMoveTo)functionRPG Saga|TouchStops tap-to-move (the Move action is released).

URSETravelSubsystem

Module RSE. Zone navigation and fast travel in the world (D-044, docs/design/zones-travel.md).

NodeKindCategoryParametersReturnsDescription
Cancel Group Travel (CancelGroupTravel)functionRPG Saga|TravelStops the group travel countdown (the host changed their mind, a battle started).
Close World Map (CloseWorldMap)functionRPG Saga|TravelCloses the world map screen.
Get Areas (GetAreasBP)functionRPG Saga|TravelTArray<URSEAreaData*>Every area the game knows (Asset Manager).
Get Block Text (GetBlockText)pure, staticRPG Saga|TravelBlock: ERSEFastTravelBlockFTextPlayer-facing text of a block (empty for None).
Get Current Area (GetCurrentArea)pureRPG Saga|TravelURSEAreaData*Area the player is in now (URSETravelWorldSubsystem of the game world), or null.
Get Fast Travel Block (GetFastTravelBlock)pureRPG Saga|TravelERSEFastTravelBlockWhether the world map can be used now, and why not.
Get Group Travel Seconds Left (GetGroupTravelSecondsLeft)pureRPG Saga|TravelfloatSeconds left of the group travel countdown (0 when none).
Get Travel Destinations (GetDestinationsBP)functionRPG Saga|TravelTArray<URSETravelDestinationData*>Every fast-travel place the game knows (Asset Manager).
Is Group Travel Counting Down (IsGroupTravelCountingDown)pureRPG Saga|TravelboolThe host's group travel is counting down.
Is Traveling (IsTraveling)pureRPG Saga|TravelboolA travel is queued, counting down (co-op), fading out or loading.
Is World Map Open (IsWorldMapOpen)pureRPG Saga|TravelboolThe world map screen is open.
On Group Travel Countdown (BP_OnGroupTravelCountdown)eventRPG Saga|TravelRequest: FRSETravelRequest (ref)
Seconds: float
On Group Travel Requested (BP_OnGroupTravelRequested)eventRPG Saga|TravelRequest: FRSETravelRequest (ref)
Guest: FRSEPlayerId
Open World Map (OpenWorldMapBP)functionRPG Saga|TravelOutReason: FText (out)boolOpens the world map screen (after a running dialog). Returns false when blocked; OutReason says why.
Set Group Travel Policy (SetGroupTravelPolicy)functionRPG Saga|TravelPolicy: URSEGroupTravelPolicy*Replaces the rule at run time; null = the settings' class.
Travel To (TravelTo)functionRPG Saga|TravelRequest: FRSETravelRequest (ref)boolStarts a travel. Waits for a running dialog to close first (an exit that asks, a story effect). Refused while another travel runs or without a map. Returns true when the travel was started or queued.
Travel to Destination (TravelToDestination)functionRPG Saga|TravelDestination: URSETravelDestinationData*boolFast travel to a world map place (must be Available).

URSETravelWorldSubsystem

Module RSE. The area side of a game map (D-044): which area the player is in (an ARSEAreaVolume with an Area, else the map's area), its discovery (narrative state), its no-save restriction (a NoSaveZone block, like ARSENoSaveVolume), and the arrival presentation: the fade-in after a travel and the area banner.

NodeKindCategoryParametersReturnsDescription
Get Current Area (GetCurrentArea)pureRPG Saga|TravelURSEAreaData*Area the player is in (null = the map has none).
Get Map Area (GetMapArea)pureRPG Saga|TravelURSEAreaData*The map-level area.
Show Banner (ShowBanner)functionRPG Saga|TravelArea: URSEAreaData*Shows Area's banner now (dev command, scripted moments).

URSETraversalComponent

Module RSE. Plays a body's traversal (D-121, docs/design/traversal.md): holds its FRSETraversalState (small, serializable; a replicated property later, D-124) and derives the position and the animation from it, never from input.

NodeKindCategoryParametersReturnsDescription
Get State (GetState)pureRPG Saga|TraversalFRSETraversalStateThe current state (None when not traversing).
Is on Link (IsOnLink)pureRPG Saga|TraversalboolWhether the body is on a link now.
Is Swimming (IsSwimming)pureRPG Saga|TraversalboolWhether the body swims now.

URSETraversalKindData

Module RSECore. A kind of traversal (D-121, docs/design/traversal.md): what every ladder, rope, swim area or jump of that kind shares.

NodeKindCategoryParametersReturnsDescription
Can be Used By (CanBeUsedBy)overrideRPG Saga|TraversalTags: FGameplayTagContainer (ref)boolWhether a unit or character with these tags may use it (Required / Blocked Tags by default).
Get Prompt (GetPrompt)pureRPG Saga|TraversalDirection: ERSETraversalDirectionFTextThe prompt for a direction.

URSETraversalLinkKindData

Module RSECore, display name Traversal Link Kind. A link between two standable points (D-121): ladders, ropes, jumps across gaps, vaults over low ledges, controlled drops, zip-lines, rope swings, rope bridges.

NodeKindCategoryParametersReturnsDescription
Get Anims (GetAnims)pureRPG Saga|TraversalDirection: ERSETraversalDirectionFRSETraversalLinkAnimsThe animation slots for a direction (backward falls back slot by slot to forward).
Get Battle Cost (GetBattleCost)overrideRPG Saga|TraversalA: FVector (ref)
B: FVector (ref)
CostMultiplierOverride: float
floatMovement (meters) a battle unit pays to go from A to B (battle space). Default: 3D length x multiplier + extra, never below the ground distance.
Get Motion Seconds (GetMotionSeconds)pureRPG Saga|TraversalMotionLengthMeters: floatfloatSeconds the motion takes over a path of MotionLength meters (mount and dismount not included).

URSETraversalMotion

Module RSECore, display name Traversal Motion. How a body moves along a traversal link (D-121, docs/design/traversal.md): pure math on the link's path (its points, from start to end), no world.

NodeKindCategoryParametersReturnsDescription
Evaluate Location (EvaluateLocation)overrideRPG Saga|TraversalPath: TArray<FVector> (ref)
Alpha: float
UnitsPerMeter: float
FVectorWhere the body is at Alpha (0 = the first point, 1 = the last). Path has at least two points.
Get Length (GetLength)overrideRPG Saga|TraversalPath: TArray<FVector> (ref)
UnitsPerMeter: float
floatLength of the motion along Path (in the path's units): the time a traversal takes is this over the kind's speed.
Sample (Sample)pureRPG Saga|TraversalPath: TArray<FVector> (ref)
Count: int32
UnitsPerMeter: float
OutPoints: TArray<FVector> (out)
Samples the motion: Count + 1 points from Alpha 0 to 1 (path previews).

URSETraversalMotion_Arc

Module RSECore, display name Arc. A parabola from the first point to the last (the points in between are ignored): jumps, vaults, drops, swings.

NodeKindCategoryParametersReturnsDescription
Get Arc Height Meters (GetArcHeightMeters)pureRPG Saga|TraversalHorizontalMeters: floatfloatArc height in meters for a horizontal length in meters.

URSETraversalSubsystem

Module RSE. Traversal in the world (D-121, docs/design/traversal.md): the single place that validates and applies traversal commands (who takes which link, who starts or stops swimming).

NodeKindCategoryParametersReturnsDescription
Check Command (CheckCommand)pureRPG Saga|TraversalCommand: FRSETraversalCommand (ref)ERSETraversalCheckValidates a command without applying it.
Complete All (CompleteAll)functionRPG Saga|TraversalEnds every traversal at once (the bodies land where they were going; swimmers stop swimming). A battle starting calls it.
Get State (GetState)pureRPG Saga|TraversalPawn: APawn*FRSETraversalStateThe traversal state of a body (None when it is not traversing).
Is Blocking Save (IsBlockingSave)pureRPG Saga|TraversalboolWhether the subsystem holds the save block now (someone is on a kind that forbids saving).
Is on Link (IsOnLink)pureRPG Saga|TraversalPawn: APawn*boolWhether a body is on a link (a ladder, a jump) right now.
On Swim Changed (OnSwimChanged)eventRPG Saga|TraversalPawn: APawn*
bSwimming: bool
On Traversal Finished (OnTraversalFinished)eventRPG Saga|TraversalPawn: APawn*
Link: ARSETraversalActor*
On Traversal Started (OnTraversalStarted)eventRPG Saga|TraversalPawn: APawn*
Link: ARSETraversalActor*
Direction: ERSETraversalDirection
Submit Command (SubmitCommand)functionRPG Saga|TraversalCommand: FRSETraversalCommand (ref)ERSETraversalCheckValidates and applies a command. Returns Ok when applied (nothing changes otherwise).

URSETutorialSubsystem

Module RSECore. Contextual tutorials (D-047).

NodeKindCategoryParametersReturnsDescription
Are Tutorials Available (AreTutorialsAvailable)pureRPG Saga|TutorialsboolWhether tutorials may be requested and marked seen now: the bound query (RSE: the time policy, which hides tutorials in multiplayer sessions), else only outside a network session (authority mode Standalone).
Get Seen Tutorials (GetSeenTutorialsBP)pureRPG Saga|TutorialsTArray<URSETutorialData*>Seen tutorials in Help order.
Is Seen (IsSeen)pureRPG Saga|TutorialsTutorial: URSETutorialData*boolThe tutorial was shown already.
Mark Tutorial Seen (MarkSeenBP)functionRPG Saga|TutorialsTutorial: URSETutorialData*boolMarks a tutorial seen without showing it. Returns true when it was not seen before.
Notify Tutorial Trigger (NotifyTriggerBP)functionRPG Saga|TutorialsTrigger: FGameplayTagURSETutorialData*A game event happened (Tutorial.Trigger.*): shows the first unseen tutorial with that trigger whose conditions pass. Custom triggers are just new tags fired from Blueprint. Returns the tutorial shown, or none.
On Tutorial Requested (BP_OnTutorialRequested)eventRPG Saga|TutorialsTutorial: URSETutorialData*A tutorial is requested: the presentation shows it (seen state already updated).
Request Tutorial (RequestTutorialBP)functionRPG Saga|TutorialsTutorial: URSETutorialData*
bEvenIfSeen: bool = false
bIgnoreOption: bool = false
boolShows a tutorial now and marks it seen (bEvenIfSeen shows a seen one again; bIgnoreOption shows it with tutorials off).

URSETutorialViewModel

Module RSE. A tutorial (D-047): its pages (title, optional picture, text with dialog markup, key prompts of the page's actions).

NodeKindCategoryParametersReturnsDescription
Advance (Advance)functionRPG Saga|UI|TutorialNext page, or close on the last one.
Dismiss (Dismiss)functionRPG Saga|UI|TutorialCloses the tutorial (Close with its sound).
Refresh (Refresh)functionRPG Saga|UI|TutorialRebuilds the key hints (the player switched devices).
Turn Page (TurnPage)functionRPG Saga|UI|TutorialDirection: int32Turn Page

URSEUIHost

Module RSE. RSE UI Host

NodeKindCategoryParametersReturnsDescription
Get Host ATBHUD (GetHostATBHUD)overrideRPG Saga|UI|HostURSEATBHUDViewModel*The classic battle HUD's view-model (null = none).
Get Host Party Menu (GetHostPartyMenu)overrideRPG Saga|UI|HostURSEPartyMenuViewModel*The party menu's view-model (open / close, pages, actions).
Get Host Party Menu Screen (GetHostPartyMenuScreen)overrideRPG Saga|UI|HostURSEScreenWidget*The party menu's screen (ours or a Widget Blueprint).
Get Host Tactics HUD (GetHostTacticsHUD)overrideRPG Saga|UI|HostURSETacticsHUDViewModel*The Tactics battle HUD's view-model (null = none).

URSEUIStyle

Module RSE. A UI style (D-162, docs/product/ui-styles.md): the colors, fonts, frames, rows, controls, gauges, key caps, icons, sounds and motion of every screen built on URSEHUDWidgetBase.

NodeKindCategoryParametersReturnsDescription
Get Style Name (GetStyleName)pureRPG Saga|UI StyleFTextThe name in menus (Display Name, else the id).

URSEUIStyleLibrary

Module RSE. UI styles in Blueprint (D-162): read colors, fonts and frame brushes of the active style in your own UMG screens, switch styles at runtime.

NodeKindCategoryParametersReturnsDescription
End UIStyle Preview (EndUIStylePreview)function, staticRPG Saga|UI StyleContext: UObject*End UIStyle Preview
Fill UIStyle from Legacy Theme (FillUIStyleFromLegacyTheme)function, staticRPG Saga|UI StyleTarget: URSEUIStyle*Fills Target from the legacy theme settings (the look from before UI styles), as DA_UIStyle_Classic was made. For tools and editor scripts.
Get Active UIStyle (GetActiveUIStyle)pure, staticRPG Saga|UI StyleContext: UObject*URSEUIStyle*The active UI style of Context's local player (the project's default without one). Null = made from the legacy theme.
Get Selectable UIStyle Ids (GetSelectableUIStyleIds)pure, staticRPG Saga|UI StyleTArray<FName>The ids of the styles players can pick (for Set UI Style and the style picker of your own options screen).
Get Selectable UIStyles (GetSelectableUIStyles)pure, staticRPG Saga|UI StyleTArray<URSEUIStyle*>The styles players can pick (UI Theme -> Selectable Styles).
Get UIAccessibility (GetUIAccessibility)pure, staticRPG Saga|UI StyleContext: UObject*FRSEUIAccessibilityContext's accessibility options: color vision, high contrast, text scale, reduce motion (the player's saved ones without a local player).
Get UIColor (GetUIColor)pure, staticRPG Saga|UI StyleContext: UObject*
Token: FName
Shade: ERSEUIShade = Base
Alpha: float = 1.000000
FLinearColorA token color of the active style (Primary, Accent, Surface0, TextMuted, a custom token...).
Get UIFont (GetUIFont)pure, staticRPG Saga|UI StyleContext: UObject*
Role: ERSETextRole
Size: int32 = 0
FSlateFontInfoThe font of a text role in the active style (Size > 0: that size, scaled like the role).
Get UIFrame Brush (GetUIFrameBrush)pure, staticRPG Saga|UI StyleContext: UObject*
Kind: ERSEPanelKind
FSlateBrushThe brush of a panel kind in the active style (for a Border or Image of your own screen).
Preview UIStyle (PreviewUIStyle)function, staticRPG Saga|UI StyleContext: UObject*
Style: URSEUIStyle*
Shows Style on Context's local player without saving it (a preview in a style picker). End UI Style Preview goes back to the player's choice.
Resolve UIColor (ResolveUIColor)pure, staticRPG Saga|UI StyleContext: UObject*
Color: FRSEUIColor (ref)
FLinearColorA UI color (token or fixed) against the active style.
Set UIAccessibility (SetUIAccessibility)function, staticRPG Saga|UI StyleContext: UObject*
Accessibility: FRSEUIAccessibility (ref)
Sets all the accessibility options at once, applies them to every open screen of Context's local player and saves them.
Set UIColor Vision (SetUIColorVision)function, staticRPG Saga|UI StyleContext: UObject*
ColorVision: ERSEColorVision
Changes one accessibility option and keeps the others.
Set UIHigh Contrast (SetUIHighContrast)function, staticRPG Saga|UI StyleContext: UObject*
bHighContrast: bool
Set UIHigh Contrast
Set UIReduce Motion (SetUIReduceMotion)function, staticRPG Saga|UI StyleContext: UObject*
bReduceMotion: bool
Set UIReduce Motion
Set UIStyle (SetUIStyle)function, staticRPG Saga|UI StyleContext: UObject*
StyleId: FName
boolSwitches Context's local player to the style with this id (saved as the player's choice). Returns false when unknown.
Set UIText Scale (SetUITextScale)function, staticRPG Saga|UI StyleContext: UObject*
TextScale: float
Text Scale 0.8..1.5 (1 = the style's own sizes; texts never go below the theme's minimum size).

URSEUIStyleSubsystem

Module RSE. The UI style of one local player (D-162): which style is active, its accessibility options and the resolved style every widget of that player reads.

NodeKindCategoryParametersReturnsDescription
End Preview (EndPreview)functionRPG Saga|UI StyleEnd Preview
Get Accessibility (GetAccessibility)pureRPG Saga|UI StyleFRSEUIAccessibilityGet Accessibility
Get Active Style (GetActiveStyle)pureRPG Saga|UI StyleURSEUIStyle*The active style asset (null = the legacy theme settings).
Get Active Style Id (GetActiveStyleId)pureRPG Saga|UI StyleFNameGet Active Style Id
Get UI Style Subsystem (GetFor)pure, staticRPG Saga|UI StylePlayer: UObject*URSEUIStyleSubsystem*The style subsystem of the local player behind Player (a controller, pawn, widget or local player), or null.
On Style Changed (OnStyleChanged)eventRPG Saga|UI StyleThe active style changed (another style, its asset edited, accessibility). Rebuild what caches colors, fonts or brushes.
Preview Style (PreviewStyle)functionRPG Saga|UI StyleStyle: URSEUIStyle*Shows Style without saving it (a preview in a style picker). EndPreview goes back to the player's choice.
Set Accessibility (SetAccessibility)functionRPG Saga|UI StyleInAccessibility: FRSEUIAccessibility (ref)
bSaveChoice: bool = true
Applies the accessibility options (color vision, high contrast, text scale, reduce motion) to every open screen of this player; saved as the player's choice.
Set Style (SetStyle)functionRPG Saga|UI StyleStyleId: FName
bSaveChoice: bool = true
boolSwitches to the style with this id (Default Style, Selectable Styles, or any style asset with that id). Returns false when unknown.
Set Style Asset (SetStyleAsset)functionRPG Saga|UI StyleStyle: URSEUIStyle*Switches to a style asset directly (previews, the style editor). Null = the project's default.

URSEUnitBubbleComponent

Module RSE. A screen-space speech bubble over a unit (D-117): the "calling for help" icon and bark, the lines of scripted battle events.

NodeKindCategoryParametersReturnsDescription
Hide (Hide)functionRPG Saga|BattleHide
Is Shown (IsShown)pureRPG Saga|BattleboolIs Shown
Show (Show)functionRPG Saga|BattleIcon: FText (ref)
Line: FText (ref)
IconColor: FLinearColor (ref)
Seconds: float
Shows Icon (may be empty) and Line for Seconds of real time (0 = until Hide).

URSEUnitStatSource

Module RSECore, display name Unit Stat Source. A system outside the framework that supplies a battle unit's stats (D-169): a GAS character's attribute set (the RPGSagaEngineGAS companion plugin), a buyer's own stat component, a save from another game...

NodeKindCategoryParametersReturnsDescription
Applies To (AppliesTo)overrideRPG Saga|Characters|Stat SourceSpawn: FRSEBattleUnitSpawn (ref)
Battle: URSEBattle*
UnitId: int32
boolWhether this source supplies the stats of Spawn in Battle. UnitId is the unit's id in that battle, or -1 when the battle only builds a hypothetical unit (summon damage estimates): answer the same way, but do not bind to it. Default: false (override it).
On Unit Built (OnUnitBuilt)overrideRPG Saga|Characters|Stat SourceBattle: URSEBattle*
UnitId: int32
The battle finished building the unit (UnitId >= 0 only): a presenter may now bind to Battle's events for that unit, for example to mirror its damage back. Default: nothing.
Provide Stats (ProvideStats)overrideRPG Saga|Characters|Stat SourceSpawn: FRSEBattleUnitSpawn (ref)
Battle: URSEBattle*
UnitId: int32
OutStats: FRSEExternalUnitStats (out)
Fills OutStats for the unit (see Applies To for UnitId). Leave a part empty to keep the framework's value.

URSEVisualStyleSubsystem

Module RSE. Chooses and applies the visual style of a game world (D-037, docs/design/visual-style.md): area override (the highest-priority ARSEAreaVolume with a VisualStyle containing the player) -> the player's choice (GameUserSettings.ini, by PrimaryAssetId; dev hotkey / console / options) -> URSEVisualStyleS...

NodeKindCategoryParametersReturnsDescription
Cycle User Style (CycleUserStyle)functionRPG Saga|Visual StyleDirection: int32Moves the player's choice through the preset list (Direction +1 / -1) and shows the toast.
Find Style (FindStyle)function, staticRPG Saga|Visual StyleName: FStringURSEVisualStyle*A preset whose asset name or display name matches Name (exact first, then partial; case-insensitive).
Get Active Style (GetActiveStyle)pureRPG Saga|Visual StyleURSEVisualStyle*The style applied now (null = none).
Get Area Style (GetAreaStyle)pureRPG Saga|Visual StyleURSEVisualStyle*The style the player's area forces (none = no area override).
Get Cycle Styles (GetCycleStyles)function, staticRPG Saga|Visual StyleOutStyles: TArray<URSEVisualStyle*> (out)The presets in cycle order (settings list, else every RSEVisualStyle asset by name), loaded.
Get Default Style (GetDefaultStyle)pureRPG Saga|Visual StyleURSEVisualStyle*The project's default style (Visual Style settings).
Get User Style (GetUserStyle)pureRPG Saga|Visual StyleURSEVisualStyle*The player's chosen style (none = the default).
On Visual Style Changed (BP_OnStyleChanged)eventRPG Saga|Visual StyleNewStyle: URSEVisualStyle*The applied style changed (area, player choice, default; Blueprint).
Set Area Style (SetAreaStyle)functionRPG Saga|Visual StyleStyle: URSEVisualStyle*Area override (null = none). Set by the area check; scripts and tests may set it directly.
Set User Style (SetUserStyle)functionRPG Saga|Visual StyleStyle: URSEVisualStyle*
bSave: bool = true
The player's choice (null = the default). Saved per user when bSave. Ignored while the settings disallow it.

URSEWeaponPresentation

Module RSE. How attacks with a weapon look (D-184), in every battle mode (grid, live, ATB, turn-based through the cue timelines; action battles through the combat presentation): the stance's swing or fire animations, the muzzle flash and shell ejection, tracers or projectiles, impacts per surface with decals, t...

NodeKindCategoryParametersReturnsDescription
Get Effective Stance (GetEffectiveStance)pureRPG Saga|WeaponsERSEWeaponStanceThe stance used when it is Auto: from the kind.
Is Ranged (IsRanged)pureRPG Saga|WeaponsboolFires (tracers or projectiles) rather than swings.

URSEWeatherPresenterComponent

Module RSE, display name Weather Presenter. The weather's presentation (D-101): precipitation around the camera (Niagara, the Low systems on Low effects quality), the global material parameters (Wetness, SnowCover, Wind, RainAmount...), weather sounds (SFX channel), lightning and thunder, roofs and no-weather volumes.

NodeKindCategoryParametersReturnsDescription
Get Presentation (GetPresentation)pureRPG Saga|WeatherFRSEWeatherPresentationGet Presentation
On Lightning Strike (OnLightningStrike)eventRPG Saga|WeatherThunderDelaySeconds: floatA lightning strike (the sky flashes now; thunder follows after the delay).
Strike Lightning (StrikeLightning)functionRPG Saga|WeatherStrikes lightning now (dev command, story).

URSEWorldEffect_Custom

Module RSECore, display name Custom (Blueprint). An effect written in Blueprint: create a Blueprint class from it, override On Execute and change the game through the "Context" nodes (RPG Saga\|Narrative\|Context: flags, items, party...) or any other node (sounds, actors: the class reports the game's world).

NodeKindCategoryParametersReturnsDescription
On Execute (OnExecute)overrideRPG Saga|EffectsContext: FRSEEffectContext (ref)Applies the effect. Use the Context nodes so the change is reported (quests, HUD) and deferred like the built-in effects.

URSEWorldMapViewModel

Module RSE. The world map (D-044): discovered places as markers on a map picture and as a list.

NodeKindCategoryParametersReturnsDescription
Choose (Choose)functionRPG Saga|UI|WorldMapTravels to the selected place (or says why not).
Click Place (ClickPlace)functionRPG Saga|UI|WorldMapIndex: int32A click on a place: selects it, a second click travels.
Leave (Leave)functionRPG Saga|UI|WorldMapLeave
Move Selection (MoveSelection)functionRPG Saga|UI|WorldMapDelta: int32Move Selection
Select (Select)functionRPG Saga|UI|WorldMapIndex: int32Select

URSEWorldReactionSubsystem

Module RSE. Abilities on the world (D-157): the registry of reactive objects in this world and the one place that applies the World Reactions rules to them: from the party menu (the Cast On World command: checked, paid only when something reacts), from a Free Tactics ability that lands among them (the director...

NodeKindCategoryParametersReturnsDescription
Apply Ability At (ApplyAbilityAt)functionRPG Saga|World ReactionsAbility: URSEAbilityData*
Center: FVector
Radius: float
Instigator: AActor*
int32Applies Ability's tags (element, type, roles, World Tags) around Center. Returns the objects that reacted.
Cast on World (CastOnWorld)functionRPG Saga|World ReactionsPawn: APawn*
Member: URSECharacterData*
Ability: URSEAbilityData*
OutReason: FText (out)
boolCasts Ability on the surroundings as the player of Pawn, by Member, through the command bus: applied at once in single player and on the host. OutReason says why not. Returns true when it was applied (or sent).
Would React (WouldReact)pureRPG Saga|World ReactionsAbility: URSEAbilityData*
Pawn: APawn*
boolWhether anything around Pawn would react to Ability now (the party menu offers "on the surroundings" only then).

URSEWorldStreamingSubsystem

Module RSE. World Partition and level streaming support (D-174, docs/design/save-system.md "World Partition").

NodeKindCategoryParametersReturnsDescription
Begin Battle Streaming (BeginBattleStreaming)functionRPG Saga|World PartitionCenter: FVector
AreaRadius: float
Keeps the cells within AreaRadius (+ the settings' margin, at least their minimum radius) of Center loaded until End Battle Streaming. Replaces a running one. Does nothing outside a partitioned world or with the setting off.
End Battle Streaming (EndBattleStreaming)functionRPG Saga|World PartitionLets the battle's cells unload again (when no player is near).
Get Data Layer State (GetDataLayerState)pureRPG Saga|World PartitionDataLayer: UDataLayerAsset*ERSEDataLayerStateThe layer's state now: the engine's effective state in a partitioned world that has it, else the state the story recorded, else Unloaded.
Is Battle Area Streamed (IsBattleAreaStreamed)pureRPG Saga|World PartitionboolThe battle's cells finished loading (true outside a partitioned world and when no battle keeps cells).
Is Battle Streaming Active (IsBattleStreamingActive)pureRPG Saga|World PartitionboolA battle keeps cells loaded now.
Set Data Layer State (SetDataLayerState)functionRPG Saga|World PartitionDataLayer: UDataLayerAsset*
State: ERSEDataLayerState
boolSets a data layer's runtime state for the story (a bridge built, ruins after the attack) and records it in the World section, so it is applied again after a load. Returns false when the layer is not in this world (the state is recorded anyway).