73 {
74 super.OnEndServer(action_data);
75
76 ActionGiveBloodData action_data_b = ActionGiveBloodData.Cast( action_data );
78
79 PluginTransmissionAgents plugin = PluginTransmissionAgents.Cast(
GetPlugin(PluginTransmissionAgents));
81
82
83 int bloodtypetarget = action_data_b.
m_Player.GetStatBloodType().Get();
84 bool bloodmatch = BloodTypes.MatchBloodCompatibility(action_data_b.
m_ItemBloodType, bloodtypetarget);
85
86 if ( !bloodmatch )
87 {
88
89
90 if (blood_obtained > PlayerConstants.HEMOLYTIC_RISK_SHOCK_THRESHOLD)
91 {
92 action_data_b.
m_Player.m_UnconsciousEndTime = -60;
93 action_data_b.
m_Player.SetHealth(
"",
"Shock",0);
94
95 if (blood_obtained > PlayerConstants.HEMOLYTIC_REACTION_THRESHOLD)
96 {
97 action_data_b.
m_Player.m_ModifiersManager.ActivateModifier(
eModifiers.MDF_HEMOLYTIC_REACTION);
98 }
99 }
100 }
101
103 {
105 }
106
108 {
110 action_data.
m_Player.InsertAgent(
eAgents.CHEMICAL_POISON, -remove_count_agents);
111
112 }
113 }
PluginBase GetPlugin(typename plugin_type)
const float CHEM_AGENT_BLOOD_REMOVAL_MODIFIER
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
const int AGT_UACTION_TO_PLAYER