Skip to main content

B2Action_PutDown

  • Description
    * ===============
    * Puts down a grabbed object or character, choosing where based on PutDownMethod (target object slot, inventory, floor, or destroy) and playing the corresponding animation.
    * ===============
    * Param:
    * S1: AnimId (optional specific put-down animation override)
    * S2: EB1PutDownMethod (put-down destination override)
    * F1: -
    * F2: -
    * Note:
    * OnInit(): Resolves PutDownMethod from Action.S2 if unset, validates GrabEntityId/PostureComponent, and caches the grab id and preloads put-down animations.
    * OnPlay(): Determines the put-down location/method via TryPutDown() (target object slot, inventory, floor, or destroy), resolves the anim montage, and plays it.
    * OnFinish(): Resets posture context and frees the interaction slot; on success, stops the arm animation for a grabbed character, or places/stores/destroys a grabbed object per PutDownMethod before stopping the arm animation.
    * OnCanceled(): Resets posture context and clears the grabbed character's pending slot name.
PropertyTypeDescriptionMetadata
PutDownMethodEB1PutDownMethodHow to put down object/character
SelectedHandEB1HandTypeHand with grab entity
GrabIdFNameFB1GrabTableRow row id of grab entity (grab type/definition key, not an entity id)
PutDownAnimIdFNameAnim id used to find put-down montage for grab entity
AnimMontageNameFNameMontage name resolved from PutDownAnimId to put down grab entity
GrabAnimMontageNameFNameMontage name of grab entity's holding loop animation (stopped when put down finishes)
PutDownLocationFVectorWorld location to put down grab entity
PutDownRotationFRotatorWorld rotation to put down grab entity
PostureAnimIdFNameAnim id for grab entity's target posture (used when grab entity is a character)
PostureAnimMontageNameFNameMontage name for grab entity's target posture (used when grab entity is a character)
ChangePostureStateFB1PostureStatePosture state to apply to grab entity after put down (used when grab entity is a character)
CurrentAnimTimefloatElapsed time of put-down anim montage playback (reset to 0 on OnPlay)
TotalPlayLengthfloatTotal play length of put-down anim montage (from montage table row)
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)