ActionRefuelTorch.c
class ActionRefuelTorch: ActionSingleUseBase
{
void ActionRefuelTorch()
{
m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_ATTACHITEM;
m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
m_Text = "#STR_RefuelTorch0";
}
override void CreateConditionComponents()
{
m_ConditionTarget = new CCTNonRuined();
m_ConditionItem = new CCINonRuined();
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
Torch torch;
Rag rag;
Rag torchRag;
if ((Class.CastTo(torch,target.GetObject()) && Class.CastTo(rag,item)) || (Class.CastTo(rag,target.GetObject()) && Class.CastTo(torch,item)))
{
if (Class.CastTo(torchRag,torch.GetRag()))
{
int slotId = InventorySlots.INVALID;
InventoryLocation lcn = new InventoryLocation();
torchRag.GetInventory().GetCurrentInventoryLocation(lcn);
slotId = lcn.GetSlot();
return torch.GetInventory().GetSlotLock(slotId) && torch.GetRagQuantity() < torchRag.GetQuantityMax() && torch.IsRagDryEnough(rag);
}
}
return false;
}
override void OnExecuteServer(ActionData action_data)
{
Torch torch;
Rag rag;
Rag torchRag;
if ((Class.CastTo(torch,action_data.m_Target.GetObject()) && Class.CastTo(rag,action_data.m_MainItem)) || (Class.CastTo(rag,action_data.m_Target.GetObject()) && Class.CastTo(torch,action_data.m_MainItem)))
{
Class.CastTo(torchRag,torch.GetRag());
int qtyTransfer = torchRag.GetQuantityMax() - torch.GetRagQuantity(); //torch rag capacity
qtyTransfer = (int)Math.Clamp(rag.GetQuantity(),0,qtyTransfer);
torchRag.AddQuantity(qtyTransfer);
rag.AddQuantity(-qtyTransfer);
}
}
};