actionpullbodyfromtransport.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. class ActionPullBodyFromTransport: ActionInteractBase
  2. {
  3. void ActionPullBodyFromTransport()
  4. {
  5. m_StanceMask = DayZPlayerConstants.STANCEMASK_ALL;
  6. m_Text = "#pull_out_body";
  7. }
  8. override void CreateConditionComponents()
  9. {
  10. m_ConditionItem = new CCINone();
  11. m_ConditionTarget = new CCTNone();
  12. }
  13. override bool HasProgress()
  14. {
  15. return false;
  16. }
  17. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  18. {
  19. PlayerBase targetPlayer = PlayerBase.Cast(target.GetObject());
  20. if (!targetPlayer)
  21. return false;
  22. if (targetPlayer.IsAlive())
  23. return false;
  24. IEntity parent = targetPlayer.GetParent();
  25. if (!parent || !parent.IsInherited(Transport))
  26. return false;
  27. bool found = false;
  28. Transport transportTarget = Transport.Cast(targetPlayer.GetParent());
  29. for (int i = 0; i < transportTarget.CrewSize(); ++i)
  30. {
  31. if (transportTarget.CrewMember(i) == targetPlayer)
  32. {
  33. found = true;
  34. break;
  35. }
  36. }
  37. return found && transportTarget.CrewCanGetThrough(i);
  38. }
  39. override void OnStartServer(ActionData action_data)
  40. {
  41. super.OnStartServer(action_data);
  42. DayZPlayerImplement player;
  43. if (!Class.CastTo(player, action_data.m_Target.GetObject()))
  44. {
  45. return;
  46. }
  47. player.TriggerPullPlayerOutOfVehicle();
  48. }
  49. override bool IsInstant()
  50. {
  51. return true;
  52. }
  53. }