class ActionMineBushCB : ActionContinuousBaseCB
{
	protected const float TIME_BETWEEN_MATERIAL_DROPS_DEFAULT = 3;
	
	override void CreateActionComponent()
	{
		m_ActionData.m_ActionComponent = new CAContinuousMineWood(TIME_BETWEEN_MATERIAL_DROPS_DEFAULT);
	}
};

class ActionMineBush : ActionMineBase
{
	void ActionMineBush()
	{
		m_CallbackClass = ActionMineBushCB;
		m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_HACKBUSH;
		m_FullBody = true;
		m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT;
		m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
	}
	
	override void CreateConditionComponents()  
	{
		m_ConditionTarget = new CCTCursor(UAMaxDistances.SMALL);
		m_ConditionItem = new CCINonRuined;
	}
	
	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
	{
		if ( GetGame().IsMultiplayer() && GetGame().IsServer() )
			return true;
		
		Object targetObject = target.GetObject();
		return targetObject.IsBush() && targetObject.IsCuttable();
	}
	
	override void OnExecuteServer(ActionData action_data)
	{
		MineActionData mad = MineActionData.Cast(action_data);
		if (mad.m_EffecterID == -1)
		{
			mad.m_EffecterID = SEffectManager.CreateParticleServer(action_data.m_Target.GetObject().GetPosition(), new TreeEffecterParameters("TreeEffecter", EffecterBase.NOT_DEFINED_LIFESPAN, 0.1));
		}
		else
		{
			SEffectManager.ReactivateParticleServer(mad.m_EffecterID);
		}
	}
	
	override bool HasMultipleExecution(ActionData action_data)
	{
		return true;
	}
};