Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
sks.c
Go to the documentation of this file.
2 {
3  DEFAULT = 0,
4  OPENED = 1,
5  JAMMED = 2,
6 };
7 
9 {
10  UNKNOWN = 0,
11  SKS_CLO_BU0 = 1,
12  SKS_CLO_BU1 = 2,
13  SKS_OPN_BU0 = 3,
14  SKS_JAM_BU1 = 4
15 }
16 
17 class SKS_CLO_BU0 extends WeaponStableState
18 {
19  override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { close nobull"); } super.OnEntry(e); }
20  override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } close nobull"); } }
21  override int GetCurrentStateID () { return SKSStableStateID.SKS_CLO_BU0; }
22  override bool HasBullet () { return false; }
23  override bool HasMagazine () { return false; }
24  override bool IsJammed () { return false; }
25  override bool IsRepairEnabled () { return true; }
26  override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.E}; }
27 
28 };
29 class SKS_CLO_BU1 extends WeaponStableState
30 {
31  override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { close bullet"); } super.OnEntry(e); }
32  override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } close bullet"); } }
33  override int GetCurrentStateID () { return SKSStableStateID.SKS_CLO_BU1; }
34  override bool HasBullet () { return true; }
35  override bool HasMagazine () { return false; }
36  override bool IsJammed () { return false; }
37  override bool IsRepairEnabled () { return true; }
38  override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.L}; }
39 };
40 class SKS_OPN_BU0 extends WeaponStableState
41 {
42  override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { open nobull"); } m_weapon.SetWeaponOpen(true); super.OnEntry(e); }
43  override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } open nobull"); } }
44  override int GetCurrentStateID () { return SKSStableStateID.SKS_OPN_BU0; }
45  override bool HasBullet () { return false; }
46  override bool HasMagazine () { return false; }
47  override bool IsJammed () { return false; }
48  override bool IsBoltOpen () { return true; }
49  override bool IsRepairEnabled () { return true; }
50  override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.E}; }
51 };
53 {
54  override void OnEntry (WeaponEventBase e) { if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " { jammed bullet"); } super.OnEntry(e); }
55  override void OnExit (WeaponEventBase e) { super.OnExit(e); if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " } jammed bullet"); } }
56  override int GetCurrentStateID () { return SKSStableStateID.SKS_JAM_BU1; }
57  override bool HasBullet () { return true; }
58  override bool HasMagazine () { return false; }
59  override bool IsJammed () { return true; }
60  override bool IsBoltOpen () { return true; }
61  override bool IsRepairEnabled () { return true; }
62  override void InitMuzzleArray () { m_muzzleHasBullet = {MuzzleState.F}; }
63 };
64 
69 class SKS_Base extends Rifle_Base
70 {
71  ref WeaponStableState C0;
72  ref WeaponStableState C1;
73  ref WeaponStableState L0;
74  ref WeaponStableState JF;
75 
76  override RecoilBase SpawnRecoilObject()
77  {
78  return new SKSRecoil(this);
79  }
80 
81  override void InitStateMachine()
82  {
83  m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP));
84  m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED));
85  m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED));
86  m_abilities.Insert(new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE));
87 
88  m_abilities.Insert(new AbilityRecord(WeaponActions.RELOAD_CLIP, 0));
89 
90  m_abilities.Insert(new AbilityRecord(WeaponActions.MECHANISM, GetWeaponSpecificCommand(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED)));
91  m_abilities.Insert(new AbilityRecord(WeaponActions.MECHANISM, GetWeaponSpecificCommand(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED)));//????
92 
93  m_abilities.Insert(new AbilityRecord(WeaponActions.UNJAMMING, GetWeaponSpecificCommand(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START)));
94  m_abilities.Insert(new AbilityRecord(WeaponActions.UNJAMMING, GetWeaponSpecificCommand(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END)));
95 
96  m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL)));
97  m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST)));
98  m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM)));
99  m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY)));
100 
101  //m_abilities.Insert(new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED));
102 
103  // setup state machine
104  // basic weapon states
105  // close-locked-jammed | nobullet-bullet | nomag-mag
106  // regexp: [CLJ][01][01]
107  C0 = new SKS_CLO_BU0(this, NULL, SKSAnimState.DEFAULT);
108  C1 = new SKS_CLO_BU1(this, NULL, SKSAnimState.DEFAULT);
109  L0 = new SKS_OPN_BU0(this, NULL, SKSAnimState.OPENED);
110  JF = new SKS_JAM_BU1(this, NULL, SKSAnimState.JAMMED);
111 
112  // unstable (intermediate) states
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));
116 
117  //Fire
118  WeaponStateBase Trigger_C0 = new WeaponDryFire(this, NULL, WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY)); // cock without clip
119  WeaponFireAndChamberFromInnerMagazine Trigger_C1 = new WeaponFireAndChamberFromInnerMagazine(this, NULL, WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL) );
120  WeaponStateBase Trigger_C1L = new WeaponFireLast(this, NULL, WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_LAST));
121  WeaponStateBase Trigger_L0 = new WeaponDryFire(this, NULL, WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY));
122  WeaponStateBase Trigger_JF = new WeaponDryFire(this, NULL, WeaponActions.FIRE, GetWeaponSpecificCommand(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_DRY));
123 
124  WeaponStateBase Trigger_C1J = new WeaponFireToJam(this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_JAM);
125 
126  //Unjam
127  WeaponStateBase Unjam_JF = new WeaponUnjamming(this, NULL, WeaponActions.UNJAMMING, GetWeaponSpecificCommand(WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START));
128 
129  //Chambering
130  LoopedChambering Chamber_C0 = new LoopedChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
131  LoopedChambering Chamber_C1 = new LoopedChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
132  LoopedChambering Chamber_L0 = new LoopedChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE);
133 
134  //WeaponStateBase chmMag = new WeaponChamberFromAttMag(this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
135 
136  // events
137  WeaponEventBase __M__ = new WeaponEventMechanism;
138  WeaponEventBase __T__ = new WeaponEventTrigger;
139  WeaponEventBase __TJ_ = new WeaponEventTriggerToJam;
140  WeaponEventBase __U__ = new WeaponEventUnjam;
141  WeaponEventBase __L__ = new WeaponEventLoad1Bullet;
142  WeaponEventBase _fin_ = new WeaponEventHumanCommandActionFinished;
143  WeaponEventBase _abt_ = new WeaponEventHumanCommandActionAborted;
144  WeaponEventBase _rto_ = new WeaponEventReloadTimeout;
145  WeaponEventBase _dto_ = new WeaponEventDryFireTimeout;
146 
147  m_fsm = new WeaponFSM();
148 
149  // order: Discharged-Charged | nobullet-bullet | nomag-mag
150  // charging
151  m_fsm.AddTransition(new WeaponTransition( C0, __M__, Mech_C1)); // charge from dischg nobullet nomag
152 
153  m_fsm.AddTransition(new WeaponTransition( C1, __M__, Mech_C1)); // charge from bullet nomag
154  m_fsm.AddTransition(new WeaponTransition( Mech_C1, _fin_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this) ));
155  m_fsm.AddTransition(new WeaponTransition( Mech_C1, _fin_, C1));
156  m_fsm.AddTransition(new WeaponTransition( Mech_C1, _abt_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this) ));
157  m_fsm.AddTransition(new WeaponTransition( Mech_C1, _abt_, C1));
158 
159  m_fsm.AddTransition(new WeaponTransition( L0, __M__, Mech_L0)); // charge from dischg nobullet nomag
160  m_fsm.AddTransition(new WeaponTransition( Mech_L0, _fin_, L0, NULL, new WeaponGuardWeaponOpen(this)));
161  m_fsm.AddTransition(new WeaponTransition( Mech_L0, _fin_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this) ));
162  m_fsm.AddTransition(new WeaponTransition( Mech_L0, _fin_, C1));
163  m_fsm.AddTransition(new WeaponTransition( Mech_L0, _abt_, L0, NULL, new WeaponGuardWeaponOpen(this)));
164  m_fsm.AddTransition(new WeaponTransition( Mech_L0, _abt_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this) ));
165  m_fsm.AddTransition(new WeaponTransition( Mech_L0, _abt_, C1));
166 
167 
168  /*m_start = new WeaponCharging_Start(m_weapon, this, m_action, m_actionType);
169  m_onBE = new WeaponEjectBullet_Cartridge_W4T(m_weapon, this);
170  m_onBEFireOut = new WeaponEjectCasing_W4T(m_weapon, this);
171  m_hideB = new BulletHide_W4T(m_weapon, this);
172  m_onCK = new WeaponCharging_CK(m_weapon, this);
173  m_chamber = new WeaponChamberFromInnerMag_W4T(m_weapon, this);*/
174 
175 
176 
177 
178  // fire
179  m_fsm.AddTransition(new WeaponTransition( C0, __T__, Trigger_C0));
180  m_fsm.AddTransition(new WeaponTransition( Trigger_C0, _fin_, C0));
181  m_fsm.AddTransition(new WeaponTransition( Trigger_C0, _dto_, C0));
182  m_fsm.AddTransition(new WeaponTransition( Trigger_C0, _abt_, C0));
183 
184 
185  m_fsm.AddTransition(new WeaponTransition( C1, __T__, Trigger_C1, NULL, new WeaponGuardHasAmmoInnerMagazine(this)));
186  m_fsm.AddTransition(new WeaponTransition( Trigger_C1, _fin_, C1));
187  m_fsm.AddTransition(new WeaponTransition( Trigger_C1, _rto_, C1));
188  m_fsm.AddTransition(new WeaponTransition( Trigger_C1, _abt_, C1));
189 
190  m_fsm.AddTransition(new WeaponTransition( C1, __T__, Trigger_C1L));
191  m_fsm.AddTransition(new WeaponTransition( Trigger_C1L, _fin_, L0));
192  m_fsm.AddTransition(new WeaponTransition( Trigger_C1L, _rto_, L0));
193  m_fsm.AddTransition(new WeaponTransition( Trigger_C1L, _abt_, L0));
194 
195  m_fsm.AddTransition(new WeaponTransition( C1, __TJ_, Trigger_C1J));
196  m_fsm.AddTransition(new WeaponTransition( Trigger_C1J, _fin_, JF ));
197  m_fsm.AddTransition(new WeaponTransition( Trigger_C1J, _rto_, JF ));
198  m_fsm.AddTransition(new WeaponTransition( Trigger_C1J, _abt_, JF ));
199 
200  m_fsm.AddTransition(new WeaponTransition( L0, __T__, Trigger_L0));
201  m_fsm.AddTransition(new WeaponTransition( Trigger_L0, _fin_, L0));
202  m_fsm.AddTransition(new WeaponTransition( Trigger_L0, _dto_, L0));
203  m_fsm.AddTransition(new WeaponTransition( Trigger_L0, _abt_, L0));
204 
205  m_fsm.AddTransition(new WeaponTransition( JF, __T__, Trigger_JF)); // opened fire.uncocked w mag
206  m_fsm.AddTransition(new WeaponTransition( Trigger_JF, _fin_, JF));
207  m_fsm.AddTransition(new WeaponTransition( Trigger_JF, _dto_, JF));
208  m_fsm.AddTransition(new WeaponTransition( Trigger_JF, _abt_, JF));
209 
210 
211  // load cartridge
212  m_fsm.AddTransition(new WeaponTransition( C0, __L__, Chamber_C0));
213  m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _fin_, L0, NULL, new WeaponGuardWeaponOpen(this)));
214  m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _fin_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this)));
215  m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _fin_, C1));
216  m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _abt_, L0, NULL, new WeaponGuardWeaponOpen(this)));
217  m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _abt_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this)));
218  m_fsm.AddTransition(new WeaponTransition( Chamber_C0, _abt_, C1));
219 
220  m_fsm.AddTransition(new WeaponTransition( C1, __L__, Chamber_C1, NULL, new GuardNot(new WeaponGuardInnerMagazineFullShareChamber(this))));
221  m_fsm.AddTransition(new WeaponTransition( Chamber_C1, _fin_, C1));
222  m_fsm.AddTransition(new WeaponTransition( Chamber_C1, _abt_, C1));
223 
224  m_fsm.AddTransition(new WeaponTransition( L0, __L__, Chamber_L0, NULL, new GuardNot(new WeaponGuardInnerMagazineFullShareChamber(this))));
225  m_fsm.AddTransition(new WeaponTransition( Chamber_L0, _fin_, L0, NULL, new WeaponGuardWeaponOpen(this)));
226  m_fsm.AddTransition(new WeaponTransition( Chamber_L0, _fin_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this)));
227  m_fsm.AddTransition(new WeaponTransition( Chamber_L0, _fin_, C1));
228  m_fsm.AddTransition(new WeaponTransition( Chamber_L0, _abt_, L0, NULL, new WeaponGuardWeaponOpen(this)));
229  m_fsm.AddTransition(new WeaponTransition( Chamber_L0, _abt_, C0, NULL, new WeaponGuardCurrentChamberEmpty(this)));
230  m_fsm.AddTransition(new WeaponTransition( Chamber_L0, _abt_, C1));
231 
232 
233  // unjam
234  m_fsm.AddTransition(new WeaponTransition( JF, __U__, Unjam_JF)); // unjam nomag
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)));
237  m_fsm.AddTransition(new WeaponTransition( Unjam_JF, _fin_, C1));
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)));
240  m_fsm.AddTransition(new WeaponTransition( Unjam_JF, _abt_, C1));
241 
242  SetInitialState(C0);
243 
244  SelectionBulletHide();
245  HideMagazine();
246 
247  m_fsm.Start();
248  }
249 
250  override bool CanEnterIronsights()
251  {
252  ItemOptics optic = GetAttachedOptics();
253  if (optic && PUScopeOptic.Cast(optic))
254  return true;
255  return super.CanEnterIronsights();
256  }
257 
258  override void SetActions()
259  {
260  super.SetActions();
262 
265  }
266 
267  //Debug menu Spawn Ground Special
268  override void OnDebugSpawn()
269  {
270  super.OnDebugSpawn();
271 
272  GameInventory inventory = GetInventory();
273  inventory.CreateInInventory( "PUScopeOptic" );
274  inventory.CreateInInventory( "SKS_Bayonet" );
275  }
276 };
OnExit
override void OnExit(WeaponEventBase e)
Definition: sks.c:20
IsRepairEnabled
override bool IsRepairEnabled()
Definition: sks.c:25
CanEnterIronsights
AugOptic CanEnterIronsights
Definition: aug.c:63
HasBullet
override bool HasBullet()
Definition: sks.c:22
LogManager
Definition: debug.c:734
HasMagazine
override bool HasMagazine()
Definition: sks.c:23
SKSStableStateID
SKSStableStateID
Definition: sks.c:8
GetCurrentStateID
override int GetCurrentStateID()
Definition: sks.c:21
SKS_OPN_BU0
SKS_OPN_BU0
Definition: sks.c:5
WeaponActionUnjammingTypes
WeaponActionUnjammingTypes
Definition: human.c:904
FirearmActionLoadMultiBullet
Definition: firearmactionloadmultibullet.c:1
FirearmActionLoadBulletQuick
FirearmActionLoadMultiBullet FirearmActionLoadBulletQuick
RemoveAction
void RemoveAction(typename actionName)
Definition: advancedcommunication.c:118
FirearmActionLoadMultiBulletQuick
Definition: firearmactionloadmultibullet.c:94
WeaponActionFireTypes
WeaponActionFireTypes
Definition: human.c:912
SKSAnimState
SKSAnimState
Definition: sks.c:1
WeaponGuardWeaponOpen
void WeaponGuardWeaponOpen(Weapon_Base w=NULL)
Definition: guards.c:585
IsJammed
override bool IsJammed()
Definition: sks.c:24
WeaponActions
WeaponActions
actions
Definition: human.c:808
OnDebugSpawn
class Hatchback_02_Blue extends Hatchback_02 OnDebugSpawn
Definition: hatchback_02.c:404
JAMMED
@ JAMMED
Definition: sks.c:5
DEFAULT
@ DEFAULT
default weapon state, closed and discharged
Definition: sks.c:3
RecoilBase
Definition: recoilbase.c:1
WeaponUnjamming
unjam submachine
AddAction
void AddAction(typename actionName)
Definition: advancedcommunication.c:86
SKS_CLO_BU0
SKS_CLO_BU0
Definition: sks.c:3
Object
Definition: objecttyped.c:1
m_muzzleHasBullet
ref array< MuzzleState > m_muzzleHasBullet
Definition: weaponstablestate.c:30
Rifle_Base
base for rifles @NOTE name copies config base class
Definition: sks.c:69
SetActions
void SetActions()
Definition: advancedcommunication.c:79
WeaponTransition
enum FSMTransition WeaponTransition
SKS_JAM_BU1
SKS_JAM_BU1
Definition: sks.c:6
IsBoltOpen
override bool IsBoltOpen()
Definition: flaregun.c:23
UNKNOWN
UNKNOWN
Definition: sks.c:2
AbilityRecord
pair ( action, actionType )
Definition: weapon_base.c:4
OnEntry
class SKS_CLO_BU1 extends WeaponStableState OnEntry
WeaponEventBase
signalize mechanism manipulation
Definition: events.c:34
WeaponStateBase
represent weapon state base
Definition: bullethide.c:1
m_weapon
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
Definition: guards.c:583
SKSRecoil
Definition: sksrecoil.c:1
WeaponStateJammed
handle jamming state set jam/unjam state for weapon
Definition: sks.c:52
wpnPrint
void wpnPrint(string s)
Definition: debug.c:1
ItemOptics
Definition: itemoptics.c:1
WeaponActionChamberingTypes
WeaponActionChamberingTypes
Definition: human.c:868
SKS_CLO_BU1
SKS_CLO_BU1
Definition: sks.c:4
WeaponFSM
weapon finite state machine
OPENED
@ OPENED
Definition: sks.c:4
InitMuzzleArray
override void InitMuzzleArray()
Definition: sks.c:26
WeaponStableState
represents weapon's stable state (i.e. the basic states that the weapon will spend the most time in)
Definition: crossbow.c:26
GameInventory
script counterpart to engine's class Inventory
Definition: inventory.c:78
MuzzleState
MuzzleState
Definition: weaponstablestate.c:14