actionconsume.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. class ActionConsumeCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousQuantityEdible(UAQuantityConsumed.DEFAULT, UATimeSpent.DEFAULT);
  6. }
  7. };
  8. class ActionConsume: ActionContinuousBase
  9. {
  10. void ActionConsume()
  11. {
  12. m_CallbackClass = ActionConsumeCB;
  13. m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_EAT;
  14. m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_EAT;
  15. m_Text = "#eat";
  16. }
  17. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  18. {
  19. if (!super.ActionCondition(player, target, item))
  20. return false;
  21. ConsumeConditionData dta = new ConsumeConditionData(player,item);
  22. return player.CanEatAndDrink() && player.CanConsumeFood(dta) && item.CanBeConsumed(dta);
  23. }
  24. override bool HasProneException()
  25. {
  26. return true;
  27. }
  28. override bool HasTarget()
  29. {
  30. return false;
  31. }
  32. override void CreateConditionComponents()
  33. {
  34. m_ConditionItem = new CCINotRuinedAndEmpty();
  35. m_ConditionTarget = new CCTSelf();
  36. }
  37. override void OnEndServer(ActionData action_data)
  38. {
  39. super.OnEndServer(action_data);
  40. ItemBase item = action_data.m_MainItem;
  41. if (item && item.GetQuantity() <= 0.01)
  42. {
  43. item.SetQuantity(0);
  44. }
  45. else if (item && GetProgress(action_data) > 0)
  46. {
  47. // we don't want to inject an agent into an empty container
  48. PlayerBase player = action_data.m_Player;
  49. PluginTransmissionAgents plugin = PluginTransmissionAgents.Cast(GetPlugin(PluginTransmissionAgents));
  50. plugin.TransmitAgents(player, item, AGT_UACTION_TO_ITEM);
  51. }
  52. }
  53. };