Skip to main content

B2Action_CoopSelect

  • Description
    * ===============
    * Resolves the coop to start and, when the requester is a possessed/user-triggered Zoi, opens a coop-select (or birthday-blow) UI to let the player pick participants before starting the coop; otherwise starts the coop directly.
    * ===============
    * Param:
    * S1: coop id override
    * S2: -
    * F1: -
    * F2: -
    * Note:
    * OnInit(): reads the CoopId override from the action params.
    * OnPlay(): resolves CoopId/InteractionBagId, and either starts the coop directly (non-possessed, non-user-triggered, or zoi-group cases) or pauses the game and opens the coop-select / birthday-blow UI, subscribing to the character's zoi-selection events.
    * OnFinish()/OnCanceled(): unless restoring, reports LastCoopResult via toast, unpauses the game, unsubscribes from selection events, and hides the coop-select UI if it was shown.
    * OnTick(): finishes immediately if no selection UI packet was ever sent.
PropertyTypeDescriptionMetadata
CoopIdFNamecoop table row id to select participants for, from InAction.S1 or the current interaction's coop-start info
InteractionBagIdFNamecurrent interaction bag id, cached for coop request params and the selection UI packet
LastCoopResultEB1CoopResultresult of the last coop start attempt, used to build the result toast message
bSendPacketboolwhether a coop-select UI packet was sent, gating whether OnFinish/OnCanceled must unsubscribe/hide UI and whether OnTick auto-finishes
bRestoreboolwhether this action is being resumed mid-play from a save/restore, so redundant toast/UI cleanup and result reporting are skipped
bIsZoiGroupInteractionboolwhether the current interaction was triggered as a user-selected zoi-group coop, used to pick the coop request reason
ZoiGroupFlagsint32zoi-group flag bitmask copied from the interaction bag row, forwarded to the coop request
ActionIdFNameIdentifier of this action instance (used for interaction tracking and mission time accounting)
StateEB2ActionStateCurrent lifecycle state of this action
MergeTypeEB2ActionMergeTypeMerge type flags for this action (e.g. interaction merge, checked in Finish())
ResultEB2InteractionResultResult of this action once it stops playing (Finish/Failed/Canceled)
SelfEntityIdFB1EntityIdEntity id performing this action
TargetEntityIdFB1EntityIdEntity id targeted by this action
GrabEntityIdFB1EntityIdEntity id grabbed/carried by self entity for this action
NonTargetLocationFVectorLocation used for script/condition context when there is no target entity
ActionFB1ActionInfoAction table data (S1/S2/F1/F2, script id lists, etc.) driving this instance
TickCalcValuefloatAccumulated tick delta time since this action started ticking
CurrentNotifyIndexint32Index into Action.NotifyScriptIds for the next notify script to run
AsyncLoadAnimInfoTArrayAnimations to async-load for this action's start/notify/tick/finish/cancel scripts
AddActionTimeIntervalfloatInterval in seconds between OnTickAddActionExecuteTime() calls
AccumAddActionTimefloatElapsed time accumulator compared against AddActionTimeInterval
StartActionTickTimeint64Tick timestamp used to measure elapsed action execution time for mission tracking
ActionKeyFB2ActionKeyKey identifying this action's slot/queue within the interaction system
TimeTaskIdFB1TimeTaskIdId of the scheduled time task used for delayed Determine/Finish
IsForceCancelableboolWhether this action is force-cancelable, copied from Action.IsForceCancelable
IsFirstActionboolMarks the first action in an interaction sequence; set on actions[0] by FB2InteractionPlayer::LinkActions(), read by FB2ActionPlayer
bMultiFlagboolSet by looping actions (PlayAnim, BookRead, Eat, WaitTalkSequence) once a loop iteration completes; read/reset by FB2ActionPlayer to gate multi-interaction selection
TalkInstanceIdFB1TalkInstanceIdId of the talk instance this action is linked to, set externally by FB2InteractionPlayer::LinkActions()
TalkSubjectEntityIdFB1EntityIdEntity id of the talk subject linked to this action, set externally by FB2InteractionPlayer::LinkActions()/OnTalkSpaceParamChanged()
bIsWaitFinishEventboolCached copy of Action.IsWaitFinishAction taken at Init(); read directly by FB2ActionPlayer for sequencing (the IsWaitFinishAction() getter instead reads Action.IsWaitFinishAction live)
AutoInsertTypeEB2ActionAutoInsertTypeType of action that was auto-inserted before this one (e.g. WalkTo, ChangePosture)