actionextinguishfireplacebyextinguisher.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. class ActionExtinguishFireplaceByExtinguisherCB : ActionContinuousBaseCB
  2. {
  3. private const float TIME_TO_REPEAT = 0.5;
  4. private const float WETNESS_GAIN_MULTIPLIER = 0.5;
  5. override void CreateActionComponent()
  6. {
  7. m_ActionData.m_ActionComponent = new CAContinuousQuantityExtinguish(UAQuantityConsumed.FIREPLACE_EXTINGUISHER, TIME_TO_REPEAT, WETNESS_GAIN_MULTIPLIER);
  8. CAContinuousQuantityExtinguish.Cast(m_ActionData.m_ActionComponent).MultiplyQuantityUsed(m_ActionData.m_MainItem.GetLiquidThroughputCoef());
  9. }
  10. }
  11. class ActionExtinguishFireplaceByExtinguisher : ActionContinuousBase
  12. {
  13. void ActionExtinguishFireplaceByExtinguisher()
  14. {
  15. m_CallbackClass = ActionExtinguishFireplaceByExtinguisherCB;
  16. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_FIREESTINGUISHER;
  17. m_FullBody = true;
  18. m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
  19. m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_MEDIUM;
  20. m_Text = "#extinguish";
  21. }
  22. override void CreateConditionComponents()
  23. {
  24. m_ConditionItem = new CCINonRuined();
  25. m_ConditionTarget = new CCTDummy();
  26. }
  27. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  28. {
  29. Object targetObject = target.GetObject();
  30. if (targetObject.IsFireplace())
  31. {
  32. FireplaceBase fireplace = FireplaceBase.Cast(targetObject);
  33. if (fireplace.CanExtinguishFire() && !item.IsDamageDestroyed())
  34. return true;
  35. }
  36. return false;
  37. }
  38. override void OnStartAnimationLoop(ActionData action_data)
  39. {
  40. super.OnStartAnimationLoop(action_data);
  41. FireplaceBase fireplace = FireplaceBase.Cast(action_data.m_Target.GetObject());
  42. fireplace.SetExtinguishingState();
  43. }
  44. override void OnEndServer(ActionData action_data)
  45. {
  46. super.OnEndServer(action_data);
  47. FireplaceBase fireplace = FireplaceBase.Cast(action_data.m_Target.GetObject());
  48. fireplace.RefreshFireState();
  49. }
  50. }