1421{
1423
1431
1441
1443
1445 {
1447 {
1449
1451 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1452
1456 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1457 }
1458 }
1459
1461 {
1463
1465 }
1466
1468 {
1469 super.EEDelete(parent);
1470
1472
1475 }
1476
1478 {
1479 super.EEItemLocationChanged(oldLoc, newLoc);
1480
1483 {
1484 switch (oldLoc.GetParent().GetType())
1485 {
1486 case "FryingPan":
1487 case "Pot":
1488 case "Cauldron":
1489 case "SharpWoodenStick":
1491 break;
1492 }
1493
1496 {
1498 }
1499 }
1500
1501 if (oldLoc.IsValid())
1503
1506 }
1507
1509 {
1512 }
1513
1515 {
1518
1519 return true;
1520 }
1521
1523 {
1525 {
1527 }
1528 }
1529
1532 {
1533 int foodStageType;
1534
1536 if (foodStage)
1537 foodStageType = foodStage.GetFoodStageType();
1538
1543
1544 return agentsIn;
1545 }
1546
1547
1549 {
1550 return false;
1551 }
1552
1554 {
1555 return false;
1556 }
1557
1559 {
1561 {
1563 {
1566
1569
1570 default:
1571 return super.GetTemperatureFreezeTime();
1572 }
1573 }
1574
1575 return super.GetTemperatureFreezeTime();
1576 }
1577
1579 {
1581 {
1583 {
1586
1589
1590 default:
1591 return super.GetTemperatureThawTime();
1592 }
1593 }
1594
1595 return super.GetTemperatureThawTime();
1596 }
1597
1599 {
1601 }
1602
1603
1604
1605
1607 {
1608 SetSynchDirty();
1609 }
1610
1612 {
1613 super.OnVariablesSynchronized();
1614
1615
1616
1617
1619 {
1621 }
1622 else
1623 {
1625 }
1626
1629 }
1630
1631
1632
1633
1635 {
1638
1640 }
1641
1643 {
1644 string soundName = "";
1645
1648
1650 {
1652 }
1653 else
1654 {
1656 {
1658 {
1663 else
1664 soundName = "";
1665 break;
1666 }
1667
1669 {
1674 else
1675 soundName = "";
1676 break;
1677 }
1678
1680 {
1685 else
1686 soundName = "";
1687 break;
1688 }
1689
1690 default:
1691 soundName = "";
1692 break;
1693 }
1694
1696 {
1697 if (soundName == "")
1698 {
1700 }
1701 else
1702 {
1704 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1705 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1707 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1708 {
1710 }
1711 }
1712 }
1713 }
1714
1716 }
1717
1719 {
1722 }
1723
1724
1725
1726
1728 {
1729 super.OnStoreSave(ctx);
1730
1732 {
1734 }
1735
1736
1739 }
1740
1742 {
1743 if (!super.OnStoreLoad(ctx, version))
1744 return false;
1745
1747 {
1749 return false;
1750 }
1751
1752 if (version >= 115)
1753 {
1755 {
1757 return false;
1758 }
1760 {
1762 return false;
1763 }
1764 }
1765
1768
1769 return true;
1770 }
1771
1773 {
1774 super.AfterStoreLoad();
1775
1777 }
1778
1779
1781 {
1783 }
1784
1785
1787 {
1788 return false;
1789 }
1790
1792 {
1793 return false;
1794 }
1795
1797 {
1798 return false;
1799 }
1800
1802 {
1803 return false;
1804 }
1805
1806
1807
1808
1809
1811 {
1814 {
1815 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
1816 }
1817 else if (classname != "" && food_stage)
1818 {
1819 return FoodStage.GetFullnessIndex(null, food_stage, classname);
1820 }
1821 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
1822 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
1823
1824 }
1825
1827 {
1830 {
1832 }
1833 else if (classname != "" && food_stage)
1834 {
1835 return FoodStage.GetEnergy(null, food_stage, classname);
1836 }
1837 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1838 return g_Game.ConfigGetFloat( class_path +
" energy" );
1839 }
1840
1842 {
1845 {
1847 }
1848 else if (classname != "" && food_stage)
1849 {
1850 return FoodStage.GetWater(null, food_stage, classname);
1851 }
1852 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1853 return g_Game.ConfigGetFloat( class_path +
" water" );
1854 }
1855
1857 {
1860 {
1861 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
1862 }
1863 else if (classname != "" && food_stage)
1864 {
1865 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
1866 }
1867 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1868 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
1869
1870 }
1871
1873 {
1876 {
1877 return FoodStage.GetToxicity(food_item.
GetFoodStage());
1878 }
1879 else if (classname != "" && food_stage)
1880 {
1881 return FoodStage.GetToxicity(null, food_stage, classname);
1882 }
1883 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1884 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
1885 }
1886
1888 {
1891 {
1893 }
1894 else if (classname != "" && food_stage)
1895 {
1896 return FoodStage.GetAgents(null, food_stage, classname);
1897 }
1898 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1899 return g_Game.ConfigGetInt( class_path +
" agents" );
1900 }
1901
1903 {
1906 {
1907 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
1908 }
1909 else if (classname != "" && food_stage)
1910 {
1911 return FoodStage.GetDigestibility(null, food_stage, classname);
1912 }
1913 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1914 return g_Game.ConfigGetInt( class_path +
" digestibility" );
1915 }
1916
1918 {
1921 {
1922 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
1923 }
1924 else if (className != "" && foodStage)
1925 {
1926 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
1927 }
1928 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
1929 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
1930 }
1931
1933 {
1943
1944 return profile;
1945 }
1946
1947
1948
1949
1951 {
1953 }
1954
1955
1957 {
1959 {
1961 }
1962
1963 return false;
1964 }
1965
1967 {
1969 {
1971 }
1972
1973 return false;
1974 }
1975
1977 {
1979 {
1981 }
1982
1983 return false;
1984 }
1985
1987 {
1989 {
1991 }
1992
1993 return false;
1994 }
1995
1997 {
1999 {
2001 }
2002
2003 return false;
2004 }
2005
2007 {
2009 {
2011 }
2012
2013 return false;
2014 }
2015
2016
2018 {
2020 }
2021
2023 {
2024 return GetFoodStage().GetNextFoodStageType( cooking_method );
2025 }
2026
2028 {
2029 return GetFoodStage().GetFoodStageName( food_stage_type );
2030 }
2031
2033 {
2034 return GetFoodStage().CanChangeToNewStage( cooking_method );
2035 }
2036
2037
2039 {
2040 if ( !source.GetFoodStage())
2041 return;
2046 }
2047
2050 {
2053 }
2054
2057 {
2058 switch (stageNew)
2059 {
2064 break;
2065
2068 break;
2069 }
2070 }
2071
2072
2073
2074
2075
2077 {
2079 }
2080
2082 {
2084
2085
2087 }
2088
2090 {
2092 {
2095 }
2096 }
2097
2098
2100 {
2102 if (player)
2103 {
2105 player.ServerReplaceItemInHandsWithNew(lambda);
2106 }
2107 else
2108 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2109 }
2110
2112 {
2114 }
2115
2117 {
2118 super.SetActions();
2119
2122 }
2123
2125 {
2126 #ifndef SERVER
2127 #ifndef NO_GUI
2129 {
2131
2134 }
2135 #endif
2136 #endif
2137 }
2138
2140 {
2141 #ifndef SERVER
2142 #ifndef NO_GUI
2144 {
2148 }
2149 #endif
2150 #endif
2151 }
2152
2154 {
2155 return false;
2156 }
2157
2159 {
2161 }
2162
2163 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2164 {
2166
2167 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2169 if ( hasRootAsPlayer )
2171
2172
2173
2174
2175
2176
2177
2179 {
2180
2182 {
2184 {
2188 break;
2189
2193 break;
2194
2198 break;
2199
2203 default:
2206 return;
2207 }
2208
2209
2210 }
2211
2213
2215 {
2217 {
2218
2220 {
2222 }
2224 {
2227 {
2229 }
2230 else
2231 {
2233 {
2235 }
2236 else
2237 {
2239 }
2240 }
2241 }
2242 }
2243 }
2244
2245 }
2247 {
2248
2250 {
2252 {
2256 break;
2257
2261 break;
2262
2266 break;
2267
2271 break;
2272
2275 default:
2278 return;
2279 }
2280 }
2281
2283
2285 {
2287 {
2288
2290 {
2292 }
2293 }
2294 }
2295 }
2297 {
2298
2300 {
2302 {
2306 break;
2307
2310 default:
2313 return;
2314 }
2315 }
2316
2318
2320 {
2322 {
2323
2325 {
2327 }
2328 }
2329 }
2330 }
2331 else
2332 {
2333
2335
2337 {
2340
2341 }
2342 else
2343 {
2345 {
2348 }
2349 }
2350 }
2351 }
2352
2354 {
2355 if (
g_Game.IsHeadlessOrDedicatedServer())
2356 return;
2357
2359 {
2361 GetInventory().GetCurrentInventoryLocation(invLoc);
2363 {
2365 if (ptcMgr)
2366 {
2371 }
2372 }
2373 }
2375 {
2377 {
2380 return;
2381 }
2382
2384 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2386 {
2389 }
2390 }
2391 }
2392
2393 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2394 {
2396 {
2401 }
2402
2403 super.GetDebugActions(outputList);
2404 }
2405
2407 {
2408 super.OnAction(action_id, player, ctx);
2409
2411 {
2412 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2413 {
2415 if (food_stage_prev <= 0)
2416 {
2418 }
2420 return true;
2421 }
2422 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2423 {
2426 {
2428 }
2430 return true;
2431 }
2432
2433 }
2434
2435 #ifdef DIAG_DEVELOPER
2436 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2437 {
2438 PrintNutritionsData();
2439 return true;
2440 }
2441 #endif
2442
2443 return false;
2444 }
2445
2447 {
2448 string debug_output;
2449
2450 debug_output = super.GetDebugText();
2451
2454
2455 return debug_output;
2456 }
2457
2458
2459
2460
2461
2463 {
2464 float ret = super.GetBaitEffectivity();
2465
2467 {
2468 ret *= 0.5;
2469 }
2470
2471 return ret;
2472 }
2473
2475 {
2477 }
2478
2480 {
2482 }
2483
2485 {
2487 }
2488
2489 #ifdef DIAG_DEVELOPER
2490 private void PrintNutritionsData()
2491 {
2492 string nutritionsData = "";
2493
2496
2498 if (profile)
2499 {
2500 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2502 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2506 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2508
2511
2512 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2514 }
2515
2516 nutritionsData += "-----\n";
2517
2519 }
2520 #endif
2521
2523
2526 {
2528 }
2529}
2530
2532{
2534};
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.