1650{
1652
1660
1670
1672
1674 {
1676 {
1678
1680 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1681
1685 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1686 }
1687 }
1688
1690 {
1692
1694 }
1695
1697 {
1698 super.EEDelete(parent);
1699
1701
1704 }
1705
1707 {
1708 super.EEItemLocationChanged(oldLoc, newLoc);
1709
1712 {
1713 switch (oldLoc.GetParent().GetType())
1714 {
1715 case "FryingPan":
1716 case "Pot":
1717 case "Cauldron":
1718 case "SharpWoodenStick":
1720 break;
1721 }
1722
1725 {
1727 }
1728 }
1729
1730 if (oldLoc.IsValid())
1732
1735 }
1736
1738 {
1741 }
1742
1744 {
1747
1748 return true;
1749 }
1750
1752 {
1754 {
1756 }
1757 }
1758
1761 {
1762 int foodStageType;
1763
1765 if (foodStage)
1766 foodStageType = foodStage.GetFoodStageType();
1767
1772
1773 return agentsIn;
1774 }
1775
1776
1778 {
1779 return false;
1780 }
1781
1783 {
1784 return false;
1785 }
1786
1788 {
1790 {
1792 {
1795
1798
1799 default:
1800 return super.GetTemperatureFreezeTime();
1801 }
1802 }
1803
1804 return super.GetTemperatureFreezeTime();
1805 }
1806
1808 {
1810 {
1812 {
1815
1818
1819 default:
1820 return super.GetTemperatureThawTime();
1821 }
1822 }
1823
1824 return super.GetTemperatureThawTime();
1825 }
1826
1828 {
1830 }
1831
1832
1833
1834
1836 {
1837 SetSynchDirty();
1838 }
1839
1841 {
1842 super.OnVariablesSynchronized();
1843
1844
1845
1846
1848 {
1850 }
1851 else
1852 {
1854 }
1855
1858 }
1859
1860
1861
1862
1864 {
1867
1869 }
1870
1872 {
1873 string soundName = "";
1874
1877
1879 {
1881 }
1882 else
1883 {
1885 {
1887 {
1892 else
1893 soundName = "";
1894 break;
1895 }
1896
1898 {
1903 else
1904 soundName = "";
1905 break;
1906 }
1907
1909 {
1914 else
1915 soundName = "";
1916 break;
1917 }
1918
1919 default:
1920 soundName = "";
1921 break;
1922 }
1923
1925 {
1926 if (soundName == "")
1927 {
1929 }
1930 else
1931 {
1933 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1934 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1936 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1937 {
1939 }
1940 }
1941 }
1942 }
1943
1945 }
1946
1948 {
1951 }
1952
1953
1954
1955
1957 {
1958 super.OnStoreSave(ctx);
1959
1961 {
1963 }
1964
1965
1968 }
1969
1971 {
1972 if (!super.OnStoreLoad(ctx, version))
1973 return false;
1974
1976 {
1978 return false;
1979 }
1980
1981 if (version >= 115)
1982 {
1984 {
1986 return false;
1987 }
1989 {
1991 return false;
1992 }
1993 }
1994
1997
1998 return true;
1999 }
2000
2002 {
2003 super.AfterStoreLoad();
2004
2006 }
2007
2008
2010 {
2012 }
2013
2014
2016 {
2017 return false;
2018 }
2019
2021 {
2022 return false;
2023 }
2024
2026 {
2027 return false;
2028 }
2029
2031 {
2032 return false;
2033 }
2034
2035
2036
2037
2038
2040 {
2043 {
2044 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2045 }
2046 else if (classname != "" && food_stage)
2047 {
2048 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2049 }
2050 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2051 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2052
2053 }
2054
2056 {
2059 {
2061 }
2062 else if (classname != "" && food_stage)
2063 {
2064 return FoodStage.GetEnergy(null, food_stage, classname);
2065 }
2066 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2067 return g_Game.ConfigGetFloat( class_path +
" energy" );
2068 }
2069
2071 {
2074 {
2076 }
2077 else if (classname != "" && food_stage)
2078 {
2079 return FoodStage.GetWater(null, food_stage, classname);
2080 }
2081 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2082 return g_Game.ConfigGetFloat( class_path +
" water" );
2083 }
2084
2086 {
2089 {
2090 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2091 }
2092 else if (classname != "" && food_stage)
2093 {
2094 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2095 }
2096 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2097 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2098
2099 }
2100
2102 {
2105 {
2106 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2107 }
2108 else if (classname != "" && food_stage)
2109 {
2110 return FoodStage.GetToxicity(null, food_stage, classname);
2111 }
2112 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2113 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2114 }
2115
2117 {
2120 {
2122 }
2123 else if (classname != "" && food_stage)
2124 {
2125 return FoodStage.GetAgents(null, food_stage, classname);
2126 }
2127 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2128 return g_Game.ConfigGetInt( class_path +
" agents" );
2129 }
2130
2132 {
2135 {
2136 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2137 }
2138 else if (classname != "" && food_stage)
2139 {
2140 return FoodStage.GetDigestibility(null, food_stage, classname);
2141 }
2142 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2143 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2144 }
2145
2147 {
2150 {
2151 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2152 }
2153 else if (className != "" && foodStage)
2154 {
2155 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2156 }
2157 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2158 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2159 }
2160
2162 {
2172
2173 return profile;
2174 }
2175
2176
2177
2178
2180 {
2182 }
2183
2184
2186 {
2188 {
2190 }
2191
2192 return false;
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
2245
2247 {
2249 }
2250
2252 {
2253 return GetFoodStage().GetNextFoodStageType( cooking_method );
2254 }
2255
2257 {
2258 return GetFoodStage().GetFoodStageName( food_stage_type );
2259 }
2260
2262 {
2263 return GetFoodStage().CanChangeToNewStage( cooking_method );
2264 }
2265
2266
2268 {
2269 if ( !source.GetFoodStage())
2270 return;
2275 }
2276
2279 {
2282 }
2283
2286 {
2287 switch (stageNew)
2288 {
2293 break;
2294
2297 break;
2298 }
2299 }
2300
2301
2302
2303
2304
2306 {
2308 }
2309
2311 {
2313
2314
2316 }
2317
2319 {
2321 {
2324 }
2325 }
2326
2327
2329 {
2331 if (player)
2332 {
2334 player.ServerReplaceItemInHandsWithNew(lambda);
2335 }
2336 else
2337 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2338 }
2339
2341 {
2343 }
2344
2346 {
2347 super.SetActions();
2348
2351 }
2352
2354 {
2355 #ifndef SERVER
2356 #ifndef NO_GUI
2358 {
2360
2363 }
2364 #endif
2365 #endif
2366 }
2367
2369 {
2370 #ifndef SERVER
2371 #ifndef NO_GUI
2373 {
2377 }
2378 #endif
2379 #endif
2380 }
2381
2383 {
2384 return false;
2385 }
2386
2388 {
2390 }
2391
2392 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2393 {
2395
2396 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2398 if ( hasRootAsPlayer )
2400
2401
2402
2403
2404
2405
2406
2408 {
2409
2411 {
2413 {
2417 break;
2418
2422 break;
2423
2427 break;
2428
2432 default:
2435 return;
2436 }
2437
2438
2439 }
2440
2442
2444 {
2446 {
2447
2449 {
2451 }
2453 {
2456 {
2458 }
2459 else
2460 {
2462 {
2464 }
2465 else
2466 {
2468 }
2469 }
2470 }
2471 }
2472 }
2473
2474 }
2476 {
2477
2479 {
2481 {
2485 break;
2486
2490 break;
2491
2495 break;
2496
2500 break;
2501
2504 default:
2507 return;
2508 }
2509 }
2510
2512
2514 {
2516 {
2517
2519 {
2521 }
2522 }
2523 }
2524 }
2526 {
2527
2529 {
2531 {
2535 break;
2536
2539 default:
2542 return;
2543 }
2544 }
2545
2547
2549 {
2551 {
2552
2554 {
2556 }
2557 }
2558 }
2559 }
2560 else
2561 {
2562
2564
2566 {
2569
2570 }
2571 else
2572 {
2574 {
2577 }
2578 }
2579 }
2580 }
2581
2583 {
2584 if (
g_Game.IsHeadlessOrDedicatedServer())
2585 return;
2586
2588 {
2590 GetInventory().GetCurrentInventoryLocation(invLoc);
2592 {
2594 if (ptcMgr)
2595 {
2600 }
2601 }
2602 }
2604 {
2606 {
2609 return;
2610 }
2611
2613 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2615 {
2618 }
2619 }
2620 }
2621
2622 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2623 {
2625 {
2630 }
2631
2632 super.GetDebugActions(outputList);
2633 }
2634
2636 {
2637 super.OnAction(action_id, player, ctx);
2638
2640 {
2641 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2642 {
2644 if (food_stage_prev <= 0)
2645 {
2647 }
2649 return true;
2650 }
2651 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2652 {
2655 {
2657 }
2659 return true;
2660 }
2661
2662 }
2663
2664 #ifdef DIAG_DEVELOPER
2665 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2666 {
2667 PrintNutritionsData();
2668 return true;
2669 }
2670 #endif
2671
2672 return false;
2673 }
2674
2676 {
2677 string debug_output;
2678
2679 debug_output = super.GetDebugText();
2680
2683
2684 return debug_output;
2685 }
2686
2687
2688
2689
2690
2692 {
2693 float ret = super.GetBaitEffectivity();
2694
2696 {
2697 ret *= 0.5;
2698 }
2699
2700 return ret;
2701 }
2702
2704 {
2706 }
2707
2709 {
2711 }
2712
2714 {
2716 }
2717
2718 #ifdef DIAG_DEVELOPER
2719 private void PrintNutritionsData()
2720 {
2721 string nutritionsData = "";
2722
2725
2727 if (profile)
2728 {
2729 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2731 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2735 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2737
2740
2741 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2743 }
2744
2745 nutritionsData += "-----\n";
2746
2748 }
2749 #endif
2750
2752
2755 {
2757 }
2758}
2759
2761{
2763};
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.