actionarmexplosive.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. class ActionArmExplosiveCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.EXPLOSIVE_ARM);
  6. }
  7. override void InitActionComponent()
  8. {
  9. super.InitActionComponent();
  10. RegisterAnimationEvent("CraftingAction", UA_IN_CRAFTING);
  11. }
  12. }
  13. class ActionArmExplosive : ActionContinuousBase
  14. {
  15. void ActionArmExplosive()
  16. {
  17. m_CallbackClass = ActionArmExplosiveCB;
  18. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
  19. m_FullBody = true;
  20. m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
  21. m_Text = "#STR_ArmExplosive";
  22. m_Sound = "craft_universal_0";
  23. }
  24. override void CreateConditionComponents()
  25. {
  26. m_ConditionTarget = new CCTNonRuined(UAMaxDistances.DEFAULT);
  27. m_ConditionItem = new CCINotPresent();
  28. }
  29. override typename GetInputType()
  30. {
  31. return ContinuousInteractActionInput;
  32. }
  33. override bool HasProgress()
  34. {
  35. return true;
  36. }
  37. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  38. {
  39. if (target.GetParent())
  40. return false;
  41. ItemBase targetItem = ItemBase.Cast(target.GetObject());
  42. if (targetItem && targetItem.IsBeingPlaced())
  43. return false;
  44. ExplosivesBase explosive = ExplosivesBase.Cast(target.GetObject());
  45. return explosive && !explosive.GetArmed();
  46. }
  47. override void OnFinishProgressServer(ActionData action_data)
  48. {
  49. super.OnFinishProgressServer(action_data);
  50. ExplosivesBase explosive = ExplosivesBase.Cast(action_data.m_Target.GetObject());
  51. if (explosive)
  52. explosive.OnPlacementComplete(action_data.m_Player, explosive.GetPosition(), action_data.m_Player.GetOrientation());
  53. }
  54. }