casingleusequantityedible.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. class CASingleUseQuantityEdible : CASingleUseQuantity
  2. {
  3. void CASingleUseQuantityEdible(float quantity_used_per_action)
  4. {
  5. m_QuantityUsedPerAction = quantity_used_per_action;
  6. }
  7. override void CalcAndSetQuantity(ActionData action_data)
  8. {
  9. super.CalcAndSetQuantity(action_data);
  10. PlayerConsumeData consumeData = new PlayerConsumeData();
  11. consumeData.m_Type = EConsumeType.ITEM_CONTINUOUS;
  12. consumeData.m_Amount = m_QuantityUsedPerAction;
  13. consumeData.m_Source = action_data.m_MainItem;
  14. consumeData.m_Agents = 0;
  15. Edible_Base edibleItem;
  16. if (Edible_Base.CastTo(edibleItem, action_data.m_MainItem))
  17. {
  18. if ((edibleItem.GetConsumptionPenaltyContext() & EConsumptionPenaltyContext.DRINK|EConsumptionPenaltyContext.EAT) != EConsumptionPenaltyContext.NONE)
  19. consumeData.m_Agents = action_data.m_Player.GetBloodyHandsPenaltyAgents();
  20. }
  21. if (GetGame().IsServer())
  22. {
  23. PlayerBase ntarget = PlayerBase.Cast(action_data.m_Target.GetObject());
  24. if (ntarget)
  25. ntarget.Consume(consumeData);
  26. else
  27. action_data.m_Player.Consume(consumeData);
  28. }
  29. }
  30. }