34 override bool HasBullet () {
return false; }
36 override bool IsJammed () {
return false; }
45 override bool HasBullet () {
return true; }
47 override bool IsJammed () {
return false; }
56 override bool HasBullet () {
return true; }
58 override bool IsJammed () {
return true; }
68class ChamberFirst_InnerMagazine_SemiAutomatic_Base
extends Rifle_Base
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_EXTRA));
80 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_WITHCHAMBER));
81 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED));
82 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE));
83 m_abilities.Insert(
new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START));
84 m_abilities.Insert(
new AbilityRecord(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END));
85 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL));
86 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST));
87 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY));
88 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM));
96 WeaponStateBase Mech_E =
new WeaponChargingInnerMag(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
97 WeaponStateBase Mech_O =
new WeaponChargingInnerMag(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED);
98 WeaponStateBase Mech_L =
new WeaponChargingInnerMag(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
101 LoopedChamberingCombineChamberInternalMagazine Chamber_E =
new LoopedChamberingCombineChamberInternalMagazine(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_EXTRA, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
102 LoopedChamberingCombineChamberInternalMagazine Chamber_O =
new LoopedChamberingCombineChamberInternalMagazine(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
103 LoopedChamberingEjectLast Chamber_L =
new LoopedChamberingEjectLast(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_WITHCHAMBER, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
105 WeaponStateBase Unjam_J =
new WeaponUnjamming(
this, NULL, WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START);
107 WeaponStateBase Trigger_E =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
108 WeaponStateBase Trigger_O =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
109 WeaponStateBase Trigger_L =
new WeaponFireAndChamberFromInnerMagazine(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL);
110 WeaponStateBase Trigger_J =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY);
111 WeaponStateBase Trigger_LL =
new WeaponFireLast(
this, NULL, WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST));
113 WeaponStateBase Trigger_LJ =
new WeaponFireToJam(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM);
126 m_fsm =
new WeaponFSM();
141 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
143 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
148 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
151 m_fsm.AddTransition(
new WeaponTransition( Chamber_E, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
155 m_fsm.AddTransition(
new WeaponTransition( Chamber_O, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
158 m_fsm.AddTransition(
new WeaponTransition( Chamber_O, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
162 m_fsm.AddTransition(
new WeaponTransition(
L, __L__, Chamber_L, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFullShareChamber(
this))));
168 m_fsm.AddTransition(
new WeaponTransition( Unjam_J, _fin_, J, NULL,
new WeaponGuardJammed(
this)));
169 m_fsm.AddTransition(
new WeaponTransition( Unjam_J, _fin_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
171 m_fsm.AddTransition(
new WeaponTransition( Unjam_J, _abt_, J, NULL,
new WeaponGuardJammed(
this)));
172 m_fsm.AddTransition(
new WeaponTransition( Unjam_J, _abt_,
E, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
189 m_fsm.AddTransition(
new WeaponTransition(
L, __T__, Trigger_L, NULL,
new WeaponGuardHasAmmoInnerMagazine(
this)));
214 SelectionBulletHide();
222 AddAction(FirearmActionLoadMultiBulletQuick);
void AddAction(typename actionName)
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Open
Implementations only.
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
void WeaponGuardWeaponOpen(Weapon_Base w=NULL)
class SSPFireout extends WeaponStableState OnEntry
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)