1626{
1628
1636
1646
1648
1650 {
1652 {
1654
1656 RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime", 0, 600, 0);
1657
1661 RegisterNetSyncVariableBool("m_MakeCookingSounds");
1662 }
1663 }
1664
1666 {
1668
1670 }
1671
1673 {
1674 super.EEDelete(parent);
1675
1677
1680 }
1681
1683 {
1684 super.EEItemLocationChanged(oldLoc, newLoc);
1685
1688 {
1689 switch (oldLoc.GetParent().GetType())
1690 {
1691 case "FryingPan":
1692 case "Pot":
1693 case "Cauldron":
1694 case "SharpWoodenStick":
1696 break;
1697 }
1698
1701 {
1703 }
1704 }
1705
1706 if (oldLoc.IsValid())
1708
1711 }
1712
1714 {
1717 }
1718
1720 {
1723
1724 return true;
1725 }
1726
1728 {
1730 {
1732 }
1733 }
1734
1737 {
1738 int foodStageType;
1739
1741 if (foodStage)
1742 foodStageType = foodStage.GetFoodStageType();
1743
1748
1749 return agentsIn;
1750 }
1751
1752
1754 {
1755 return false;
1756 }
1757
1759 {
1760 return false;
1761 }
1762
1764 {
1766 {
1768 {
1771
1774
1775 default:
1776 return super.GetTemperatureFreezeTime();
1777 }
1778 }
1779
1780 return super.GetTemperatureFreezeTime();
1781 }
1782
1784 {
1786 {
1788 {
1791
1794
1795 default:
1796 return super.GetTemperatureThawTime();
1797 }
1798 }
1799
1800 return super.GetTemperatureThawTime();
1801 }
1802
1804 {
1806 }
1807
1808
1809
1810
1812 {
1813 SetSynchDirty();
1814 }
1815
1817 {
1818 super.OnVariablesSynchronized();
1819
1820
1821
1822
1824 {
1826 }
1827 else
1828 {
1830 }
1831
1834 }
1835
1836
1837
1838
1840 {
1843
1845 }
1846
1848 {
1849 string soundName = "";
1850
1853
1855 {
1857 }
1858 else
1859 {
1861 {
1863 {
1868 else
1869 soundName = "";
1870 break;
1871 }
1872
1874 {
1879 else
1880 soundName = "";
1881 break;
1882 }
1883
1885 {
1890 else
1891 soundName = "";
1892 break;
1893 }
1894
1895 default:
1896 soundName = "";
1897 break;
1898 }
1899
1901 {
1902 if (soundName == "")
1903 {
1905 }
1906 else
1907 {
1909 nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null,
GetType());
1910 float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
1912 if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
1913 {
1915 }
1916 }
1917 }
1918 }
1919
1921 }
1922
1924 {
1927 }
1928
1929
1930
1931
1933 {
1934 super.OnStoreSave(ctx);
1935
1937 {
1939 }
1940
1941
1944 }
1945
1947 {
1948 if (!super.OnStoreLoad(ctx, version))
1949 return false;
1950
1952 {
1954 return false;
1955 }
1956
1957 if (version >= 115)
1958 {
1960 {
1962 return false;
1963 }
1965 {
1967 return false;
1968 }
1969 }
1970
1973
1974 return true;
1975 }
1976
1978 {
1979 super.AfterStoreLoad();
1980
1982 }
1983
1984
1986 {
1988 }
1989
1990
1992 {
1993 return false;
1994 }
1995
1997 {
1998 return false;
1999 }
2000
2002 {
2003 return false;
2004 }
2005
2007 {
2008 return false;
2009 }
2010
2011
2012
2013
2014
2016 {
2019 {
2020 return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
2021 }
2022 else if (classname != "" && food_stage)
2023 {
2024 return FoodStage.GetFullnessIndex(null, food_stage, classname);
2025 }
2026 string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
2027 return g_Game.ConfigGetFloat( class_path +
" fullnessIndex" );
2028
2029 }
2030
2032 {
2035 {
2037 }
2038 else if (classname != "" && food_stage)
2039 {
2040 return FoodStage.GetEnergy(null, food_stage, classname);
2041 }
2042 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2043 return g_Game.ConfigGetFloat( class_path +
" energy" );
2044 }
2045
2047 {
2050 {
2052 }
2053 else if (classname != "" && food_stage)
2054 {
2055 return FoodStage.GetWater(null, food_stage, classname);
2056 }
2057 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2058 return g_Game.ConfigGetFloat( class_path +
" water" );
2059 }
2060
2062 {
2065 {
2066 return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage());
2067 }
2068 else if (classname != "" && food_stage)
2069 {
2070 return FoodStage.GetNutritionalIndex(null, food_stage, classname);
2071 }
2072 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2073 return g_Game.ConfigGetFloat( class_path +
" nutritionalIndex" );
2074
2075 }
2076
2078 {
2081 {
2082 return FoodStage.GetToxicity(food_item.
GetFoodStage());
2083 }
2084 else if (classname != "" && food_stage)
2085 {
2086 return FoodStage.GetToxicity(null, food_stage, classname);
2087 }
2088 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2089 return g_Game.ConfigGetFloat( class_path +
" toxicity" );
2090 }
2091
2093 {
2096 {
2098 }
2099 else if (classname != "" && food_stage)
2100 {
2101 return FoodStage.GetAgents(null, food_stage, classname);
2102 }
2103 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2104 return g_Game.ConfigGetInt( class_path +
" agents" );
2105 }
2106
2108 {
2111 {
2112 return FoodStage.GetDigestibility(food_item.
GetFoodStage());
2113 }
2114 else if (classname != "" && food_stage)
2115 {
2116 return FoodStage.GetDigestibility(null, food_stage, classname);
2117 }
2118 string class_path =
string.
Format(
"cfgVehicles %1 Nutrition", classname);
2119 return g_Game.ConfigGetInt( class_path +
" digestibility" );
2120 }
2121
2123 {
2126 {
2127 return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
2128 }
2129 else if (className != "" && foodStage)
2130 {
2131 return FoodStage.GetAgentsPerDigest(null, foodStage, className);
2132 }
2133 string classPath = string.Format("cfgVehicles %1 Nutrition", className);
2134 return g_Game.ConfigGetInt(classPath +
" agentsPerDigest");
2135 }
2136
2138 {
2148
2149 return profile;
2150 }
2151
2152
2153
2154
2156 {
2158 }
2159
2160
2162 {
2164 {
2166 }
2167
2168 return false;
2169 }
2170
2172 {
2174 {
2176 }
2177
2178 return false;
2179 }
2180
2182 {
2184 {
2186 }
2187
2188 return false;
2189 }
2190
2192 {
2194 {
2196 }
2197
2198 return false;
2199 }
2200
2202 {
2204 {
2206 }
2207
2208 return false;
2209 }
2210
2212 {
2214 {
2216 }
2217
2218 return false;
2219 }
2220
2221
2223 {
2225 }
2226
2228 {
2229 return GetFoodStage().GetNextFoodStageType( cooking_method );
2230 }
2231
2233 {
2234 return GetFoodStage().GetFoodStageName( food_stage_type );
2235 }
2236
2238 {
2239 return GetFoodStage().CanChangeToNewStage( cooking_method );
2240 }
2241
2242
2244 {
2245 if ( !source.GetFoodStage())
2246 return;
2251 }
2252
2255 {
2258 }
2259
2262 {
2263 switch (stageNew)
2264 {
2269 break;
2270
2273 break;
2274 }
2275 }
2276
2277
2278
2279
2280
2282 {
2284 }
2285
2287 {
2289
2290
2292 }
2293
2295 {
2297 {
2300 }
2301 }
2302
2303
2305 {
2307 if (player)
2308 {
2310 player.ServerReplaceItemInHandsWithNew(lambda);
2311 }
2312 else
2313 Error(
"ReplaceEdibleWithNew - cannot use edible without player");
2314 }
2315
2317 {
2319 }
2320
2322 {
2323 super.SetActions();
2324
2327 }
2328
2330 {
2331 #ifndef SERVER
2332 #ifndef NO_GUI
2334 {
2336
2339 }
2340 #endif
2341 #endif
2342 }
2343
2345 {
2346 #ifndef SERVER
2347 #ifndef NO_GUI
2349 {
2353 }
2354 #endif
2355 #endif
2356 }
2357
2359 {
2360 return false;
2361 }
2362
2364 {
2366 }
2367
2368 override void ProcessDecay(
float delta,
bool hasRootAsPlayer )
2369 {
2371
2372 delta *= DayZGame.Cast(
g_Game).GetFoodDecayModifier();
2374 if ( hasRootAsPlayer )
2376
2377
2378
2379
2380
2381
2382
2384 {
2385
2387 {
2389 {
2393 break;
2394
2398 break;
2399
2403 break;
2404
2408 default:
2411 return;
2412 }
2413
2414
2415 }
2416
2418
2420 {
2422 {
2423
2425 {
2427 }
2429 {
2432 {
2434 }
2435 else
2436 {
2438 {
2440 }
2441 else
2442 {
2444 }
2445 }
2446 }
2447 }
2448 }
2449
2450 }
2452 {
2453
2455 {
2457 {
2461 break;
2462
2466 break;
2467
2471 break;
2472
2476 break;
2477
2480 default:
2483 return;
2484 }
2485 }
2486
2488
2490 {
2492 {
2493
2495 {
2497 }
2498 }
2499 }
2500 }
2502 {
2503
2505 {
2507 {
2511 break;
2512
2515 default:
2518 return;
2519 }
2520 }
2521
2523
2525 {
2527 {
2528
2530 {
2532 }
2533 }
2534 }
2535 }
2536 else
2537 {
2538
2540
2542 {
2545
2546 }
2547 else
2548 {
2550 {
2553 }
2554 }
2555 }
2556 }
2557
2559 {
2560 if (
g_Game.IsHeadlessOrDedicatedServer())
2561 return;
2562
2564 {
2566 GetInventory().GetCurrentInventoryLocation(invLoc);
2568 {
2570 if (ptcMgr)
2571 {
2576 }
2577 }
2578 }
2580 {
2582 {
2585 return;
2586 }
2587
2589 GetInventory().GetCurrentInventoryLocation(inventoryLoc);
2591 {
2594 }
2595 }
2596 }
2597
2598 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
2599 {
2601 {
2606 }
2607
2608 super.GetDebugActions(outputList);
2609 }
2610
2612 {
2613 super.OnAction(action_id, player, ctx);
2614
2616 {
2617 if ( action_id ==
EActions.FOOD_STAGE_PREV )
2618 {
2620 if (food_stage_prev <= 0)
2621 {
2623 }
2625 return true;
2626 }
2627 else if ( action_id ==
EActions.FOOD_STAGE_NEXT )
2628 {
2631 {
2633 }
2635 return true;
2636 }
2637
2638 }
2639
2640 #ifdef DIAG_DEVELOPER
2641 if (action_id ==
EActions.FOOD_NUTRITIONS_DATA)
2642 {
2643 PrintNutritionsData();
2644 return true;
2645 }
2646 #endif
2647
2648 return false;
2649 }
2650
2652 {
2653 string debug_output;
2654
2655 debug_output = super.GetDebugText();
2656
2659
2660 return debug_output;
2661 }
2662
2663
2664
2665
2666
2668 {
2669 float ret = super.GetBaitEffectivity();
2670
2672 {
2673 ret *= 0.5;
2674 }
2675
2676 return ret;
2677 }
2678
2680 {
2682 }
2683
2685 {
2687 }
2688
2690 {
2692 }
2693
2694 #ifdef DIAG_DEVELOPER
2695 private void PrintNutritionsData()
2696 {
2697 string nutritionsData = "";
2698
2701
2703 if (profile)
2704 {
2705 nutritionsData =
string.
Format(
"Item: %1\n\n",
this);
2707 nutritionsData +=
string.
Format(
"Energy: %1\n", profile.
m_Energy);
2711 nutritionsData +=
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
2713
2716
2717 nutritionsData +=
string.
Format(
"Agents: %1\n", profile.
m_Agents);
2719 }
2720
2721 nutritionsData += "-----\n";
2722
2724 }
2725 #endif
2726
2728
2731 {
2733 }
2734}
2735
2737{
2739};
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.