31 override bool HasBullet () {
return true; }
33 override bool IsJammed () {
return false; }
42 override bool HasBullet () {
return true; }
44 override bool IsJammed () {
return false; }
53 override bool HasBullet () {
return true; }
55 override bool IsJammed () {
return true; }
67 void RifleSingleShot_Base ()
71 override void InitStateMachine()
74 m_abilities.Insert(
new AbilityRecord(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
75 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED));
76 m_abilities.Insert(
new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START));
77 m_abilities.Insert(
new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END));
78 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL));
79 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED));
88 WeaponStateBase Mech_F =
new WeaponCharging(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
89 WeaponStateBase Mech_L =
new WeaponEjectBullet(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
91 WeaponChambering Chamber_E =
new WeaponChambering(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED);
92 WeaponChambering Chamber_F =
new WeaponChambering(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED);
95 WeaponStateBase Trigger_E =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED);
96 WeaponStateBase Trigger_L =
new WeaponFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL);
97 WeaponStateBase Trigger_F =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED);
99 WeaponStateBase Trigger_LJ =
new WeaponFireToJam(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM);
101 WeaponStateBase Unjam_J =
new WeaponUnjamming(
this, NULL, WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START);
113 m_fsm =
new WeaponFSM();
117 m_fsm.AddTransition(
new WeaponTransition( Mech_F, _fin_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
119 m_fsm.AddTransition(
new WeaponTransition( Mech_F, _abt_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
124 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
126 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
131 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
133 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
138 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _fin_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
139 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
141 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _abt_,
F, NULL,
new WeaponGuardCurrentChamberFiredOut(
this)));
142 m_fsm.AddTransition(
new WeaponTransition( Chamber_F, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
167 m_fsm.AddTransition(
new WeaponTransition( Unjam_J, _fin_, J, NULL,
new WeaponGuardJammed(
this)));
172 bool discharged =
false;
183 SetInitialState(init_state);
185 SelectionBulletHide();
190 override float GetChanceToJam()
@ UNKNOWN
24 - Any other error. Can be returned from any call.
base for rifles @NOTE name copies config base class
signalize mechanism manipulation
represents weapon's stable state (i.e. the basic states that the weapon will spend the most time in)
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
class SSPFireout extends WeaponStableState OnEntry
override bool IsBoltOpen()
override bool IsRepairEnabled()
override int GetCurrentStateID()
override bool HasBullet()
override void InitMuzzleArray()
override bool HasMagazine()
enum FSMTransition WeaponTransition
enum FSMTransition WeaponEventBase
class WeaponChambering_Chamber_OnEntry extends WeaponChambering_Base OnExit
ref array< MuzzleState > m_muzzleHasBullet
void WeaponStableState(Weapon_Base w=NULL, WeaponStateBase parent=NULL, int anim_state=-1)