1711{
1713
1721
1731
1733
1735 {
1737 {
1739
1741 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1742
1746 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1747 }
1748 }
1749
1751 {
1753
1755 }
1756
1758 {
1759 super.EEDelete(parent);
1760
1762
1765 }
1766
1768 {
1769 super.EEItemLocationChanged(oldLoc, newLoc);
1770
1773 {
1774 switch (oldLoc.GetParent().GetType())
1775 {
1776 case "FryingPan":
1777 case "Pot":
1778 case "Cauldron":
1779 case "SharpWoodenStick":
1781 break;
1782 }
1783
1786 {
1788 }
1789 }
1790
1791 if (oldLoc.IsValid())
1793
1796 }
1797
1799 {
1802 }
1803
1805 {
1808
1809 return true;
1810 }
1811
1813 {
1815 {
1817 }
1818 }
1819
1822 {
1823 int foodStageType;
1824
1826 if (foodStage)
1827 foodStageType = foodStage.GetFoodStageType();
1828
1833
1834 return agentsIn;
1835 }
1836
1837
1839 {
1840 return false;
1841 }
1842
1844 {
1845 return false;
1846 }
1847
1849 {
1851 {
1853 {
1856
1859
1860 default:
1861 return super.GetTemperatureFreezeTime();
1862 }
1863 }
1864
1865 return super.GetTemperatureFreezeTime();
1866 }
1867
1869 {
1871 {
1873 {
1876
1879
1880 default:
1881 return super.GetTemperatureThawTime();
1882 }
1883 }
1884
1885 return super.GetTemperatureThawTime();
1886 }
1887
1889 {
1891 }
1892
1893
1894
1895
1897 {
1898 SetSynchDirty();
1899 }
1900
1902 {
1903 super.OnVariablesSynchronized();
1904
1905
1906
1907
1909 {
1911 }
1912 else
1913 {
1915 }
1916
1919 }
1920
1921
1922
1923
1925 {
1928
1930 }
1931
1933 {
1934 string soundName = "";
1935
1938
1940 {
1942 }
1943 else
1944 {
1946 {
1948 {
1953 else
1954 soundName = "";
1955 break;
1956 }
1957
1959 {
1964 else
1965 soundName = "";
1966 break;
1967 }
1968
1970 {
1975 else
1976 soundName = "";
1977 break;
1978 }
1979
1980 default:
1981 soundName = "";
1982 break;
1983 }
1984
1986 {
1987 if (soundName == "")
1988 {
1990 }
1991 else
1992 {
1994 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1995 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1997 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1998 {
2000 }
2001 }
2002 }
2003 }
2004
2006 }
2007
2009 {
2012 }
2013
2014
2015
2016
2018 {
2019 super.OnStoreSave(ctx);
2020
2022 {
2024 }
2025
2026
2029 }
2030
2032 {
2033 if (!super.OnStoreLoad(ctx, version))
2034 return false;
2035
2037 {
2039 return false;
2040 }
2041
2042 if (version >= 115)
2043 {
2045 {
2047 return false;
2048 }
2050 {
2052 return false;
2053 }
2054 }
2055
2058
2059 return true;
2060 }
2061
2063 {
2064 super.AfterStoreLoad();
2065
2067 }
2068
2069
2071 {
2073 }
2074
2075
2077 {
2078 return false;
2079 }
2080
2082 {
2083 return false;
2084 }
2085
2087 {
2088 return false;
2089 }
2090
2092 {
2093 return false;
2094 }
2095
2096
2097
2098
2099
2101 {
2104 {
2105 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2106 }
2107 else if (classname != "" && food_stage)
2108 {
2109 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2110 }
2111 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2112 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2113
2114 }
2115
2117 {
2120 {
2122 }
2123 else if (classname != "" && food_stage)
2124 {
2125 return FoodStage.GetEnergy(null, food_stage, classname);
2126 }
2127 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2128 return g_Game.ConfigGetFloat( class_path +
" energy" );
2129 }
2130
2132 {
2135 {
2137 }
2138 else if (classname != "" && food_stage)
2139 {
2140 return FoodStage.GetWater(null, food_stage, classname);
2141 }
2142 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2143 return g_Game.ConfigGetFloat( class_path +
" water" );
2144 }
2145
2147 {
2150 {
2151 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2152 }
2153 else if (classname != "" && food_stage)
2154 {
2155 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2156 }
2157 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2158 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2159
2160 }
2161
2163 {
2166 {
2167 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2168 }
2169 else if (classname != "" && food_stage)
2170 {
2171 return FoodStage.GetToxicity(null, food_stage, classname);
2172 }
2173 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2174 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2175 }
2176
2178 {
2181 {
2183 }
2184 else if (classname != "" && food_stage)
2185 {
2186 return FoodStage.GetAgents(null, food_stage, classname);
2187 }
2188 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2189 return g_Game.ConfigGetInt( class_path +
" agents" );
2190 }
2191
2193 {
2196 {
2197 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2198 }
2199 else if (classname != "" && food_stage)
2200 {
2201 return FoodStage.GetDigestibility(null, food_stage, classname);
2202 }
2203 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2204 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2205 }
2206
2208 {
2211 {
2212 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2213 }
2214 else if (className != "" && foodStage)
2215 {
2216 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2217 }
2218 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2219 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2220 }
2221
2223 {
2233
2234 return profile;
2235 }
2236
2237
2238
2239
2241 {
2243 }
2244
2245
2247 {
2249 {
2251 }
2252
2253 return false;
2254 }
2255
2257 {
2259 {
2261 }
2262
2263 return false;
2264 }
2265
2267 {
2269 {
2271 }
2272
2273 return false;
2274 }
2275
2277 {
2279 {
2281 }
2282
2283 return false;
2284 }
2285
2287 {
2289 {
2291 }
2292
2293 return false;
2294 }
2295
2297 {
2299 {
2301 }
2302
2303 return false;
2304 }
2305
2306
2308 {
2310 }
2311
2313 {
2314 return GetFoodStage().GetNextFoodStageType( cooking_method );
2315 }
2316
2318 {
2319 return GetFoodStage().GetFoodStageName( food_stage_type );
2320 }
2321
2323 {
2324 return GetFoodStage().CanChangeToNewStage( cooking_method );
2325 }
2326
2327
2329 {
2330 if ( !source.GetFoodStage())
2331 return;
2336 }
2337
2340 {
2343 }
2344
2347 {
2348 switch (stageNew)
2349 {
2354 break;
2355
2358 break;
2359 }
2360 }
2361
2362
2363
2364
2365
2367 {
2369 }
2370
2372 {
2374
2375
2377 }
2378
2380 {
2382 {
2385 }
2386 }
2387
2388
2390 {
2392 if (player)
2393 {
2395 player.ServerReplaceItemInHandsWithNew(lambda);
2396 }
2397 else
2398 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2399 }
2400
2402 {
2404 }
2405
2407 {
2408 super.SetActions();
2409
2412 }
2413
2415 {
2416 #ifndef SERVER
2417 #ifndef NO_GUI
2419 {
2421
2424 }
2425 #endif
2426 #endif
2427 }
2428
2430 {
2431 #ifndef SERVER
2432 #ifndef NO_GUI
2434 {
2438 }
2439 #endif
2440 #endif
2441 }
2442
2444 {
2445 return false;
2446 }
2447
2449 {
2451 }
2452
2453 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2454 {
2456
2457 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2459 if ( hasRootAsPlayer )
2461
2462
2463
2464
2465
2466
2467
2469 {
2470
2472 {
2474 {
2478 break;
2479
2483 break;
2484
2488 break;
2489
2493 default:
2496 return;
2497 }
2498
2499
2500 }
2501
2503
2505 {
2507 {
2508
2510 {
2512 }
2514 {
2517 {
2519 }
2520 else
2521 {
2523 {
2525 }
2526 else
2527 {
2529 }
2530 }
2531 }
2532 }
2533 }
2534
2535 }
2537 {
2538
2540 {
2542 {
2546 break;
2547
2551 break;
2552
2556 break;
2557
2561 break;
2562
2565 default:
2568 return;
2569 }
2570 }
2571
2573
2575 {
2577 {
2578
2580 {
2582 }
2583 }
2584 }
2585 }
2587 {
2588
2590 {
2592 {
2596 break;
2597
2600 default:
2603 return;
2604 }
2605 }
2606
2608
2610 {
2612 {
2613
2615 {
2617 }
2618 }
2619 }
2620 }
2621 else
2622 {
2623
2625
2627 {
2630
2631 }
2632 else
2633 {
2635 {
2638 }
2639 }
2640 }
2641 }
2642
2644 {
2645 if (
g_Game.IsHeadlessOrDedicatedServer())
2646 return;
2647
2649 {
2651 GetInventory().GetCurrentInventoryLocation(invLoc);
2653 {
2655 if (ptcMgr)
2656 {
2661 }
2662 }
2663 }
2665 {
2667 {
2670 return;
2671 }
2672
2674 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2676 {
2679 }
2680 }
2681 }
2682
2683 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2684 {
2686 {
2691 }
2692
2693 super.GetDebugActions(outputList);
2694 }
2695
2697 {
2698 super.OnAction(action_id, player, ctx);
2699
2701 {
2702 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2703 {
2705 if (food_stage_prev <= 0)
2706 {
2708 }
2710 return true;
2711 }
2712 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2713 {
2716 {
2718 }
2720 return true;
2721 }
2722
2723 }
2724
2725 #ifdef DIAG_DEVELOPER
2726 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2727 {
2728 PrintNutritionsData();
2729 return true;
2730 }
2731 #endif
2732
2733 return false;
2734 }
2735
2737 {
2738 string debug_output;
2739
2740 debug_output = super.GetDebugText();
2741
2744
2745 return debug_output;
2746 }
2747
2748
2749
2750
2751
2753 {
2754 float ret = super.GetBaitEffectivity();
2755
2757 {
2758 ret *= 0.5;
2759 }
2760
2761 return ret;
2762 }
2763
2765 {
2767 }
2768
2770 {
2772 }
2773
2775 {
2777 }
2778
2779 #ifdef DIAG_DEVELOPER
2780 private void PrintNutritionsData()
2781 {
2782 string nutritionsData = "";
2783
2786
2788 if (profile)
2789 {
2790 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2792 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2796 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2798
2801
2802 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2804 }
2805
2806 nutritionsData += "-----\n";
2807
2809 }
2810 #endif
2811
2813
2816 {
2818 }
2819}
2820
2822{
2824};
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.