1485{
1487
1495
1505
1507
1509 {
1511 {
1513
1515 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1516
1520 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1521 }
1522 }
1523
1525 {
1527
1529 }
1530
1532 {
1533 super.EEDelete(parent);
1534
1536
1539 }
1540
1542 {
1543 super.EEItemLocationChanged(oldLoc, newLoc);
1544
1547 {
1548 switch (oldLoc.GetParent().GetType())
1549 {
1550 case "FryingPan":
1551 case "Pot":
1552 case "Cauldron":
1553 case "SharpWoodenStick":
1555 break;
1556 }
1557
1560 {
1562 }
1563 }
1564
1565 if (oldLoc.IsValid())
1567
1570 }
1571
1573 {
1576 }
1577
1579 {
1582
1583 return true;
1584 }
1585
1587 {
1589 {
1591 }
1592 }
1593
1596 {
1597 int foodStageType;
1598
1600 if (foodStage)
1601 foodStageType = foodStage.GetFoodStageType();
1602
1607
1608 return agentsIn;
1609 }
1610
1611
1613 {
1614 return false;
1615 }
1616
1618 {
1619 return false;
1620 }
1621
1623 {
1625 {
1627 {
1630
1633
1634 default:
1635 return super.GetTemperatureFreezeTime();
1636 }
1637 }
1638
1639 return super.GetTemperatureFreezeTime();
1640 }
1641
1643 {
1645 {
1647 {
1650
1653
1654 default:
1655 return super.GetTemperatureThawTime();
1656 }
1657 }
1658
1659 return super.GetTemperatureThawTime();
1660 }
1661
1663 {
1665 }
1666
1667
1668
1669
1671 {
1672 SetSynchDirty();
1673 }
1674
1676 {
1677 super.OnVariablesSynchronized();
1678
1679
1680
1681
1683 {
1685 }
1686 else
1687 {
1689 }
1690
1693 }
1694
1695
1696
1697
1699 {
1702
1704 }
1705
1707 {
1708 string soundName = "";
1709
1712
1714 {
1716 }
1717 else
1718 {
1720 {
1722 {
1727 else
1728 soundName = "";
1729 break;
1730 }
1731
1733 {
1738 else
1739 soundName = "";
1740 break;
1741 }
1742
1744 {
1749 else
1750 soundName = "";
1751 break;
1752 }
1753
1754 default:
1755 soundName = "";
1756 break;
1757 }
1758
1760 {
1761 if (soundName == "")
1762 {
1764 }
1765 else
1766 {
1768 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1769 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1771 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1772 {
1774 }
1775 }
1776 }
1777 }
1778
1780 }
1781
1783 {
1786 }
1787
1788
1789
1790
1792 {
1793 super.OnStoreSave(ctx);
1794
1796 {
1798 }
1799
1800
1803 }
1804
1806 {
1807 if (!super.OnStoreLoad(ctx, version))
1808 return false;
1809
1811 {
1813 return false;
1814 }
1815
1816 if (version >= 115)
1817 {
1819 {
1821 return false;
1822 }
1824 {
1826 return false;
1827 }
1828 }
1829
1832
1833 return true;
1834 }
1835
1837 {
1838 super.AfterStoreLoad();
1839
1841 }
1842
1843
1845 {
1847 }
1848
1849
1851 {
1852 return false;
1853 }
1854
1856 {
1857 return false;
1858 }
1859
1861 {
1862 return false;
1863 }
1864
1866 {
1867 return false;
1868 }
1869
1870
1871
1872
1873
1875 {
1878 {
1879 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
1880 }
1881 else if (classname != "" && food_stage)
1882 {
1883 return FoodStage.GetFullnessIndex(null, food_stage, classname);
1884 }
1885 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
1886 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
1887
1888 }
1889
1891 {
1894 {
1896 }
1897 else if (classname != "" && food_stage)
1898 {
1899 return FoodStage.GetEnergy(null, food_stage, classname);
1900 }
1901 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1902 return g_Game.ConfigGetFloat( class_path +
" energy" );
1903 }
1904
1906 {
1909 {
1911 }
1912 else if (classname != "" && food_stage)
1913 {
1914 return FoodStage.GetWater(null, food_stage, classname);
1915 }
1916 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1917 return g_Game.ConfigGetFloat( class_path +
" water" );
1918 }
1919
1921 {
1924 {
1925 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
1926 }
1927 else if (classname != "" && food_stage)
1928 {
1929 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
1930 }
1931 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1932 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
1933
1934 }
1935
1937 {
1940 {
1941 return FoodStage.GetToxicity(food_item.
GetFoodStage());
1942 }
1943 else if (classname != "" && food_stage)
1944 {
1945 return FoodStage.GetToxicity(null, food_stage, classname);
1946 }
1947 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1948 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
1949 }
1950
1952 {
1955 {
1957 }
1958 else if (classname != "" && food_stage)
1959 {
1960 return FoodStage.GetAgents(null, food_stage, classname);
1961 }
1962 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1963 return g_Game.ConfigGetInt( class_path +
" agents" );
1964 }
1965
1967 {
1970 {
1971 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
1972 }
1973 else if (classname != "" && food_stage)
1974 {
1975 return FoodStage.GetDigestibility(null, food_stage, classname);
1976 }
1977 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
1978 return g_Game.ConfigGetInt( class_path +
" digestibility" );
1979 }
1980
1982 {
1985 {
1986 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
1987 }
1988 else if (className != "" && foodStage)
1989 {
1990 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
1991 }
1992 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
1993 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
1994 }
1995
1997 {
2007
2008 return profile;
2009 }
2010
2011
2012
2013
2015 {
2017 }
2018
2019
2021 {
2023 {
2025 }
2026
2027 return false;
2028 }
2029
2031 {
2033 {
2035 }
2036
2037 return false;
2038 }
2039
2041 {
2043 {
2045 }
2046
2047 return false;
2048 }
2049
2051 {
2053 {
2055 }
2056
2057 return false;
2058 }
2059
2061 {
2063 {
2065 }
2066
2067 return false;
2068 }
2069
2071 {
2073 {
2075 }
2076
2077 return false;
2078 }
2079
2080
2082 {
2084 }
2085
2087 {
2088 return GetFoodStage().GetNextFoodStageType( cooking_method );
2089 }
2090
2092 {
2093 return GetFoodStage().GetFoodStageName( food_stage_type );
2094 }
2095
2097 {
2098 return GetFoodStage().CanChangeToNewStage( cooking_method );
2099 }
2100
2101
2103 {
2104 if ( !source.GetFoodStage())
2105 return;
2110 }
2111
2114 {
2117 }
2118
2121 {
2122 switch (stageNew)
2123 {
2128 break;
2129
2132 break;
2133 }
2134 }
2135
2136
2137
2138
2139
2141 {
2143 }
2144
2146 {
2148
2149
2151 }
2152
2154 {
2156 {
2159 }
2160 }
2161
2162
2164 {
2166 if (player)
2167 {
2169 player.ServerReplaceItemInHandsWithNew(lambda);
2170 }
2171 else
2172 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2173 }
2174
2176 {
2178 }
2179
2181 {
2182 super.SetActions();
2183
2186 }
2187
2189 {
2190 #ifndef SERVER
2191 #ifndef NO_GUI
2193 {
2195
2198 }
2199 #endif
2200 #endif
2201 }
2202
2204 {
2205 #ifndef SERVER
2206 #ifndef NO_GUI
2208 {
2212 }
2213 #endif
2214 #endif
2215 }
2216
2218 {
2219 return false;
2220 }
2221
2223 {
2225 }
2226
2227 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2228 {
2230
2231 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2233 if ( hasRootAsPlayer )
2235
2236
2237
2238
2239
2240
2241
2243 {
2244
2246 {
2248 {
2252 break;
2253
2257 break;
2258
2262 break;
2263
2267 default:
2270 return;
2271 }
2272
2273
2274 }
2275
2277
2279 {
2281 {
2282
2284 {
2286 }
2288 {
2291 {
2293 }
2294 else
2295 {
2297 {
2299 }
2300 else
2301 {
2303 }
2304 }
2305 }
2306 }
2307 }
2308
2309 }
2311 {
2312
2314 {
2316 {
2320 break;
2321
2325 break;
2326
2330 break;
2331
2335 break;
2336
2339 default:
2342 return;
2343 }
2344 }
2345
2347
2349 {
2351 {
2352
2354 {
2356 }
2357 }
2358 }
2359 }
2361 {
2362
2364 {
2366 {
2370 break;
2371
2374 default:
2377 return;
2378 }
2379 }
2380
2382
2384 {
2386 {
2387
2389 {
2391 }
2392 }
2393 }
2394 }
2395 else
2396 {
2397
2399
2401 {
2404
2405 }
2406 else
2407 {
2409 {
2412 }
2413 }
2414 }
2415 }
2416
2418 {
2419 if (
g_Game.IsHeadlessOrDedicatedServer())
2420 return;
2421
2423 {
2425 GetInventory().GetCurrentInventoryLocation(invLoc);
2427 {
2429 if (ptcMgr)
2430 {
2435 }
2436 }
2437 }
2439 {
2441 {
2444 return;
2445 }
2446
2448 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2450 {
2453 }
2454 }
2455 }
2456
2457 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2458 {
2460 {
2465 }
2466
2467 super.GetDebugActions(outputList);
2468 }
2469
2471 {
2472 super.OnAction(action_id, player, ctx);
2473
2475 {
2476 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2477 {
2479 if (food_stage_prev <= 0)
2480 {
2482 }
2484 return true;
2485 }
2486 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2487 {
2490 {
2492 }
2494 return true;
2495 }
2496
2497 }
2498
2499 #ifdef DIAG_DEVELOPER
2500 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2501 {
2502 PrintNutritionsData();
2503 return true;
2504 }
2505 #endif
2506
2507 return false;
2508 }
2509
2511 {
2512 string debug_output;
2513
2514 debug_output = super.GetDebugText();
2515
2518
2519 return debug_output;
2520 }
2521
2522
2523
2524
2525
2527 {
2528 float ret = super.GetBaitEffectivity();
2529
2531 {
2532 ret *= 0.5;
2533 }
2534
2535 return ret;
2536 }
2537
2539 {
2541 }
2542
2544 {
2546 }
2547
2549 {
2551 }
2552
2553 #ifdef DIAG_DEVELOPER
2554 private void PrintNutritionsData()
2555 {
2556 string nutritionsData = "";
2557
2560
2562 if (profile)
2563 {
2564 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2566 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2570 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2572
2575
2576 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2578 }
2579
2580 nutritionsData += "-----\n";
2581
2583 }
2584 #endif
2585
2587
2590 {
2592 }
2593}
2594
2596{
2598};
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.