1805{
1807
1815
1825
1827
1829 {
1831 {
1833
1835 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1836
1840 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1841 }
1842 }
1843
1845 {
1847
1849 }
1850
1852 {
1853 super.EEDelete(parent);
1854
1856
1859 }
1860
1862 {
1863 super.EEItemLocationChanged(oldLoc, newLoc);
1864
1867 {
1868 switch (oldLoc.GetParent().GetType())
1869 {
1870 case "FryingPan":
1871 case "Pot":
1872 case "Cauldron":
1873 case "SharpWoodenStick":
1875 break;
1876 }
1877
1880 {
1882 }
1883 }
1884
1885 if (oldLoc.IsValid())
1887
1890 }
1891
1893 {
1896 }
1897
1899 {
1902
1903 return true;
1904 }
1905
1907 {
1909 {
1911 }
1912 }
1913
1916 {
1917 int foodStageType;
1918
1920 if (foodStage)
1921 foodStageType = foodStage.GetFoodStageType();
1922
1927
1928 return agentsIn;
1929 }
1930
1931
1933 {
1934 return false;
1935 }
1936
1938 {
1939 return false;
1940 }
1941
1943 {
1945 {
1947 {
1950
1953
1954 default:
1955 return super.GetTemperatureFreezeTime();
1956 }
1957 }
1958
1959 return super.GetTemperatureFreezeTime();
1960 }
1961
1963 {
1965 {
1967 {
1970
1973
1974 default:
1975 return super.GetTemperatureThawTime();
1976 }
1977 }
1978
1979 return super.GetTemperatureThawTime();
1980 }
1981
1983 {
1985 }
1986
1987
1988
1989
1991 {
1992 SetSynchDirty();
1993 }
1994
1996 {
1997 super.OnVariablesSynchronized();
1998
1999
2000
2001
2003 {
2005 }
2006 else
2007 {
2009 }
2010
2013 }
2014
2015
2016
2017
2019 {
2022
2024 }
2025
2027 {
2028 string soundName = "";
2029
2032
2034 {
2036 }
2037 else
2038 {
2040 {
2042 {
2047 else
2048 soundName = "";
2049 break;
2050 }
2051
2053 {
2058 else
2059 soundName = "";
2060 break;
2061 }
2062
2064 {
2069 else
2070 soundName = "";
2071 break;
2072 }
2073
2074 default:
2075 soundName = "";
2076 break;
2077 }
2078
2080 {
2081 if (soundName == "")
2082 {
2084 }
2085 else
2086 {
2088 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
2089 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
2091 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
2092 {
2094 }
2095 }
2096 }
2097 }
2098
2100 }
2101
2103 {
2106 }
2107
2108
2109
2110
2112 {
2113 super.OnStoreSave(ctx);
2114
2116 {
2118 }
2119
2120
2123 }
2124
2126 {
2127 if (!super.OnStoreLoad(ctx, version))
2128 return false;
2129
2131 {
2133 return false;
2134 }
2135
2136 if (version >= 115)
2137 {
2139 {
2141 return false;
2142 }
2144 {
2146 return false;
2147 }
2148 }
2149
2152
2153 return true;
2154 }
2155
2157 {
2158 super.AfterStoreLoad();
2159
2161 }
2162
2163
2165 {
2167 }
2168
2169
2171 {
2172 return false;
2173 }
2174
2176 {
2177 return false;
2178 }
2179
2181 {
2182 return false;
2183 }
2184
2186 {
2187 return false;
2188 }
2189
2190
2191
2192
2193
2195 {
2198 {
2199 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2200 }
2201 else if (classname != "" && food_stage)
2202 {
2203 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2204 }
2205 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2206 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2207
2208 }
2209
2211 {
2214 {
2216 }
2217 else if (classname != "" && food_stage)
2218 {
2219 return FoodStage.GetEnergy(null, food_stage, classname);
2220 }
2221 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2222 return g_Game.ConfigGetFloat( class_path +
" energy" );
2223 }
2224
2226 {
2229 {
2231 }
2232 else if (classname != "" && food_stage)
2233 {
2234 return FoodStage.GetWater(null, food_stage, classname);
2235 }
2236 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2237 return g_Game.ConfigGetFloat( class_path +
" water" );
2238 }
2239
2241 {
2244 {
2245 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2246 }
2247 else if (classname != "" && food_stage)
2248 {
2249 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2250 }
2251 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2252 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2253
2254 }
2255
2257 {
2260 {
2261 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2262 }
2263 else if (classname != "" && food_stage)
2264 {
2265 return FoodStage.GetToxicity(null, food_stage, classname);
2266 }
2267 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2268 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2269 }
2270
2272 {
2275 {
2277 }
2278 else if (classname != "" && food_stage)
2279 {
2280 return FoodStage.GetAgents(null, food_stage, classname);
2281 }
2282 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2283 return g_Game.ConfigGetInt( class_path +
" agents" );
2284 }
2285
2287 {
2290 {
2291 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2292 }
2293 else if (classname != "" && food_stage)
2294 {
2295 return FoodStage.GetDigestibility(null, food_stage, classname);
2296 }
2297 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2298 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2299 }
2300
2302 {
2305 {
2306 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2307 }
2308 else if (className != "" && foodStage)
2309 {
2310 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2311 }
2312 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2313 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2314 }
2315
2317 {
2327
2328 return profile;
2329 }
2330
2331
2332
2333
2335 {
2337 }
2338
2339
2341 {
2343 {
2345 }
2346
2347 return false;
2348 }
2349
2351 {
2353 {
2355 }
2356
2357 return false;
2358 }
2359
2361 {
2363 {
2365 }
2366
2367 return false;
2368 }
2369
2371 {
2373 {
2375 }
2376
2377 return false;
2378 }
2379
2381 {
2383 {
2385 }
2386
2387 return false;
2388 }
2389
2391 {
2393 {
2395 }
2396
2397 return false;
2398 }
2399
2400
2402 {
2404 }
2405
2407 {
2408 return GetFoodStage().GetNextFoodStageType( cooking_method );
2409 }
2410
2412 {
2413 return GetFoodStage().GetFoodStageName( food_stage_type );
2414 }
2415
2417 {
2418 return GetFoodStage().CanChangeToNewStage( cooking_method );
2419 }
2420
2421
2423 {
2424 if ( !source.GetFoodStage())
2425 return;
2430 }
2431
2434 {
2437 }
2438
2441 {
2442 switch (stageNew)
2443 {
2448 break;
2449
2452 break;
2453 }
2454 }
2455
2456
2457
2458
2459
2461 {
2463 }
2464
2466 {
2468
2469
2471 }
2472
2474 {
2476 {
2479 }
2480 }
2481
2482
2484 {
2486 if (player)
2487 {
2489 player.ServerReplaceItemInHandsWithNew(lambda);
2490 }
2491 else
2492 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2493 }
2494
2496 {
2498 }
2499
2501 {
2502 super.SetActions();
2503
2506 }
2507
2509 {
2510 #ifndef SERVER
2511 #ifndef NO_GUI
2513 {
2515
2518 }
2519 #endif
2520 #endif
2521 }
2522
2524 {
2525 #ifndef SERVER
2526 #ifndef NO_GUI
2528 {
2532 }
2533 #endif
2534 #endif
2535 }
2536
2538 {
2539 return false;
2540 }
2541
2543 {
2545 }
2546
2547 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2548 {
2550
2551 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2553 if ( hasRootAsPlayer )
2555
2556
2557
2558
2559
2560
2561
2563 {
2564
2566 {
2568 {
2572 break;
2573
2577 break;
2578
2582 break;
2583
2587 default:
2590 return;
2591 }
2592
2593
2594 }
2595
2597
2599 {
2601 {
2602
2604 {
2606 }
2608 {
2611 {
2613 }
2614 else
2615 {
2617 {
2619 }
2620 else
2621 {
2623 }
2624 }
2625 }
2626 }
2627 }
2628
2629 }
2631 {
2632
2634 {
2636 {
2640 break;
2641
2645 break;
2646
2650 break;
2651
2655 break;
2656
2659 default:
2662 return;
2663 }
2664 }
2665
2667
2669 {
2671 {
2672
2674 {
2676 }
2677 }
2678 }
2679 }
2681 {
2682
2684 {
2686 {
2690 break;
2691
2694 default:
2697 return;
2698 }
2699 }
2700
2702
2704 {
2706 {
2707
2709 {
2711 }
2712 }
2713 }
2714 }
2715 else
2716 {
2717
2719
2721 {
2724
2725 }
2726 else
2727 {
2729 {
2732 }
2733 }
2734 }
2735 }
2736
2738 {
2739 if (
g_Game.IsHeadlessOrDedicatedServer())
2740 return;
2741
2743 {
2745 GetInventory().GetCurrentInventoryLocation(invLoc);
2747 {
2749 if (ptcMgr)
2750 {
2755 }
2756 }
2757 }
2759 {
2761 {
2764 return;
2765 }
2766
2768 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2770 {
2773 }
2774 }
2775 }
2776
2777 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2778 {
2780 {
2785 }
2786
2787 super.GetDebugActions(outputList);
2788 }
2789
2791 {
2792 super.OnAction(action_id, player, ctx);
2793
2795 {
2796 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2797 {
2799 if (food_stage_prev <= 0)
2800 {
2802 }
2804 return true;
2805 }
2806 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2807 {
2810 {
2812 }
2814 return true;
2815 }
2816
2817 }
2818
2819 #ifdef DIAG_DEVELOPER
2820 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2821 {
2822 PrintNutritionsData();
2823 return true;
2824 }
2825 #endif
2826
2827 return false;
2828 }
2829
2831 {
2832 string debug_output;
2833
2834 debug_output = super.GetDebugText();
2835
2838
2839 return debug_output;
2840 }
2841
2842
2843
2844
2845
2847 {
2848 float ret = super.GetBaitEffectivity();
2849
2851 {
2852 ret *= 0.5;
2853 }
2854
2855 return ret;
2856 }
2857
2859 {
2861 }
2862
2864 {
2866 }
2867
2869 {
2871 }
2872
2873 #ifdef DIAG_DEVELOPER
2874 private void PrintNutritionsData()
2875 {
2876 string nutritionsData = "";
2877
2880
2882 if (profile)
2883 {
2884 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2886 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2890 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2892
2895
2896 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2898 }
2899
2900 nutritionsData += "-----\n";
2901
2903 }
2904 #endif
2905
2907
2910 {
2912 }
2913}
2914
2916{
2918};
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.