class ActionFillObjectCB : ActionContinuousBaseCB { override void CreateActionComponent() { m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.DEFAULT_FILL); } }; class ActionFillObject: ActionContinuousBase { protected int m_ActionState; protected const int EMPTY = 0; protected const int FILLED = 1; void ActionFillObject() { m_CallbackClass = ActionFillObjectCB; m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG; m_FullBody = true; m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT; m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_LOW; } override void CreateConditionComponents() { m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT); m_ConditionItem = new CCINonRuined; } override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item ) { HescoBox hesco = HescoBox.Cast(target.GetObject()); if( hesco.GetState() == HescoBox.UNFOLDED ) { m_Text = "#empty"; } else { m_Text = "#fill"; } } override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item ) { if ( player.IsPlacingLocal() ) return false; HescoBox hesco; if ( Class.CastTo(hesco,target.GetObject()) ) { if ( hesco.CanBeFilledAtPosition( player.GetPosition() ) ) { if ( hesco.GetState() == HescoBox.UNFOLDED ) { m_ActionState = EMPTY; return true; } else if( hesco.GetState() == HescoBox.FILLED) { m_ActionState = FILLED; return true; } } } return false; } override void OnFinishProgressServer( ActionData action_data ) { HescoBox hesco; if ( Class.CastTo(hesco,action_data.m_Target.GetObject()) ) { const float ITEM_DAMAGE = 5; action_data.m_MainItem.DecreaseHealth("", "", ITEM_DAMAGE); if (hesco.GetState() == HescoBox.UNFOLDED) { hesco.Fill(); } else if (hesco.GetState() == HescoBox.FILLED) { hesco.Unfold(); } } } override void OnFinishProgressClient( ActionData action_data ) { HescoBox hesco; if ( Class.CastTo(hesco,action_data.m_Target.GetObject()) ) { if ( hesco.GetState() == HescoBox.UNFOLDED ) { hesco.Fill(); } else if ( hesco.GetState() == HescoBox.FILLED ) { hesco.Unfold(); } } } };