13class PluginTransmissionAgents
extends PluginBase
98 target.RemoveAllAgents();
108 target.RemoveAgent(agent_id);
119 return m_AgentList.Get(agent_id).GetTransferabilityIn();
151 return m_AgentList.Get(agent_id).GetDieOffSpeedEx(player);
174 return m_AgentList.Get(agent_id).GetPotencyEx(player);
187 return m_AgentList.Get(agent_id).GetInvasibilityEx(player);
197 return m_AgentList.Get(agent_id).GetDrugResistance(drugType, player);
208 return m_AgentList.Get(agent_id).GetAntiboticsResistance();
221 return m_AgentList.Get(agent_id).GetAntibioticsResistanceEx(player);
233 return m_AgentList.Get(agent_id).GetTransferabilityOut();
245 return m_AgentList.Get(agent_id).GetTransferabilityAirOut();
257 return m_AgentList.Get(agent_id).GetInvasibility();
267 return m_AgentList.Get(agent_id).GetDigestibility();
280 return m_AgentList.Get(agent_id).GetDigestibilityEx(player);
307 int sourceAgents = agents;
309 if(!sourceAgents && source) sourceAgents = source.GetAgents();
310 if(target) targetAgents = target.GetAgents();
311 int pollution =
g_Game.GetMission().GetWorldData().GetPollution();
328 if (pollution & EPollution.HEAVYMETAL)
330 sourceAgents = sourceAgents |
eAgents.HEAVYMETAL;
332 sourceAgents = sourceAgents |
eAgents.CHOLERA;
337 sourceAgents = sourceAgents |
eAgents.FOOD_POISON |
eAgents.HEAVYMETAL;
342 if (pollution & EPollution.HEAVYMETAL)
344 sourceAgents = sourceAgents |
eAgents.HEAVYMETAL;
375 float prot_level_target =
Math.
Max(prot_level_mask_target, prot_level_headgear_target);
376 float prot_level_source =
Math.
Max(prot_level_mask_source, prot_level_headgear_source);
377 float prot_level_combined = 1 - (1 - prot_level_target) * (1 - prot_level_source);
406 if( target.IsItemBase() )
409 ib_target.TransferAgents(agents);
423 if(target && (agents != 0) && target.IsEntityAI() )
427 for (
int i = 0; i < bit_count; i++)
432 target.InsertAgent(agent_bit,dose_size);
448 if(target && (agents != 0) && target.IsEntityAI() )
452 for (
int i = 0; i < bit_count; i++)
456 target.InsertAgent(agent_bit,count);
476 target.InsertAgent(agent, count);
490 agents_out.Insert(mask);
506 ItemBase attachment =
ItemBase.Cast(player.GetInventory().FindAttachment(slot));
511 return attachment.GetProtectionLevel(type, consider_filter, system);
538 float prot = 1 - protection;
546 else if( inject_type ==
InjectTypes.ITEM_TO_PLAYER )
550 else if( inject_type ==
InjectTypes.PLAYER_AIR_PLAYER )
557 float result = 1 * prot * transf * dose_size;
576 float prot = 1 - protection;
584 else if( inject_type ==
InjectTypes.ITEM_TO_PLAYER )
588 else if( inject_type ==
InjectTypes.PLAYER_AIR_PLAYER )
bool GrowDuringMedicalDrugsAttack(EMedicalDrugsType drugType, PlayerBase player)
should this agent grow based on invasibility even during usage of specific medical drugs attack
provides access to slot configuration
Class PluginMessageManager provides some basic Message Distribution mechanics, if you get instance of...
void TransmitAgents(EntityAI source, EntityAI target, int pathway, int dose_size=1000)
Process transmission of agents between entities (for specified transmission type) (see TransmitAgents...
void InjectAgentsWithPlayer(EntityAI target, int agents, float protection, int dose_size, int inject_type)
Injects agents to a given target, using chance of transmission and full dose size if chance succeeds.
ref map< int, string > m_SimpleAgentList
void RegisterAgent(AgentBase agent)
Registers new agent into system.
bool GrowDuringMedicalDrugsAttack(int agentId, EMedicalDrugsType drugType, PlayerBase player)
void PluginTransmissionAgents()
static void BuildAgentArray(int agents, array< int > agents_out)
float GetAgentTransferabilityAirOut(int agent_id)
Returns transferabilitAiryOut attribute for given agent.
float GetAgentDigestibility(int agent_id)
Returns stomach digetibility attribute for given agent (see GetAgentDigestibilityEx()).
float GetAgentAntiboticsResistanceEx(int agent_id, PlayerBase player)
Returns antibiotics resistance attribute for given agent.
static float GetProtectionLevelEx(int type, int slot, Man player, bool consider_filter=true, int system=0)
Protection level of an attachment against enviromental hazard (mask/filters for example).
float GetAgentTransferabilityIn(int agent_id)
Returns transferabilityIn attribute for given agent.
float GetAgentInvasibilityEx(int agent_id, PlayerBase player)
Returns invasibility attribute for given agent.
static string GetNameByID(int agent_id)
Returns agent's name from given id.
EStatLevels GetPotency(int agent_id)
Returns potency attribute for given agent (see GetAgentPotencyEx()).
bool m_IsConstructed
simple <eAgents, agentName> pair
float GetAgentInvasibility(int agent_id)
Returns invasibility attribute for given agent.
static ref map< int, ref AgentBase > m_AgentList
int GetAgentSpecificDrugResistance(int agent_id, EMedicalDrugsType drugType, PlayerBase player)
Returns the resistance to the specific drug.
static int GetAgentMaxCount(int agent_id)
Returns max count attribute for given agent.
bool DetermineChanceToTransmit(int agent_id, float protection, int inject_type)
Agent transmission chance processing.
map< int, ref AgentBase > GetAgentList()
Returns map of all registered agent classes.
float GetDieOffSpeed(int agent_id)
Returns dieOfSpeed attribute for given agent (see GetDieOffSpeedEx()).
static void RemoveAgent(EntityAI target, int agent_id)
Removes given agent from given entity.
float TransmitAgentsEx(EntityAI source, EntityAI target, int pathway, int dose_size=1000, int agents=0)
Process transmission of agents between entities (for specified transmission type).
void ConstructSimpleAgentList()
Builds simplified list of agents in <id, name> format.
bool GrowDuringAntibioticsAttack(int agent_id, PlayerBase player)
DEPRECATED.
float GetAgentTransferabilityOut(int agent_id)
Returns transferabilityOut attribute for given agent.
float GetAgentDieOffSpeedEx(int agent_id, PlayerBase player)
Returns dieOfSpeed attribute for given agent.
float GetAgentDigestibilityEx(int agent_id, PlayerBase player)
Returns stomach digetibility attribute for given agent.
void RemoveAllAgents(EntityAI target)
Removes all agents from given entity.
float CalculateAgentsToTransmit(int agent_id, float protection, int dose_size, int inject_type)
Calculates number of agents that can be transmitted (based on given dose_size).
void InjectAgentsWithPlayerCount(EntityAI target, int agents, float protection, int dose_size, int inject_type)
Injects agents to a given target, with no probability, but the dose size is modified by m_Transferabi...
void InjectAgentsWithoutPlayer(EntityAI target, int agents)
Injects specified agents directly to target.
float GetAgentAntiboticsResistance(int agent_id)
Returns antibiotics resistance attribute for given agent see GetAgentAntiboticsResistanceEx().
float GetProtectionLevel(int type, int slot, Man player)
Protection level of an attachment against enviromental hazard (mask/filters for example) (see GetProt...
float InjectAgentWithPlayerDose(EntityAI target, int agent, float protection, float dose_size, int inject_type)
Injects agent to a given target.
map< int, string > GetSimpleAgentList()
Returns map of all registered agents in simplified format(for non-gameplay purposas mainly).
EStatLevels GetAgentPotencyEx(int agent_id, PlayerBase player)
Returns potency attribute for given agent.
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
const int AGT_UACTION_CONSUME
const int AGT_ITEM_TO_FLESH
const int AGT_UACTION_TOUCH
const int AGT_AIRBOURNE_BIOLOGICAL
const int AGT_TRANSFER_COPY
const int AGT_WATER_HOT_SPRING
const int AGT_UACTION_TO_PLAYER
const int AGT_AIRBOURNE_CHEMICAL
const int AGT_UACTION_TO_ITEM
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Pow(float v, float power)
Return power of v ^ power.
static proto int GetNthBitSet(int value, int n)
returns the the index of n-th bit set in a bit mask counting from the right, for instance,...
static float RandomFloat01()
Returns a random float number between and min [inclusive] and max [inclusive].
static proto int GetNumberOfSetBits(int i)
returns the number of bits set in a bitmask i