14class ActionEmptyMagazine: ActionContinuousBase
16 void ActionEmptyMagazine()
21 m_Text =
"#empty_magazine";
26 if ( super.SetupAction( player, target, item, action_data, extra_data))
29 emActionData.m_magazinePile = NULL;
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);
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 g_Game.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];