24 if ( target_entity && target_entity.CanUseConstruction() )
26 string selection = target_entity.GetActionComponentName( target.GetComponentIndex() );
36 construction_action_data.
SetSlotId( slot_id );
41 else if ( item.IsKindOf(
"CombinationLock") )
78 int slot_id = construction_action_data.
GetSlotId();
82 ItemBase attachment =
ItemBase.Cast( target_entity.GetInventory().FindAttachment( slot_id ) );
87 attachment.CombineItemsClient( item );
92 float stackable = item_base.GetTargetQuantityMax( slot_id );
94 if( stackable == 0 || stackable >= item_base.GetQuantity() )
96 action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx(target_entity, item, slot_id);
98 else if( stackable != 0 && stackable < item_base.GetQuantity() )
100 item_base.SplitIntoStackMaxClient( target_entity, slot_id );
114 if ( !
GetGame().IsMultiplayer() )
class ActionTargets ActionTarget
FindInventoryLocationType
flags for searching locations in inventory
override void OnStartClient(ActionData action_data)
void OnExecuteImpl(ActionData action_data)
override ActionData CreateActionData()
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override void OnExecuteServer(ActionData action_data)
override void CreateConditionComponents()
void ActionAttachToConstruction()
override void OnExecuteClient(ActionData action_data)
ref CCIBase m_ConditionItem
void ClearInventoryReservationEx(ActionData action_data)
ref CCTBase m_ConditionTarget
void ActionSingleUseBase()
override bool IsPlayerInside(PlayerBase player, string selection)
override bool CheckSlotVerticalDistance(int slot_id, PlayerBase player)
int GetAttachmentSlotFromSelection(PlayerBase player, EntityAI target, ItemBase item_to_attach, string selection)
void SetSlotId(int slot_id)
void SetActionInitiator(PlayerBase action_initiator)
proto native int GetSlot()
returns slot id if current type is Attachment
proto native CGame GetGame()