1242{
1244
1252
1262
1264
1266 {
1268 {
1270
1272 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1273
1277 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1278 }
1279 }
1280
1282 {
1284
1286 }
1287
1289 {
1290 super.EEDelete(parent);
1291
1293
1296 }
1297
1299 {
1300 super.EEItemLocationChanged(oldLoc, newLoc);
1301
1304 {
1305 switch (oldLoc.GetParent().GetType())
1306 {
1307 case "FryingPan":
1308 case "Pot":
1309 case "Cauldron":
1310 case "SharpWoodenStick":
1312 break;
1313 }
1314
1317 {
1319 }
1320 }
1321
1322 if (oldLoc.IsValid())
1324
1327 }
1328
1330 {
1333 }
1334
1336 {
1339
1340 return true;
1341 }
1342
1344 {
1346 {
1348 }
1349 }
1350
1353 {
1354 int foodStageType;
1355
1357 if (foodStage)
1358 foodStageType = foodStage.GetFoodStageType();
1359
1364
1365 return agentsIn;
1366 }
1367
1368
1370 {
1371 return false;
1372 }
1373
1375 {
1376 return false;
1377 }
1378
1380 {
1382 {
1384 {
1387
1390
1391 default:
1392 return super.GetTemperatureFreezeTime();
1393 }
1394 }
1395
1396 return super.GetTemperatureFreezeTime();
1397 }
1398
1400 {
1402 {
1404 {
1407
1410
1411 default:
1412 return super.GetTemperatureThawTime();
1413 }
1414 }
1415
1416 return super.GetTemperatureThawTime();
1417 }
1418
1420 {
1422 }
1423
1424
1425
1426
1428 {
1429 SetSynchDirty();
1430 }
1431
1433 {
1434 super.OnVariablesSynchronized();
1435
1436
1437
1438
1440 {
1442 }
1443 else
1444 {
1446 }
1447
1450 }
1451
1452
1453
1454
1456 {
1459
1461 }
1462
1464 {
1465 string soundName = "";
1466
1469
1471 {
1473 }
1474 else
1475 {
1477 {
1479 {
1484 else
1485 soundName = "";
1486 break;
1487 }
1488
1490 {
1495 else
1496 soundName = "";
1497 break;
1498 }
1499
1501 {
1506 else
1507 soundName = "";
1508 break;
1509 }
1510
1511 default:
1512 soundName = "";
1513 break;
1514 }
1515
1517 {
1518 if (soundName == "")
1519 {
1521 }
1522 else
1523 {
1525 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1526 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1528 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1529 {
1531 }
1532 }
1533 }
1534 }
1535
1537 }
1538
1540 {
1543 }
1544
1545
1546
1547
1549 {
1550 super.OnStoreSave(ctx);
1551
1553 {
1555 }
1556
1557
1560 }
1561
1563 {
1564 if (!super.OnStoreLoad(ctx, version))
1565 return false;
1566
1568 {
1570 return false;
1571 }
1572
1573 if (version >= 115)
1574 {
1576 {
1578 return false;
1579 }
1581 {
1583 return false;
1584 }
1585 }
1586
1589
1590 return true;
1591 }
1592
1594 {
1595 super.AfterStoreLoad();
1596
1598 }
1599
1600
1602 {
1604 }
1605
1606
1608 {
1609 return false;
1610 }
1611
1613 {
1614 return false;
1615 }
1616
1618 {
1619 return false;
1620 }
1621
1623 {
1624 return false;
1625 }
1626
1627
1628
1629
1630
1632 {
1635 {
1636 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
1637 }
1638 else if (classname != "" && food_stage)
1639 {
1640 return FoodStage.GetFullnessIndex(null, food_stage, classname);
1641 }
1642 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
1643 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
1644
1645 }
1646
1648 {
1651 {
1653 }
1654 else if (classname != "" && food_stage)
1655 {
1656 return FoodStage.GetEnergy(null, food_stage, classname);
1657 }
1658 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1659 return g_Game.ConfigGetFloat( class_path +
" energy" );
1660 }
1661
1663 {
1666 {
1668 }
1669 else if (classname != "" && food_stage)
1670 {
1671 return FoodStage.GetWater(null, food_stage, classname);
1672 }
1673 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1674 return g_Game.ConfigGetFloat( class_path +
" water" );
1675 }
1676
1678 {
1681 {
1682 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
1683 }
1684 else if (classname != "" && food_stage)
1685 {
1686 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
1687 }
1688 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1689 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
1690
1691 }
1692
1694 {
1697 {
1698 return FoodStage.GetToxicity(food_item.
GetFoodStage());
1699 }
1700 else if (classname != "" && food_stage)
1701 {
1702 return FoodStage.GetToxicity(null, food_stage, classname);
1703 }
1704 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1705 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
1706 }
1707
1709 {
1712 {
1714 }
1715 else if (classname != "" && food_stage)
1716 {
1717 return FoodStage.GetAgents(null, food_stage, classname);
1718 }
1719 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1720 return g_Game.ConfigGetInt( class_path +
" agents" );
1721 }
1722
1724 {
1727 {
1728 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
1729 }
1730 else if (classname != "" && food_stage)
1731 {
1732 return FoodStage.GetDigestibility(null, food_stage, classname);
1733 }
1734 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1735 return g_Game.ConfigGetInt( class_path +
" digestibility" );
1736 }
1737
1739 {
1742 {
1743 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
1744 }
1745 else if (className != "" && foodStage)
1746 {
1747 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
1748 }
1749 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
1750 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
1751 }
1752
1754 {
1764
1765 return profile;
1766 }
1767
1768
1769
1770
1772 {
1774 }
1775
1776
1778 {
1780 {
1782 }
1783
1784 return false;
1785 }
1786
1788 {
1790 {
1792 }
1793
1794 return false;
1795 }
1796
1798 {
1800 {
1802 }
1803
1804 return false;
1805 }
1806
1808 {
1810 {
1812 }
1813
1814 return false;
1815 }
1816
1818 {
1820 {
1822 }
1823
1824 return false;
1825 }
1826
1828 {
1830 {
1832 }
1833
1834 return false;
1835 }
1836
1837
1839 {
1841 }
1842
1844 {
1845 return GetFoodStage().GetNextFoodStageType( cooking_method );
1846 }
1847
1849 {
1850 return GetFoodStage().GetFoodStageName( food_stage_type );
1851 }
1852
1854 {
1855 return GetFoodStage().CanChangeToNewStage( cooking_method );
1856 }
1857
1858
1860 {
1861 if ( !source.GetFoodStage())
1862 return;
1867 }
1868
1871 {
1874 }
1875
1878 {
1879 switch (stageNew)
1880 {
1885 break;
1886
1889 break;
1890 }
1891 }
1892
1893
1894
1895
1896
1898 {
1900 }
1901
1903 {
1905
1906
1908 }
1909
1911 {
1913 {
1916 }
1917 }
1918
1919
1921 {
1923 if (player)
1924 {
1926 player.ServerReplaceItemInHandsWithNew(lambda);
1927 }
1928 else
1929 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
1930 }
1931
1933 {
1935 }
1936
1938 {
1939 super.SetActions();
1940
1943 }
1944
1946 {
1947 #ifndef SERVER
1948 #ifndef NO_GUI
1950 {
1952
1955 }
1956 #endif
1957 #endif
1958 }
1959
1961 {
1962 #ifndef SERVER
1963 #ifndef NO_GUI
1965 {
1969 }
1970 #endif
1971 #endif
1972 }
1973
1975 {
1976 return false;
1977 }
1978
1980 {
1982 }
1983
1984 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
1985 {
1987
1988 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
1990 if ( hasRootAsPlayer )
1992
1993
1994
1995
1996
1997
1998
2000 {
2001
2003 {
2005 {
2009 break;
2010
2014 break;
2015
2019 break;
2020
2024 default:
2027 return;
2028 }
2029
2030
2031 }
2032
2034
2036 {
2038 {
2039
2041 {
2043 }
2045 {
2048 {
2050 }
2051 else
2052 {
2054 {
2056 }
2057 else
2058 {
2060 }
2061 }
2062 }
2063 }
2064 }
2065
2066 }
2068 {
2069
2071 {
2073 {
2077 break;
2078
2082 break;
2083
2087 break;
2088
2092 break;
2093
2096 default:
2099 return;
2100 }
2101 }
2102
2104
2106 {
2108 {
2109
2111 {
2113 }
2114 }
2115 }
2116 }
2118 {
2119
2121 {
2123 {
2127 break;
2128
2131 default:
2134 return;
2135 }
2136 }
2137
2139
2141 {
2143 {
2144
2146 {
2148 }
2149 }
2150 }
2151 }
2152 else
2153 {
2154
2156
2158 {
2161
2162 }
2163 else
2164 {
2166 {
2169 }
2170 }
2171 }
2172 }
2173
2175 {
2176 if (
g_Game.IsHeadlessOrDedicatedServer())
2177 return;
2178
2180 {
2182 GetInventory().GetCurrentInventoryLocation(invLoc);
2184 {
2186 if (ptcMgr)
2187 {
2192 }
2193 }
2194 }
2196 {
2198 {
2201 return;
2202 }
2203
2205 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2207 {
2210 }
2211 }
2212 }
2213
2214 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2215 {
2217 {
2222 }
2223
2224 super.GetDebugActions(outputList);
2225 }
2226
2228 {
2229 super.OnAction(action_id, player, ctx);
2230
2232 {
2233 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2234 {
2236 if (food_stage_prev <= 0)
2237 {
2239 }
2241 return true;
2242 }
2243 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2244 {
2247 {
2249 }
2251 return true;
2252 }
2253
2254 }
2255
2256 #ifdef DIAG_DEVELOPER
2257 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2258 {
2259 PrintNutritionsData();
2260 return true;
2261 }
2262 #endif
2263
2264 return false;
2265 }
2266
2268 {
2269 string debug_output;
2270
2271 debug_output = super.GetDebugText();
2272
2275
2276 return debug_output;
2277 }
2278
2279
2280
2281
2282
2284 {
2285 float ret = super.GetBaitEffectivity();
2286
2288 {
2289 ret *= 0.5;
2290 }
2291
2292 return ret;
2293 }
2294
2296 {
2298 }
2299
2301 {
2303 }
2304
2306 {
2308 }
2309
2310 #ifdef DIAG_DEVELOPER
2311 private void PrintNutritionsData()
2312 {
2313 string nutritionsData = "";
2314
2317
2319 if (profile)
2320 {
2321 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2323 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2327 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2329
2332
2333 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2335 }
2336
2337 nutritionsData += "-----\n";
2338
2340 }
2341 #endif
2342
2344
2347 {
2349 }
2350}
2351
2353{
2355};
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.