actionextinguishfireplacebyliquid.c 1.9 KB

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