DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ ProcessItemToCook()

void ProcessItemToCook ( notnull ItemBase pItem,
ItemBase cookingEquip,
Param2< CookingMethodType, float > pCookingMethod,
out Param2< bool, bool > pStateFlags )
protected

update food

check for done state from baking (exclude Lard from baked items)

check for burned state

См. определение в файле Cooking.c строка 44

45 {
46 Edible_Base item_to_cook = Edible_Base.Cast(pItem);
47 if (item_to_cook && item_to_cook.CanBeCooked())
48 {
50 UpdateCookingState(item_to_cook, pCookingMethod.param1, cookingEquip, pCookingMethod.param2);
51
52 //check for done state for boiling and drying
53 if (item_to_cook.IsFoodBoiled() || item_to_cook.IsFoodDried())
54 {
55 pStateFlags.param1 |= true;
56 }
58 else if (item_to_cook.IsFoodBaked() && item_to_cook.Type() != Lard)
59 {
60 pStateFlags.param1 |= true;
61 }
63 else if (item_to_cook.IsFoodBurned())
64 {
65 pStateFlags.param2 |= true;
66 }
67 }
68 else
69 {
70 //add temperature to item
71 if (pItem != cookingEquip) //1st order item already handled by the fireplace directly!
72 AddTemperatureToItem(pItem, null, 0);
73
74 int liquidType = pItem.GetLiquidType();
75 bool handleLiquid = pItem.IsLiquidContainer() && liquidType != LIQUID_NONE;
76 bool isLiquiBoiling = handleLiquid && pItem.GetTemperature() >= Liquid.GetBoilThreshold(liquidType);
77
78 //handle items that can actually overheat
79 if (pItem.CanItemOverheat())
80 {
81 //handle qty first
82 if (pItem.HasQuantity() && pItem.GetQuantityNormalized() > 0)
83 {
84 if (handleLiquid)
85 {
86 if (pItem.IsItemOverheated() || isLiquiBoiling) //overheat causes qty loss here!
87 pItem.AddQuantity(-LIQUID_VAPOR_QUANTITY,false);
88 }
89 else if (pItem.IsItemOverheated())
90 {
91 pItem.AddQuantity(-SOLID_OVERHEAT_QUANTITY,true);
92 }
93 }//next handle damage
94 else if (!pItem.IsCookware() && pItem.IsItemOverheated()) //cookware already damaged by fireplace, skipping
95 {
96 pItem.DecreaseHealth(PARAM_BURN_DAMAGE_COEF * 100);
97 }
98 }
99 else
100 {
101 if (!pItem.IsCookware()) //cookware already damaged by fireplace, skipping
102 pItem.DecreaseHealth(PARAM_BURN_DAMAGE_COEF * 100);
103
104 if (isLiquiBoiling)
105 pItem.AddQuantity(-LIQUID_VAPOR_QUANTITY,false);
106 }
107
108 //last handle agents
109 if (isLiquiBoiling)
110 pItem.RemoveAllAgentsExcept(eAgents.HEAVYMETAL);
111 }
112 }
static const float SOLID_OVERHEAT_QUANTITY
Определения Cooking.c:28
static const float PARAM_BURN_DAMAGE_COEF
Определения Cooking.c:24
static const float LIQUID_VAPOR_QUANTITY
Определения Cooking.c:27
int UpdateCookingState(Edible_Base item_to_cook, CookingMethodType cooking_method, ItemBase cooking_equipment, float cooking_time_coef)
Определения Cooking.c:196
void AddTemperatureToItem(ItemBase cooked_item, ItemBase cooking_equipment, float min_temperature)
Определения Cooking.c:486
eAgents
Определения EAgents.c:3
bool IsFoodBoiled()
Определения Edible_Base.c:557
override bool CanBeCooked()
Определения Edible_Base.c:129
bool IsFoodBaked()
Определения Edible_Base.c:547
bool IsFoodDried()
Определения Edible_Base.c:567
bool IsFoodBurned()
Определения Edible_Base.c:577
Определения Edible_Base.c:2
const int LIQUID_NONE
Определения constants.c:527

Перекрестные ссылки AddTemperatureToItem(), Edible_Base::CanBeCooked(), Edible_Base::IsFoodBaked(), Edible_Base::IsFoodBoiled(), Edible_Base::IsFoodBurned(), Edible_Base::IsFoodDried(), LIQUID_NONE, LIQUID_VAPOR_QUANTITY, PARAM_BURN_DAMAGE_COEF, SOLID_OVERHEAT_QUANTITY и UpdateCookingState().

Используется в CookWithEquipment().