34 override bool HasBullet () {
return true; }
36 override bool IsJammed () {
return false; }
45 override bool HasBullet () {
return true; }
47 override bool IsJammed () {
return false; }
56 override bool HasBullet () {
return true; }
58 override bool IsJammed () {
return true; }
75 override void InitStateMachine ()
89 D0 =
new RPTEmptyDischarged(
this, NULL,
RPTAnimState.DEFAULT);
90 C0 =
new RPTEmptyDischarged(
this, NULL,
RPTAnimState.CHARGED);
91 DF =
new RPTLoadedDischarged(
this, NULL,
RPTAnimState.DEFAULT);
92 C1 =
new RPTLoadedCharged(
this, NULL,
RPTAnimState.CHARGED);
93 JF =
new RPTLoadedJammed(
this, NULL,
RPTAnimState.JAMMED);
133 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
135 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
139 m_fsm.AddTransition(
new WeaponTransition( Mech_DF, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
140 m_fsm.AddTransition(
new WeaponTransition( Mech_DF, _fin_, DF, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
142 m_fsm.AddTransition(
new WeaponTransition( Mech_DF, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
143 m_fsm.AddTransition(
new WeaponTransition( Mech_DF, _abt_, DF, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
152 m_fsm.AddTransition(
new WeaponTransition( Chamber_D0, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
155 m_fsm.AddTransition(
new WeaponTransition( C1, __L__, Chamber_C1, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFull(
this))));
159 m_fsm.AddTransition(
new WeaponTransition( DF, __L__, Chamber_DF, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFull(
this))));
161 m_fsm.AddTransition(
new WeaponTransition( Chamber_DF, _abt_, DF, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
167 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, JF, NULL,
new WeaponGuardJammed(
this)));
168 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
170 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, JF, NULL,
new WeaponGuardJammed(
this)));
171 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
213 SelectionBulletHide();
219 override bool CanChamberBullet (
int muzzleIndex, Magazine mag)
221 return CanChamberFromMag(muzzleIndex, mag) && !IsInternalMagazineFull(muzzleIndex);
244 override void OnDebugSpawn()
246 super.OnDebugSpawn();
249 if (
Class.CastTo(entity,
this) )
251 entity.SpawnEntityOnGroundPos(
"Ammo_357", entity.GetPosition());