DIFF

ActionMixMortarAtWell.c


class ActionMixMortarAtWell : ActionContinuousBase
{
	void ActionMixMortarAtWell ()
	{
		m_CallbackClass   = ActionMixMortarCB;
        m_CommandUID      = DayZPlayerConstants.CMD_ACTIONFB_MIX_MORTAR;
        m_FullBody        = true;
        m_StanceMask      = DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT;
        m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
        m_Text            = "#STR_CraftMortarMix0";

	}

	override void CreateConditionComponents()
	{
	    m_ConditionItem   = new CCINonRuined();
	    m_ConditionTarget = new CCTObject();
	}
	
    override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
	{
		Object targetObject = target.GetObject();
 		if(targetObject && targetObject.IsWell())
		{
			return true;
		}
		return false;
	}
	
		override bool ActionConditionContinue(ActionData action_data)
    {
        return true;
    }
	
	override bool IsLockTargetOnUse()
	{
		return false;
	}
	
	override bool HasAlternativeInterrupt()
	{
		return true;
	}
	
	override bool UseAlternativeInterrupt(ActionData action_data)
	{
		return HasAlternativeInterrupt() && (action_data.m_ActionComponent.GetProgress() >= 1);
	}
	
	 // -------------------------------------------------------------------------
    // Result
    // -------------------------------------------------------------------------

    override void OnFinishProgressServer(ActionData action_data)
    {
        ItemBase mortarMixClosed = action_data.m_MainItem;
        if (!mortarMixClosed)
            return;

        string resultType = "MortarMix_Opened";

        // Try inventory first; fallback to ground at player pos
		// This is the result of the crafting (an open Mortar Mix)
        ItemBase mortarMixOpen = ItemBase.Cast(action_data.m_Player.GetInventory().CreateInInventory(resultType));

        if (!mortarMixOpen)
        {
            mortarMixOpen = ItemBase.Cast(GetGame().CreateObject(resultType, action_data.m_Player.GetPosition()));
            if (mortarMixOpen)
                mortarMixOpen.PlaceOnSurface();
        }

        if (mortarMixOpen)
        {
            mortarMixOpen.SetHealth("", "", mortarMixClosed.GetHealth());
            mortarMixClosed.Delete();
        }
    }
}