actionstopengineboat.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. class ActionStopEngineBoat: ActionSingleUseBase
  2. {
  3. void ActionStopEngineBoat()
  4. {
  5. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_STOPENGINE;
  6. m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT;
  7. m_Text = "#stop_engine";
  8. }
  9. override void CreateConditionComponents()
  10. {
  11. m_ConditionItem = new CCINone;
  12. m_ConditionTarget = new CCTNone;
  13. }
  14. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  15. {
  16. HumanCommandVehicle vehCommand = player.GetCommand_Vehicle();
  17. if (!vehCommand)
  18. return false;
  19. auto vehicle = BoatScript.Cast(vehCommand.GetTransport());
  20. if (!vehicle)
  21. return false;
  22. if (!vehicle.EngineIsOn())
  23. return false;
  24. return vehicle.CrewDriver() == player;
  25. }
  26. override void OnExecute(ActionData action_data)
  27. {
  28. HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
  29. if (!vehCommand)
  30. return;
  31. auto vehicle = BoatScript.Cast(vehCommand.GetTransport());
  32. if (!vehicle)
  33. return;
  34. if (vehicle.GetNetworkMoveStrategy() == NetworkMoveStrategy.PHYSICS)
  35. {
  36. // Only perform on clients (or robos), validation is performed in C++
  37. if (action_data.m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_SERVER)
  38. {
  39. return;
  40. }
  41. }
  42. vehicle.EngineStop();
  43. }
  44. override bool CanBeUsedInVehicle()
  45. {
  46. return true;
  47. }
  48. override bool UseMainItem()
  49. {
  50. return false;
  51. }
  52. override bool HasTarget()
  53. {
  54. return false;
  55. }
  56. }