1690{
1692
1700
1710
1712
1714 {
1716 {
1718
1720 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1721
1725 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1726 }
1727 }
1728
1730 {
1732
1734 }
1735
1737 {
1738 super.EEDelete(parent);
1739
1741
1744 }
1745
1747 {
1748 super.EEItemLocationChanged(oldLoc, newLoc);
1749
1752 {
1753 switch (oldLoc.GetParent().GetType())
1754 {
1755 case "FryingPan":
1756 case "Pot":
1757 case "Cauldron":
1758 case "SharpWoodenStick":
1760 break;
1761 }
1762
1765 {
1767 }
1768 }
1769
1770 if (oldLoc.IsValid())
1772
1775 }
1776
1778 {
1781 }
1782
1784 {
1787
1788 return true;
1789 }
1790
1792 {
1794 {
1796 }
1797 }
1798
1801 {
1802 int foodStageType;
1803
1805 if (foodStage)
1806 foodStageType = foodStage.GetFoodStageType();
1807
1812
1813 return agentsIn;
1814 }
1815
1816
1818 {
1819 return false;
1820 }
1821
1823 {
1824 return false;
1825 }
1826
1828 {
1830 {
1832 {
1835
1838
1839 default:
1840 return super.GetTemperatureFreezeTime();
1841 }
1842 }
1843
1844 return super.GetTemperatureFreezeTime();
1845 }
1846
1848 {
1850 {
1852 {
1855
1858
1859 default:
1860 return super.GetTemperatureThawTime();
1861 }
1862 }
1863
1864 return super.GetTemperatureThawTime();
1865 }
1866
1868 {
1870 }
1871
1872
1873
1874
1876 {
1877 SetSynchDirty();
1878 }
1879
1881 {
1882 super.OnVariablesSynchronized();
1883
1884
1885
1886
1888 {
1890 }
1891 else
1892 {
1894 }
1895
1898 }
1899
1900
1901
1902
1904 {
1907
1909 }
1910
1912 {
1913 string soundName = "";
1914
1917
1919 {
1921 }
1922 else
1923 {
1925 {
1927 {
1932 else
1933 soundName = "";
1934 break;
1935 }
1936
1938 {
1943 else
1944 soundName = "";
1945 break;
1946 }
1947
1949 {
1954 else
1955 soundName = "";
1956 break;
1957 }
1958
1959 default:
1960 soundName = "";
1961 break;
1962 }
1963
1965 {
1966 if (soundName == "")
1967 {
1969 }
1970 else
1971 {
1973 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1974 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1976 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1977 {
1979 }
1980 }
1981 }
1982 }
1983
1985 }
1986
1988 {
1991 }
1992
1993
1994
1995
1997 {
1998 super.OnStoreSave(ctx);
1999
2001 {
2003 }
2004
2005
2008 }
2009
2011 {
2012 if (!super.OnStoreLoad(ctx, version))
2013 return false;
2014
2016 {
2018 return false;
2019 }
2020
2021 if (version >= 115)
2022 {
2024 {
2026 return false;
2027 }
2029 {
2031 return false;
2032 }
2033 }
2034
2037
2038 return true;
2039 }
2040
2042 {
2043 super.AfterStoreLoad();
2044
2046 }
2047
2048
2050 {
2052 }
2053
2054
2056 {
2057 return false;
2058 }
2059
2061 {
2062 return false;
2063 }
2064
2066 {
2067 return false;
2068 }
2069
2071 {
2072 return false;
2073 }
2074
2075
2076
2077
2078
2080 {
2083 {
2084 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2085 }
2086 else if (classname != "" && food_stage)
2087 {
2088 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2089 }
2090 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2091 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2092
2093 }
2094
2096 {
2099 {
2101 }
2102 else if (classname != "" && food_stage)
2103 {
2104 return FoodStage.GetEnergy(null, food_stage, classname);
2105 }
2106 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2107 return g_Game.ConfigGetFloat( class_path +
" energy" );
2108 }
2109
2111 {
2114 {
2116 }
2117 else if (classname != "" && food_stage)
2118 {
2119 return FoodStage.GetWater(null, food_stage, classname);
2120 }
2121 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2122 return g_Game.ConfigGetFloat( class_path +
" water" );
2123 }
2124
2126 {
2129 {
2130 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2131 }
2132 else if (classname != "" && food_stage)
2133 {
2134 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2135 }
2136 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2137 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2138
2139 }
2140
2142 {
2145 {
2146 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2147 }
2148 else if (classname != "" && food_stage)
2149 {
2150 return FoodStage.GetToxicity(null, food_stage, classname);
2151 }
2152 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2153 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2154 }
2155
2157 {
2160 {
2162 }
2163 else if (classname != "" && food_stage)
2164 {
2165 return FoodStage.GetAgents(null, food_stage, classname);
2166 }
2167 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2168 return g_Game.ConfigGetInt( class_path +
" agents" );
2169 }
2170
2172 {
2175 {
2176 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2177 }
2178 else if (classname != "" && food_stage)
2179 {
2180 return FoodStage.GetDigestibility(null, food_stage, classname);
2181 }
2182 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2183 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2184 }
2185
2187 {
2190 {
2191 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2192 }
2193 else if (className != "" && foodStage)
2194 {
2195 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2196 }
2197 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2198 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2199 }
2200
2202 {
2212
2213 return profile;
2214 }
2215
2216
2217
2218
2220 {
2222 }
2223
2224
2226 {
2228 {
2230 }
2231
2232 return false;
2233 }
2234
2236 {
2238 {
2240 }
2241
2242 return false;
2243 }
2244
2246 {
2248 {
2250 }
2251
2252 return false;
2253 }
2254
2256 {
2258 {
2260 }
2261
2262 return false;
2263 }
2264
2266 {
2268 {
2270 }
2271
2272 return false;
2273 }
2274
2276 {
2278 {
2280 }
2281
2282 return false;
2283 }
2284
2285
2287 {
2289 }
2290
2292 {
2293 return GetFoodStage().GetNextFoodStageType( cooking_method );
2294 }
2295
2297 {
2298 return GetFoodStage().GetFoodStageName( food_stage_type );
2299 }
2300
2302 {
2303 return GetFoodStage().CanChangeToNewStage( cooking_method );
2304 }
2305
2306
2308 {
2309 if ( !source.GetFoodStage())
2310 return;
2315 }
2316
2319 {
2322 }
2323
2326 {
2327 switch (stageNew)
2328 {
2333 break;
2334
2337 break;
2338 }
2339 }
2340
2341
2342
2343
2344
2346 {
2348 }
2349
2351 {
2353
2354
2356 }
2357
2359 {
2361 {
2364 }
2365 }
2366
2367
2369 {
2371 if (player)
2372 {
2374 player.ServerReplaceItemInHandsWithNew(lambda);
2375 }
2376 else
2377 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2378 }
2379
2381 {
2383 }
2384
2386 {
2387 super.SetActions();
2388
2391 }
2392
2394 {
2395 #ifndef SERVER
2396 #ifndef NO_GUI
2398 {
2400
2403 }
2404 #endif
2405 #endif
2406 }
2407
2409 {
2410 #ifndef SERVER
2411 #ifndef NO_GUI
2413 {
2417 }
2418 #endif
2419 #endif
2420 }
2421
2423 {
2424 return false;
2425 }
2426
2428 {
2430 }
2431
2432 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2433 {
2435
2436 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2438 if ( hasRootAsPlayer )
2440
2441
2442
2443
2444
2445
2446
2448 {
2449
2451 {
2453 {
2457 break;
2458
2462 break;
2463
2467 break;
2468
2472 default:
2475 return;
2476 }
2477
2478
2479 }
2480
2482
2484 {
2486 {
2487
2489 {
2491 }
2493 {
2496 {
2498 }
2499 else
2500 {
2502 {
2504 }
2505 else
2506 {
2508 }
2509 }
2510 }
2511 }
2512 }
2513
2514 }
2516 {
2517
2519 {
2521 {
2525 break;
2526
2530 break;
2531
2535 break;
2536
2540 break;
2541
2544 default:
2547 return;
2548 }
2549 }
2550
2552
2554 {
2556 {
2557
2559 {
2561 }
2562 }
2563 }
2564 }
2566 {
2567
2569 {
2571 {
2575 break;
2576
2579 default:
2582 return;
2583 }
2584 }
2585
2587
2589 {
2591 {
2592
2594 {
2596 }
2597 }
2598 }
2599 }
2600 else
2601 {
2602
2604
2606 {
2609
2610 }
2611 else
2612 {
2614 {
2617 }
2618 }
2619 }
2620 }
2621
2623 {
2624 if (
g_Game.IsHeadlessOrDedicatedServer())
2625 return;
2626
2628 {
2630 GetInventory().GetCurrentInventoryLocation(invLoc);
2632 {
2634 if (ptcMgr)
2635 {
2640 }
2641 }
2642 }
2644 {
2646 {
2649 return;
2650 }
2651
2653 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2655 {
2658 }
2659 }
2660 }
2661
2662 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2663 {
2665 {
2670 }
2671
2672 super.GetDebugActions(outputList);
2673 }
2674
2676 {
2677 super.OnAction(action_id, player, ctx);
2678
2680 {
2681 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2682 {
2684 if (food_stage_prev <= 0)
2685 {
2687 }
2689 return true;
2690 }
2691 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2692 {
2695 {
2697 }
2699 return true;
2700 }
2701
2702 }
2703
2704 #ifdef DIAG_DEVELOPER
2705 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2706 {
2707 PrintNutritionsData();
2708 return true;
2709 }
2710 #endif
2711
2712 return false;
2713 }
2714
2716 {
2717 string debug_output;
2718
2719 debug_output = super.GetDebugText();
2720
2723
2724 return debug_output;
2725 }
2726
2727
2728
2729
2730
2732 {
2733 float ret = super.GetBaitEffectivity();
2734
2736 {
2737 ret *= 0.5;
2738 }
2739
2740 return ret;
2741 }
2742
2744 {
2746 }
2747
2749 {
2751 }
2752
2754 {
2756 }
2757
2758 #ifdef DIAG_DEVELOPER
2759 private void PrintNutritionsData()
2760 {
2761 string nutritionsData = "";
2762
2765
2767 if (profile)
2768 {
2769 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2771 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2775 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2777
2780
2781 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2783 }
2784
2785 nutritionsData += "-----\n";
2786
2788 }
2789 #endif
2790
2792
2795 {
2797 }
2798}
2799
2801{
2803};
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.