41 override bool HasBullet () {
return true; }
43 override bool IsJammed () {
return false; }
52 override bool HasBullet () {
return true; }
54 override bool IsJammed () {
return false; }
63 override bool HasBullet () {
return true; }
65 override bool IsJammed () {
return false; }
74 override bool HasBullet () {
return true; }
76 override bool IsJammed () {
return false; }
86 override bool HasBullet () {
return true; }
88 override bool IsJammed () {
return false; }
98 override bool HasBullet () {
return true; }
100 override bool IsJammed () {
return false; }
110 override bool HasBullet () {
return false; }
112 override bool IsJammed () {
return false; }
130 override void InitStateMachine()
198 m_fsm.AddTransition(
new WeaponTransition( Mech, _abt_, F_F, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.Second))));
199 m_fsm.AddTransition(
new WeaponTransition( Mech, _abt_, F_E, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberEmpty(
this, MuzzleIndex.Second))));
200 m_fsm.AddTransition(
new WeaponTransition( Mech, _abt_, E_F, NULL,
new GuardAnd(
new WeaponGuardChamberEmpty(
this, MuzzleIndex.First),
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.Second))));
201 m_fsm.AddTransition(
new WeaponTransition( Mech, _abt_, F_L, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
202 m_fsm.AddTransition(
new WeaponTransition( Mech, _abt_, L_L, NULL,
new GuardAnd(
new WeaponGuardChamberFull(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
203 m_fsm.AddTransition(
new WeaponTransition( Mech, _abt_, L_E, NULL,
new GuardAnd(
new WeaponGuardChamberFull(
this, MuzzleIndex.First),
new WeaponGuardChamberEmpty(
this, MuzzleIndex.Second))));
204 m_fsm.AddTransition(
new WeaponTransition( Mech, _abt_, E_L, NULL,
new GuardAnd(
new WeaponGuardChamberEmpty(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
211 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _fin_, L_E, NULL,
new WeaponGuardChamberEmpty(
this, MuzzleIndex.Second)));
214 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_, F_F, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.Second))));
215 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_, F_E, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberEmpty(
this, MuzzleIndex.Second))));
216 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_, E_F, NULL,
new GuardAnd(
new WeaponGuardChamberEmpty(
this, MuzzleIndex.First),
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.Second))));
217 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_, L_L, NULL,
new GuardAnd(
new WeaponGuardChamberFull(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
218 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_, L_E, NULL,
new GuardAnd(
new WeaponGuardChamberFull(
this, MuzzleIndex.First),
new WeaponGuardChamberEmpty(
this, MuzzleIndex.Second))));
223 m_fsm.AddTransition(
new WeaponTransition( Chamber_L_E, _abt_, L_L, NULL,
new WeaponGuardChamberFull(
this, MuzzleIndex.Second)));
225 m_fsm.AddTransition(
new WeaponTransition( Chamber_L_E, _fin_, L_L, NULL,
new WeaponGuardChamberFull(
this, MuzzleIndex.Second)));
229 m_fsm.AddTransition(
new WeaponTransition( Chamber_E_L, _abt_, L_L, NULL,
new WeaponGuardChamberFull(
this, MuzzleIndex.First)));
231 m_fsm.AddTransition(
new WeaponTransition( Chamber_E_L, _fin_, L_L, NULL,
new WeaponGuardChamberFull(
this, MuzzleIndex.First)));
235 m_fsm.AddTransition(
new WeaponTransition( Chamber_F_L, _abt_, F_L, NULL,
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First)));
236 m_fsm.AddTransition(
new WeaponTransition( Chamber_F_L, _abt_, L_L, NULL,
new GuardAnd(
new WeaponGuardChamberFull(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
237 m_fsm.AddTransition(
new WeaponTransition( Chamber_F_L, _abt_, E_L, NULL,
new GuardAnd(
new WeaponGuardChamberEmpty(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
239 m_fsm.AddTransition(
new WeaponTransition( Chamber_F_L, _fin_, F_L, NULL,
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First)));
240 m_fsm.AddTransition(
new WeaponTransition( Chamber_F_L, _fin_, L_L, NULL,
new GuardAnd(
new WeaponGuardChamberFull(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
241 m_fsm.AddTransition(
new WeaponTransition( Chamber_F_L, _fin_, E_L, NULL,
new GuardAnd(
new WeaponGuardChamberEmpty(
this, MuzzleIndex.First),
new WeaponGuardChamberFull(
this, MuzzleIndex.Second))));
260 m_fsm.AddTransition(
new WeaponTransition( Trigger_L_L, _fin_, F_F, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.Second))));
261 m_fsm.AddTransition(
new WeaponTransition( Trigger_L_L, _rto_, F_F, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.Second))));
262 m_fsm.AddTransition(
new WeaponTransition( Trigger_L_L, _abt_, F_F, NULL,
new GuardAnd(
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.First),
new WeaponGuardChamberFiredOut(
this, MuzzleIndex.Second))));
289 SetInitialState(E_E);
291 for(
int i = 0; i < GetMuzzleCount(); i++)
299 override bool CanChamberBullet (
int muzzleIndex, Magazine mag)
301 for(
int i = 0; i < GetMuzzleCount(); i++)
303 if( CanChamberFromMag(i, mag) )
305 if(IsChamberEmpty(i))
315 override void SetActions()