Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
flaregun.c
Go to the documentation of this file.
1
enum
FLAREAnimState
2
{
3
COCKED
= 0,
4
UNCOCKED
= 1,
5
};
6
7
enum
FLAREStableStateID
8
{
9
UNKNOWN
= 0,
10
Empty
= 1,
11
Fireout
= 2,
12
Loaded
= 3,
13
}
14
15
class
FLAREEmpty
extends
WeaponStableState
16
{
17
override
void
OnEntry
(
WeaponEventBase
e) {
if
(LogManager.IsWeaponLogEnable()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" { Empty E"
); } super.
OnEntry
(e); }
18
override
void
OnExit
(
WeaponEventBase
e) { super.
OnExit
(e);
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" } Empty E"
); } }
19
override
int
GetCurrentStateID
() {
return
FLAREStableStateID
.Empty; }
20
override
bool
HasBullet
() {
return
false
; }
21
override
bool
HasMagazine
() {
return
false
; }
22
override
bool
IsJammed
() {
return
false
; }
23
override
bool
IsBoltOpen
() {
return
false
; }
24
override
bool
IsRepairEnabled
() {
return
true
; }
25
override
void
InitMuzzleArray
() {
m_muzzleHasBullet
= {
MuzzleState
.E}; }
26
};
27
class
FLAREFireout
extends
WeaponStableState
28
{
29
override
void
OnEntry
(
WeaponEventBase
e) {
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" { Fireout F"
); } super.OnEntry(e); }
30
override
void
OnExit
(
WeaponEventBase
e) { super.OnExit(e);
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" } Fireout F"
); } }
31
override
int
GetCurrentStateID
() {
return
FLAREStableStateID
.Fireout; }
32
override
bool
HasBullet
() {
return
true
; }
33
override
bool
HasMagazine
() {
return
false
; }
34
override
bool
IsJammed
() {
return
false
; }
35
override
bool
IsBoltOpen
() {
return
false
; }
36
override
bool
IsRepairEnabled
() {
return
true
; }
37
override
void
InitMuzzleArray
() {
m_muzzleHasBullet
= {
MuzzleState
.F}; }
38
};
39
class
FLARELoaded
extends
WeaponStableState
40
{
41
override
void
OnEntry
(
WeaponEventBase
e) {
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" { Loaded C"
); } super.OnEntry(e); }
42
override
void
OnExit
(
WeaponEventBase
e) { super.OnExit(e);
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" } Loaded C"
); } }
43
override
int
GetCurrentStateID
() {
return
FLAREStableStateID
.Loaded; }
44
override
bool
HasBullet
() {
return
true
; }
45
override
bool
HasMagazine
() {
return
false
; }
46
override
bool
IsJammed
() {
return
false
; }
47
override
bool
IsBoltOpen
() {
return
false
; }
48
override
bool
IsRepairEnabled
() {
return
true
; }
49
override
void
InitMuzzleArray
() {
m_muzzleHasBullet
= {
MuzzleState
.L}; }
50
};
51
52
class
Flaregun
:
Weapon_Base
53
{
54
override
void
InitStateMachine
()
55
{
56
// setup abilities
57
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED));
58
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED));
59
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.CHAMBERING,
WeaponActionChamberingTypes
.CHAMBERING_ONEBULLET_CLOSED));
60
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_NORMAL));
61
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_UNCOCKED));
62
63
// setup state machine
64
// basic weapon states
65
WeaponStableState
E
=
new
FLAREEmpty(
this
, NULL,
FLAREAnimState
.UNCOCKED);
66
WeaponStableState
F
=
new
FLAREFireout(
this
, NULL,
FLAREAnimState
.UNCOCKED);
67
WeaponStableState
L
=
new
FLARELoaded(
this
, NULL,
FLAREAnimState
.COCKED);
68
// unstable (intermediate) states
69
WeaponStateBase
Mech_F =
new
WeaponCharging
(
this
, NULL,
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED);
70
WeaponStateBase
Mech_L =
new
WeaponEjectBullet(
this
, NULL,
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED);
71
72
WeaponStateBase
Chamber_E =
new
WeaponChambering(
this
, NULL,
WeaponActions
.CHAMBERING,
WeaponActionChamberingTypes
.CHAMBERING_ONEBULLET_CLOSED);
73
WeaponStateBase
Chamber_F =
new
WeaponChambering(
this
, NULL,
WeaponActions
.CHAMBERING,
WeaponActionChamberingTypes
.CHAMBERING_ONEBULLET_CLOSED);
74
//WeaponStateBase Chamber_L = new RifleReChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED);
75
76
WeaponStateBase
Trigger_E =
new
WeaponDryFire(
this
, NULL,
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_UNCOCKED);
77
WeaponStateBase
Trigger_L =
new
WeaponFire
(
this
, NULL,
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_NORMAL);
78
WeaponStateBase
Trigger_F =
new
WeaponDryFire(
this
, NULL,
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_UNCOCKED);
79
80
81
// events
82
WeaponEventBase
__M__ =
new
WeaponEventMechanism;
83
WeaponEventBase
__T__ =
new
WeaponEventTrigger;
84
WeaponEventBase
__TJ_ =
new
WeaponEventTriggerToJam;
85
WeaponEventBase
__L__ =
new
WeaponEventLoad1Bullet;
86
WeaponEventBase
__U__ =
new
WeaponEventUnjam;
87
WeaponEventBase
_fin_ =
new
WeaponEventHumanCommandActionFinished;
88
WeaponEventBase
_abt_ =
new
WeaponEventHumanCommandActionAborted;
89
WeaponEventBase
_dto_ =
new
WeaponEventDryFireTimeout;
90
91
m_fsm =
new
WeaponFSM
();
92
// charging
93
m_fsm.AddTransition(
new
WeaponTransition
(
E
, __M__, Mech_F));
94
m_fsm.AddTransition(
new
WeaponTransition
(
F
, __M__, Mech_F));
95
m_fsm.AddTransition(
new
WeaponTransition
( Mech_F, _fin_,
E
));
96
m_fsm.AddTransition(
new
WeaponTransition
( Mech_F, _abt_,
F
, NULL,
new
WeaponGuardCurrentChamberFiredOut(
this
)));
97
m_fsm.AddTransition(
new
WeaponTransition
( Mech_F, _abt_,
E
));
98
99
// eject good cartridge
100
m_fsm.AddTransition(
new
WeaponTransition
(
L
, __M__, Mech_L));
101
m_fsm.AddTransition(
new
WeaponTransition
( Mech_L, _fin_,
E
));
102
m_fsm.AddTransition(
new
WeaponTransition
( Mech_L, _abt_,
E
, NULL,
new
WeaponGuardCurrentChamberEmpty(
this
)));
103
m_fsm.AddTransition(
new
WeaponTransition
( Mech_L, _abt_,
L
));
104
105
m_fsm.AddTransition(
new
WeaponTransition
(
E
, __L__, Chamber_F));
106
m_fsm.AddTransition(
new
WeaponTransition
(
F
, __L__, Chamber_F));
107
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_F, _fin_,
L
));
108
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_F, _abt_,
F
, NULL,
new
WeaponGuardCurrentChamberFiredOut(
this
)));
109
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_F, _abt_,
E
, NULL,
new
WeaponGuardCurrentChamberEmpty(
this
)));
110
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_F, _abt_,
L
));
111
112
// fire
113
m_fsm.AddTransition(
new
WeaponTransition
(
E
, __T__, Trigger_E));
// fire cocked
114
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_E, _fin_,
E
));
115
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_E, _dto_,
E
));
116
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_E, _abt_,
E
));
117
118
m_fsm.AddTransition(
new
WeaponTransition
(
F
, __T__, Trigger_F));
// fire uncocked
119
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_F, _fin_,
F
));
120
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_F, _dto_,
F
));
121
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_F, _abt_,
F
));
122
123
m_fsm.AddTransition(
new
WeaponTransition
(
L
, __T__, Trigger_L));
// a) fire if not jammed
124
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_L, _fin_,
F
));
125
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_L, _abt_,
F
));
126
127
128
// initial state setup
129
bool
empty =
true
;
130
bool
discharged =
false
;
// @TODO:
131
WeaponStableState
init_state =
E
;
132
if
(empty)
133
{
134
if
(!discharged)
135
init_state =
E
;
136
}
137
else
138
{
139
init_state =
L
;
// can init state == load/jammed?
140
}
141
SetInitialState(init_state);
142
143
SelectionBulletHide();
144
145
m_fsm.Start();
146
147
148
}
149
override
void
OnDebugSpawn
()
150
{
151
SpawnAmmo(
"Ammo_Flare"
,SAMF_DEFAULT);
152
153
EntityAI
entity;
154
if
(
Class
.
CastTo
(entity,
this
) )
155
{
156
entity.SpawnEntityOnGroundPos(
"Ammo_Flare"
, entity.GetPosition());
157
entity.SpawnEntityOnGroundPos(
"Ammo_Flare"
, entity.GetPosition());
158
entity.SpawnEntityOnGroundPos(
"Ammo_Flare"
, entity.GetPosition());
159
}
160
}
161
162
};
wpnPrint
void wpnPrint(string s)
Definition
debug.c:1
UNKNOWN
@ UNKNOWN
24 - Any other error. Can be returned from any call.
Definition
bioserrormodule.c:56
AbilityRecord
pair ( action, actionType )
Definition
weapon_base.c:5
Class
Super root of all classes in Enforce script.
Definition
enscript.c:11
EntityAI
Definition
inventoryitem.c:2
Flaregun
Definition
flaregun.c:53
Flaregun::OnDebugSpawn
override void OnDebugSpawn()
Definition
flaregun.c:149
Flaregun::InitStateMachine
override void InitStateMachine()
Definition
flaregun.c:54
LogManager
Definition
debug.c:692
LogManager::IsWeaponLogEnable
static bool IsWeaponLogEnable()
Definition
debug.c:816
Object
Definition
objecttyped.c:2
Weapon_Base
shorthand
Definition
boltactionrifle_base.c:6
WeaponChambering_Base::OnExit
override void OnExit(WeaponEventBase e)
Definition
weaponchambering.c:439
WeaponCharging
charging of weapon without ammo to be chambered
WeaponEventBase
signalize mechanism manipulation
Definition
events.c:35
WeaponFSM
weapon finite state machine
WeaponFire
Definition
weaponfire.c:113
WeaponStableState
represents weapon's stable state (i.e.
Definition
crossbow.c:27
WeaponStableState::IsBoltOpen
override bool IsBoltOpen()
Definition
sks.c:48
WeaponStableState::IsRepairEnabled
override bool IsRepairEnabled()
Definition
crossbow.c:34
WeaponStableState::OnEntry
override void OnEntry(WeaponEventBase e)
Definition
crossbow.c:28
WeaponStableState::GetCurrentStateID
override int GetCurrentStateID()
Definition
crossbow.c:30
WeaponStableState::OnExit
override void OnExit(WeaponEventBase e)
Definition
flaregun.c:30
WeaponStableState::IsJammed
override bool IsJammed()
Definition
crossbow.c:33
WeaponStableState::HasBullet
override bool HasBullet()
Definition
crossbow.c:31
WeaponStableState::InitMuzzleArray
override void InitMuzzleArray()
Definition
crossbow.c:35
WeaponStableState::HasMagazine
override bool HasMagazine()
Definition
crossbow.c:32
WeaponStateBase
represent weapon state base
Definition
bullethide.c:2
Loaded
Loaded
Definition
crossbow.c:21
FLAREStableStateID
FLAREStableStateID
Definition
flaregun.c:8
Fireout
Fireout
Definition
flaregun.c:20
FLAREAnimState
FLAREAnimState
Definition
flaregun.c:2
UNCOCKED
@ UNCOCKED
default weapon state, closed and discharged
Definition
flaregun.c:4
Object
class LOD Object
Class::CastTo
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
m_weapon
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
Definition
guards.c:604
Empty
Empty
Definition
hand_states.c:14
WeaponActionChamberingTypes
WeaponActionChamberingTypes
Definition
human.c:876
WeaponActions
WeaponActions
actions
Definition
human.c:816
COCKED
@ COCKED
Definition
human.c:981
WeaponActionFireTypes
WeaponActionFireTypes
Definition
human.c:926
OnEntry
class SSPFireout extends WeaponStableState OnEntry
WeaponTransition
enum FSMTransition WeaponTransition
WeaponEventBase
enum FSMTransition WeaponEventBase
OnExit
class WeaponChambering_Chamber_OnEntry extends WeaponChambering_Base OnExit
Definition
weaponchambering.c:352
MuzzleState
MuzzleState
Definition
weaponstablestate.c:15
E
@ E
EMPTY.
Definition
weaponstablestate.c:19
L
@ L
LOADED.
Definition
weaponstablestate.c:23
F
@ F
FIRED.
Definition
weaponstablestate.c:21
m_muzzleHasBullet
ref array< MuzzleState > m_muzzleHasBullet
Definition
weaponstablestate.c:30
Games
Dayz
scripts
4_world
entities
firearms
pistol
flaregun.c
Generated by
1.17.0