1238{
1240
1248
1258
1260
1262 {
1264 {
1266
1268 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1269
1273 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1274 }
1275 }
1276
1278 {
1280
1282 }
1283
1285 {
1286 super.EEDelete(parent);
1287
1289
1292 }
1293
1295 {
1296 super.EEItemLocationChanged(oldLoc, newLoc);
1297
1300 {
1301 switch (oldLoc.GetParent().GetType())
1302 {
1303 case "FryingPan":
1304 case "Pot":
1305 case "Cauldron":
1306 case "SharpWoodenStick":
1308 break;
1309 }
1310
1313 {
1315 }
1316 }
1317
1318 if (oldLoc.IsValid())
1320
1323 }
1324
1326 {
1329 }
1330
1332 {
1335
1336 return true;
1337 }
1338
1340 {
1342 {
1344 }
1345 }
1346
1349 {
1350 int foodStageType;
1351
1353 if (foodStage)
1354 foodStageType = foodStage.GetFoodStageType();
1355
1360
1361 return agentsIn;
1362 }
1363
1364
1366 {
1367 return false;
1368 }
1369
1371 {
1372 return false;
1373 }
1374
1376 {
1378 {
1380 {
1383
1386
1387 default:
1388 return super.GetTemperatureFreezeTime();
1389 }
1390 }
1391
1392 return super.GetTemperatureFreezeTime();
1393 }
1394
1396 {
1398 {
1400 {
1403
1406
1407 default:
1408 return super.GetTemperatureThawTime();
1409 }
1410 }
1411
1412 return super.GetTemperatureThawTime();
1413 }
1414
1416 {
1418 }
1419
1420
1421
1422
1424 {
1425 SetSynchDirty();
1426 }
1427
1429 {
1430 super.OnVariablesSynchronized();
1431
1432
1433
1434
1436 {
1438 }
1439 else
1440 {
1442 }
1443
1446 }
1447
1448
1449
1450
1452 {
1455
1457 }
1458
1460 {
1461 string soundName = "";
1462
1465
1467 {
1469 }
1470 else
1471 {
1473 {
1475 {
1480 else
1481 soundName = "";
1482 break;
1483 }
1484
1486 {
1491 else
1492 soundName = "";
1493 break;
1494 }
1495
1497 {
1502 else
1503 soundName = "";
1504 break;
1505 }
1506
1507 default:
1508 soundName = "";
1509 break;
1510 }
1511
1513 {
1514 if (soundName == "")
1515 {
1517 }
1518 else
1519 {
1521 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1522 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1524 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1525 {
1527 }
1528 }
1529 }
1530 }
1531
1533 }
1534
1536 {
1539 }
1540
1541
1542
1543
1545 {
1546 super.OnStoreSave(ctx);
1547
1549 {
1551 }
1552
1553
1556 }
1557
1559 {
1560 if (!super.OnStoreLoad(ctx, version))
1561 return false;
1562
1564 {
1566 return false;
1567 }
1568
1569 if (version >= 115)
1570 {
1572 {
1574 return false;
1575 }
1577 {
1579 return false;
1580 }
1581 }
1582
1585
1586 return true;
1587 }
1588
1590 {
1591 super.AfterStoreLoad();
1592
1594 }
1595
1596
1598 {
1600 }
1601
1602
1604 {
1605 return false;
1606 }
1607
1609 {
1610 return false;
1611 }
1612
1614 {
1615 return false;
1616 }
1617
1619 {
1620 return false;
1621 }
1622
1623
1624
1625
1626
1628 {
1631 {
1632 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
1633 }
1634 else if (classname != "" && food_stage)
1635 {
1636 return FoodStage.GetFullnessIndex(null, food_stage, classname);
1637 }
1638 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
1640
1641 }
1642
1644 {
1647 {
1649 }
1650 else if (classname != "" && food_stage)
1651 {
1652 return FoodStage.GetEnergy(null, food_stage, classname);
1653 }
1654 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1656 }
1657
1659 {
1662 {
1664 }
1665 else if (classname != "" && food_stage)
1666 {
1667 return FoodStage.GetWater(null, food_stage, classname);
1668 }
1669 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1671 }
1672
1674 {
1677 {
1678 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
1679 }
1680 else if (classname != "" && food_stage)
1681 {
1682 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
1683 }
1684 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1686
1687 }
1688
1690 {
1693 {
1694 return FoodStage.GetToxicity(food_item.
GetFoodStage());
1695 }
1696 else if (classname != "" && food_stage)
1697 {
1698 return FoodStage.GetToxicity(null, food_stage, classname);
1699 }
1700 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1702 }
1703
1705 {
1708 {
1710 }
1711 else if (classname != "" && food_stage)
1712 {
1713 return FoodStage.GetAgents(null, food_stage, classname);
1714 }
1715 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1717 }
1718
1720 {
1723 {
1724 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
1725 }
1726 else if (classname != "" && food_stage)
1727 {
1728 return FoodStage.GetDigestibility(null, food_stage, classname);
1729 }
1730 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1732 }
1733
1735 {
1738 {
1739 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
1740 }
1741 else if (className != "" && foodStage)
1742 {
1743 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
1744 }
1745 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
1747 }
1748
1750 {
1760
1761 return profile;
1762 }
1763
1764
1765
1766
1768 {
1770 }
1771
1772
1774 {
1776 {
1778 }
1779
1780 return false;
1781 }
1782
1784 {
1786 {
1788 }
1789
1790 return false;
1791 }
1792
1794 {
1796 {
1798 }
1799
1800 return false;
1801 }
1802
1804 {
1806 {
1808 }
1809
1810 return false;
1811 }
1812
1814 {
1816 {
1818 }
1819
1820 return false;
1821 }
1822
1824 {
1826 {
1828 }
1829
1830 return false;
1831 }
1832
1833
1835 {
1837 }
1838
1840 {
1841 return GetFoodStage().GetNextFoodStageType( cooking_method );
1842 }
1843
1845 {
1846 return GetFoodStage().GetFoodStageName( food_stage_type );
1847 }
1848
1850 {
1851 return GetFoodStage().CanChangeToNewStage( cooking_method );
1852 }
1853
1854
1856 {
1857 if ( !source.GetFoodStage())
1858 return;
1863 }
1864
1867 {
1870 }
1871
1874 {
1875 switch (stageNew)
1876 {
1881 break;
1882
1885 break;
1886 }
1887 }
1888
1889
1890
1891
1892
1894 {
1896 }
1897
1899 {
1901
1902
1904 }
1905
1907 {
1909 {
1912 }
1913 }
1914
1915
1917 {
1919 if (player)
1920 {
1922 player.ServerReplaceItemInHandsWithNew(lambda);
1923 }
1924 else
1925 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
1926 }
1927
1929 {
1931 }
1932
1934 {
1935 super.SetActions();
1936
1939 }
1940
1942 {
1943 #ifndef SERVER
1945 {
1947
1950 }
1951 #endif
1952 }
1953
1955 {
1956 #ifndef SERVER
1958 {
1962 }
1963 #endif
1964 }
1965
1967 {
1968 return false;
1969 }
1970
1972 {
1974 }
1975
1976 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
1977 {
1979
1980 delta *= DayZGame.Cast(
GetGame()).GetFoodDecayModifier();
1982 if ( hasRootAsPlayer )
1984
1985
1986
1987
1988
1989
1990
1992 {
1993
1995 {
1997 {
2001 break;
2002
2006 break;
2007
2011 break;
2012
2016 default:
2019 return;
2020 }
2021
2022
2023 }
2024
2026
2028 {
2030 {
2031
2033 {
2035 }
2037 {
2040 {
2042 }
2043 else
2044 {
2046 {
2048 }
2049 else
2050 {
2052 }
2053 }
2054 }
2055 }
2056 }
2057
2058 }
2060 {
2061
2063 {
2065 {
2069 break;
2070
2074 break;
2075
2079 break;
2080
2084 break;
2085
2088 default:
2091 return;
2092 }
2093 }
2094
2096
2098 {
2100 {
2101
2103 {
2105 }
2106 }
2107 }
2108 }
2110 {
2111
2113 {
2115 {
2119 break;
2120
2123 default:
2126 return;
2127 }
2128 }
2129
2131
2133 {
2135 {
2136
2138 {
2140 }
2141 }
2142 }
2143 }
2144 else
2145 {
2146
2148
2150 {
2153
2154 }
2155 else
2156 {
2158 {
2161 }
2162 }
2163 }
2164 }
2165
2167 {
2168 if (
GetGame().IsDedicatedServer())
2169 return;
2170
2172 {
2174 GetInventory().GetCurrentInventoryLocation(invLoc);
2176 {
2178 if (ptcMgr)
2179 {
2184 }
2185 }
2186 }
2188 {
2190 {
2193 return;
2194 }
2195
2197 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2199 {
2202 }
2203 }
2204 }
2205
2206 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2207 {
2209 {
2214 }
2215
2216 super.GetDebugActions(outputList);
2217 }
2218
2220 {
2221 super.OnAction(action_id, player, ctx);
2222
2224 {
2225 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2226 {
2228 if (food_stage_prev <= 0)
2229 {
2231 }
2233 return true;
2234 }
2235 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2236 {
2239 {
2241 }
2243 return true;
2244 }
2245
2246 }
2247
2248 #ifdef DIAG_DEVELOPER
2249 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2250 {
2251 PrintNutritionsData();
2252 return true;
2253 }
2254 #endif
2255
2256 return false;
2257 }
2258
2260 {
2261 string debug_output;
2262
2263 debug_output = super.GetDebugText();
2264
2267
2268 return debug_output;
2269 }
2270
2271
2272
2273
2274
2276 {
2277 float ret = super.GetBaitEffectivity();
2278
2280 {
2281 ret *= 0.5;
2282 }
2283
2284 return ret;
2285 }
2286
2288 {
2290 }
2291
2293 {
2295 }
2296
2298 {
2300 }
2301
2302 #ifdef DIAG_DEVELOPER
2303 private void PrintNutritionsData()
2304 {
2305 string nutritionsData = "";
2306
2309
2311 if (profile)
2312 {
2313 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2315 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2319 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2321
2324
2325 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2327 }
2328
2329 nutritionsData += "-----\n";
2330
2332 }
2333 #endif
2334
2336
2339 {
2341 }
2342}
2343
2345{
2347};
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 InsertAgent(int agent, float count=1)
override void RemoveAllAgentsExcept(int agent_to_keep)
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.
proto native float ConfigGetFloat(string path)
Get float value from config on path.
proto native int ConfigGetInt(string path)
Get int value from config on path.
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
proto native CGame GetGame()
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
class JsonUndergroundAreaTriggerData GetPosition
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.