113 WeaponChargingInnerMag Mech_C0 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, GetWeaponSpecificCommand(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
114 WeaponChargingInnerMag Mech_L0 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, GetWeaponSpecificCommand(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED));
115 WeaponChargingInnerMag Mech_C1 =
new WeaponChargingInnerMag(
this, NULL,
WeaponActions.MECHANISM, GetWeaponSpecificCommand(
WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
154 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this) ));
156 m_fsm.AddTransition(
new WeaponTransition( Mech_C1, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this) ));
160 m_fsm.AddTransition(
new WeaponTransition( Mech_L0, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this) ));
164 Mech_L0.AddTransition(
new WeaponTransition( Mech_L0.m_onBEFireOut, _abt_, C0));
187 m_fsm.AddTransition(
new WeaponTransition( C1, __T__, Trigger_C1, NULL,
new WeaponGuardHasAmmoInnerMagazine(
this)));
216 Chamber_C0.AddTransition(
new WeaponTransition( Chamber_C0.m_start, _abt_, C0));
217 Chamber_C0.AddTransition(
new WeaponTransition( Chamber_C0.m_eject, _abt_, L0));
218 Chamber_C0.AddTransition(
new WeaponTransition( Chamber_C0.m_chamber, _abt_, C1));
219 Chamber_C0.AddTransition(
new WeaponTransition( Chamber_C0.m_w4sb2, _abt_, C1));
220 Chamber_C0.AddTransition(
new WeaponTransition( Chamber_C0.m_hideB, _abt_, C1));
221 Chamber_C0.AddTransition(
new WeaponTransition( Chamber_C0.m_endLoop, _abt_, C1));
223 m_fsm.AddTransition(
new WeaponTransition( C1, __L__, Chamber_C1, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFullShareChamber(
this))));
227 m_fsm.AddTransition(
new WeaponTransition( L0, __L__, Chamber_L0, NULL,
new GuardNot(
new WeaponGuardInnerMagazineFullShareChamber(
this))));
229 m_fsm.AddTransition(
new WeaponTransition( Chamber_L0, _abt_, L0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
235 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, JF, NULL,
new WeaponGuardJammed(
this)));
236 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _fin_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
238 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, JF, NULL,
new WeaponGuardJammed(
this)));
239 m_fsm.AddTransition(
new WeaponTransition( Unjam_JF, _abt_, C0, NULL,
new WeaponGuardCurrentChamberEmpty(
this)));
242 m_fsm.SetInitialState(C0);
244 SelectionBulletHide();
253 if (optic && PUScopeOptic.Cast(optic))
255 return super.CanEnterIronsights();
270 super.OnDebugSpawn();
void AddAction(typename actionName)
void RemoveAction(typename actionName)
FirearmActionLoadBullet FirearmActionBase FirearmActionLoadBulletQuick()
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
@ DEFAULT
default weapon state, closed and discharged
class SSPFireout extends WeaponStableState OnEntry
enum FSMTransition WeaponTransition
ref array< MuzzleState > m_muzzleHasBullet
pair ( action, actionType )
script counterpart to engine's class Inventory
EntityAI CreateInInventory(string type)
creates entity somewhere in inventory
static bool IsWeaponLogEnable()
base for rifles @NOTE name copies config base class
override void OnDebugSpawn()
override bool CanEnterIronsights()
override void InitStateMachine()
override RecoilBase SpawnRecoilObject()
override void SetActions()
signalize mechanism manipulation
weapon finite state machine
represents weapon's stable state (i.e. the basic states that the weapon will spend the most time in)
override bool IsBoltOpen()
override bool IsRepairEnabled()
override void OnEntry(WeaponEventBase e)
override int GetCurrentStateID()
override void OnExit(WeaponEventBase e)
override bool HasBullet()
override void InitMuzzleArray()
override bool HasMagazine()
represent weapon state base
handle jamming state set jam/unjam state for weapon
override bool IsBoltOpen()
override bool IsRepairEnabled()
override void OnEntry(WeaponEventBase e)
override int GetCurrentStateID()
override void OnExit(WeaponEventBase e)
override bool HasBullet()
override void InitMuzzleArray()
override bool HasMagazine()
WeaponActionChamberingTypes
WeaponActionUnjammingTypes