actionunmountbarbedwire.c 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. class ActionUnmountBarbedWireCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.DEFAULT_CONSTRUCT);
  6. }
  7. };
  8. class ActionUnmountBarbedWire: ActionMountBarbedWire
  9. {
  10. void ActionUnmountBarbedWire()
  11. {
  12. m_CallbackClass = ActionUnmountBarbedWireCB;
  13. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
  14. m_FullBody = true;
  15. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
  16. m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
  17. m_Text = "#unmount_barbed_wire";
  18. }
  19. override void CreateConditionComponents()
  20. {
  21. m_ConditionItem = new CCINonRuined;
  22. m_ConditionTarget = new CCTNonRuined(UAMaxDistances.BASEBUILDING);
  23. }
  24. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  25. {
  26. BaseBuildingBase base_building = BaseBuildingBase.Cast(target.GetObject());
  27. if (base_building && base_building.CanUseConstruction() && base_building.CanUseConstructionBuild())
  28. {
  29. if (!base_building.IsPlayerInside(player,""))
  30. return false;
  31. BarbedWire barbed_wire = GetBarbedWire(target);
  32. return (barbed_wire && barbed_wire.IsMounted());
  33. }
  34. return false;
  35. }
  36. override void OnFinishProgressServer(ActionData action_data)
  37. {
  38. BarbedWireActionData actionDataBW = BarbedWireActionData.Cast(action_data);
  39. BaseBuildingBase base_building = BaseBuildingBase.Cast(actionDataBW.m_Target.GetObject());
  40. //unmount and refresh parent
  41. BarbedWire wire = BarbedWire.Cast(base_building.FindAttachmentBySlotName(actionDataBW.m_SlotName));
  42. wire.SetMountedState(false);
  43. }
  44. override string GetZoneSelection(ActionTarget target)
  45. {
  46. BaseBuildingBase base_building = BaseBuildingBase.Cast(target.GetObject());
  47. string selection = base_building.GetActionComponentName(target.GetComponentIndex());
  48. if (selection.Length() > 0)
  49. {
  50. int delimiter_index = selection.IndexOfFrom(0, "_mounted");
  51. if (delimiter_index > -1)
  52. {
  53. selection = selection.Substring(0, delimiter_index);
  54. }
  55. /*else if (!selection.Contains("_barbedwire_") && selection.Contains("_wall_"))
  56. {
  57. selection.Insert(selection.Length(),"_barbedwire_1");
  58. }*/
  59. }
  60. //Print(selection);
  61. return selection;
  62. }
  63. override string GetAdminLogMessage(ActionData action_data)
  64. {
  65. string message = string.Format("Player %1 Unmounted BarbedWire from %2", action_data.m_Player, action_data.m_Target.GetObject().ClassName());
  66. return message;
  67. }
  68. }