1328{
1330
1338
1348
1350
1352 {
1354 {
1356
1358 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1359
1363 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1364 }
1365 }
1366
1368 {
1370
1372 }
1373
1375 {
1376 super.EEDelete(parent);
1377
1379
1382 }
1383
1385 {
1386 super.EEItemLocationChanged(oldLoc, newLoc);
1387
1390 {
1391 switch (oldLoc.GetParent().GetType())
1392 {
1393 case "FryingPan":
1394 case "Pot":
1395 case "Cauldron":
1396 case "SharpWoodenStick":
1398 break;
1399 }
1400
1403 {
1405 }
1406 }
1407
1408 if (oldLoc.IsValid())
1410
1413 }
1414
1416 {
1419 }
1420
1422 {
1425
1426 return true;
1427 }
1428
1430 {
1432 {
1434 }
1435 }
1436
1439 {
1440 int foodStageType;
1441
1443 if (foodStage)
1444 foodStageType = foodStage.GetFoodStageType();
1445
1450
1451 return agentsIn;
1452 }
1453
1454
1456 {
1457 return false;
1458 }
1459
1461 {
1462 return false;
1463 }
1464
1466 {
1468 {
1470 {
1473
1476
1477 default:
1478 return super.GetTemperatureFreezeTime();
1479 }
1480 }
1481
1482 return super.GetTemperatureFreezeTime();
1483 }
1484
1486 {
1488 {
1490 {
1493
1496
1497 default:
1498 return super.GetTemperatureThawTime();
1499 }
1500 }
1501
1502 return super.GetTemperatureThawTime();
1503 }
1504
1506 {
1508 }
1509
1510
1511
1512
1514 {
1515 SetSynchDirty();
1516 }
1517
1519 {
1520 super.OnVariablesSynchronized();
1521
1522
1523
1524
1526 {
1528 }
1529 else
1530 {
1532 }
1533
1536 }
1537
1538
1539
1540
1542 {
1545
1547 }
1548
1550 {
1551 string soundName = "";
1552
1555
1557 {
1559 }
1560 else
1561 {
1563 {
1565 {
1570 else
1571 soundName = "";
1572 break;
1573 }
1574
1576 {
1581 else
1582 soundName = "";
1583 break;
1584 }
1585
1587 {
1592 else
1593 soundName = "";
1594 break;
1595 }
1596
1597 default:
1598 soundName = "";
1599 break;
1600 }
1601
1603 {
1604 if (soundName == "")
1605 {
1607 }
1608 else
1609 {
1611 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1612 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1614 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1615 {
1617 }
1618 }
1619 }
1620 }
1621
1623 }
1624
1626 {
1629 }
1630
1631
1632
1633
1635 {
1636 super.OnStoreSave(ctx);
1637
1639 {
1641 }
1642
1643
1646 }
1647
1649 {
1650 if (!super.OnStoreLoad(ctx, version))
1651 return false;
1652
1654 {
1656 return false;
1657 }
1658
1659 if (version >= 115)
1660 {
1662 {
1664 return false;
1665 }
1667 {
1669 return false;
1670 }
1671 }
1672
1675
1676 return true;
1677 }
1678
1680 {
1681 super.AfterStoreLoad();
1682
1684 }
1685
1686
1688 {
1690 }
1691
1692
1694 {
1695 return false;
1696 }
1697
1699 {
1700 return false;
1701 }
1702
1704 {
1705 return false;
1706 }
1707
1709 {
1710 return false;
1711 }
1712
1713
1714
1715
1716
1718 {
1721 {
1722 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
1723 }
1724 else if (classname != "" && food_stage)
1725 {
1726 return FoodStage.GetFullnessIndex(null, food_stage, classname);
1727 }
1728 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
1729 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
1730
1731 }
1732
1734 {
1737 {
1739 }
1740 else if (classname != "" && food_stage)
1741 {
1742 return FoodStage.GetEnergy(null, food_stage, classname);
1743 }
1744 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1745 return g_Game.ConfigGetFloat( class_path +
" energy" );
1746 }
1747
1749 {
1752 {
1754 }
1755 else if (classname != "" && food_stage)
1756 {
1757 return FoodStage.GetWater(null, food_stage, classname);
1758 }
1759 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1760 return g_Game.ConfigGetFloat( class_path +
" water" );
1761 }
1762
1764 {
1767 {
1768 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
1769 }
1770 else if (classname != "" && food_stage)
1771 {
1772 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
1773 }
1774 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1775 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
1776
1777 }
1778
1780 {
1783 {
1784 return FoodStage.GetToxicity(food_item.
GetFoodStage());
1785 }
1786 else if (classname != "" && food_stage)
1787 {
1788 return FoodStage.GetToxicity(null, food_stage, classname);
1789 }
1790 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1791 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
1792 }
1793
1795 {
1798 {
1800 }
1801 else if (classname != "" && food_stage)
1802 {
1803 return FoodStage.GetAgents(null, food_stage, classname);
1804 }
1805 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1806 return g_Game.ConfigGetInt( class_path +
" agents" );
1807 }
1808
1810 {
1813 {
1814 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
1815 }
1816 else if (classname != "" && food_stage)
1817 {
1818 return FoodStage.GetDigestibility(null, food_stage, classname);
1819 }
1820 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1821 return g_Game.ConfigGetInt( class_path +
" digestibility" );
1822 }
1823
1825 {
1828 {
1829 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
1830 }
1831 else if (className != "" && foodStage)
1832 {
1833 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
1834 }
1835 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
1836 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
1837 }
1838
1840 {
1850
1851 return profile;
1852 }
1853
1854
1855
1856
1858 {
1860 }
1861
1862
1864 {
1866 {
1868 }
1869
1870 return false;
1871 }
1872
1874 {
1876 {
1878 }
1879
1880 return false;
1881 }
1882
1884 {
1886 {
1888 }
1889
1890 return false;
1891 }
1892
1894 {
1896 {
1898 }
1899
1900 return false;
1901 }
1902
1904 {
1906 {
1908 }
1909
1910 return false;
1911 }
1912
1914 {
1916 {
1918 }
1919
1920 return false;
1921 }
1922
1923
1925 {
1927 }
1928
1930 {
1931 return GetFoodStage().GetNextFoodStageType( cooking_method );
1932 }
1933
1935 {
1936 return GetFoodStage().GetFoodStageName( food_stage_type );
1937 }
1938
1940 {
1941 return GetFoodStage().CanChangeToNewStage( cooking_method );
1942 }
1943
1944
1946 {
1947 if ( !source.GetFoodStage())
1948 return;
1953 }
1954
1957 {
1960 }
1961
1964 {
1965 switch (stageNew)
1966 {
1971 break;
1972
1975 break;
1976 }
1977 }
1978
1979
1980
1981
1982
1984 {
1986 }
1987
1989 {
1991
1992
1994 }
1995
1997 {
1999 {
2002 }
2003 }
2004
2005
2007 {
2009 if (player)
2010 {
2012 player.ServerReplaceItemInHandsWithNew(lambda);
2013 }
2014 else
2015 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2016 }
2017
2019 {
2021 }
2022
2024 {
2025 super.SetActions();
2026
2029 }
2030
2032 {
2033 #ifndef SERVER
2034 #ifndef NO_GUI
2036 {
2038
2041 }
2042 #endif
2043 #endif
2044 }
2045
2047 {
2048 #ifndef SERVER
2049 #ifndef NO_GUI
2051 {
2055 }
2056 #endif
2057 #endif
2058 }
2059
2061 {
2062 return false;
2063 }
2064
2066 {
2068 }
2069
2070 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2071 {
2073
2074 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2076 if ( hasRootAsPlayer )
2078
2079
2080
2081
2082
2083
2084
2086 {
2087
2089 {
2091 {
2095 break;
2096
2100 break;
2101
2105 break;
2106
2110 default:
2113 return;
2114 }
2115
2116
2117 }
2118
2120
2122 {
2124 {
2125
2127 {
2129 }
2131 {
2134 {
2136 }
2137 else
2138 {
2140 {
2142 }
2143 else
2144 {
2146 }
2147 }
2148 }
2149 }
2150 }
2151
2152 }
2154 {
2155
2157 {
2159 {
2163 break;
2164
2168 break;
2169
2173 break;
2174
2178 break;
2179
2182 default:
2185 return;
2186 }
2187 }
2188
2190
2192 {
2194 {
2195
2197 {
2199 }
2200 }
2201 }
2202 }
2204 {
2205
2207 {
2209 {
2213 break;
2214
2217 default:
2220 return;
2221 }
2222 }
2223
2225
2227 {
2229 {
2230
2232 {
2234 }
2235 }
2236 }
2237 }
2238 else
2239 {
2240
2242
2244 {
2247
2248 }
2249 else
2250 {
2252 {
2255 }
2256 }
2257 }
2258 }
2259
2261 {
2262 if (
g_Game.IsHeadlessOrDedicatedServer())
2263 return;
2264
2266 {
2268 GetInventory().GetCurrentInventoryLocation(invLoc);
2270 {
2272 if (ptcMgr)
2273 {
2278 }
2279 }
2280 }
2282 {
2284 {
2287 return;
2288 }
2289
2291 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2293 {
2296 }
2297 }
2298 }
2299
2300 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2301 {
2303 {
2308 }
2309
2310 super.GetDebugActions(outputList);
2311 }
2312
2314 {
2315 super.OnAction(action_id, player, ctx);
2316
2318 {
2319 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2320 {
2322 if (food_stage_prev <= 0)
2323 {
2325 }
2327 return true;
2328 }
2329 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2330 {
2333 {
2335 }
2337 return true;
2338 }
2339
2340 }
2341
2342 #ifdef DIAG_DEVELOPER
2343 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2344 {
2345 PrintNutritionsData();
2346 return true;
2347 }
2348 #endif
2349
2350 return false;
2351 }
2352
2354 {
2355 string debug_output;
2356
2357 debug_output = super.GetDebugText();
2358
2361
2362 return debug_output;
2363 }
2364
2365
2366
2367
2368
2370 {
2371 float ret = super.GetBaitEffectivity();
2372
2374 {
2375 ret *= 0.5;
2376 }
2377
2378 return ret;
2379 }
2380
2382 {
2384 }
2385
2387 {
2389 }
2390
2392 {
2394 }
2395
2396 #ifdef DIAG_DEVELOPER
2397 private void PrintNutritionsData()
2398 {
2399 string nutritionsData = "";
2400
2403
2405 if (profile)
2406 {
2407 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2409 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2413 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2415
2418
2419 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2421 }
2422
2423 nutritionsData += "-----\n";
2424
2426 }
2427 #endif
2428
2430
2433 {
2435 }
2436}
2437
2439{
2441};
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.