actionconsumesingle.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. class ActionConsumeSingle : ActionSingleUseBase
  2. {
  3. const int DEFAULT_CONSUMED_QUANTITY = 1;
  4. void ActionConsumeSingle()
  5. {
  6. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_LICKBATTERY;
  7. m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_LICKBATTERY;
  8. m_Text = "#eat";
  9. }
  10. int GetConsumedQuantity()
  11. {
  12. return DEFAULT_CONSUMED_QUANTITY;
  13. }
  14. override bool HasProneException()
  15. {
  16. return true;
  17. }
  18. override bool HasTarget()
  19. {
  20. return false;
  21. }
  22. override void CreateConditionComponents()
  23. {
  24. m_ConditionItem = new CCINotRuinedAndEmpty();
  25. m_ConditionTarget = new CCTSelf();
  26. }
  27. override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
  28. {
  29. ConsumeConditionData dta = new ConsumeConditionData(player,item);
  30. return super.ActionCondition(player, target, item) && player.CanEatAndDrink() && player.CanConsumeFood(dta) && item.CanBeConsumed(dta);
  31. }
  32. override void OnExecuteServer(ActionData action_data)
  33. {
  34. PlayerBase player = action_data.m_Player;
  35. if (player && action_data.m_MainItem)
  36. {
  37. PlayerConsumeData consumeData = new PlayerConsumeData();
  38. consumeData.m_Type = EConsumeType.ITEM_SINGLE_TIME;
  39. consumeData.m_Amount = GetConsumedQuantity();
  40. consumeData.m_Source = action_data.m_MainItem;
  41. consumeData.m_Agents = action_data.m_Player.GetBloodyHandsPenaltyAgents();
  42. player.Consume(consumeData);
  43. }
  44. }
  45. override void OnEndServer(ActionData action_data)
  46. {
  47. super.OnEndServer(action_data);
  48. if (action_data.m_MainItem && (action_data.m_MainItem.GetQuantity() <= 0))
  49. action_data.m_MainItem.SetQuantity(0);
  50. }
  51. }
  52. //! DEPRECATED
  53. class ActionConsumeSingleCB : ActionSingleUseBaseCB
  54. {
  55. override void CreateActionComponent()
  56. {
  57. m_ActionData.m_ActionComponent = new CASingleUseQuantityEdible(UAQuantityConsumed.DEFAULT);
  58. }
  59. }