actionextinguishfireplacebyliquid.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. if (!item.GetIsFrozen())
  35. {
  36. return true;
  37. }
  38. }
  39. }
  40. return false;
  41. }
  42. override void OnStartAnimationLoop(ActionData action_data)
  43. {
  44. super.OnStartAnimationLoop(action_data);
  45. FireplaceBase fireplace = FireplaceBase.Cast(action_data.m_Target.GetObject());
  46. fireplace.SetExtinguishingState();
  47. }
  48. override void OnEndServer(ActionData action_data)
  49. {
  50. super.OnEndServer(action_data);
  51. FireplaceBase fireplace = FireplaceBase.Cast(action_data.m_Target.GetObject());
  52. fireplace.RefreshFireState();
  53. }
  54. }