1716{
1718
1726
1736
1738
1740 {
1742 {
1744
1746 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1747
1751 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1752 }
1753 }
1754
1756 {
1758
1760 }
1761
1763 {
1764 super.EEDelete(parent);
1765
1767
1770 }
1771
1773 {
1774 super.EEItemLocationChanged(oldLoc, newLoc);
1775
1778 {
1779 switch (oldLoc.GetParent().GetType())
1780 {
1781 case "FryingPan":
1782 case "Pot":
1783 case "Cauldron":
1784 case "SharpWoodenStick":
1786 break;
1787 }
1788
1791 {
1793 }
1794 }
1795
1796 if (oldLoc.IsValid())
1798
1801 }
1802
1804 {
1807 }
1808
1810 {
1813
1814 return true;
1815 }
1816
1818 {
1820 {
1822 }
1823 }
1824
1827 {
1828 int foodStageType;
1829
1831 if (foodStage)
1832 foodStageType = foodStage.GetFoodStageType();
1833
1838
1839 return agentsIn;
1840 }
1841
1842
1844 {
1845 return false;
1846 }
1847
1849 {
1850 return false;
1851 }
1852
1854 {
1856 {
1858 {
1861
1864
1865 default:
1866 return super.GetTemperatureFreezeTime();
1867 }
1868 }
1869
1870 return super.GetTemperatureFreezeTime();
1871 }
1872
1874 {
1876 {
1878 {
1881
1884
1885 default:
1886 return super.GetTemperatureThawTime();
1887 }
1888 }
1889
1890 return super.GetTemperatureThawTime();
1891 }
1892
1894 {
1896 }
1897
1898
1899
1900
1902 {
1903 SetSynchDirty();
1904 }
1905
1907 {
1908 super.OnVariablesSynchronized();
1909
1910
1911
1912
1914 {
1916 }
1917 else
1918 {
1920 }
1921
1924 }
1925
1926
1927
1928
1930 {
1933
1935 }
1936
1938 {
1939 string soundName = "";
1940
1943
1945 {
1947 }
1948 else
1949 {
1951 {
1953 {
1958 else
1959 soundName = "";
1960 break;
1961 }
1962
1964 {
1969 else
1970 soundName = "";
1971 break;
1972 }
1973
1975 {
1980 else
1981 soundName = "";
1982 break;
1983 }
1984
1985 default:
1986 soundName = "";
1987 break;
1988 }
1989
1991 {
1992 if (soundName == "")
1993 {
1995 }
1996 else
1997 {
1999 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
2000 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
2002 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
2003 {
2005 }
2006 }
2007 }
2008 }
2009
2011 }
2012
2014 {
2017 }
2018
2019
2020
2021
2023 {
2024 super.OnStoreSave(ctx);
2025
2027 {
2029 }
2030
2031
2034 }
2035
2037 {
2038 if (!super.OnStoreLoad(ctx, version))
2039 return false;
2040
2042 {
2044 return false;
2045 }
2046
2047 if (version >= 115)
2048 {
2050 {
2052 return false;
2053 }
2055 {
2057 return false;
2058 }
2059 }
2060
2063
2064 return true;
2065 }
2066
2068 {
2069 super.AfterStoreLoad();
2070
2072 }
2073
2074
2076 {
2078 }
2079
2080
2082 {
2083 return false;
2084 }
2085
2087 {
2088 return false;
2089 }
2090
2092 {
2093 return false;
2094 }
2095
2097 {
2098 return false;
2099 }
2100
2101
2102
2103
2104
2106 {
2109 {
2110 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2111 }
2112 else if (classname != "" && food_stage)
2113 {
2114 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2115 }
2116 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2117 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2118
2119 }
2120
2122 {
2125 {
2127 }
2128 else if (classname != "" && food_stage)
2129 {
2130 return FoodStage.GetEnergy(null, food_stage, classname);
2131 }
2132 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2133 return g_Game.ConfigGetFloat( class_path +
" energy" );
2134 }
2135
2137 {
2140 {
2142 }
2143 else if (classname != "" && food_stage)
2144 {
2145 return FoodStage.GetWater(null, food_stage, classname);
2146 }
2147 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2148 return g_Game.ConfigGetFloat( class_path +
" water" );
2149 }
2150
2152 {
2155 {
2156 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2157 }
2158 else if (classname != "" && food_stage)
2159 {
2160 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2161 }
2162 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2163 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2164
2165 }
2166
2168 {
2171 {
2172 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2173 }
2174 else if (classname != "" && food_stage)
2175 {
2176 return FoodStage.GetToxicity(null, food_stage, classname);
2177 }
2178 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2179 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2180 }
2181
2183 {
2186 {
2188 }
2189 else if (classname != "" && food_stage)
2190 {
2191 return FoodStage.GetAgents(null, food_stage, classname);
2192 }
2193 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2194 return g_Game.ConfigGetInt( class_path +
" agents" );
2195 }
2196
2198 {
2201 {
2202 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2203 }
2204 else if (classname != "" && food_stage)
2205 {
2206 return FoodStage.GetDigestibility(null, food_stage, classname);
2207 }
2208 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2209 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2210 }
2211
2213 {
2216 {
2217 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2218 }
2219 else if (className != "" && foodStage)
2220 {
2221 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2222 }
2223 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2224 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2225 }
2226
2228 {
2238
2239 return profile;
2240 }
2241
2242
2243
2244
2246 {
2248 }
2249
2250
2252 {
2254 {
2256 }
2257
2258 return false;
2259 }
2260
2262 {
2264 {
2266 }
2267
2268 return false;
2269 }
2270
2272 {
2274 {
2276 }
2277
2278 return false;
2279 }
2280
2282 {
2284 {
2286 }
2287
2288 return false;
2289 }
2290
2292 {
2294 {
2296 }
2297
2298 return false;
2299 }
2300
2302 {
2304 {
2306 }
2307
2308 return false;
2309 }
2310
2311
2313 {
2315 }
2316
2318 {
2319 return GetFoodStage().GetNextFoodStageType( cooking_method );
2320 }
2321
2323 {
2324 return GetFoodStage().GetFoodStageName( food_stage_type );
2325 }
2326
2328 {
2329 return GetFoodStage().CanChangeToNewStage( cooking_method );
2330 }
2331
2332
2334 {
2335 if ( !source.GetFoodStage())
2336 return;
2341 }
2342
2345 {
2348 }
2349
2352 {
2353 switch (stageNew)
2354 {
2359 break;
2360
2363 break;
2364 }
2365 }
2366
2367
2368
2369
2370
2372 {
2374 }
2375
2377 {
2379
2380
2382 }
2383
2385 {
2387 {
2390 }
2391 }
2392
2393
2395 {
2397 if (player)
2398 {
2400 player.ServerReplaceItemInHandsWithNew(lambda);
2401 }
2402 else
2403 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2404 }
2405
2407 {
2409 }
2410
2412 {
2413 super.SetActions();
2414
2417 }
2418
2420 {
2421 #ifndef SERVER
2422 #ifndef NO_GUI
2424 {
2426
2429 }
2430 #endif
2431 #endif
2432 }
2433
2435 {
2436 #ifndef SERVER
2437 #ifndef NO_GUI
2439 {
2443 }
2444 #endif
2445 #endif
2446 }
2447
2449 {
2450 return false;
2451 }
2452
2454 {
2456 }
2457
2458 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2459 {
2461
2462 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2464 if ( hasRootAsPlayer )
2466
2467
2468
2469
2470
2471
2472
2474 {
2475
2477 {
2479 {
2483 break;
2484
2488 break;
2489
2493 break;
2494
2498 default:
2501 return;
2502 }
2503
2504
2505 }
2506
2508
2510 {
2512 {
2513
2515 {
2517 }
2519 {
2522 {
2524 }
2525 else
2526 {
2528 {
2530 }
2531 else
2532 {
2534 }
2535 }
2536 }
2537 }
2538 }
2539
2540 }
2542 {
2543
2545 {
2547 {
2551 break;
2552
2556 break;
2557
2561 break;
2562
2566 break;
2567
2570 default:
2573 return;
2574 }
2575 }
2576
2578
2580 {
2582 {
2583
2585 {
2587 }
2588 }
2589 }
2590 }
2592 {
2593
2595 {
2597 {
2601 break;
2602
2605 default:
2608 return;
2609 }
2610 }
2611
2613
2615 {
2617 {
2618
2620 {
2622 }
2623 }
2624 }
2625 }
2626 else
2627 {
2628
2630
2632 {
2635
2636 }
2637 else
2638 {
2640 {
2643 }
2644 }
2645 }
2646 }
2647
2649 {
2650 if (
g_Game.IsHeadlessOrDedicatedServer())
2651 return;
2652
2654 {
2656 GetInventory().GetCurrentInventoryLocation(invLoc);
2658 {
2660 if (ptcMgr)
2661 {
2666 }
2667 }
2668 }
2670 {
2672 {
2675 return;
2676 }
2677
2679 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2681 {
2684 }
2685 }
2686 }
2687
2688 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2689 {
2691 {
2696 }
2697
2698 super.GetDebugActions(outputList);
2699 }
2700
2702 {
2703 super.OnAction(action_id, player, ctx);
2704
2706 {
2707 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2708 {
2710 if (food_stage_prev <= 0)
2711 {
2713 }
2715 return true;
2716 }
2717 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2718 {
2721 {
2723 }
2725 return true;
2726 }
2727
2728 }
2729
2730 #ifdef DIAG_DEVELOPER
2731 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2732 {
2733 PrintNutritionsData();
2734 return true;
2735 }
2736 #endif
2737
2738 return false;
2739 }
2740
2742 {
2743 string debug_output;
2744
2745 debug_output = super.GetDebugText();
2746
2749
2750 return debug_output;
2751 }
2752
2753
2754
2755
2756
2758 {
2759 float ret = super.GetBaitEffectivity();
2760
2762 {
2763 ret *= 0.5;
2764 }
2765
2766 return ret;
2767 }
2768
2770 {
2772 }
2773
2775 {
2777 }
2778
2780 {
2782 }
2783
2784 #ifdef DIAG_DEVELOPER
2785 private void PrintNutritionsData()
2786 {
2787 string nutritionsData = "";
2788
2791
2793 if (profile)
2794 {
2795 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2797 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2801 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2803
2806
2807 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2809 }
2810
2811 nutritionsData += "-----\n";
2812
2814 }
2815 #endif
2816
2818
2821 {
2823 }
2824}
2825
2827{
2829};
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.