WeaponEjectCasingAndChamberFromAttMag.c
class WeaponEjectCasingclass WeaponEjectCasingMultiMuzzleclass WeaponEjectCasing_W4Tclass WeaponEjectAllMuzzlesclass WeaponEjectCasingAndChamberFromAttMagclass WeaponEjectCasingAndChamberFromAttMag_W4T
class WeaponEjectCasing extends WeaponStateBase
{
void WeaponEjectCasing (Weapon_Base w = NULL, WeaponStateBase parent = NULL) { }
override void OnEntry (WeaponEventBase e)
{
super.OnEntry(e);
if (e)
{
if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing"); }
int mi = m_weapon.GetCurrentMuzzle();
if(m_weapon.IsChamberFiredOut(mi))
{
m_weapon.EjectCasing(mi);
}
m_weapon.EffectBulletHide(mi);
m_weapon.SelectionBulletHide();
}
}
};
class WeaponEjectCasingMultiMuzzle extends WeaponStateBase
{
void WeaponEjectCasingMultiMuzzle (Weapon_Base w = NULL, WeaponStateBase parent = NULL) { }
override void OnEntry (WeaponEventBase e)
{
super.OnEntry(e);
if (e)
{
if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing multi muzzle"); }
for( int i = 0; i < m_weapon.GetMuzzleCount(); i++ )
{
if(m_weapon.IsChamberFiredOut(i))
{
m_weapon.EjectCasing(i);
m_weapon.EffectBulletHide(i);
m_weapon.HideBullet(i);
}
}
}
}
override bool IsWaitingForActionFinish()
{
return false;
}
};
class WeaponEjectCasing_W4T extends WeaponEjectCasingMultiMuzzle
{
override bool IsWaitingForActionFinish () { return true; }
};
class WeaponEjectAllMuzzles extends WeaponStateBase
{
Magazine m_dstMagazine;
void WeaponEjectAllMuzzles (Weapon_Base w = NULL, WeaponStateBase parent = NULL) { }
override void OnEntry (WeaponEventBase e)
{
super.OnEntry(e);
if (e)
{
Magnum_Cylinder cylinder = Magnum_Cylinder.Cast(m_weapon.GetAttachmentByType(Magnum_Cylinder));
if(cylinder)
{
cylinder.HideSelection("bullet");
cylinder.HideSelection("bullet_2");
cylinder.HideSelection("bullet_3");
cylinder.HideSelection("bullet_4");
cylinder.HideSelection("bullet_5");
cylinder.HideSelection("bullet_6");
cylinder.HideSelection("bullet_nose");
cylinder.HideSelection("bullet_nose_2");
cylinder.HideSelection("bullet_nose_3");
cylinder.HideSelection("bullet_nose_4");
cylinder.HideSelection("bullet_nose_5");
cylinder.HideSelection("bullet_nose_6");
}
if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected bullets from all muzzles"); }
for( int i = 0; i < m_weapon.GetMuzzleCount(); i++ )
{
if(m_weapon.IsChamberFiredOut(i))
{
m_weapon.EjectCasing(i);
m_weapon.EffectBulletHide(i);
m_weapon.HideBullet(i);
continue;
}
if(!m_weapon.IsChamberEmpty(i))
{
DayZPlayer p = e.m_player;
if(m_dstMagazine && m_dstMagazine.GetAmmoCount() < m_dstMagazine.GetAmmoMax() )
{
m_weapon.CreateRound(i);
ejectBulletAndStoreInMagazine(m_weapon,i,m_dstMagazine,p);
}
else
{
m_weapon.CreateRound(i);
ejectBulletAndStoreInMagazine(m_weapon,i,null,p);
}
m_weapon.EffectBulletHide(i);
m_weapon.HideBullet(i);
}
}
m_weapon.SetWeaponOpen(false);
m_weapon.SetCharged(true);
}
//m_weapon.SelectionBulletHide();
}
override bool IsWaitingForActionFinish ()
{
return false;
}
};
// eject casing and load bullet from att mag (no anim)
class WeaponEjectCasingAndChamberFromAttMag extends WeaponEjectCasing
{
override void OnEntry (WeaponEventBase e)
{
super.OnEntry(e);
if (e)
{
int mi = m_weapon.GetCurrentMuzzle();
pushToChamberFromAttachedMagazine(m_weapon, mi);
}
}
override void OnExit (WeaponEventBase e)
{
super.OnExit(e);
}
};
class WeaponEjectCasingAndChamberFromAttMag_W4T extends WeaponEjectCasingAndChamberFromAttMag
{
override bool IsWaitingForActionFinish () { return true; }
};