1670{
1672
1680
1690
1692
1694 {
1696 {
1698
1700 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1701
1705 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1706 }
1707 }
1708
1710 {
1712
1714 }
1715
1717 {
1718 super.EEDelete(parent);
1719
1721
1724 }
1725
1727 {
1728 super.EEItemLocationChanged(oldLoc, newLoc);
1729
1732 {
1733 switch (oldLoc.GetParent().GetType())
1734 {
1735 case "FryingPan":
1736 case "Pot":
1737 case "Cauldron":
1738 case "SharpWoodenStick":
1740 break;
1741 }
1742
1745 {
1747 }
1748 }
1749
1750 if (oldLoc.IsValid())
1752
1755 }
1756
1758 {
1761 }
1762
1764 {
1767
1768 return true;
1769 }
1770
1772 {
1774 {
1776 }
1777 }
1778
1781 {
1782 int foodStageType;
1783
1785 if (foodStage)
1786 foodStageType = foodStage.GetFoodStageType();
1787
1792
1793 return agentsIn;
1794 }
1795
1796
1798 {
1799 return false;
1800 }
1801
1803 {
1804 return false;
1805 }
1806
1808 {
1810 {
1812 {
1815
1818
1819 default:
1820 return super.GetTemperatureFreezeTime();
1821 }
1822 }
1823
1824 return super.GetTemperatureFreezeTime();
1825 }
1826
1828 {
1830 {
1832 {
1835
1838
1839 default:
1840 return super.GetTemperatureThawTime();
1841 }
1842 }
1843
1844 return super.GetTemperatureThawTime();
1845 }
1846
1848 {
1850 }
1851
1852
1853
1854
1856 {
1857 SetSynchDirty();
1858 }
1859
1861 {
1862 super.OnVariablesSynchronized();
1863
1864
1865
1866
1868 {
1870 }
1871 else
1872 {
1874 }
1875
1878 }
1879
1880
1881
1882
1884 {
1887
1889 }
1890
1892 {
1893 string soundName = "";
1894
1897
1899 {
1901 }
1902 else
1903 {
1905 {
1907 {
1912 else
1913 soundName = "";
1914 break;
1915 }
1916
1918 {
1923 else
1924 soundName = "";
1925 break;
1926 }
1927
1929 {
1934 else
1935 soundName = "";
1936 break;
1937 }
1938
1939 default:
1940 soundName = "";
1941 break;
1942 }
1943
1945 {
1946 if (soundName == "")
1947 {
1949 }
1950 else
1951 {
1953 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1954 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1956 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1957 {
1959 }
1960 }
1961 }
1962 }
1963
1965 }
1966
1968 {
1971 }
1972
1973
1974
1975
1977 {
1978 super.OnStoreSave(ctx);
1979
1981 {
1983 }
1984
1985
1988 }
1989
1991 {
1992 if (!super.OnStoreLoad(ctx, version))
1993 return false;
1994
1996 {
1998 return false;
1999 }
2000
2001 if (version >= 115)
2002 {
2004 {
2006 return false;
2007 }
2009 {
2011 return false;
2012 }
2013 }
2014
2017
2018 return true;
2019 }
2020
2022 {
2023 super.AfterStoreLoad();
2024
2026 }
2027
2028
2030 {
2032 }
2033
2034
2036 {
2037 return false;
2038 }
2039
2041 {
2042 return false;
2043 }
2044
2046 {
2047 return false;
2048 }
2049
2051 {
2052 return false;
2053 }
2054
2055
2056
2057
2058
2060 {
2063 {
2064 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2065 }
2066 else if (classname != "" && food_stage)
2067 {
2068 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2069 }
2070 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2071 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2072
2073 }
2074
2076 {
2079 {
2081 }
2082 else if (classname != "" && food_stage)
2083 {
2084 return FoodStage.GetEnergy(null, food_stage, classname);
2085 }
2086 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2087 return g_Game.ConfigGetFloat( class_path +
" energy" );
2088 }
2089
2091 {
2094 {
2096 }
2097 else if (classname != "" && food_stage)
2098 {
2099 return FoodStage.GetWater(null, food_stage, classname);
2100 }
2101 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2102 return g_Game.ConfigGetFloat( class_path +
" water" );
2103 }
2104
2106 {
2109 {
2110 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2111 }
2112 else if (classname != "" && food_stage)
2113 {
2114 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2115 }
2116 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2117 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2118
2119 }
2120
2122 {
2125 {
2126 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2127 }
2128 else if (classname != "" && food_stage)
2129 {
2130 return FoodStage.GetToxicity(null, food_stage, classname);
2131 }
2132 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2133 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2134 }
2135
2137 {
2140 {
2142 }
2143 else if (classname != "" && food_stage)
2144 {
2145 return FoodStage.GetAgents(null, food_stage, classname);
2146 }
2147 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2148 return g_Game.ConfigGetInt( class_path +
" agents" );
2149 }
2150
2152 {
2155 {
2156 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2157 }
2158 else if (classname != "" && food_stage)
2159 {
2160 return FoodStage.GetDigestibility(null, food_stage, classname);
2161 }
2162 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2163 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2164 }
2165
2167 {
2170 {
2171 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2172 }
2173 else if (className != "" && foodStage)
2174 {
2175 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2176 }
2177 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2178 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2179 }
2180
2182 {
2192
2193 return profile;
2194 }
2195
2196
2197
2198
2200 {
2202 }
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
2256 {
2258 {
2260 }
2261
2262 return false;
2263 }
2264
2265
2267 {
2269 }
2270
2272 {
2273 return GetFoodStage().GetNextFoodStageType( cooking_method );
2274 }
2275
2277 {
2278 return GetFoodStage().GetFoodStageName( food_stage_type );
2279 }
2280
2282 {
2283 return GetFoodStage().CanChangeToNewStage( cooking_method );
2284 }
2285
2286
2288 {
2289 if ( !source.GetFoodStage())
2290 return;
2295 }
2296
2299 {
2302 }
2303
2306 {
2307 switch (stageNew)
2308 {
2313 break;
2314
2317 break;
2318 }
2319 }
2320
2321
2322
2323
2324
2326 {
2328 }
2329
2331 {
2333
2334
2336 }
2337
2339 {
2341 {
2344 }
2345 }
2346
2347
2349 {
2351 if (player)
2352 {
2354 player.ServerReplaceItemInHandsWithNew(lambda);
2355 }
2356 else
2357 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2358 }
2359
2361 {
2363 }
2364
2366 {
2367 super.SetActions();
2368
2371 }
2372
2374 {
2375 #ifndef SERVER
2376 #ifndef NO_GUI
2378 {
2380
2383 }
2384 #endif
2385 #endif
2386 }
2387
2389 {
2390 #ifndef SERVER
2391 #ifndef NO_GUI
2393 {
2397 }
2398 #endif
2399 #endif
2400 }
2401
2403 {
2404 return false;
2405 }
2406
2408 {
2410 }
2411
2412 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2413 {
2415
2416 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2418 if ( hasRootAsPlayer )
2420
2421
2422
2423
2424
2425
2426
2428 {
2429
2431 {
2433 {
2437 break;
2438
2442 break;
2443
2447 break;
2448
2452 default:
2455 return;
2456 }
2457
2458
2459 }
2460
2462
2464 {
2466 {
2467
2469 {
2471 }
2473 {
2476 {
2478 }
2479 else
2480 {
2482 {
2484 }
2485 else
2486 {
2488 }
2489 }
2490 }
2491 }
2492 }
2493
2494 }
2496 {
2497
2499 {
2501 {
2505 break;
2506
2510 break;
2511
2515 break;
2516
2520 break;
2521
2524 default:
2527 return;
2528 }
2529 }
2530
2532
2534 {
2536 {
2537
2539 {
2541 }
2542 }
2543 }
2544 }
2546 {
2547
2549 {
2551 {
2555 break;
2556
2559 default:
2562 return;
2563 }
2564 }
2565
2567
2569 {
2571 {
2572
2574 {
2576 }
2577 }
2578 }
2579 }
2580 else
2581 {
2582
2584
2586 {
2589
2590 }
2591 else
2592 {
2594 {
2597 }
2598 }
2599 }
2600 }
2601
2603 {
2604 if (
g_Game.IsHeadlessOrDedicatedServer())
2605 return;
2606
2608 {
2610 GetInventory().GetCurrentInventoryLocation(invLoc);
2612 {
2614 if (ptcMgr)
2615 {
2620 }
2621 }
2622 }
2624 {
2626 {
2629 return;
2630 }
2631
2633 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2635 {
2638 }
2639 }
2640 }
2641
2642 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2643 {
2645 {
2650 }
2651
2652 super.GetDebugActions(outputList);
2653 }
2654
2656 {
2657 super.OnAction(action_id, player, ctx);
2658
2660 {
2661 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2662 {
2664 if (food_stage_prev <= 0)
2665 {
2667 }
2669 return true;
2670 }
2671 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2672 {
2675 {
2677 }
2679 return true;
2680 }
2681
2682 }
2683
2684 #ifdef DIAG_DEVELOPER
2685 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2686 {
2687 PrintNutritionsData();
2688 return true;
2689 }
2690 #endif
2691
2692 return false;
2693 }
2694
2696 {
2697 string debug_output;
2698
2699 debug_output = super.GetDebugText();
2700
2703
2704 return debug_output;
2705 }
2706
2707
2708
2709
2710
2712 {
2713 float ret = super.GetBaitEffectivity();
2714
2716 {
2717 ret *= 0.5;
2718 }
2719
2720 return ret;
2721 }
2722
2724 {
2726 }
2727
2729 {
2731 }
2732
2734 {
2736 }
2737
2738 #ifdef DIAG_DEVELOPER
2739 private void PrintNutritionsData()
2740 {
2741 string nutritionsData = "";
2742
2745
2747 if (profile)
2748 {
2749 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2751 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2755 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2757
2760
2761 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2763 }
2764
2765 nutritionsData += "-----\n";
2766
2768 }
2769 #endif
2770
2772
2775 {
2777 }
2778}
2779
2781{
2783};
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.