1726{
1728
1736
1746
1748
1750 {
1752 {
1754
1756 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1757
1761 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1762 }
1763 }
1764
1766 {
1768
1770 }
1771
1773 {
1774 super.EEDelete(parent);
1775
1777
1780 }
1781
1783 {
1784 super.EEItemLocationChanged(oldLoc, newLoc);
1785
1788 {
1789 switch (oldLoc.GetParent().GetType())
1790 {
1791 case "FryingPan":
1792 case "Pot":
1793 case "Cauldron":
1794 case "SharpWoodenStick":
1796 break;
1797 }
1798
1801 {
1803 }
1804 }
1805
1806 if (oldLoc.IsValid())
1808
1811 }
1812
1814 {
1817 }
1818
1820 {
1823
1824 return true;
1825 }
1826
1828 {
1830 {
1832 }
1833 }
1834
1837 {
1838 int foodStageType;
1839
1841 if (foodStage)
1842 foodStageType = foodStage.GetFoodStageType();
1843
1848
1849 return agentsIn;
1850 }
1851
1852
1854 {
1855 return false;
1856 }
1857
1859 {
1860 return false;
1861 }
1862
1864 {
1866 {
1868 {
1871
1874
1875 default:
1876 return super.GetTemperatureFreezeTime();
1877 }
1878 }
1879
1880 return super.GetTemperatureFreezeTime();
1881 }
1882
1884 {
1886 {
1888 {
1891
1894
1895 default:
1896 return super.GetTemperatureThawTime();
1897 }
1898 }
1899
1900 return super.GetTemperatureThawTime();
1901 }
1902
1904 {
1906 }
1907
1908
1909
1910
1912 {
1913 SetSynchDirty();
1914 }
1915
1917 {
1918 super.OnVariablesSynchronized();
1919
1920
1921
1922
1924 {
1926 }
1927 else
1928 {
1930 }
1931
1934 }
1935
1936
1937
1938
1940 {
1943
1945 }
1946
1948 {
1949 string soundName = "";
1950
1953
1955 {
1957 }
1958 else
1959 {
1961 {
1963 {
1968 else
1969 soundName = "";
1970 break;
1971 }
1972
1974 {
1979 else
1980 soundName = "";
1981 break;
1982 }
1983
1985 {
1990 else
1991 soundName = "";
1992 break;
1993 }
1994
1995 default:
1996 soundName = "";
1997 break;
1998 }
1999
2001 {
2002 if (soundName == "")
2003 {
2005 }
2006 else
2007 {
2009 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
2010 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
2012 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
2013 {
2015 }
2016 }
2017 }
2018 }
2019
2021 }
2022
2024 {
2027 }
2028
2029
2030
2031
2033 {
2034 super.OnStoreSave(ctx);
2035
2037 {
2039 }
2040
2041
2044 }
2045
2047 {
2048 if (!super.OnStoreLoad(ctx, version))
2049 return false;
2050
2052 {
2054 return false;
2055 }
2056
2057 if (version >= 115)
2058 {
2060 {
2062 return false;
2063 }
2065 {
2067 return false;
2068 }
2069 }
2070
2073
2074 return true;
2075 }
2076
2078 {
2079 super.AfterStoreLoad();
2080
2082 }
2083
2084
2086 {
2088 }
2089
2090
2092 {
2093 return false;
2094 }
2095
2097 {
2098 return false;
2099 }
2100
2102 {
2103 return false;
2104 }
2105
2107 {
2108 return false;
2109 }
2110
2111
2112
2113
2114
2116 {
2119 {
2120 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2121 }
2122 else if (classname != "" && food_stage)
2123 {
2124 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2125 }
2126 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2127 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2128
2129 }
2130
2132 {
2135 {
2137 }
2138 else if (classname != "" && food_stage)
2139 {
2140 return FoodStage.GetEnergy(null, food_stage, classname);
2141 }
2142 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2143 return g_Game.ConfigGetFloat( class_path +
" energy" );
2144 }
2145
2147 {
2150 {
2152 }
2153 else if (classname != "" && food_stage)
2154 {
2155 return FoodStage.GetWater(null, food_stage, classname);
2156 }
2157 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2158 return g_Game.ConfigGetFloat( class_path +
" water" );
2159 }
2160
2162 {
2165 {
2166 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2167 }
2168 else if (classname != "" && food_stage)
2169 {
2170 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2171 }
2172 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2173 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2174
2175 }
2176
2178 {
2181 {
2182 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2183 }
2184 else if (classname != "" && food_stage)
2185 {
2186 return FoodStage.GetToxicity(null, food_stage, classname);
2187 }
2188 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2189 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2190 }
2191
2193 {
2196 {
2198 }
2199 else if (classname != "" && food_stage)
2200 {
2201 return FoodStage.GetAgents(null, food_stage, classname);
2202 }
2203 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2204 return g_Game.ConfigGetInt( class_path +
" agents" );
2205 }
2206
2208 {
2211 {
2212 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2213 }
2214 else if (classname != "" && food_stage)
2215 {
2216 return FoodStage.GetDigestibility(null, food_stage, classname);
2217 }
2218 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2219 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2220 }
2221
2223 {
2226 {
2227 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2228 }
2229 else if (className != "" && foodStage)
2230 {
2231 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2232 }
2233 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2234 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2235 }
2236
2238 {
2248
2249 return profile;
2250 }
2251
2252
2253
2254
2256 {
2258 }
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
2312 {
2314 {
2316 }
2317
2318 return false;
2319 }
2320
2321
2323 {
2325 }
2326
2328 {
2329 return GetFoodStage().GetNextFoodStageType( cooking_method );
2330 }
2331
2333 {
2334 return GetFoodStage().GetFoodStageName( food_stage_type );
2335 }
2336
2338 {
2339 return GetFoodStage().CanChangeToNewStage( cooking_method );
2340 }
2341
2342
2344 {
2345 if ( !source.GetFoodStage())
2346 return;
2351 }
2352
2355 {
2358 }
2359
2362 {
2363 switch (stageNew)
2364 {
2369 break;
2370
2373 break;
2374 }
2375 }
2376
2377
2378
2379
2380
2382 {
2384 }
2385
2387 {
2389
2390
2392 }
2393
2395 {
2397 {
2400 }
2401 }
2402
2403
2405 {
2407 if (player)
2408 {
2410 player.ServerReplaceItemInHandsWithNew(lambda);
2411 }
2412 else
2413 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2414 }
2415
2417 {
2419 }
2420
2422 {
2423 super.SetActions();
2424
2427 }
2428
2430 {
2431 #ifndef SERVER
2432 #ifndef NO_GUI
2434 {
2436
2439 }
2440 #endif
2441 #endif
2442 }
2443
2445 {
2446 #ifndef SERVER
2447 #ifndef NO_GUI
2449 {
2453 }
2454 #endif
2455 #endif
2456 }
2457
2459 {
2460 return false;
2461 }
2462
2464 {
2466 }
2467
2468 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2469 {
2471
2472 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2474 if ( hasRootAsPlayer )
2476
2477
2478
2479
2480
2481
2482
2484 {
2485
2487 {
2489 {
2493 break;
2494
2498 break;
2499
2503 break;
2504
2508 default:
2511 return;
2512 }
2513
2514
2515 }
2516
2518
2520 {
2522 {
2523
2525 {
2527 }
2529 {
2532 {
2534 }
2535 else
2536 {
2538 {
2540 }
2541 else
2542 {
2544 }
2545 }
2546 }
2547 }
2548 }
2549
2550 }
2552 {
2553
2555 {
2557 {
2561 break;
2562
2566 break;
2567
2571 break;
2572
2576 break;
2577
2580 default:
2583 return;
2584 }
2585 }
2586
2588
2590 {
2592 {
2593
2595 {
2597 }
2598 }
2599 }
2600 }
2602 {
2603
2605 {
2607 {
2611 break;
2612
2615 default:
2618 return;
2619 }
2620 }
2621
2623
2625 {
2627 {
2628
2630 {
2632 }
2633 }
2634 }
2635 }
2636 else
2637 {
2638
2640
2642 {
2645
2646 }
2647 else
2648 {
2650 {
2653 }
2654 }
2655 }
2656 }
2657
2659 {
2660 if (
g_Game.IsHeadlessOrDedicatedServer())
2661 return;
2662
2664 {
2666 GetInventory().GetCurrentInventoryLocation(invLoc);
2668 {
2670 if (ptcMgr)
2671 {
2676 }
2677 }
2678 }
2680 {
2682 {
2685 return;
2686 }
2687
2689 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2691 {
2694 }
2695 }
2696 }
2697
2698 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2699 {
2701 {
2706 }
2707
2708 super.GetDebugActions(outputList);
2709 }
2710
2712 {
2713 super.OnAction(action_id, player, ctx);
2714
2716 {
2717 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2718 {
2720 if (food_stage_prev <= 0)
2721 {
2723 }
2725 return true;
2726 }
2727 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2728 {
2731 {
2733 }
2735 return true;
2736 }
2737
2738 }
2739
2740 #ifdef DIAG_DEVELOPER
2741 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2742 {
2743 PrintNutritionsData();
2744 return true;
2745 }
2746 #endif
2747
2748 return false;
2749 }
2750
2752 {
2753 string debug_output;
2754
2755 debug_output = super.GetDebugText();
2756
2759
2760 return debug_output;
2761 }
2762
2763
2764
2765
2766
2768 {
2769 float ret = super.GetBaitEffectivity();
2770
2772 {
2773 ret *= 0.5;
2774 }
2775
2776 return ret;
2777 }
2778
2780 {
2782 }
2783
2785 {
2787 }
2788
2790 {
2792 }
2793
2794 #ifdef DIAG_DEVELOPER
2795 private void PrintNutritionsData()
2796 {
2797 string nutritionsData = "";
2798
2801
2803 if (profile)
2804 {
2805 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2807 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2811 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2813
2816
2817 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2819 }
2820
2821 nutritionsData += "-----\n";
2822
2824 }
2825 #endif
2826
2828
2831 {
2833 }
2834}
2835
2837{
2839};
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.