class ActionWaterPlantCB : ActionContinuousBaseCB { private const float QUANTITY_USED_PER_SEC = 150; override void CreateActionComponent() { m_ActionData.m_ActionComponent = new CAContinuousWaterPlant(QUANTITY_USED_PER_SEC); } }; class ActionWaterPlant: ActionContinuousBase { void ActionWaterPlant() { m_CallbackClass = ActionWaterPlantCB; m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_EMPTY_VESSEL; m_FullBody = true; m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_LOW; m_Text = "#water_plant"; m_LockTargetOnUse = false; } override void CreateConditionComponents() { m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT); m_ConditionItem = new CCINotRuinedAndEmpty; } override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item ) { Object targetObject = target.GetObject(); if ( targetObject != NULL && targetObject.IsInherited(PlantBase) && item != NULL && !item.IsDamageDestroyed() ) { PlantBase plant = PlantBase.Cast( targetObject ); return plant.NeedsWater() && item.GetQuantity() > 0 && !item.GetIsFrozen(); } return false; } override void OnFinishProgressServer( ActionData action_data ) { Object targetObject = action_data.m_Target.GetObject(); if ( targetObject != NULL && targetObject.IsInherited(PlantBase) ) { PlantBase plant = PlantBase.Cast( targetObject ); Param1 nacdata = Param1.Cast( action_data.m_ActionComponent.GetACData() ); float water = nacdata.param1; Slot slot = plant.GetSlot(); slot.GiveWater( water ); } } override void OnFinishProgressClient( ActionData action_data ) { Object targetObject = action_data.m_Target.GetObject(); if ( targetObject != NULL && targetObject.IsInherited(PlantBase) ) { PlantBase plant = PlantBase.Cast( targetObject ); Param1 nacdata = Param1.Cast( action_data.m_ActionComponent.GetACData() ); float water = nacdata.param1; Slot slot = plant.GetSlot(); slot.GiveWater( water ); } } };