DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionGiveBloodSelf.c
См. документацию.
2{
6}
7
8class ActionGiveBloodSelfCB : ActionContinuousBaseCB
9{
10 override void CreateActionComponent()
11 {
13 }
14};
15
17{
20 {
21 m_CallbackClass = ActionGiveBloodSelfCB;
22 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_HIGH;
23
24 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_SALINEBLOODBAG;
25 m_FullBody = true;
26 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
27 m_Text = "#give_blood";
28 }
29
35
36 override bool HasTarget()
37 {
38 return false;
39 }
40
42 {
44 return action_data;
45 }
46
47 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
48 {
49 if ( super.SetupAction(player, target, item, action_data, extra_data ) )
50 {
51 ActionGiveBloodData action_data_b = ActionGiveBloodData.Cast( action_data );
52 action_data_b.m_ItemBloodType = action_data.m_MainItem.GetLiquidType();
53 action_data_b.m_BloodAmount = action_data.m_MainItem.GetQuantity();
54 action_data_b.m_Agents = action_data.m_MainItem.GetAgents();
55 return true;
56 }
57 return false;
58 }
59
60 override void OnEndAnimationLoopServer( ActionData action_data )
61 {
62 //OnFinishProgressServer(action_data);
63
64 if ( action_data.m_MainItem.IsKindOf("BloodSyringe") )
65 {
66 SyringeLambda lambda = new SyringeLambda(action_data.m_MainItem, "Syringe", action_data.m_Player);
67 lambda.SetTransferParams(true, true, true);
68 MiscGameplayFunctions.TurnItemIntoItemEx(action_data.m_Player, lambda);
69 }
70 }
71
72 override void OnEndServer(ActionData action_data)
73 {
74 super.OnEndServer(action_data);
75
76 ActionGiveBloodData action_data_b = ActionGiveBloodData.Cast( action_data );
77 float blood_obtained = action_data_b.m_BloodAmount - action_data_b.m_MainItem.GetQuantity();
78
79 PluginTransmissionAgents plugin = PluginTransmissionAgents.Cast(GetPlugin(PluginTransmissionAgents));
80 plugin.TransmitAgentsEx(action_data.m_MainItem, action_data.m_Player, AGT_UACTION_TO_PLAYER,blood_obtained ,action_data_b.m_Agents);
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
91 {
92 action_data_b.m_Player.m_UnconsciousEndTime = -60;
93 action_data_b.m_Player.SetHealth("","Shock",0);
94
96 {
97 action_data_b.m_Player.m_ModifiersManager.ActivateModifier(eModifiers.MDF_HEMOLYTIC_REACTION);
98 }
99 }
100 }
101
102 if ( action_data_b.m_MainItem && action_data_b.m_MainItem.GetQuantity() <= 0.01 )
103 {
104 action_data_b.m_MainItem.SetQuantity(0);
105 }
106
107 if (!(action_data_b.m_Agents & eAgents.CHEMICAL_POISON))//does bloodbag NOT contain nerve agent ?
108 {
109 float remove_count_agents = blood_obtained * CHEM_AGENT_BLOOD_REMOVAL_MODIFIER;
110 action_data.m_Player.InsertAgent(eAgents.CHEMICAL_POISON, -remove_count_agents);
111
112 }
113 }
114};
115
117{
118 void SyringeLambda (EntityAI old_item, string new_item_type, PlayerBase player) { }
119};
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
eAgents
Определения EAgents.c:3
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:316
float m_SpecialtyWeight
Определения ActionBase.c:77
int m_StanceMask
Определения ActionBase.c:62
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
bool m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
void CreateActionComponent()
Определения AnimatedActionBase.c:61
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
int m_Agents
Определения ActionGiveBloodSelf.c:5
float m_BloodAmount
Определения ActionGiveBloodSelf.c:4
int m_ItemBloodType
Определения ActionGiveBloodSelf.c:3
override void OnEndAnimationLoopServer(ActionData action_data)
Определения ActionGiveBloodSelf.c:60
void ActionGiveBloodSelf()
Определения ActionGiveBloodSelf.c:19
override void OnEndServer(ActionData action_data)
Определения ActionGiveBloodSelf.c:72
override ActionData CreateActionData()
Определения ActionGiveBloodSelf.c:41
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionGiveBloodSelf.c:47
override bool HasTarget()
Определения ActionGiveBloodSelf.c:36
override void CreateConditionComponents()
Определения ActionGiveBloodSelf.c:30
const float CHEM_AGENT_BLOOD_REMOVAL_MODIFIER
Определения ActionGiveBloodSelf.c:18
int m_CommandUID
Определения AnimatedActionBase.c:143
static bool MatchBloodCompatibility(int bloodtypetarget, int bloodtype)
Определения BloodType.c:39
Определения BloodType.c:2
Определения CCTSelf.c:2
Определения Building.c:6
Определения InventoryItem.c:731
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
static const float HEMOLYTIC_RISK_SHOCK_THRESHOLD
Определения PlayerConstants.c:118
static const float HEMOLYTIC_REACTION_THRESHOLD
Определения PlayerConstants.c:119
Определения PlayerConstants.c:2
void SyringeLambda(EntityAI old_item, string new_item_type, PlayerBase player)
Определения ActionGiveBloodSelf.c:118
const float BLOOD
Определения ActionConstants.c:15
const float BLOOD
Определения ActionConstants.c:99
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
eModifiers
Определения eModifiers.c:2
const int AGT_UACTION_TO_PLAYER
Определения constants.c:502