34 override bool HasBullet () {
return true; }
36 override bool IsJammed () {
return false; }
45 override bool HasBullet () {
return false; }
47 override bool IsJammed () {
return false; }
57 override bool HasBullet () {
return true; }
59 override bool IsJammed () {
return true; }
81 override void InitStateMachine()
113 WeaponChargingInnerMag Mech_C0 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, GetWeaponSpecificCommand(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
114 WeaponChargingInnerMag Mech_L0 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, GetWeaponSpecificCommand(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED));
115 WeaponChargingInnerMag Mech_C1 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, GetWeaponSpecificCommand(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
154 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this) ));
156 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this) ));
161 m_fsm.AddTransition(
new WeaponTransition( Mech_L0, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this) ));
164 m_fsm.AddTransition(
new WeaponTransition( Mech_L0, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this) ));
185 m_fsm.AddTransition(
new WeaponTransition( C1, __T__, Trigger_C1, NULL,
new WeaponGuardHasAmmoInnerMagazine(
this)));
214 m_fsm.AddTransition(
new WeaponTransition( Chamber_C0, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
217 m_fsm.AddTransition(
new WeaponTransition( Chamber_C0, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
220 m_fsm.AddTransition(
new WeaponTransition( C1, __L__, Chamber_C1, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFullShareChamber(
this))));
224 m_fsm.AddTransition(
new WeaponTransition( L0, __L__, Chamber_L0, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFullShareChamber(
this))));
226 m_fsm.AddTransition(
new WeaponTransition( Chamber_L0, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
229 m_fsm.AddTransition(
new WeaponTransition( Chamber_L0, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
235 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, JF, NULL,
new WeaponGuardJammed(
this)));
236 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
238 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, JF, NULL,
new WeaponGuardJammed(
this)));
239 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
244 SelectionBulletHide();
253 if (optic && PUScopeOptic.Cast(optic))
255 return super.CanEnterIronsights();
270 super.OnDebugSpawn();
273 inventory.CreateInInventory(
"PUScopeOptic" );
274 inventory.CreateInInventory(
"SKS_Bayonet" );