actionpulloutplug.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. class ActionPullOutPlug : ActionInteractBase
  2. {
  3. void ActionPullOutPlug()
  4. {
  5. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_INTERACTONCE;
  6. m_Text = "#pull_out_plug";
  7. }
  8. override bool DisplayTargetInActionText()
  9. {
  10. return true;
  11. }
  12. override string GetTargetName(PlayerBase player, ActionTarget target)
  13. {
  14. ItemBase targetItem = ItemBase.Cast(target.GetObject());
  15. if (targetItem && targetItem.HasEnergyManager())
  16. {
  17. string selection = targetItem.GetActionComponentName(target.GetComponentIndex());
  18. if (targetItem.GetCompEM() && targetItem.GetCompEM().GetPlugOwner(selection))
  19. return targetItem.GetCompEM().GetPlugOwner(selection).GetDisplayName();
  20. }
  21. return super.GetTargetName(player, target);
  22. }
  23. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  24. {
  25. EntityAI targetEntity = EntityAI.Cast(target.GetObject());
  26. if (targetEntity.HasEnergyManager())
  27. {
  28. string selection = targetEntity.GetActionComponentName(target.GetComponentIndex());
  29. if (GetGame().IsServer())
  30. return targetEntity.GetCompEM().GetPlugOwner(selection) != null;
  31. else
  32. return targetEntity.GetCompEM().IsSelectionAPlug(selection);
  33. }
  34. return false;
  35. }
  36. override void OnExecuteServer(ActionData action_data)
  37. {
  38. Object targetObject = action_data.m_Target.GetObject();
  39. if (targetObject)
  40. {
  41. EntityAI targetEntity = EntityAI.Cast(targetObject);
  42. string selection = targetObject.GetActionComponentName(action_data.m_Target.GetComponentIndex());
  43. EntityAI device = EntityAI.Cast(targetEntity.GetCompEM().GetPlugOwner(selection));
  44. if (device)
  45. device.GetCompEM().UnplugThis();
  46. // Disable Advanced Placement
  47. if (action_data.m_Player.IsPlacingServer())
  48. action_data.m_Player.PlacingCancelServer();
  49. }
  50. }
  51. }