1660{
1662
1670
1680
1682
1684 {
1686 {
1688
1690 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1691
1695 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1696 }
1697 }
1698
1700 {
1702
1704 }
1705
1707 {
1708 super.EEDelete(parent);
1709
1711
1714 }
1715
1717 {
1718 super.EEItemLocationChanged(oldLoc, newLoc);
1719
1722 {
1723 switch (oldLoc.GetParent().GetType())
1724 {
1725 case "FryingPan":
1726 case "Pot":
1727 case "Cauldron":
1728 case "SharpWoodenStick":
1730 break;
1731 }
1732
1735 {
1737 }
1738 }
1739
1740 if (oldLoc.IsValid())
1742
1745 }
1746
1748 {
1751 }
1752
1754 {
1757
1758 return true;
1759 }
1760
1762 {
1764 {
1766 }
1767 }
1768
1771 {
1772 int foodStageType;
1773
1775 if (foodStage)
1776 foodStageType = foodStage.GetFoodStageType();
1777
1782
1783 return agentsIn;
1784 }
1785
1786
1788 {
1789 return false;
1790 }
1791
1793 {
1794 return false;
1795 }
1796
1798 {
1800 {
1802 {
1805
1808
1809 default:
1810 return super.GetTemperatureFreezeTime();
1811 }
1812 }
1813
1814 return super.GetTemperatureFreezeTime();
1815 }
1816
1818 {
1820 {
1822 {
1825
1828
1829 default:
1830 return super.GetTemperatureThawTime();
1831 }
1832 }
1833
1834 return super.GetTemperatureThawTime();
1835 }
1836
1838 {
1840 }
1841
1842
1843
1844
1846 {
1847 SetSynchDirty();
1848 }
1849
1851 {
1852 super.OnVariablesSynchronized();
1853
1854
1855
1856
1858 {
1860 }
1861 else
1862 {
1864 }
1865
1868 }
1869
1870
1871
1872
1874 {
1877
1879 }
1880
1882 {
1883 string soundName = "";
1884
1887
1889 {
1891 }
1892 else
1893 {
1895 {
1897 {
1902 else
1903 soundName = "";
1904 break;
1905 }
1906
1908 {
1913 else
1914 soundName = "";
1915 break;
1916 }
1917
1919 {
1924 else
1925 soundName = "";
1926 break;
1927 }
1928
1929 default:
1930 soundName = "";
1931 break;
1932 }
1933
1935 {
1936 if (soundName == "")
1937 {
1939 }
1940 else
1941 {
1943 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1944 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1946 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1947 {
1949 }
1950 }
1951 }
1952 }
1953
1955 }
1956
1958 {
1961 }
1962
1963
1964
1965
1967 {
1968 super.OnStoreSave(ctx);
1969
1971 {
1973 }
1974
1975
1978 }
1979
1981 {
1982 if (!super.OnStoreLoad(ctx, version))
1983 return false;
1984
1986 {
1988 return false;
1989 }
1990
1991 if (version >= 115)
1992 {
1994 {
1996 return false;
1997 }
1999 {
2001 return false;
2002 }
2003 }
2004
2007
2008 return true;
2009 }
2010
2012 {
2013 super.AfterStoreLoad();
2014
2016 }
2017
2018
2020 {
2022 }
2023
2024
2026 {
2027 return false;
2028 }
2029
2031 {
2032 return false;
2033 }
2034
2036 {
2037 return false;
2038 }
2039
2041 {
2042 return false;
2043 }
2044
2045
2046
2047
2048
2050 {
2053 {
2054 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2055 }
2056 else if (classname != "" && food_stage)
2057 {
2058 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2059 }
2060 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2061 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2062
2063 }
2064
2066 {
2069 {
2071 }
2072 else if (classname != "" && food_stage)
2073 {
2074 return FoodStage.GetEnergy(null, food_stage, classname);
2075 }
2076 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2077 return g_Game.ConfigGetFloat( class_path +
" energy" );
2078 }
2079
2081 {
2084 {
2086 }
2087 else if (classname != "" && food_stage)
2088 {
2089 return FoodStage.GetWater(null, food_stage, classname);
2090 }
2091 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2092 return g_Game.ConfigGetFloat( class_path +
" water" );
2093 }
2094
2096 {
2099 {
2100 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2101 }
2102 else if (classname != "" && food_stage)
2103 {
2104 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2105 }
2106 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2107 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2108
2109 }
2110
2112 {
2115 {
2116 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2117 }
2118 else if (classname != "" && food_stage)
2119 {
2120 return FoodStage.GetToxicity(null, food_stage, classname);
2121 }
2122 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2123 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2124 }
2125
2127 {
2130 {
2132 }
2133 else if (classname != "" && food_stage)
2134 {
2135 return FoodStage.GetAgents(null, food_stage, classname);
2136 }
2137 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2138 return g_Game.ConfigGetInt( class_path +
" agents" );
2139 }
2140
2142 {
2145 {
2146 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2147 }
2148 else if (classname != "" && food_stage)
2149 {
2150 return FoodStage.GetDigestibility(null, food_stage, classname);
2151 }
2152 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2153 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2154 }
2155
2157 {
2160 {
2161 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2162 }
2163 else if (className != "" && foodStage)
2164 {
2165 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2166 }
2167 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2168 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2169 }
2170
2172 {
2182
2183 return profile;
2184 }
2185
2186
2187
2188
2190 {
2192 }
2193
2194
2196 {
2198 {
2200 }
2201
2202 return false;
2203 }
2204
2206 {
2208 {
2210 }
2211
2212 return false;
2213 }
2214
2216 {
2218 {
2220 }
2221
2222 return false;
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
2255
2257 {
2259 }
2260
2262 {
2263 return GetFoodStage().GetNextFoodStageType( cooking_method );
2264 }
2265
2267 {
2268 return GetFoodStage().GetFoodStageName( food_stage_type );
2269 }
2270
2272 {
2273 return GetFoodStage().CanChangeToNewStage( cooking_method );
2274 }
2275
2276
2278 {
2279 if ( !source.GetFoodStage())
2280 return;
2285 }
2286
2289 {
2292 }
2293
2296 {
2297 switch (stageNew)
2298 {
2303 break;
2304
2307 break;
2308 }
2309 }
2310
2311
2312
2313
2314
2316 {
2318 }
2319
2321 {
2323
2324
2326 }
2327
2329 {
2331 {
2334 }
2335 }
2336
2337
2339 {
2341 if (player)
2342 {
2344 player.ServerReplaceItemInHandsWithNew(lambda);
2345 }
2346 else
2347 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2348 }
2349
2351 {
2353 }
2354
2356 {
2357 super.SetActions();
2358
2361 }
2362
2364 {
2365 #ifndef SERVER
2366 #ifndef NO_GUI
2368 {
2370
2373 }
2374 #endif
2375 #endif
2376 }
2377
2379 {
2380 #ifndef SERVER
2381 #ifndef NO_GUI
2383 {
2387 }
2388 #endif
2389 #endif
2390 }
2391
2393 {
2394 return false;
2395 }
2396
2398 {
2400 }
2401
2402 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2403 {
2405
2406 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2408 if ( hasRootAsPlayer )
2410
2411
2412
2413
2414
2415
2416
2418 {
2419
2421 {
2423 {
2427 break;
2428
2432 break;
2433
2437 break;
2438
2442 default:
2445 return;
2446 }
2447
2448
2449 }
2450
2452
2454 {
2456 {
2457
2459 {
2461 }
2463 {
2466 {
2468 }
2469 else
2470 {
2472 {
2474 }
2475 else
2476 {
2478 }
2479 }
2480 }
2481 }
2482 }
2483
2484 }
2486 {
2487
2489 {
2491 {
2495 break;
2496
2500 break;
2501
2505 break;
2506
2510 break;
2511
2514 default:
2517 return;
2518 }
2519 }
2520
2522
2524 {
2526 {
2527
2529 {
2531 }
2532 }
2533 }
2534 }
2536 {
2537
2539 {
2541 {
2545 break;
2546
2549 default:
2552 return;
2553 }
2554 }
2555
2557
2559 {
2561 {
2562
2564 {
2566 }
2567 }
2568 }
2569 }
2570 else
2571 {
2572
2574
2576 {
2579
2580 }
2581 else
2582 {
2584 {
2587 }
2588 }
2589 }
2590 }
2591
2593 {
2594 if (
g_Game.IsHeadlessOrDedicatedServer())
2595 return;
2596
2598 {
2600 GetInventory().GetCurrentInventoryLocation(invLoc);
2602 {
2604 if (ptcMgr)
2605 {
2610 }
2611 }
2612 }
2614 {
2616 {
2619 return;
2620 }
2621
2623 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2625 {
2628 }
2629 }
2630 }
2631
2632 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2633 {
2635 {
2640 }
2641
2642 super.GetDebugActions(outputList);
2643 }
2644
2646 {
2647 super.OnAction(action_id, player, ctx);
2648
2650 {
2651 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2652 {
2654 if (food_stage_prev <= 0)
2655 {
2657 }
2659 return true;
2660 }
2661 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2662 {
2665 {
2667 }
2669 return true;
2670 }
2671
2672 }
2673
2674 #ifdef DIAG_DEVELOPER
2675 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2676 {
2677 PrintNutritionsData();
2678 return true;
2679 }
2680 #endif
2681
2682 return false;
2683 }
2684
2686 {
2687 string debug_output;
2688
2689 debug_output = super.GetDebugText();
2690
2693
2694 return debug_output;
2695 }
2696
2697
2698
2699
2700
2702 {
2703 float ret = super.GetBaitEffectivity();
2704
2706 {
2707 ret *= 0.5;
2708 }
2709
2710 return ret;
2711 }
2712
2714 {
2716 }
2717
2719 {
2721 }
2722
2724 {
2726 }
2727
2728 #ifdef DIAG_DEVELOPER
2729 private void PrintNutritionsData()
2730 {
2731 string nutritionsData = "";
2732
2735
2737 if (profile)
2738 {
2739 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2741 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2745 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2747
2750
2751 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2753 }
2754
2755 nutritionsData += "-----\n";
2756
2758 }
2759 #endif
2760
2762
2765 {
2767 }
2768}
2769
2771{
2773};
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.