actionrefueltorch.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. class ActionRefuelTorch: ActionSingleUseBase
  2. {
  3. void ActionRefuelTorch()
  4. {
  5. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_ATTACHITEM;
  6. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
  7. m_Text = "#STR_RefuelTorch0";
  8. }
  9. override void CreateConditionComponents()
  10. {
  11. m_ConditionTarget = new CCTNonRuined();
  12. m_ConditionItem = new CCINonRuined();
  13. }
  14. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  15. {
  16. Torch torch;
  17. Rag rag;
  18. Rag torchRag;
  19. if ((Class.CastTo(torch,target.GetObject()) && Class.CastTo(rag,item)) || (Class.CastTo(rag,target.GetObject()) && Class.CastTo(torch,item)))
  20. {
  21. if (Class.CastTo(torchRag,torch.GetRag()))
  22. {
  23. int slotId = InventorySlots.INVALID;
  24. InventoryLocation lcn = new InventoryLocation();
  25. torchRag.GetInventory().GetCurrentInventoryLocation(lcn);
  26. slotId = lcn.GetSlot();
  27. return torch.GetInventory().GetSlotLock(slotId) && torch.GetRagQuantity() < torchRag.GetQuantityMax() && torch.IsRagDryEnough(rag);
  28. }
  29. }
  30. return false;
  31. }
  32. override void OnExecuteServer(ActionData action_data)
  33. {
  34. Torch torch;
  35. Rag rag;
  36. Rag torchRag;
  37. 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)))
  38. {
  39. Class.CastTo(torchRag,torch.GetRag());
  40. int qtyTransfer = torchRag.GetQuantityMax() - torch.GetRagQuantity(); //torch rag capacity
  41. qtyTransfer = (int)Math.Clamp(rag.GetQuantity(),0,qtyTransfer);
  42. torchRag.AddQuantity(qtyTransfer);
  43. rag.AddQuantity(-qtyTransfer);
  44. }
  45. }
  46. };