51 string cfg_path =
"CfgVehicles " +
GetType();
58 RegisterNetSyncVariableBool(
"m_CanReceiveUpgrade");
84 if (GetHierarchyRoot())
86 return GetHierarchyRoot().GetPosition();
89 return super.GetPosition();
94 super.EEDelete(parent);
106 if (att && att.IsFullQuantity())
114 if( !super.CanPutInCargo(parent) ) {
return false;}
120 if( !super.CanReleaseAttachment( attachment ) )
122 return !GetCompEM().IsWorking();
132 return !GetCompEM().IsWorking();
138 return !GetCompEM().IsWorking();
143 return GetCompEM().IsWorking();
148 return GetCompEM().IsWorking();
159 if ( !GetCompEM().CheckWetness() )
164 if (rag && GetCompEM().
GetEnergy() < GetCompEM().GetEnergyUsage() * GetCompEM().GetUpdateInterval() )
170 if ( !GetCompEM().CanWork() )
179 if (
this != player.GetItemInHands())
190 float wetness = rag.GetWet();
191 bool is_dry_enough = wetness <= 1-GetCompEM().GetWetnessExposure();
192 return is_dry_enough;
206 if ( !GetCompEM().HasEnoughStoredEnergy() )
211 GetCompEM().SwitchOn();
216 if (!GetCompEM().HasEnoughStoredEnergy())
218 GetCompEM().SwitchOff();
246 if (rag.GetQuantity() <= 1)
264 float lard_quant = lard.GetQuantity();
266 float available_lard_quant = lard_quant;
274 float add_energy_coef = 1;
276 float energy_limit = GetCompEM().GetEnergyMax() - GetCompEM().GetEnergy();
278 if (add_energy > energy_limit )
280 add_energy_coef = energy_limit / add_energy;
281 add_energy = energy_limit;
282 available_lard_quant = available_lard_quant * add_energy_coef;
285 GetCompEM().AddEnergy( add_energy );
286 lard.AddQuantity(-available_lard_quant);
302 float torchCurrentEnergy = GetCompEM().GetEnergy();
303 float sourceQuantity = 100000;
307 sourceQuantity = source.GetQuantity();
314 float freeUpgradeCapacity = maxOverallCapacity - torchCurrentEnergy;
315 float upgradeQuantity =
Math.
Min(freeUpgradeCapacity, sourceQuantity);
319 GetCompEM().AddEnergy(upgradeQuantity);
323 source.AddQuantity(-upgradeQuantity);
335 float vessel_quant = vessel.GetQuantity();
337 float available_vessel_quant = vessel_quant;
345 float add_energy_coef = 1;
347 float energy_limit = GetCompEM().GetEnergyMax() - GetCompEM().GetEnergy();
349 if (add_energy > energy_limit )
351 add_energy_coef = energy_limit / add_energy;
352 add_energy = energy_limit;
353 available_vessel_quant = available_vessel_quant * add_energy_coef;
356 GetCompEM().AddEnergy( add_energy );
357 vessel.AddQuantity(-available_vessel_quant);
368 float add_energy_coef = 1;
370 float energy_limit = GetCompEM().GetEnergyMax() - GetCompEM().GetEnergy();
372 if (add_energy > energy_limit )
374 add_energy_coef = energy_limit / add_energy;
375 add_energy = energy_limit;
378 GetCompEM().AddEnergy( add_energy );
396 super.OnInventoryExit(player);
406 g_Game.SurfaceGetType ( position[0], position[2], surface_type );
407 bool is_surface_soft =
g_Game.IsSurfaceDigable(surface_type);
409 if ( is_surface_soft && !IsRuined() )
411 vector ori_rotate =
"0 0 0";
414 SetOrientation(ori_rotate);
445 super.EEItemAttached( item, slot_name );
453 super.EEItemDetached( item, slot_name );
461 MiscGameplayFunctions.TransferItemProperties(item, rags);
494 player.ServerReplaceItemInHandsWithNew(lambda);
502 if (
GetType() ==
"WoodenStick" )
503 ori = ori +
Vector(0,90,0);
507 stick.SetPosition(pos);
508 stick.PlaceOnSurface();
510 if ( stick.GetType() ==
"LongWoodenStick" )
512 pos = stick.GetPosition() +
Vector(0,-0.3,0);
513 stick.SetPosition(pos);
516 stick.SetOrientation(ori);
517 g_Game.ObjectDelete(
this);
540 return Rag.Cast( GetAttachmentByType(Rag) );
554 rag.UnlockFromParent();
571 if (direct_particle && direct_particle !=
m_Light.GetAttachmentParent())
577 float update_interval = GetCompEM().GetUpdateInterval();
590 m_Light.FadeBrightnessTo(
m_Light.m_TorchBrightness * brightness_coef, update_interval);
591 m_Light.FadeRadiusTo(
m_Light.m_TorchRadius * radius_coef, update_interval);
595 m_Light.FadeBrightnessTo(
m_Light.m_TorchBrightness, update_interval);
602 GetCompEM().SwitchOff();
606 override void OnWork(
float consumed_energy )
654 if ( !
g_Game.IsDedicatedServer() )
739 if ( GetCompEM().IsWorking() )
747 if ( GetCompEM().IsWorking() )
755 if ( GetCompEM().IsWorking() )
770 super.OnAttachmentQuantityChangedEx(item, delta);
773 if (delta > 0 || !GetCompEM().IsWorking())
789 GetInventory().CreateAttachment(
"Rag");
817 if (GetCompEM().IsWorking())
837 super.OnStoreSave(ctx);
844 if (!super.OnStoreLoad(ctx, version))
868 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
873 super.GetDebugActions(outputList);
878 if (super.OnAction(action_id, player, ctx))
882 if (action_id ==
EActions.ACTIVATE_ENTITY)
895 debug_output = super.GetDebugText();
897 if(
g_Game.IsDedicatedServer())
903 debug_output+=
"Burning rag \n";
907 debug_output+=
"Burning lard/fuel \n";
955 super.OnWasAttached(parent, slot_id);
963 super.OnWasDetached(parent, slot_id);
971 super.OnStoreSave(ctx);
972 ctx.
Write(m_ConsumeRagFlipFlop);
973 ctx.
Write(m_RagsUpgradedCount);
979 if (!super.OnStoreLoad(ctx, version))
986 if (!ctx.
Read( m_ConsumeRagFlipFlop ))
991 if (!ctx.
Read( m_RagsUpgradedCount ))
996 UpdateCheckForReceivingUpgrade();
1005 super.CopyOldPropertiesToNew(old_item, new_item);
1010 if (stick && flammable)
Param4< int, int, string, int > TSelectableActionInfoWithColor
eBleedingSourceType GetType()
ActionLightItemOnFireCB ActionContinuousBaseCB ActionLightItemOnFire()
void AddAction(typename actionName)
const int ECE_PLACE_ON_SURFACE
override float GetQuantity()
override void SetQuantityNormalized(float value, bool destroy_config=true, bool destroy_forced=false)
Sets quantity in normalized 0..1 form between the item's Min a Max values as defined by item's config...
override void AddWet(float value)
override void OnWasAttached(EntityAI parent, int slot_id)
void OnStoreSave(ParamsWriteContext ctx)
bool OnStoreLoad(ParamsReadContext ctx, int version)
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
override void OnWasDetached(EntityAI parent, int slot_id)
static float m_BurnTimePerFullLard
static int m_StartFadeOutOfLightAtQuantity
static float m_MaxConsumableFuelQuantity
static float m_BurnTimePerFullFuelDose
static float m_WaterEvaporationByFireIntensity
FlammableBase m_BurnTimePerRag
static float m_MaxConsumableLardQuantity
Super root of all classes in Enforce script.
void ConsumeFuelFromGasStation()
const float PARAM_DRY_MODIFIER
maximum value for temperature that will be transfered to player (environment)
override void OnDebugSpawn()
override bool CanPutInCargo(EntityAI parent)
void ApplyResultModifications(ItemBase result)
bool IsRagDryEnough(ItemBase rag)
override void OnInventoryExit(Man player)
override int GetMeleeMode()
float m_MaxConsumableFuelQuantityEx
void UpdateCheckForReceivingUpgrade()
float m_BurnTimePerFullLardEx
void ConsumeLard(Lard lard)
vector m_ParticleLocalPos
override bool IsIgnited()
override bool CanReleaseAttachment(EntityAI attachment)
bool CanTransformIntoStick()
ref UniversalTemperatureSource m_UTSource
const int TIMER_HEATING_UPDATE_INTERVAL
override bool OnStoreLoad(ParamsReadContext ctx, int version)
SoundOnVehicle m_LoopSoundEntity
override void OnIgnitedThis(EntityAI fire_source)
override void SetActions()
void CraftingInit(float quantity)
override void OnWork(float consumed_energy)
override void OnStoreSave(ParamsWriteContext ctx)
override void OnWorkStop()
void TryTransformIntoStick()
bool m_ConsumeRagFlipFlop
override void DeferredInit()
override void EEDelete(EntityAI parent)
void Upgrade(ItemBase source)
override void EEItemDetached(EntityAI item, string slot_name)
void LockRags(bool do_lock)
const float PARAM_MAX_TRANSFERED_TEMPERATURE
update interval duration of heating process (seconds)
override bool CanRemoveFromCargo(EntityAI parent)
override void OnSwitchOff()
string GetBurningMaterial()
float m_BurnTimePerFullFuelDoseEx
override bool CanBeIgnitedBy(EntityAI igniter=NULL)
float m_WaterEvaporationByFireIntensityEx
ref UniversalTemperatureSourceLambdaConstant m_UTSLConstant
void SetTorchDecraftResult(string type)
override void OnSwitchOn()
override void OnWorkStart()
override void OnAttachmentQuantityChangedEx(ItemBase item, float delta)
ref UniversalTemperatureSourceSettings m_UTSSettings
override bool DisassembleOnLastDetach()
float m_MaxConsumableLardQuantityEx
const float PARAM_HEAT_RADIUS
const float PARAM_FULL_HEAT_RADIUS
override vector GetUniversalTemperatureSourcePosition()
int m_StartFadeOutOfLightAtQuantityEx
override bool CanReceiveAttachment(EntityAI attachment, int slotId)
override int GetMeleeSprintMode()
override bool CanIgniteItem(EntityAI ignite_target=NULL)
override int GetMeleeHeavyMode()
override bool CanPutAsAttachment(EntityAI parent)
override void EEItemAttached(EntityAI item, string slot_name)
void ConsumeFuelFromBottle(ItemBase vessel)
override bool HasFlammableMaterial()
override void OnItemInHandsPlayerSwimStart(PlayerBase player)
string GetBurntMaterial()
override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
override bool CanReceiveAttachment(EntityAI attachment, int slotId)
Legacy way of using particles in the game.
static const int TORCH_T2
static const int TORCH_T1
void ReplaceItemWithNewLambdaBase(EntityAI old_item, string new_item_type)
proto bool Write(void value_out)
proto bool Read(void value_in)
override void CopyOldPropertiesToNew(notnull EntityAI old_item, EntityAI new_item)
original Timer deletes m_params which is unwanted
Serializer ParamsReadContext
Serializer ParamsWriteContext
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static const float ITEM_TEMPERATURE_NEUTRAL_ZONE_MIDDLE
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Min(float x, float y)
Returns smaller of two given values.
static proto float Round(float f)
Returns mathematical round of value.
static proto float RandomFloat(float min, float max)
Returns a random float number between and min[inclusive] and max[exclusive].
static proto float Ceil(float f)
Returns ceil of value.
const int SAT_DEBUG_ACTION
vector GetPosition()
Get the world position of the Effect.