123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- class ActionDigOutStashCB : ActionContinuousBaseCB
- {
- override void CreateActionComponent()
- {
- m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.DIG_STASH);
- }
- }
- class ActionDigOutStash: ActionContinuousBase
- {
- void ActionDigOutStash()
- {
- m_CallbackClass = ActionDigOutStashCB;
- m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIGUPCACHE;
- m_FullBody = true;
- m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
- m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_LOW;
- m_Text = "#dig_stash";
- }
-
- override void CreateConditionComponents()
- {
- m_ConditionTarget = new CCTObject(UAMaxDistances.DEFAULT);
- m_ConditionItem = new CCINonRuined();
- }
-
- override bool Can(PlayerBase player, ActionTarget target, ItemBase item, int condition_mask)
- {
- if (!super.Can(player, target, item, condition_mask))
- return false;
-
- return player.CheckFreeSpace(vector.Forward, 1.0, false);
- }
-
-
- override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
- {
- ItemBase target_IB;
- if (Class.CastTo(target_IB, target.GetObject()))
- {
- if (target_IB.CanBeDigged())
- {
- return target_IB.IsInherited(UndergroundStash);
- }
- }
-
- return false;
- }
- override void OnExecuteClient(ActionData action_data)
- {
- super.OnExecuteClient(action_data);
-
- SpawnParticleShovelRaise(action_data);
- }
-
- override void OnExecuteServer(ActionData action_data)
- {
- super.OnExecuteServer(action_data);
-
- if (!GetGame().IsMultiplayer())
- {
- SpawnParticleShovelRaise(action_data);
- }
- }
-
- void SpawnParticleShovelRaise(ActionData action_data)
- {
- ParticleManager.GetInstance().PlayOnObject(ParticleList.DIGGING_STASH, action_data.m_Player);
- }
- override void OnFinishProgressServer( ActionData action_data )
- {
- EntityAI targetEntity = EntityAI.Cast(action_data.m_Target.GetObject());
- if (!targetEntity)
- {
- ErrorEx("Cannot get entity=" + targetEntity);
- return;
- }
-
- InventoryLocation target_IL = new InventoryLocation();
- if (!targetEntity.GetInventory().GetCurrentInventoryLocation(target_IL))
- {
- ErrorEx("Cannot get inventory location of entity=" + targetEntity);
- return;
- }
-
- // Dig out of stash
- UndergroundStash stash;
- if (Class.CastTo(stash, targetEntity))
- {
- ItemBase stashedItem = stash.GetStashedItem();
- if (stashedItem)
- {
- DigOutStashLambda lambda(stash, "", action_data.m_Player);
- action_data.m_Player.ServerReplaceItemWithNew(lambda);
- }
- else
- g_Game.ObjectDelete(stash);
- }
- //Apply tool damage
- MiscGameplayFunctions.DealEvinronmentAdjustedDmg(action_data.m_MainItem, action_data.m_Player, 10);
- }
-
- override string GetAdminLogMessage(ActionData action_data)
- {
- return string.Format("Player %1 Dug out %2 at position %3", action_data.m_Player, action_data.m_Target.GetObject(), action_data.m_Target.GetObject().GetPosition());
- }
- }
- class DigOutStashLambda : DropEquipAndDestroyRootLambda
- {
- void DigOutStashLambda(EntityAI old_item, string new_item_type, PlayerBase player) {}
- override void CopyOldPropertiesToNew(notnull EntityAI old_item, EntityAI new_item)
- {
- super.CopyOldPropertiesToNew(old_item, new_item);
- }
- }
|