Skip to main content

B2Action_TalkContext

  • Description
    * ===============
    * Action that drives a character's talk animation/voice sequence, sourced from the coop Talk action context (FB2ACTalk), including start/finish scripts, look-at target, and forced duration overrides.
    * ===============
    * Note:
    * OnInit(): Resolve the target Entity (self or target depending on BaseObject).
    * OnPlay(): Skip finishing early if the coop Talk instance is no longer talking, otherwise run OnPlayAction to (re)start the talk sequence.
    * OnFinish(): Run talk finish scripts, restore hidden grab object visibility, and stop talk voice if voice-only.
    * OnCanceled(): Restore hidden grab object visibility and stop talk voice if voice-only.
    * OnTick(): Count down the forced montage duration override and finish the action once it elapses.
PropertyTypeDescriptionMetadata
HiddenGrabObjectboolWhether the grabbed object should be hidden while talking (from the coop talk action context)
bNotPlayingAnimboolWhether this talk is voice-only, with animation driven externally by the speaker's notify, skipping this action's own PlayAnim setup
bOverridedMontagePlayTimeboolWhether montage play time is overridden by a fixed forced duration instead of the natural animation length
OverridedMontageTimeOutfloatForced montage duration (seconds) to wait when bOverridedMontagePlayTime is set
CurrentMontageTimeOutfloatElapsed time accumulator counting toward OverridedMontageTimeOut
TalkStartScriptIdsTArrayScript ids run once when the talk action starts (from the coop talk action context)
TalkFinishScriptIdsTArrayScript ids run once when the talk action finishes (from the coop talk action context)
LookAtTargetCharacterFB1EntityIdTarget character entity id this character should look at while talking, if set (from the coop talk action context)
AnimationIdFNameAnimation id to play, resolved via the overridable GetAnimationId() hook
LoopCountint32Requested number of times to play the montage's Loop section (0 normalized to 1, -1 means infinite)
RemainLoopCountint32Remaining loop iterations, decremented each time the Loop section finishes; drives when looping stops
StartLocationFVectorReferenced in GetLogString() for debug logging, but never assigned by this class or any subclass - the log always shows the zero-vector default
StartRotationFRotatorReferenced in GetLogString() for debug logging, but never assigned by this class or any subclass - the log always shows the zero-rotator default
AnimMontageNameFNameResolved montage asset name used to play/track the animation, set by SetAnim()
SectionNameFNameCurrent montage section of MAIN ANIMATION (Default/Loop/End), tracked via montage delegates and used to drive finish/cancel decisions
PlayingComponentNameFNameAnim component the montage is played on (e.g. Root vs. other), resolved by SetAnim().
SetAnim() clears this on entry, so it stays None whenever the resolve fails; a non-None value means the latest resolve succeeded.
TotalPlayLengthfloatTotal play length of the resolved montage, used in progress-time and one-loop-length calculations
LoopPlayLengthfloatPlay length of a single loop of the resolved montage, used in progress-time calculation
RateScalefloatPlayback rate scale of the resolved montage, used in progress-time calculation
PausedboolWhether the montage is currently held in a paused blend state
PhaseEB2PlayAnimPhasePhase of PlayAnim Action
AddOnAnimDataFB2AddOnAnimDataAddOnAnim Data
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)