1202{
1204
1212
1222
1224
1226 {
1228 {
1230
1232 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1233
1237 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1238 }
1239 }
1240
1242 {
1244
1246 }
1247
1249 {
1250 super.EEDelete(parent);
1251
1253
1256 }
1257
1259 {
1260 super.EEItemLocationChanged(oldLoc, newLoc);
1261
1264 {
1265 switch (oldLoc.GetParent().GetType())
1266 {
1267 case "FryingPan":
1268 case "Pot":
1269 case "Cauldron":
1270 case "SharpWoodenStick":
1272 break;
1273 }
1274
1277 {
1279 }
1280 }
1281
1282 if (oldLoc.IsValid())
1284
1287 }
1288
1290 {
1293 }
1294
1296 {
1299
1300 return true;
1301 }
1302
1304 {
1306 {
1308 }
1309 }
1310
1313 {
1314 int foodStageType;
1315
1317 if (foodStage)
1318 foodStageType = foodStage.GetFoodStageType();
1319
1324
1325 return agentsIn;
1326 }
1327
1328
1330 {
1331 return false;
1332 }
1333
1335 {
1336 return false;
1337 }
1338
1340 {
1342 {
1344 {
1347
1350
1351 default:
1352 return super.GetTemperatureFreezeTime();
1353 }
1354 }
1355
1356 return super.GetTemperatureFreezeTime();
1357 }
1358
1360 {
1362 {
1364 {
1367
1370
1371 default:
1372 return super.GetTemperatureThawTime();
1373 }
1374 }
1375
1376 return super.GetTemperatureThawTime();
1377 }
1378
1380 {
1382 }
1383
1384
1385
1386
1388 {
1389 SetSynchDirty();
1390 }
1391
1393 {
1394 super.OnVariablesSynchronized();
1395
1396
1397
1398
1400 {
1402 }
1403 else
1404 {
1406 }
1407
1410 }
1411
1412
1413
1414
1416 {
1419
1421 }
1422
1424 {
1425 string soundName = "";
1426
1429
1431 {
1433 }
1434 else
1435 {
1437 {
1439 {
1444 else
1445 soundName = "";
1446 break;
1447 }
1448
1450 {
1455 else
1456 soundName = "";
1457 break;
1458 }
1459
1461 {
1466 else
1467 soundName = "";
1468 break;
1469 }
1470
1471 default:
1472 soundName = "";
1473 break;
1474 }
1475
1477 {
1478 if (soundName == "")
1479 {
1481 }
1482 else
1483 {
1485 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1486 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1488 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1489 {
1491 }
1492 }
1493 }
1494 }
1495
1497 }
1498
1500 {
1503 }
1504
1505
1506
1507
1509 {
1510 super.OnStoreSave(ctx);
1511
1513 {
1515 }
1516
1517
1520 }
1521
1523 {
1524 if (!super.OnStoreLoad(ctx, version))
1525 return false;
1526
1528 {
1530 return false;
1531 }
1532
1533 if (version >= 115)
1534 {
1536 {
1538 return false;
1539 }
1541 {
1543 return false;
1544 }
1545 }
1546
1549
1550 return true;
1551 }
1552
1554 {
1555 super.AfterStoreLoad();
1556
1558 }
1559
1560
1562 {
1564 }
1565
1566
1568 {
1569 return false;
1570 }
1571
1573 {
1574 return false;
1575 }
1576
1578 {
1579 return false;
1580 }
1581
1583 {
1584 return false;
1585 }
1586
1587
1588
1589
1590
1592 {
1595 {
1596 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
1597 }
1598 else if (classname != "" && food_stage)
1599 {
1600 return FoodStage.GetFullnessIndex(null, food_stage, classname);
1601 }
1602 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
1603 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
1604
1605 }
1606
1608 {
1611 {
1613 }
1614 else if (classname != "" && food_stage)
1615 {
1616 return FoodStage.GetEnergy(null, food_stage, classname);
1617 }
1618 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1619 return g_Game.ConfigGetFloat( class_path +
" energy" );
1620 }
1621
1623 {
1626 {
1628 }
1629 else if (classname != "" && food_stage)
1630 {
1631 return FoodStage.GetWater(null, food_stage, classname);
1632 }
1633 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1634 return g_Game.ConfigGetFloat( class_path +
" water" );
1635 }
1636
1638 {
1641 {
1642 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
1643 }
1644 else if (classname != "" && food_stage)
1645 {
1646 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
1647 }
1648 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1649 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
1650
1651 }
1652
1654 {
1657 {
1658 return FoodStage.GetToxicity(food_item.
GetFoodStage());
1659 }
1660 else if (classname != "" && food_stage)
1661 {
1662 return FoodStage.GetToxicity(null, food_stage, classname);
1663 }
1664 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1665 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
1666 }
1667
1669 {
1672 {
1674 }
1675 else if (classname != "" && food_stage)
1676 {
1677 return FoodStage.GetAgents(null, food_stage, classname);
1678 }
1679 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1680 return g_Game.ConfigGetInt( class_path +
" agents" );
1681 }
1682
1684 {
1687 {
1688 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
1689 }
1690 else if (classname != "" && food_stage)
1691 {
1692 return FoodStage.GetDigestibility(null, food_stage, classname);
1693 }
1694 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1695 return g_Game.ConfigGetInt( class_path +
" digestibility" );
1696 }
1697
1699 {
1702 {
1703 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
1704 }
1705 else if (className != "" && foodStage)
1706 {
1707 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
1708 }
1709 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
1710 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
1711 }
1712
1714 {
1724
1725 return profile;
1726 }
1727
1728
1729
1730
1732 {
1734 }
1735
1736
1738 {
1740 {
1742 }
1743
1744 return false;
1745 }
1746
1748 {
1750 {
1752 }
1753
1754 return false;
1755 }
1756
1758 {
1760 {
1762 }
1763
1764 return false;
1765 }
1766
1768 {
1770 {
1772 }
1773
1774 return false;
1775 }
1776
1778 {
1780 {
1782 }
1783
1784 return false;
1785 }
1786
1788 {
1790 {
1792 }
1793
1794 return false;
1795 }
1796
1797
1799 {
1801 }
1802
1804 {
1805 return GetFoodStage().GetNextFoodStageType( cooking_method );
1806 }
1807
1809 {
1810 return GetFoodStage().GetFoodStageName( food_stage_type );
1811 }
1812
1814 {
1815 return GetFoodStage().CanChangeToNewStage( cooking_method );
1816 }
1817
1818
1820 {
1821 if ( !source.GetFoodStage())
1822 return;
1827 }
1828
1831 {
1834 }
1835
1838 {
1839 switch (stageNew)
1840 {
1845 break;
1846
1849 break;
1850 }
1851 }
1852
1853
1854
1855
1856
1858 {
1860 }
1861
1863 {
1865
1866
1868 }
1869
1871 {
1873 {
1876 }
1877 }
1878
1879
1881 {
1883 if (player)
1884 {
1886 player.ServerReplaceItemInHandsWithNew(lambda);
1887 }
1888 else
1889 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
1890 }
1891
1893 {
1895 }
1896
1898 {
1899 super.SetActions();
1900
1903 }
1904
1906 {
1907 #ifndef SERVER
1908 #ifndef NO_GUI
1910 {
1912
1915 }
1916 #endif
1917 #endif
1918 }
1919
1921 {
1922 #ifndef SERVER
1923 #ifndef NO_GUI
1925 {
1929 }
1930 #endif
1931 #endif
1932 }
1933
1935 {
1936 return false;
1937 }
1938
1940 {
1942 }
1943
1944 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
1945 {
1947
1948 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
1950 if ( hasRootAsPlayer )
1952
1953
1954
1955
1956
1957
1958
1960 {
1961
1963 {
1965 {
1969 break;
1970
1974 break;
1975
1979 break;
1980
1984 default:
1987 return;
1988 }
1989
1990
1991 }
1992
1994
1996 {
1998 {
1999
2001 {
2003 }
2005 {
2008 {
2010 }
2011 else
2012 {
2014 {
2016 }
2017 else
2018 {
2020 }
2021 }
2022 }
2023 }
2024 }
2025
2026 }
2028 {
2029
2031 {
2033 {
2037 break;
2038
2042 break;
2043
2047 break;
2048
2052 break;
2053
2056 default:
2059 return;
2060 }
2061 }
2062
2064
2066 {
2068 {
2069
2071 {
2073 }
2074 }
2075 }
2076 }
2078 {
2079
2081 {
2083 {
2087 break;
2088
2091 default:
2094 return;
2095 }
2096 }
2097
2099
2101 {
2103 {
2104
2106 {
2108 }
2109 }
2110 }
2111 }
2112 else
2113 {
2114
2116
2118 {
2121
2122 }
2123 else
2124 {
2126 {
2129 }
2130 }
2131 }
2132 }
2133
2135 {
2136 if (
g_Game.IsHeadlessOrDedicatedServer())
2137 return;
2138
2140 {
2142 GetInventory().GetCurrentInventoryLocation(invLoc);
2144 {
2146 if (ptcMgr)
2147 {
2152 }
2153 }
2154 }
2156 {
2158 {
2161 return;
2162 }
2163
2165 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2167 {
2170 }
2171 }
2172 }
2173
2174 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2175 {
2177 {
2182 }
2183
2184 super.GetDebugActions(outputList);
2185 }
2186
2188 {
2189 super.OnAction(action_id, player, ctx);
2190
2192 {
2193 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2194 {
2196 if (food_stage_prev <= 0)
2197 {
2199 }
2201 return true;
2202 }
2203 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2204 {
2207 {
2209 }
2211 return true;
2212 }
2213
2214 }
2215
2216 #ifdef DIAG_DEVELOPER
2217 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2218 {
2219 PrintNutritionsData();
2220 return true;
2221 }
2222 #endif
2223
2224 return false;
2225 }
2226
2228 {
2229 string debug_output;
2230
2231 debug_output = super.GetDebugText();
2232
2235
2236 return debug_output;
2237 }
2238
2239
2240
2241
2242
2244 {
2245 float ret = super.GetBaitEffectivity();
2246
2248 {
2249 ret *= 0.5;
2250 }
2251
2252 return ret;
2253 }
2254
2256 {
2258 }
2259
2261 {
2263 }
2264
2266 {
2268 }
2269
2270 #ifdef DIAG_DEVELOPER
2271 private void PrintNutritionsData()
2272 {
2273 string nutritionsData = "";
2274
2277
2279 if (profile)
2280 {
2281 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2283 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2287 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2289
2292
2293 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2295 }
2296
2297 nutritionsData += "-----\n";
2298
2300 }
2301 #endif
2302
2304
2307 {
2309 }
2310}
2311
2313{
2315};
Param4< int, int, string, int > TSelectableActionInfoWithColor
eBleedingSourceType GetType()
AttachActionData ActionData ActionAttach()
void AddAction(typename actionName)
DamageType
exposed from C++ (do not change)
AbstractWave m_SoundPlaying
EConsumptionPenaltyContext
void ReplaceEdibleWithNew(string typeName)
ref FoodStage m_FoodStage
static float GetFoodWater(ItemBase item, string classname="", int food_stage=0)
override bool CanBeCooked()
override string GetDebugText()
override void AfterStoreLoad()
void OnFoodStageChange(FoodStageType stageOld, FoodStageType stageNew)
called on server
override void OnVariablesSynchronized()
const string SOUND_BURNING_DONE
bool CanChangeToNewStage(CookingMethodType cooking_method)
override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
override bool CanItemOverheat()
override float GetBaitEffectivity()
override FoodStage GetFoodStage()
override void SetActions()
override float GetTemperatureFreezeTime()
const string DIRECT_COOKING_SLOT_NAME
FoodStageType GetNextFoodStageType(CookingMethodType cooking_method)
void ChangeFoodStage(FoodStageType new_food_stage_type)
void OnConsume(float amount, PlayerBase consumer)
static float GetFoodNutritionalIndex(ItemBase item, string classname="", int food_stage=0)
SoundOnVehicle m_SoundCooking
static float GetFoodToxicity(ItemBase item, string classname="", int food_stage=0)
void UpdateVisualsEx(bool forced=false)
const string SOUND_BAKING_DONE
static NutritionalProfile GetNutritionalProfile(ItemBase item, string classname="", int food_stage=0)
int FilterAgents(int agentsIn)
Filter agents from the item (override on higher implementations)
override void EEDelete(EntityAI parent)
FoodStageType m_LastDecayStage
override bool CanBeCookedOnStick()
FoodStageType GetLastDecayStage()
string GetFoodStageName(FoodStageType food_stage_type)
override float GetTemperatureThawTime()
void UpdateVaporParticle()
static float GetFoodDigestibility(ItemBase item, string classname="", int food_stage=0)
void TransferFoodStage(notnull Edible_Base source)
override void ProcessDecay(float delta, bool hasRootAsPlayer)
const string SOUND_DRYING_START
void SetCookingTime(float time)
void SoundCookingStart(string sound_name)
const string SOUND_BAKING_START
static float GetFoodTotalVolume(ItemBase item, string classname="", int food_stage=0)
const string SOUND_DRYING_DONE
void HandleFoodStageChangeAgents(FoodStageType stageOld, FoodStageType stageNew)
removes select agents on foodstage transitions
Edible_Base ItemBase ReplaceEdibleWithNewLambda(EntityAI old_item, string new_item_type, PlayerBase player)
bool Consume(float amount, PlayerBase consumer)
EffectSound m_SoundEffectCooking
DEPRECATED.
override bool OnStoreLoad(ParamsReadContext ctx, int version)
FoodStageType GetFoodStageType()
override bool CanProcessDecay()
ParticleSource m_HotVaporParticle
void MakeSoundsOnClient(bool soundstate, CookingMethodType cookingMethod=CookingMethodType.NONE)
static int GetFoodAgents(ItemBase item, string classname="", int food_stage=0)
override bool IsMushroom()
static float GetFoodEnergy(ItemBase item, string classname="", int food_stage=0)
static float GetAgentsPerDigest(ItemBase item, string className="", int foodStage=0)
const string SOUND_BOILING_DONE
int GetConsumptionPenaltyContext()
const string SOUND_BOILING_START
override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
CookingMethodType m_CookedByMethod
override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
override void OnStoreSave(ParamsWriteContext ctx)
override bool CanHaveTemperature()
InventoryLocationType
types of Inventory Location
override void RemoveAllAgentsExcept(int agent_to_keep)
override void InsertAgent(int agent, float count=1)
bool AddQuantity(float value, bool destroy_config=true, bool destroy_forced=false)
add item quantity[related to varQuantity... config entry], destroy_config = true > if the quantity re...
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
ParticleAutoDestroyFlags
Flags to pass to ParticleSource.SetParticleAutoDestroyFlags.
static void Log(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Prints debug message with normal prio.
override FoodStage GetFoodStage()
Wrapper class for managing sound through SEffectManager.
proto native int GetType()
returns type of InventoryLocation
static proto native owned string GetSlotName(int id)
converts slot_id to string
provides access to slot configuration
static const int ITEM_HOT_VAPOR
Entity which has the particle instance as an ObjectComponent.
static const float CONSUMPTION_DAMAGE_PER_BITE
static const float CONSUMPTION_DAMAGE_TEMP_THRESHOLD
static EffectSound PlaySound(string sound_set, vector position, float play_fade_in=0, float stop_fade_out=0, bool loop=false)
Create and play an EffectSound.
Manager class for managing Effect (EffectParticle, EffectSound)
proto bool Write(void value_out)
proto bool Read(void value_in)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Serializer ParamsReadContext
Serializer ParamsWriteContext
void Error(string err)
Messagebox with error message.
const float DECAY_FOOD_BAKED_FRVG
const float DECAY_FOOD_CAN_OPEN
const float DECAY_FOOD_RAW_FRVG
const int DECAY_TIMER_RANDOM_PERCENTAGE
const int DECAY_FOOD_FRVG_DRIED_CHANCE
const float DECAY_FOOD_RAW_MEAT
const float DECAY_FOOD_BAKED_MEAT
const float DECAY_FOOD_BOILED_MEAT
const float DECAY_FOOD_BOILED_FRVG
const float DECAY_FOOD_DRIED_MEAT
const float DECAY_FOOD_RAW_CORPSE
const float DECAY_RATE_ON_PLAYER
static const float TEMPERATURE_THAW_TIME_COEF_BURNED
static const float TEMPERATURE_FREEZE_TIME_COEF_BURNED
static const float TEMPERATURE_THAW_TIME_COEF_DRIED
static const float TEMPERATURE_FREEZE_TIME_COEF_DRIED
const int STATE_HOT_LVL_TWO
static float RandomFloat01()
Returns a random float number between and min [inclusive] and max [inclusive].
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
const int SAT_DEBUG_ACTION
vector GetPosition()
Get the world position of the Effect.
bool Contains(string sample)
Returns true if sample is substring of string.
static proto string Format(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
Gets n-th character from string.