75 {
76 EmptyMagazineActionData emActionData = EmptyMagazineActionData.Cast(action_data);
77
78 Magazine mag;
79 if (!Class.CastTo(mag, action_data.m_MainItem))
80 return;
81
82 float dmg;
83 string ammoType;
84
85 if (!mag.ServerAcquireCartridge(dmg,ammoType))
86 return;
87
88 mag.ApplyManipulationDamage();
89
90 string magazineTypeName;
92
93 if (!
DayZPlayerUtils.HandleStoreCartridge(action_data.m_Player, NULL, -1, dmg, ammoType, magazineTypeName,
false))
94 {
95 array< Magazine > piles;
96 vector posHead;
97 MiscGameplayFunctions.GetHeadBonePos(action_data.m_Player,posHead);
98 vector posTarget = action_data.m_Player.GetPosition() + (action_data.m_Player.GetDirection() *
DEFAULT_SPAWN_DISTANCE);
99
101 {
102 piles = MiscGameplayFunctions.CreateMagazinePilesDispersed(magazineTypeName,posHead,posTarget,UAItemsSpreadRadius.NARROW,1,dmg,action_data.m_Player);
103 if (piles.Count() > 0)
105 }
106 else
107 {
108 if (emActionData.
m_magazinePile.GetAmmoMax() > emActionData.
m_magazinePile.GetAmmoCount() && emActionData.
m_magazinePile.GetType() == magazineTypeName && (vector.DistanceSq(action_data.m_Player.GetPosition(), emActionData.
m_magazinePile.GetPosition()) < (UAMaxDistances.DEFAULT * UAMaxDistances.DEFAULT)))
109 {
111 }
112 else
113 {
114 piles = MiscGameplayFunctions.CreateMagazinePilesFromBulletDispersed(ammoType,posHead,posTarget,UAItemsSpreadRadius.VERY_NARROW,1,dmg,action_data.m_Player);
115 if (piles.Count() > 0)
117 }
118 }
119 }
120 }
void DayZPlayerUtils()
cannot be instantiated
const float DEFAULT_SPAWN_DISTANCE
proto bool ConfigGetText(string path, out string value)
Get string value from config on path.
proto native CGame GetGame()