actionbandagetarget.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. class ActionBandageTargetCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. float effectivity = m_ActionData.m_MainItem.GetBandagingEffectivity();
  6. float adjustedTimeSpent = 0;
  7. if (effectivity > 0)
  8. adjustedTimeSpent = UATimeSpent.BANDAGE / effectivity;
  9. m_ActionData.m_ActionComponent = new CAContinuousRepeat(adjustedTimeSpent);
  10. }
  11. }
  12. class ActionBandageTarget : ActionBandageBase
  13. {
  14. void ActionBandageTarget()
  15. {
  16. m_CallbackClass = ActionBandageTargetCB;
  17. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_BANDAGETARGET;
  18. m_FullBody = true;
  19. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
  20. m_Text = "#treat_persons_wound";
  21. }
  22. override void CreateConditionComponents()
  23. {
  24. m_ConditionItem = new CCINonRuined();
  25. m_ConditionTarget = new CCTMan(UAMaxDistances.DEFAULT);
  26. }
  27. override int GetStanceMask(PlayerBase player)
  28. {
  29. if (player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_PRONE))
  30. return DayZPlayerConstants.STANCEMASK_CROUCH;
  31. else
  32. return DayZPlayerConstants.STANCEMASK_ERECT;
  33. }
  34. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  35. {
  36. PlayerBase otherPlayer = PlayerBase.Cast(target.GetObject());
  37. if (otherPlayer)
  38. return otherPlayer.IsBleeding();
  39. return false;
  40. }
  41. override void OnFinishProgressServer(ActionData action_data)
  42. {
  43. PlayerBase target = PlayerBase.Cast(action_data.m_Target.GetObject());
  44. if (action_data.m_MainItem && target)
  45. {
  46. if (CanReceiveAction(action_data.m_Target))
  47. ApplyBandage(action_data.m_MainItem, target);
  48. }
  49. }
  50. override void OnFinishProgressClient(ActionData action_data)
  51. {
  52. GetGame().GetAnalyticsClient().OnActionBandageTarget();
  53. }
  54. override bool CanTargetBeInVehicle()
  55. {
  56. return true;
  57. }
  58. }