actionstartengine.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. class ActionStartCarCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.START_ENGINE);
  6. }
  7. }
  8. class ActionStartEngine : ActionContinuousBase
  9. {
  10. private const float ROUGH_SPECIALTY_WEIGHT = 0.5;
  11. static const float MINIMUM_BATTERY_ENERGY = 5.0; //! DEPRECATED
  12. bool m_BatteryCon = false; //! DEPRECATED
  13. bool m_SparkCon = false; //! DEPRECATED
  14. bool m_BeltCon = false; //! DEPRECATED
  15. bool m_FuelCon = false; //! DEPRECATED
  16. void ActionStartEngine()
  17. {
  18. m_CallbackClass = ActionStartCarCB;
  19. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_STARTENGINE;
  20. m_StanceMask = DayZPlayerConstants.STANCEMASK_ALL;
  21. m_SpecialtyWeight = ROUGH_SPECIALTY_WEIGHT;
  22. m_LockTargetOnUse = false;
  23. m_Text = "#start_the_car";
  24. }
  25. override void CreateConditionComponents()
  26. {
  27. m_ConditionTarget = new CCTNone();
  28. m_ConditionItem = new CCINone();
  29. }
  30. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  31. {
  32. HumanCommandVehicle vehCommand = player.GetCommand_Vehicle();
  33. if (vehCommand)
  34. {
  35. Transport trans = vehCommand.GetTransport();
  36. if (trans)
  37. {
  38. Car car;
  39. if (Class.CastTo(car, trans) && !car.EngineIsOn())
  40. {
  41. if (car.GetHealthLevel("Engine") >= GameConstants.STATE_RUINED)
  42. {
  43. return false;
  44. }
  45. return car.CrewMemberIndex(player) == DayZPlayerConstants.VEHICLESEAT_DRIVER);
  46. }
  47. }
  48. }
  49. return false;
  50. }
  51. override void OnEndServer(ActionData action_data)
  52. {
  53. super.OnEndServer(action_data);
  54. HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
  55. if (!vehCommand)
  56. return;
  57. Transport trans = vehCommand.GetTransport();
  58. if (!trans)
  59. return;
  60. CarScript car;
  61. if (Class.CastTo(car, trans))
  62. car.SetCarEngineSoundState(CarEngineSoundState.NONE);
  63. }
  64. override void OnFinishProgressServer(ActionData action_data)
  65. {
  66. HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
  67. if (vehCommand)
  68. {
  69. Transport trans = vehCommand.GetTransport();
  70. if (trans)
  71. {
  72. CarScript car;
  73. if (Class.CastTo(car, trans))
  74. {
  75. car.EngineStart();
  76. }
  77. }
  78. }
  79. }
  80. override void OnExecuteServer(ActionData action_data)
  81. {
  82. HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
  83. if (vehCommand)
  84. {
  85. Transport trans = vehCommand.GetTransport();
  86. if (trans)
  87. {
  88. CarScript car;
  89. if (Class.CastTo(car, trans))
  90. {
  91. car.OnBeforeEngineStart();
  92. }
  93. }
  94. }
  95. }
  96. override bool CanBeUsedInVehicle()
  97. {
  98. return true;
  99. }
  100. override bool HasTarget()
  101. {
  102. return false;
  103. }
  104. }