1490{
1492
1500
1510
1512
1514 {
1516 {
1518
1520 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1521
1525 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1526 }
1527 }
1528
1530 {
1532
1534 }
1535
1537 {
1538 super.EEDelete(parent);
1539
1541
1544 }
1545
1547 {
1548 super.EEItemLocationChanged(oldLoc, newLoc);
1549
1552 {
1553 switch (oldLoc.GetParent().GetType())
1554 {
1555 case "FryingPan":
1556 case "Pot":
1557 case "Cauldron":
1558 case "SharpWoodenStick":
1560 break;
1561 }
1562
1565 {
1567 }
1568 }
1569
1570 if (oldLoc.IsValid())
1572
1575 }
1576
1578 {
1581 }
1582
1584 {
1587
1588 return true;
1589 }
1590
1592 {
1594 {
1596 }
1597 }
1598
1601 {
1602 int foodStageType;
1603
1605 if (foodStage)
1606 foodStageType = foodStage.GetFoodStageType();
1607
1612
1613 return agentsIn;
1614 }
1615
1616
1618 {
1619 return false;
1620 }
1621
1623 {
1624 return false;
1625 }
1626
1628 {
1630 {
1632 {
1635
1638
1639 default:
1640 return super.GetTemperatureFreezeTime();
1641 }
1642 }
1643
1644 return super.GetTemperatureFreezeTime();
1645 }
1646
1648 {
1650 {
1652 {
1655
1658
1659 default:
1660 return super.GetTemperatureThawTime();
1661 }
1662 }
1663
1664 return super.GetTemperatureThawTime();
1665 }
1666
1668 {
1670 }
1671
1672
1673
1674
1676 {
1677 SetSynchDirty();
1678 }
1679
1681 {
1682 super.OnVariablesSynchronized();
1683
1684
1685
1686
1688 {
1690 }
1691 else
1692 {
1694 }
1695
1698 }
1699
1700
1701
1702
1704 {
1707
1709 }
1710
1712 {
1713 string soundName = "";
1714
1717
1719 {
1721 }
1722 else
1723 {
1725 {
1727 {
1732 else
1733 soundName = "";
1734 break;
1735 }
1736
1738 {
1743 else
1744 soundName = "";
1745 break;
1746 }
1747
1749 {
1754 else
1755 soundName = "";
1756 break;
1757 }
1758
1759 default:
1760 soundName = "";
1761 break;
1762 }
1763
1765 {
1766 if (soundName == "")
1767 {
1769 }
1770 else
1771 {
1773 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1774 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1776 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1777 {
1779 }
1780 }
1781 }
1782 }
1783
1785 }
1786
1788 {
1791 }
1792
1793
1794
1795
1797 {
1798 super.OnStoreSave(ctx);
1799
1801 {
1803 }
1804
1805
1808 }
1809
1811 {
1812 if (!super.OnStoreLoad(ctx, version))
1813 return false;
1814
1816 {
1818 return false;
1819 }
1820
1821 if (version >= 115)
1822 {
1824 {
1826 return false;
1827 }
1829 {
1831 return false;
1832 }
1833 }
1834
1837
1838 return true;
1839 }
1840
1842 {
1843 super.AfterStoreLoad();
1844
1846 }
1847
1848
1850 {
1852 }
1853
1854
1856 {
1857 return false;
1858 }
1859
1861 {
1862 return false;
1863 }
1864
1866 {
1867 return false;
1868 }
1869
1871 {
1872 return false;
1873 }
1874
1875
1876
1877
1878
1880 {
1883 {
1884 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
1885 }
1886 else if (classname != "" && food_stage)
1887 {
1888 return FoodStage.GetFullnessIndex(null, food_stage, classname);
1889 }
1890 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
1891 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
1892
1893 }
1894
1896 {
1899 {
1901 }
1902 else if (classname != "" && food_stage)
1903 {
1904 return FoodStage.GetEnergy(null, food_stage, classname);
1905 }
1906 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1907 return g_Game.ConfigGetFloat( class_path +
" energy" );
1908 }
1909
1911 {
1914 {
1916 }
1917 else if (classname != "" && food_stage)
1918 {
1919 return FoodStage.GetWater(null, food_stage, classname);
1920 }
1921 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1922 return g_Game.ConfigGetFloat( class_path +
" water" );
1923 }
1924
1926 {
1929 {
1930 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
1931 }
1932 else if (classname != "" && food_stage)
1933 {
1934 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
1935 }
1936 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1937 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
1938
1939 }
1940
1942 {
1945 {
1946 return FoodStage.GetToxicity(food_item.
GetFoodStage());
1947 }
1948 else if (classname != "" && food_stage)
1949 {
1950 return FoodStage.GetToxicity(null, food_stage, classname);
1951 }
1952 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1953 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
1954 }
1955
1957 {
1960 {
1962 }
1963 else if (classname != "" && food_stage)
1964 {
1965 return FoodStage.GetAgents(null, food_stage, classname);
1966 }
1967 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1968 return g_Game.ConfigGetInt( class_path +
" agents" );
1969 }
1970
1972 {
1975 {
1976 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
1977 }
1978 else if (classname != "" && food_stage)
1979 {
1980 return FoodStage.GetDigestibility(null, food_stage, classname);
1981 }
1982 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1983 return g_Game.ConfigGetInt( class_path +
" digestibility" );
1984 }
1985
1987 {
1990 {
1991 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
1992 }
1993 else if (className != "" && foodStage)
1994 {
1995 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
1996 }
1997 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
1998 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
1999 }
2000
2002 {
2012
2013 return profile;
2014 }
2015
2016
2017
2018
2020 {
2022 }
2023
2024
2026 {
2028 {
2030 }
2031
2032 return false;
2033 }
2034
2036 {
2038 {
2040 }
2041
2042 return false;
2043 }
2044
2046 {
2048 {
2050 }
2051
2052 return false;
2053 }
2054
2056 {
2058 {
2060 }
2061
2062 return false;
2063 }
2064
2066 {
2068 {
2070 }
2071
2072 return false;
2073 }
2074
2076 {
2078 {
2080 }
2081
2082 return false;
2083 }
2084
2085
2087 {
2089 }
2090
2092 {
2093 return GetFoodStage().GetNextFoodStageType( cooking_method );
2094 }
2095
2097 {
2098 return GetFoodStage().GetFoodStageName( food_stage_type );
2099 }
2100
2102 {
2103 return GetFoodStage().CanChangeToNewStage( cooking_method );
2104 }
2105
2106
2108 {
2109 if ( !source.GetFoodStage())
2110 return;
2115 }
2116
2119 {
2122 }
2123
2126 {
2127 switch (stageNew)
2128 {
2133 break;
2134
2137 break;
2138 }
2139 }
2140
2141
2142
2143
2144
2146 {
2148 }
2149
2151 {
2153
2154
2156 }
2157
2159 {
2161 {
2164 }
2165 }
2166
2167
2169 {
2171 if (player)
2172 {
2174 player.ServerReplaceItemInHandsWithNew(lambda);
2175 }
2176 else
2177 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2178 }
2179
2181 {
2183 }
2184
2186 {
2187 super.SetActions();
2188
2191 }
2192
2194 {
2195 #ifndef SERVER
2196 #ifndef NO_GUI
2198 {
2200
2203 }
2204 #endif
2205 #endif
2206 }
2207
2209 {
2210 #ifndef SERVER
2211 #ifndef NO_GUI
2213 {
2217 }
2218 #endif
2219 #endif
2220 }
2221
2223 {
2224 return false;
2225 }
2226
2228 {
2230 }
2231
2232 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2233 {
2235
2236 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2238 if ( hasRootAsPlayer )
2240
2241
2242
2243
2244
2245
2246
2248 {
2249
2251 {
2253 {
2257 break;
2258
2262 break;
2263
2267 break;
2268
2272 default:
2275 return;
2276 }
2277
2278
2279 }
2280
2282
2284 {
2286 {
2287
2289 {
2291 }
2293 {
2296 {
2298 }
2299 else
2300 {
2302 {
2304 }
2305 else
2306 {
2308 }
2309 }
2310 }
2311 }
2312 }
2313
2314 }
2316 {
2317
2319 {
2321 {
2325 break;
2326
2330 break;
2331
2335 break;
2336
2340 break;
2341
2344 default:
2347 return;
2348 }
2349 }
2350
2352
2354 {
2356 {
2357
2359 {
2361 }
2362 }
2363 }
2364 }
2366 {
2367
2369 {
2371 {
2375 break;
2376
2379 default:
2382 return;
2383 }
2384 }
2385
2387
2389 {
2391 {
2392
2394 {
2396 }
2397 }
2398 }
2399 }
2400 else
2401 {
2402
2404
2406 {
2409
2410 }
2411 else
2412 {
2414 {
2417 }
2418 }
2419 }
2420 }
2421
2423 {
2424 if (
g_Game.IsHeadlessOrDedicatedServer())
2425 return;
2426
2428 {
2430 GetInventory().GetCurrentInventoryLocation(invLoc);
2432 {
2434 if (ptcMgr)
2435 {
2440 }
2441 }
2442 }
2444 {
2446 {
2449 return;
2450 }
2451
2453 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2455 {
2458 }
2459 }
2460 }
2461
2462 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2463 {
2465 {
2470 }
2471
2472 super.GetDebugActions(outputList);
2473 }
2474
2476 {
2477 super.OnAction(action_id, player, ctx);
2478
2480 {
2481 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2482 {
2484 if (food_stage_prev <= 0)
2485 {
2487 }
2489 return true;
2490 }
2491 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2492 {
2495 {
2497 }
2499 return true;
2500 }
2501
2502 }
2503
2504 #ifdef DIAG_DEVELOPER
2505 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2506 {
2507 PrintNutritionsData();
2508 return true;
2509 }
2510 #endif
2511
2512 return false;
2513 }
2514
2516 {
2517 string debug_output;
2518
2519 debug_output = super.GetDebugText();
2520
2523
2524 return debug_output;
2525 }
2526
2527
2528
2529
2530
2532 {
2533 float ret = super.GetBaitEffectivity();
2534
2536 {
2537 ret *= 0.5;
2538 }
2539
2540 return ret;
2541 }
2542
2544 {
2546 }
2547
2549 {
2551 }
2552
2554 {
2556 }
2557
2558 #ifdef DIAG_DEVELOPER
2559 private void PrintNutritionsData()
2560 {
2561 string nutritionsData = "";
2562
2565
2567 if (profile)
2568 {
2569 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2571 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2575 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2577
2580
2581 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2583 }
2584
2585 nutritionsData += "-----\n";
2586
2588 }
2589 #endif
2590
2592
2595 {
2597 }
2598}
2599
2601{
2603};
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.