123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- class DetachActionData : ActionData
- {
- int m_AttSlot;
- }
- class ActionDetach: ActionInteractBase
- {
- string m_ItemName = "";
- void ActionDetach()
- {
- m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
- m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS;
- m_Text = "#take_to_hands";
- }
- override void CreateConditionComponents()
- {
- m_ConditionItem = new CCINone;
- m_ConditionTarget = new CCTCursorNoRuinCheck();
- }
-
- override bool HasProneException()
- {
- return true;
- }
-
- override typename GetInputType()
- {
- return ContinuousInteractActionInput;
- }
-
- override bool HasProgress()
- {
- return false;
- }
- override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
- {
- ItemBase tgt_item = ItemBase.Cast( target.GetObject() );
- EntityAI tgt_parent = EntityAI.Cast( target.GetParent() );
- EntityAI tgt_entity = EntityAI.Cast( target.GetObject() );
- if ( !tgt_item || !tgt_entity || !tgt_parent )
- return false;
- if ( !tgt_parent || !tgt_item.IsItemBase() || !tgt_item.IsTakeable() || tgt_item.IsBeingPlaced() )
- return false;
- if ( player.GetCommand_Vehicle() )
- return false;
- if ( player.GetInventory().CanAddEntityIntoHands(tgt_entity) ) //&& !player.GetInventory().CanAddEntityIntoInventory(tgt_entity) )
- {
- if ( tgt_entity.GetHierarchyRootPlayer() != player )
- {
- if ( tgt_entity.CanDetachAttachment( tgt_parent ) && tgt_parent.CanReleaseAttachment( tgt_entity ) )
- return true;
- }
- }
- return false;
- }
-
- override void OnExecute( ActionData action_data )
- {
- if (GetGame().IsDedicatedServer())
- {
- ClearActionJuncture(action_data);
- return;
- }
-
- ActionManagerClient am = ActionManagerClient.Cast(action_data.m_Player.GetActionManager());
- am.UnlockInventory(action_data);
- EntityAI ntarget = EntityAI.Cast(action_data.m_Target.GetObject());
- action_data.m_Player.PredictiveTakeEntityToHands(ntarget);
- }
-
- override void CreateAndSetupActionCallback( ActionData action_data )
- {
- EntityAI target = EntityAI.Cast(action_data.m_Target.GetObject());
- ActionBaseCB callback;
- if (!target)
- return;
-
- if (target.IsHeavyBehaviour())
- {
- Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_ERECT));
- }
- else
- {
- if( action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT) )
- {
- Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS,GetCallbackClassTypename()));
- }
- else
- {
- Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_PRONE));
- }
- }
- callback.SetActionData(action_data);
- callback.InitActionComponent();
- action_data.m_Callback = callback;
- }
- };
|