21 m_Text =
"#empty_magazine";
24 override bool SetupAction(
PlayerBase player, ActionTarget target,
ItemBase item, out ActionData action_data,
Param extra_data = NULL)
26 if ( super.SetupAction( player, target, item, action_data, extra_data))
29 emActionData.m_magazinePile = NULL;
35 override ActionData CreateActionData()
41 override void CreateConditionComponents()
47 override bool HasProneException()
55 return ( item &&
Class.CastTo(mag, item) && mag.GetAmmoCount() > 0 );
58 override bool ActionConditionContinue( ActionData action_data )
60 return CanEmpty(action_data.m_MainItem);
66 return CanEmpty(item);
69 override bool HasTarget()
74 override void OnExecuteServer( ActionData action_data )
79 if (!
Class.CastTo(mag, action_data.m_MainItem))
85 if (!mag.ServerAcquireCartridge(dmg,ammoType))
88 mag.ApplyManipulationDamage();
90 string magazineTypeName;
91 GetGame().ConfigGetText(
"CfgAmmo " + ammoType +
" spawnPileType" , magazineTypeName);
93 if (!DayZPlayerUtils.HandleStoreCartridge(action_data.m_Player, NULL, -1, dmg, ammoType, magazineTypeName,
false))
97 MiscGameplayFunctions.GetHeadBonePos(action_data.m_Player,posHead);
100 if (!emActionData.m_magazinePile)
102 piles = MiscGameplayFunctions.CreateMagazinePilesDispersed(magazineTypeName,posHead,posTarget,
UAItemsSpreadRadius.NARROW,1,dmg,action_data.m_Player);
103 if (piles.Count() > 0)
104 emActionData.m_magazinePile = piles[0];
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)))
110 emActionData.m_magazinePile.ServerStoreCartridge(dmg,ammoType);
114 piles = MiscGameplayFunctions.CreateMagazinePilesFromBulletDispersed(ammoType,posHead,posTarget,
UAItemsSpreadRadius.VERY_NARROW,1,dmg,action_data.m_Player);
115 if (piles.Count() > 0)
116 emActionData.m_magazinePile = piles[0];