actionactivatetrap.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. class ActionActivateTrapCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.DEFAULT_DEPLOY);
  6. }
  7. override void InitActionComponent()
  8. {
  9. super.InitActionComponent();
  10. RegisterAnimationEvent("CraftingAction", UA_IN_CRAFTING);
  11. }
  12. }
  13. class ActionActivateTrap : ActionContinuousBase
  14. {
  15. void ActionActivateTrap()
  16. {
  17. m_CallbackClass = ActionActivateTrapCB;
  18. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
  19. m_FullBody = true;
  20. m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
  21. m_Sound = "craft_universal_0";
  22. m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
  23. m_Text = "#activate";
  24. }
  25. override void CreateConditionComponents()
  26. {
  27. m_ConditionTarget = new CCTNonRuined( UAMaxDistances.DEFAULT );
  28. m_ConditionItem = new CCINotPresent;
  29. }
  30. override typename GetInputType()
  31. {
  32. return ContinuousInteractActionInput;
  33. }
  34. override bool HasProgress()
  35. {
  36. return true;
  37. }
  38. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  39. {
  40. ItemBase targetItem = ItemBase.Cast(target.GetObject());
  41. if (targetItem && targetItem.IsBeingPlaced())
  42. return false;
  43. if (player.PhysicsGetLinkedEntity() != null)
  44. return false;
  45. Object targetObject = target.GetObject();
  46. if (targetObject != null)
  47. {
  48. if (targetObject.IsInherited(TrapBase))
  49. {
  50. TrapBase trap = TrapBase.Cast(targetObject);
  51. if (trap.IsActivable() && trap.IsPlaceableAtPosition(trap.GetPosition()))
  52. return true;
  53. }
  54. else if (targetObject.IsInherited(TrapSpawnBase))
  55. {
  56. TrapSpawnBase spawnTrap = TrapSpawnBase.Cast(targetObject);
  57. if (spawnTrap && !spawnTrap.IsActive())
  58. return spawnTrap.IsPlaceableAtPosition(spawnTrap.GetPosition());
  59. }
  60. }
  61. return false;
  62. }
  63. override void OnStartAnimationLoop( ActionData action_data )
  64. {
  65. super.OnStartAnimationLoop( action_data );
  66. if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
  67. {
  68. TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject() );
  69. if ( trap )
  70. {
  71. Param1<bool> play = new Param1<bool>( true );
  72. GetGame().RPCSingleParam( trap, SoundTypeTrap.ACTIVATING, play, true );
  73. }
  74. }
  75. }
  76. override void OnEnd( ActionData action_data )
  77. {
  78. if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
  79. {
  80. TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject());
  81. if ( trap )
  82. {
  83. Param1<bool> play = new Param1<bool>( false );
  84. GetGame().RPCSingleParam( trap, SoundTypeTrap.ACTIVATING, play, true );
  85. }
  86. }
  87. }
  88. override void OnEndAnimationLoop(ActionData action_data)
  89. {
  90. super.OnEndAnimationLoop(action_data);
  91. if (!GetGame().IsMultiplayer() || GetGame().IsServer())
  92. {
  93. TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject());
  94. Param1<bool> play = new Param1<bool>(false);
  95. GetGame().RPCSingleParam(trap, SoundTypeTrap.ACTIVATING, play, true);
  96. }
  97. }
  98. override void OnFinishProgressServer(ActionData action_data)
  99. {
  100. Object targetObject = action_data.m_Target.GetObject();
  101. if (targetObject != null)
  102. {
  103. vector orientation = action_data.m_Player.GetOrientation();
  104. vector position = targetObject.GetPosition();
  105. if (targetObject.IsInherited(TrapBase))
  106. {
  107. TrapBase trap = TrapBase.Cast(targetObject);
  108. trap.OnPlacementComplete(action_data.m_Player, position, orientation);
  109. trap.StartActivate(action_data.m_Player);
  110. }
  111. else if (targetObject.IsInherited(TrapSpawnBase))
  112. {
  113. TrapSpawnBase spawnTrap = TrapSpawnBase.Cast( targetObject );
  114. spawnTrap.OnPlacementComplete(action_data.m_Player, position, orientation);
  115. }
  116. }
  117. }
  118. }