63 {
64
65 m_abilities.Insert(
new AbilityRecord(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED));
66 m_abilities.Insert(
new AbilityRecord(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL));
72
73
74
78
79 WeaponChargingStretch Mech_U =
new WeaponChargingStretch(
this, NULL,
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED);
80 WeaponEjectBullet Mech_L =
new WeaponEjectBullet(
this, NULL,
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL);
81
84
85
89
91
92
101
102 m_fsm = new WeaponFSM();
103
104
106
112
114 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _fin_,
C, null,
new WeaponGuardChamberEmpty(
this)));
116 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _abt_,
C, null,
new WeaponGuardChamberEmpty(
this)));
118
119
120
122 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _fin_,
L, null,
new WeaponGuardChamberFull(
this)));
123 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _fin_,
C, null,
new WeaponGuardWeaponCharged(
this)));
125 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _abt_,
L, null,
new WeaponGuardChamberFull(
this)));
126 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _abt_,
C, null,
new WeaponGuardWeaponCharged(
this)));
128
129
131 m_fsm.AddTransition(
new WeaponTransition( Chamber_C, _fin_,
L, null,
new WeaponGuardChamberFull(
this)));
133 m_fsm.AddTransition(
new WeaponTransition( Chamber_C, _abt_,
L, null,
new WeaponGuardChamberFull(
this)));
135
141
147
153
154 SelectionBulletHide();
155 EffectBulletHide(0);
156
158 m_fsm.Start();
159 }
void WeaponGuardWeaponDischarged(Weapon_Base w=NULL)
enum FSMTransition WeaponTransition
enum FSMTransition WeaponEventBase
void WeaponStableState(Weapon_Base w=NULL, WeaponStateBase parent=NULL, int anim_state=-1)
WeaponActionChamberingTypes
WeaponActionUnjammingTypes