1611{
1613
1621
1631
1633
1635 {
1637 {
1639
1641 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1642
1646 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1647 }
1648 }
1649
1651 {
1653
1655 }
1656
1658 {
1659 super.EEDelete(parent);
1660
1662
1665 }
1666
1668 {
1669 super.EEItemLocationChanged(oldLoc, newLoc);
1670
1673 {
1674 switch (oldLoc.GetParent().GetType())
1675 {
1676 case "FryingPan":
1677 case "Pot":
1678 case "Cauldron":
1679 case "SharpWoodenStick":
1681 break;
1682 }
1683
1686 {
1688 }
1689 }
1690
1691 if (oldLoc.IsValid())
1693
1696 }
1697
1699 {
1702 }
1703
1705 {
1708
1709 return true;
1710 }
1711
1713 {
1715 {
1717 }
1718 }
1719
1722 {
1723 int foodStageType;
1724
1726 if (foodStage)
1727 foodStageType = foodStage.GetFoodStageType();
1728
1733
1734 return agentsIn;
1735 }
1736
1737
1739 {
1740 return false;
1741 }
1742
1744 {
1745 return false;
1746 }
1747
1749 {
1751 {
1753 {
1756
1759
1760 default:
1761 return super.GetTemperatureFreezeTime();
1762 }
1763 }
1764
1765 return super.GetTemperatureFreezeTime();
1766 }
1767
1769 {
1771 {
1773 {
1776
1779
1780 default:
1781 return super.GetTemperatureThawTime();
1782 }
1783 }
1784
1785 return super.GetTemperatureThawTime();
1786 }
1787
1789 {
1791 }
1792
1793
1794
1795
1797 {
1798 SetSynchDirty();
1799 }
1800
1802 {
1803 super.OnVariablesSynchronized();
1804
1805
1806
1807
1809 {
1811 }
1812 else
1813 {
1815 }
1816
1819 }
1820
1821
1822
1823
1825 {
1828
1830 }
1831
1833 {
1834 string soundName = "";
1835
1838
1840 {
1842 }
1843 else
1844 {
1846 {
1848 {
1853 else
1854 soundName = "";
1855 break;
1856 }
1857
1859 {
1864 else
1865 soundName = "";
1866 break;
1867 }
1868
1870 {
1875 else
1876 soundName = "";
1877 break;
1878 }
1879
1880 default:
1881 soundName = "";
1882 break;
1883 }
1884
1886 {
1887 if (soundName == "")
1888 {
1890 }
1891 else
1892 {
1894 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1895 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1897 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1898 {
1900 }
1901 }
1902 }
1903 }
1904
1906 }
1907
1909 {
1912 }
1913
1914
1915
1916
1918 {
1919 super.OnStoreSave(ctx);
1920
1922 {
1924 }
1925
1926
1929 }
1930
1932 {
1933 if (!super.OnStoreLoad(ctx, version))
1934 return false;
1935
1937 {
1939 return false;
1940 }
1941
1942 if (version >= 115)
1943 {
1945 {
1947 return false;
1948 }
1950 {
1952 return false;
1953 }
1954 }
1955
1958
1959 return true;
1960 }
1961
1963 {
1964 super.AfterStoreLoad();
1965
1967 }
1968
1969
1971 {
1973 }
1974
1975
1977 {
1978 return false;
1979 }
1980
1982 {
1983 return false;
1984 }
1985
1987 {
1988 return false;
1989 }
1990
1992 {
1993 return false;
1994 }
1995
1996
1997
1998
1999
2001 {
2004 {
2005 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2006 }
2007 else if (classname != "" && food_stage)
2008 {
2009 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2010 }
2011 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2012 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2013
2014 }
2015
2017 {
2020 {
2022 }
2023 else if (classname != "" && food_stage)
2024 {
2025 return FoodStage.GetEnergy(null, food_stage, classname);
2026 }
2027 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2028 return g_Game.ConfigGetFloat( class_path +
" energy" );
2029 }
2030
2032 {
2035 {
2037 }
2038 else if (classname != "" && food_stage)
2039 {
2040 return FoodStage.GetWater(null, food_stage, classname);
2041 }
2042 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2043 return g_Game.ConfigGetFloat( class_path +
" water" );
2044 }
2045
2047 {
2050 {
2051 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2052 }
2053 else if (classname != "" && food_stage)
2054 {
2055 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2056 }
2057 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2058 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2059
2060 }
2061
2063 {
2066 {
2067 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2068 }
2069 else if (classname != "" && food_stage)
2070 {
2071 return FoodStage.GetToxicity(null, food_stage, classname);
2072 }
2073 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2074 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2075 }
2076
2078 {
2081 {
2083 }
2084 else if (classname != "" && food_stage)
2085 {
2086 return FoodStage.GetAgents(null, food_stage, classname);
2087 }
2088 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2089 return g_Game.ConfigGetInt( class_path +
" agents" );
2090 }
2091
2093 {
2096 {
2097 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2098 }
2099 else if (classname != "" && food_stage)
2100 {
2101 return FoodStage.GetDigestibility(null, food_stage, classname);
2102 }
2103 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2104 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2105 }
2106
2108 {
2111 {
2112 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2113 }
2114 else if (className != "" && foodStage)
2115 {
2116 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2117 }
2118 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2119 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2120 }
2121
2123 {
2133
2134 return profile;
2135 }
2136
2137
2138
2139
2141 {
2143 }
2144
2145
2147 {
2149 {
2151 }
2152
2153 return false;
2154 }
2155
2157 {
2159 {
2161 }
2162
2163 return false;
2164 }
2165
2167 {
2169 {
2171 }
2172
2173 return false;
2174 }
2175
2177 {
2179 {
2181 }
2182
2183 return false;
2184 }
2185
2187 {
2189 {
2191 }
2192
2193 return false;
2194 }
2195
2197 {
2199 {
2201 }
2202
2203 return false;
2204 }
2205
2206
2208 {
2210 }
2211
2213 {
2214 return GetFoodStage().GetNextFoodStageType( cooking_method );
2215 }
2216
2218 {
2219 return GetFoodStage().GetFoodStageName( food_stage_type );
2220 }
2221
2223 {
2224 return GetFoodStage().CanChangeToNewStage( cooking_method );
2225 }
2226
2227
2229 {
2230 if ( !source.GetFoodStage())
2231 return;
2236 }
2237
2240 {
2243 }
2244
2247 {
2248 switch (stageNew)
2249 {
2254 break;
2255
2258 break;
2259 }
2260 }
2261
2262
2263
2264
2265
2267 {
2269 }
2270
2272 {
2274
2275
2277 }
2278
2280 {
2282 {
2285 }
2286 }
2287
2288
2290 {
2292 if (player)
2293 {
2295 player.ServerReplaceItemInHandsWithNew(lambda);
2296 }
2297 else
2298 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2299 }
2300
2302 {
2304 }
2305
2307 {
2308 super.SetActions();
2309
2312 }
2313
2315 {
2316 #ifndef SERVER
2317 #ifndef NO_GUI
2319 {
2321
2324 }
2325 #endif
2326 #endif
2327 }
2328
2330 {
2331 #ifndef SERVER
2332 #ifndef NO_GUI
2334 {
2338 }
2339 #endif
2340 #endif
2341 }
2342
2344 {
2345 return false;
2346 }
2347
2349 {
2351 }
2352
2353 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2354 {
2356
2357 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2359 if ( hasRootAsPlayer )
2361
2362
2363
2364
2365
2366
2367
2369 {
2370
2372 {
2374 {
2378 break;
2379
2383 break;
2384
2388 break;
2389
2393 default:
2396 return;
2397 }
2398
2399
2400 }
2401
2403
2405 {
2407 {
2408
2410 {
2412 }
2414 {
2417 {
2419 }
2420 else
2421 {
2423 {
2425 }
2426 else
2427 {
2429 }
2430 }
2431 }
2432 }
2433 }
2434
2435 }
2437 {
2438
2440 {
2442 {
2446 break;
2447
2451 break;
2452
2456 break;
2457
2461 break;
2462
2465 default:
2468 return;
2469 }
2470 }
2471
2473
2475 {
2477 {
2478
2480 {
2482 }
2483 }
2484 }
2485 }
2487 {
2488
2490 {
2492 {
2496 break;
2497
2500 default:
2503 return;
2504 }
2505 }
2506
2508
2510 {
2512 {
2513
2515 {
2517 }
2518 }
2519 }
2520 }
2521 else
2522 {
2523
2525
2527 {
2530
2531 }
2532 else
2533 {
2535 {
2538 }
2539 }
2540 }
2541 }
2542
2544 {
2545 if (
g_Game.IsHeadlessOrDedicatedServer())
2546 return;
2547
2549 {
2551 GetInventory().GetCurrentInventoryLocation(invLoc);
2553 {
2555 if (ptcMgr)
2556 {
2561 }
2562 }
2563 }
2565 {
2567 {
2570 return;
2571 }
2572
2574 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2576 {
2579 }
2580 }
2581 }
2582
2583 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2584 {
2586 {
2591 }
2592
2593 super.GetDebugActions(outputList);
2594 }
2595
2597 {
2598 super.OnAction(action_id, player, ctx);
2599
2601 {
2602 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2603 {
2605 if (food_stage_prev <= 0)
2606 {
2608 }
2610 return true;
2611 }
2612 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2613 {
2616 {
2618 }
2620 return true;
2621 }
2622
2623 }
2624
2625 #ifdef DIAG_DEVELOPER
2626 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2627 {
2628 PrintNutritionsData();
2629 return true;
2630 }
2631 #endif
2632
2633 return false;
2634 }
2635
2637 {
2638 string debug_output;
2639
2640 debug_output = super.GetDebugText();
2641
2644
2645 return debug_output;
2646 }
2647
2648
2649
2650
2651
2653 {
2654 float ret = super.GetBaitEffectivity();
2655
2657 {
2658 ret *= 0.5;
2659 }
2660
2661 return ret;
2662 }
2663
2665 {
2667 }
2668
2670 {
2672 }
2673
2675 {
2677 }
2678
2679 #ifdef DIAG_DEVELOPER
2680 private void PrintNutritionsData()
2681 {
2682 string nutritionsData = "";
2683
2686
2688 if (profile)
2689 {
2690 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2692 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2696 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2698
2701
2702 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2704 }
2705
2706 nutritionsData += "-----\n";
2707
2709 }
2710 #endif
2711
2713
2716 {
2718 }
2719}
2720
2722{
2724};
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.