actiontriggerremotely.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. class ActionTriggerRemotely : ActionSingleUseBase
  2. {
  3. void ActionTriggerRemotely()
  4. {
  5. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PRESS_TRIGGER;
  6. m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_PRESS_TRIGGER;
  7. m_Text = "#STR_Detonate";
  8. }
  9. override void CreateConditionComponents()
  10. {
  11. m_ConditionTarget = new CCTNone();
  12. m_ConditionItem = new CCINonRuined();
  13. }
  14. override bool HasProgress()
  15. {
  16. return true;
  17. }
  18. override bool HasTarget()
  19. {
  20. return false;
  21. }
  22. override bool HasProneException()
  23. {
  24. return true;
  25. }
  26. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  27. {
  28. RemoteDetonatorTrigger rdt = RemoteDetonatorTrigger.Cast(item);
  29. if (rdt && rdt.IsConnected())
  30. {
  31. ExplosivesBase controlledDevice = ExplosivesBase.Cast(rdt.GetControlledDevice());
  32. if (controlledDevice && controlledDevice.GetPairDevice() != item)
  33. {
  34. rdt.UpdateLED(ERemoteDetonatorLEDState.OFF);
  35. return false;
  36. }
  37. if (controlledDevice && !controlledDevice.IsRuined() && controlledDevice.GetArmed())
  38. {
  39. if (vector.DistanceSq(player.GetPosition(), controlledDevice.GetPosition()) <= Math.SqrFloat(UAMaxDistances.EXPLOSIVE_REMOTE_ACTIVATION))
  40. {
  41. rdt.UpdateLED(ERemoteDetonatorLEDState.LIT);
  42. return true;
  43. }
  44. }
  45. }
  46. rdt.UpdateLED(ERemoteDetonatorLEDState.OFF);
  47. return false;
  48. }
  49. override void OnExecuteServer(ActionData action_data)
  50. {
  51. super.OnExecuteServer(action_data);
  52. RemoteDetonatorTrigger rdt = RemoteDetonatorTrigger.Cast(action_data.m_MainItem);
  53. if (rdt && rdt.IsConnected())
  54. {
  55. ItemBase controlledDevice = ItemBase.Cast(rdt.GetControlledDevice());
  56. if (controlledDevice && !controlledDevice.IsRuined())
  57. {
  58. controlledDevice.OnActivatedByItem(action_data.m_MainItem);
  59. action_data.m_MainItem.SetAnimationPhase("trigger", 1);
  60. action_data.m_MainItem.SetAnimationPhase("lever", 1);
  61. }
  62. }
  63. }
  64. }