76 override void InitStateMachine ()
78 m_abilities.Insert(
new AbilityRecord(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
79 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP));
80 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED));
81 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE));
82 m_abilities.Insert(
new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START));
83 m_abilities.Insert(
new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END));
84 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL));
85 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED));
86 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED));
87 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY));
93 D1 =
new BARIMLoadedDischarged(
this, NULL,
BARIMAnimState.DEFAULT);
95 WeaponStateBase Mech_C1 =
new WeaponChargingInnerMag(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
96 WeaponStateBase Mech_D1 =
new WeaponChargingInnerMag(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
99 LoopedChambering Chamber_C0 =
new LoopedChambering(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
100 LoopedChambering Chamber_C1 =
new LoopedChambering(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
101 LoopedChambering Chamber_D1 =
new LoopedChambering(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
105 WeaponStateBase Trigger_C0 =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
107 WeaponStateBase Trigger_D1 =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
108 WeaponStateBase Trigger_JF =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
110 WeaponStateBase Trigger_C1J =
new WeaponFireToJam(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM);
130 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
132 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
136 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
137 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _fin_, D1, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
139 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
140 m_fsm.AddTransition(
new WeaponTransition( Mech_D1, _abt_, D1, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
148 m_fsm.AddTransition(
new WeaponTransition( Chamber_C0, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
151 m_fsm.AddTransition(
new WeaponTransition( C1, __L__, Chamber_C1, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFullShareChamber(
this))));
157 m_fsm.AddTransition(
new WeaponTransition( Chamber_D1, _abt_, D1, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
163 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, JF, NULL,
new WeaponGuardJammed(
this)));
164 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
166 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, JF, NULL,
new WeaponGuardJammed(
this)));
167 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
204 SelectionBulletHide();
210 override bool MustBeChambered(
int muzzleIndex)