1801{
 1803 
 1811 
 1821    
 1823        
 1825    {
 1827        {
 1829            
 1831            RegisterNetSyncVariableFloat("m_FoodStage.m_CookingTime",  0, 600, 0);
 1832 
 1836            RegisterNetSyncVariableBool("m_MakeCookingSounds");
 1837        }
 1838    }
 1839    
 1841    {
 1843        
 1845    }
 1846    
 1848    {
 1849        super.EEDelete(parent);
 1850        
 1852        
 1855    }
 1856    
 1858    {
 1859        super.EEItemLocationChanged(oldLoc, newLoc);
 1860
 1863        {
 1864            switch (oldLoc.GetParent().GetType())
 1865            {
 1866                case "FryingPan":
 1867                case "Pot":
 1868                case "Cauldron":
 1869                case "SharpWoodenStick":
 1871                break;
 1872            }
 1873            
 1876            {
 1878            }
 1879        }
 1880        
 1881        if (oldLoc.IsValid())
 1883        
 1886    }
 1887 
 1889    {
 1892    }
 1893    
 1895    {
 1898 
 1899        return true;
 1900    }
 1901    
 1903    {
 1905        {
 1907        }
 1908    }
 1909    
 1912    {
 1913        int foodStageType;
 1914 
 1916        if (foodStage)
 1917            foodStageType = foodStage.GetFoodStageType();
 1918
 1923 
 1924        return agentsIn;
 1925    }
 1926    
 1927    
 1929    {
 1930        return false;
 1931    }
 1932    
 1934    {
 1935        return false;
 1936    }
 1937    
 1939    {
 1941        {
 1943            {
 1946                
 1949                
 1950                default:
 1951                    return super.GetTemperatureFreezeTime();
 1952            }
 1953        }
 1954        
 1955        return super.GetTemperatureFreezeTime();
 1956    }
 1957    
 1959    {
 1961        {
 1963            {
 1966                
 1969                
 1970                default:
 1971                    return super.GetTemperatureThawTime();
 1972            }
 1973        }
 1974        
 1975        return super.GetTemperatureThawTime();
 1976    }
 1977    
 1979    {
 1981    }
 1982    
 1983    
 1984    
 1985    
 1987    {
 1988        SetSynchDirty();
 1989    }
 1990    
 1992    {
 1993        super.OnVariablesSynchronized();
 1994        
 1995        
 1996        
 1997        
 1999        {
 2001        }
 2002        else
 2003        {
 2005        }
 2006        
 2009    }
 2010 
 2011    
 2012    
 2013    
 2015    {
 2018 
 2020    }
 2021 
 2023    {
 2024        string soundName = "";
 2025        
 2028 
 2030        {
 2032        }
 2033        else
 2034        {
 2036            {
 2038                {
 2043                    else
 2044                        soundName = "";
 2045                    break;
 2046                }
 2047                
 2049                {
 2054                    else
 2055                        soundName = "";
 2056                    break;
 2057                }
 2058                
 2060                {
 2065                    else
 2066                        soundName = "";
 2067                    break;
 2068                }
 2069                
 2070                default:
 2071                    soundName = "";
 2072                    break;
 2073            }
 2074            
 2076            {
 2077                if (soundName == "") 
 2078                {
 2080                }
 2081                else 
 2082                {
 2084                    nextStageProperties = FoodStage.GetAllCookingPropertiesForStage(nextFoodStage, null, 
GetType());
 
 2085                    float nextStageTime = nextStageProperties.Get(eCookingPropertyIndices.COOK_TIME);
 2087                    if (progress01 > Cooking.BURNING_WARNING_THRESHOLD)
 2088                    {
 2090                    }
 2091                }
 2092            }
 2093        }
 2094        
 2096    }
 2097 
 2099    {
 2102    }
 2103 
 2104    
 2105    
 2106    
 2108    {   
 2109        super.OnStoreSave(ctx);
 2110 
 2112        {
 2114        }
 2115        
 2116        
 2119    }
 2120    
 2122    {
 2123        if (!super.OnStoreLoad(ctx, version))
 2124            return false;
 2125 
 2127        {
 2129                return false;
 2130        }
 2131        
 2132        if (version >= 115)
 2133        {
 2135            {
 2137                return false;
 2138            }
 2140            {
 2142                return false;
 2143            }
 2144        }
 2145        
 2148        
 2149        return true;
 2150    }
 2151    
 2153    {   
 2154        super.AfterStoreLoad();
 2155        
 2157    }   
 2158 
 2159    
 2161    {
 2163    }
 2164    
 2165    
 2167    {
 2168        return false;
 2169    }
 2170    
 2172    {
 2173        return false;
 2174    }
 2175    
 2177    {
 2178        return false;
 2179    }
 2180    
 2182    {
 2183        return false;
 2184    }   
 2185    
 2186    
 2187    
 2188    
 2189    
 2191    {
 2194        {
 2195             return FoodStage.GetFullnessIndex(food_item.
GetFoodStage());
 
 2196        }
 2197        else if (classname != "" && food_stage)
 2198        {
 2199            return FoodStage.GetFullnessIndex(null, food_stage, classname);
 2200        }
 2201        string class_path = string.Format("cfgVehicles %1 Nutrition", classname);
 2203 
 2204    }
 2205    
 2207    {
 2210        {
 2212        }
 2213        else if (classname != "" && food_stage)
 2214        {
 2215            return FoodStage.GetEnergy(null, food_stage, classname);
 2216        }
 2217        string class_path = 
string.
Format(
"cfgVehicles %1 Nutrition", classname);
 
 2219    }
 2220    
 2222    {
 2225        {
 2227        }
 2228        else if (classname != "" && food_stage)
 2229        {
 2230            return FoodStage.GetWater(null, food_stage, classname);
 2231        }
 2232        string class_path = 
string.
Format(
"cfgVehicles %1 Nutrition", classname);
 
 2234    }
 2235    
 2237    {
 2240        {
 2241            return FoodStage.GetNutritionalIndex(food_item.
GetFoodStage()); 
 
 2242        }
 2243        else if (classname != "" && food_stage)
 2244        {
 2245            return FoodStage.GetNutritionalIndex(null, food_stage, classname);
 2246        }
 2247        string class_path = 
string.
Format(
"cfgVehicles %1 Nutrition", classname);
 
 2249        
 2250    }
 2251    
 2253    {
 2256        {
 2257            return FoodStage.GetToxicity(food_item.
GetFoodStage());
 
 2258        }
 2259        else if (classname != "" && food_stage)
 2260        {
 2261            return FoodStage.GetToxicity(null, food_stage, classname);
 2262        }
 2263        string class_path = 
string.
Format(
"cfgVehicles %1 Nutrition", classname);
 
 2265    }
 2266    
 2268    {
 2271        {
 2273        }
 2274        else if (classname != "" && food_stage)
 2275        {
 2276            return FoodStage.GetAgents(null, food_stage, classname);
 2277        }
 2278        string class_path = 
string.
Format(
"cfgVehicles %1 Nutrition", classname);
 
 2280    }
 2281    
 2283    {
 2286        {
 2287            return FoodStage.GetDigestibility(food_item.
GetFoodStage());
 
 2288        }
 2289        else if (classname != "" && food_stage)
 2290        {
 2291            return FoodStage.GetDigestibility(null, food_stage, classname);
 2292        }
 2293        string class_path = 
string.
Format(
"cfgVehicles %1 Nutrition", classname);
 
 2295    }
 2296    
 2298    {
 2301        {
 2302            return FoodStage.GetAgentsPerDigest(foodItem.
GetFoodStage());
 
 2303        }
 2304        else if (className != "" && foodStage)
 2305        {
 2306            return FoodStage.GetAgentsPerDigest(null, foodStage, className);
 2307        }
 2308        string classPath = string.Format("cfgVehicles %1 Nutrition", className);
 2310    }
 2311    
 2313    {
 2323        
 2324        return profile;
 2325    }
 2326    
 2327    
 2328    
 2329    
 2331    {
 2333    }
 2334    
 2335    
 2337    {
 2339        {
 2341        }
 2342        
 2343        return false;
 2344    }
 2345 
 2347    {
 2349        {
 2351        }
 2352        
 2353        return false;
 2354    }
 2355    
 2357    {
 2359        {
 2361        }
 2362        
 2363        return false;
 2364    }
 2365    
 2367    {
 2369        {
 2371        }
 2372        
 2373        return false;
 2374    }
 2375    
 2377    {
 2379        {
 2381        }
 2382        
 2383        return false;
 2384    }
 2385    
 2387    {
 2389        {
 2391        }
 2392        
 2393        return false;
 2394    }
 2395    
 2396    
 2398    {
 2400    }
 2401    
 2403    {
 2404        return GetFoodStage().GetNextFoodStageType( cooking_method );
 
 2405    }
 2406    
 2408    {
 2409        return GetFoodStage().GetFoodStageName( food_stage_type );
 
 2410    }
 2411    
 2413    {
 2414        return GetFoodStage().CanChangeToNewStage( cooking_method );
 
 2415    }
 2416    
 2417    
 2419    {
 2420        if ( !source.GetFoodStage())
 2421            return;
 2426    }
 2427    
 2430    {
 2433    }
 2434    
 2437    {
 2438        switch (stageNew)
 2439        {
 2444            break;
 2445            
 2448            break;
 2449        }
 2450    }
 2451    
 2452    
 2453    
 2454    
 2455    
 2457    {
 2459    }
 2460    
 2462    {
 2464        
 2465        
 2467    }
 2468    
 2470    {
 2472        {
 2475        }
 2476    }
 2477    
 2478    
 2480    {
 2482        if (player)
 2483        {
 2485            player.ServerReplaceItemInHandsWithNew(lambda);
 2486        }
 2487        else
 2488            Error(
"ReplaceEdibleWithNew - cannot use edible without player");
 
 2489    }
 2490    
 2492    {
 2494    }
 2495 
 2497    {
 2498        super.SetActions();
 2499 
 2502    }
 2503 
 2505    {
 2506        #ifndef SERVER
 2508        {
 2510 
 2513        }
 2514        #endif
 2515    }
 2516 
 2518    {
 2519        #ifndef SERVER
 2521        {
 2525        }
 2526        #endif
 2527    }
 2528    
 2530    {
 2531        return false;
 2532    }
 2533    
 2535    {
 2537    }
 2538    
 2539    override void ProcessDecay( 
float delta, 
bool hasRootAsPlayer )
 
 2540    {
 2542        
 2543        delta *= DayZGame.Cast(
GetGame()).GetFoodDecayModifier();
 
 2545        if ( hasRootAsPlayer )
 2547        
 2548        
 2549
 2550
 2551
 2552
 2553        
 2555        {
 2556            
 2558            {
 2560                {
 2564                        break;
 2565                    
 2569                        break;
 2570                    
 2574                        break;
 2575                    
 2579                    default:
 2582                        return;
 2583                }
 2584                
 2585                
 2586            }
 2587            
 2589                        
 2591            {
 2593                {
 2594                    
 2596                    {
 2598                    } 
 2600                    {
 2603                        {
 2605                        }
 2606                        else
 2607                        {
 2609                            {
 2611                            }
 2612                            else
 2613                            {
 2615                            }
 2616                        }
 2617                    }
 2618                }
 2619            }
 2620 
 2621        }
 2623        {
 2624            
 2626            {
 2628                {
 2632                        break;
 2633                    
 2637                        break;
 2638                    
 2642                        break;
 2643                    
 2647                        break;
 2648 
 2651                    default:
 2654                        return;
 2655                }
 2656            }
 2657            
 2659            
 2661            {
 2663                {
 2664                    
 2666                    {
 2668                    }
 2669                }
 2670            }
 2671        }
 2673        {
 2674            
 2676            {
 2678                {
 2682                        break;
 2683 
 2686                    default:
 2689                        return;
 2690                }
 2691            }
 2692            
 2694            
 2696            {
 2698                {
 2699                    
 2701                    {
 2703                    }
 2704                }
 2705            }
 2706        }
 2707        else
 2708        {
 2709            
 2711 
 2713            {
 2716                
 2717            }
 2718            else
 2719            {
 2721                {
 2724                }
 2725            }
 2726        }
 2727    }
 2728    
 2730    {
 2731        if (
GetGame().IsDedicatedServer())
 
 2732            return;
 2733        
 2735        {
 2737            GetInventory().GetCurrentInventoryLocation(invLoc);
 2739            {
 2741                if (ptcMgr)
 2742                {
 2747                }
 2748            }
 2749        }   
 2751        {
 2753            {
 2756                return;
 2757            }
 2758            
 2760            GetInventory().GetCurrentInventoryLocation(inventoryLoc);
 2762            {
 2765            }
 2766        }
 2767    }
 2768    
 2769    override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
 
 2770    {
 2772        {
 2777        }
 2778 
 2779        super.GetDebugActions(outputList);
 2780    }
 2781    
 2783    {
 2784        super.OnAction(action_id, player, ctx);
 2785        
 2787        {
 2788            if ( action_id == 
EActions.FOOD_STAGE_PREV )
 
 2789            {
 2791                if (food_stage_prev <= 0)
 2792                {
 2794                }
 2796                return true;
 2797            }
 2798            else if ( action_id == 
EActions.FOOD_STAGE_NEXT )
 
 2799            {
 2802                {
 2804                }
 2806                return true;
 2807            }
 2808            
 2809        }
 2810        
 2811        #ifdef DIAG_DEVELOPER
 2812        if (action_id == 
EActions.FOOD_NUTRITIONS_DATA)
 
 2813        {
 2814            PrintNutritionsData();
 2815            return true;
 2816        }
 2817        #endif
 2818 
 2819        return false;
 2820    }
 2821    
 2823    {
 2824        string debug_output;
 2825 
 2826        debug_output = super.GetDebugText();
 2827        
 2830 
 2831        return debug_output;
 2832    }
 2833 
 2834    
 2835    
 2836    
 2837    
 2839    {
 2840        float ret = super.GetBaitEffectivity();
 2841        
 2843        {
 2844            ret *= 0.5;
 2845        }
 2846        
 2847        return ret;
 2848    }
 2849    
 2851    {
 2853    }
 2854    
 2856    {
 2858    }
 2859    
 2861    {
 2863    }
 2864    
 2865    #ifdef DIAG_DEVELOPER
 2866    private void PrintNutritionsData()
 2867    {
 2868        string nutritionsData   = "";
 2869        
 2872 
 2874        if (profile)
 2875        {
 2876            nutritionsData = 
string.
Format(
"Item: %1\n\n", 
this);
 
 2878            nutritionsData += 
string.
Format(
"Energy: %1\n", profile.
m_Energy);
 
 2882            nutritionsData += 
string.
Format(
"Toxicity (obsolete): %1\n", profile.
m_Toxicity);
 
 2884 
 2887            
 2888            nutritionsData += 
string.
Format(
"Agents: %1\n", profile.
m_Agents);
 
 2890        }
 2891        
 2892        nutritionsData += "-----\n";
 2893        
 2895    }
 2896    #endif
 2897    
 2899    
 2902    {
 2904    }
 2905}
 2906 
 2908{
 2910};
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 InsertAgent(int agent, float count=1)
override void RemoveAllAgentsExcept(int agent_to_keep)
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.
proto native float ConfigGetFloat(string path)
Get float value from config on path.
proto native int ConfigGetInt(string path)
Get int value from config on path.
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
proto native CGame GetGame()
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
class JsonUndergroundAreaTriggerData GetPosition
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.