actionsewtarget.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. class ActionSewTargetCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousRepeat(UATimeSpent.SEW_CUTS);
  6. }
  7. }
  8. class ActionSewTarget : ActionBandageBase
  9. {
  10. void ActionSewTarget()
  11. {
  12. m_CallbackClass = ActionSewTargetCB;
  13. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
  14. m_FullBody = true;
  15. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
  16. m_Text = "#sew_targets_cuts";
  17. }
  18. override void CreateConditionComponents()
  19. {
  20. m_ConditionItem = new CCINonRuined();
  21. m_ConditionTarget = new CCTMan(UAMaxDistances.DEFAULT);
  22. }
  23. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  24. {
  25. if (!super.ActionCondition(player, target, item))
  26. return false;
  27. PlayerBase otherPlayer = PlayerBase.Cast(target.GetObject());
  28. return otherPlayer.IsBleeding();
  29. }
  30. override void OnFinishProgressServer(ActionData action_data)
  31. {
  32. if (CanReceiveAction(action_data.m_Target))
  33. {
  34. PlayerBase player = PlayerBase.Cast(action_data.m_Target.GetObject());
  35. if (action_data.m_MainItem && player)
  36. ApplyBandage(action_data.m_MainItem, player);
  37. }
  38. }
  39. override void ApplyBandage(ItemBase item, PlayerBase player)
  40. {
  41. if (player.GetBleedingManagerServer())
  42. player.GetBleedingManagerServer().RemoveMostSignificantBleedingSourceEx(item);
  43. PluginTransmissionAgents transmissionAgents = PluginTransmissionAgents.Cast(GetPlugin(PluginTransmissionAgents));
  44. transmissionAgents.TransmitAgents(item, player, AGT_ITEM_TO_FLESH);
  45. if (item.HasQuantity())
  46. item.AddQuantity(-20, true);
  47. else
  48. item.Delete();
  49. }
  50. override bool CanTargetBeInVehicle()
  51. {
  52. return true;
  53. }
  54. }