Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
crossbow.c
Go to the documentation of this file.
1
enum
XBAnimState
2
{
3
uncocked
= 0,
4
cocked
= 1,
5
};
6
7
enum
XBStableStateID
8
{
9
UNKNOWN
= 0,
10
UncockedEmpty
= 1,
11
CockedEmpty
= 2,
12
Loaded
= 3,
13
}
14
15
class
XBUncockedEmpty
extends
WeaponStableState
16
{
17
override
void
OnEntry
(
WeaponEventBase
e) {
if
(LogManager.IsWeaponLogEnable()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" { Uncocked Empty UE"
); }
m_weapon
.SetCharged(
false
); super.OnEntry(e); }
18
override
void
OnExit
(
WeaponEventBase
e) { super.
OnExit
(e);
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" } Uncocked Empty UE"
); } }
19
override
int
GetCurrentStateID
() {
return
XBStableStateID
.UncockedEmpty; }
20
override
bool
HasBullet
() {
return
false
; }
21
override
bool
HasMagazine
() {
return
false
; }
22
override
bool
IsJammed
() {
return
false
; }
23
override
bool
IsRepairEnabled
() {
return
true
; }
24
override
void
InitMuzzleArray
() {
m_muzzleHasBullet
= {
MuzzleState
.E}; }
25
};
26
class
XBCockedEmpty
extends
WeaponStableState
27
{
28
override
void
OnEntry
(
WeaponEventBase
e) {
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" { Cocked Empty CE"
); }
m_weapon
.SetCharged(
true
); super.OnEntry(e); }
29
override
void
OnExit
(
WeaponEventBase
e) { super.OnExit(e);
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" } Cocked Empty CE"
); } }
30
override
int
GetCurrentStateID
() {
return
XBStableStateID
.CockedEmpty; }
31
override
bool
HasBullet
() {
return
false
; }
32
override
bool
HasMagazine
() {
return
false
; }
33
override
bool
IsJammed
() {
return
false
; }
34
override
bool
IsRepairEnabled
() {
return
true
; }
35
override
void
InitMuzzleArray
() {
m_muzzleHasBullet
= {
MuzzleState
.E}; }
36
};
37
class
XBLoaded
extends
WeaponStableState
38
{
39
override
void
OnEntry
(
WeaponEventBase
e) {
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" { Loaded L"
); }
m_weapon
.SetCharged(
true
); super.OnEntry(e); }
40
override
void
OnExit
(
WeaponEventBase
e) { super.OnExit(e);
if
(
LogManager
.
IsWeaponLogEnable
()) {
wpnPrint
(
"[wpnfsm] "
+
Object
.GetDebugName(
m_weapon
) +
" } Loaded L"
); } }
41
override
int
GetCurrentStateID
() {
return
XBStableStateID
.Loaded; }
42
override
bool
HasBullet
() {
return
true
; }
43
override
bool
HasMagazine
() {
return
false
; }
44
override
bool
IsJammed
() {
return
false
; }
45
override
bool
IsRepairEnabled
() {
return
true
; }
46
override
void
InitMuzzleArray
() {
m_muzzleHasBullet
= {
MuzzleState
.L}; }
47
};
48
53
class
Crossbow_Base
:
Archery_Base
54
{
55
void
Crossbow_Base
();
56
57
override
RecoilBase
SpawnRecoilObject
()
58
{
59
return
new
CrossbowRecoil
(
this
);
60
}
61
62
override
void
InitStateMachine
()
63
{
64
// setup abilities
65
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED));
66
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL));
67
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.CHAMBERING,
WeaponActionChamberingTypes
.CHAMBERING_CROSSBOW_OPENED));
68
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.CHAMBERING,
WeaponActionChamberingTypes
.CHAMBERING_CROSSBOW_CLOSED));
69
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_NORMAL));
70
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_UNCOCKED));
71
m_abilities.Insert(
new
AbilityRecord
(
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_COCKED));
72
73
// setup state machine
74
// basic weapon states
75
WeaponStableState
U
=
new
XBUncockedEmpty(
this
, NULL,
XBAnimState
.uncocked);
76
WeaponStableState
C
=
new
XBCockedEmpty(
this
, NULL,
XBAnimState
.cocked);
77
WeaponStableState
L
=
new
XBLoaded(
this
, NULL,
XBAnimState
.cocked);
78
// unstable (intermediate) states
79
WeaponChargingStretch Mech_U =
new
WeaponChargingStretch(
this
, NULL,
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED);
80
WeaponEjectBullet Mech_L =
new
WeaponEjectBullet(
this
, NULL,
WeaponActions
.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL);
81
82
WeaponChambering Chamber_U =
new
WeaponChambering(
this
, NULL,
WeaponActions
.CHAMBERING,
WeaponActionChamberingTypes
.CHAMBERING_CROSSBOW_OPENED);
83
WeaponChambering Chamber_C =
new
WeaponChambering(
this
, NULL,
WeaponActions
.CHAMBERING,
WeaponActionChamberingTypes
.CHAMBERING_CROSSBOW_CLOSED);
84
//CrossbowReChambering Chamber_L = new CrossbowReChambering(this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED);
85
86
WeaponStateBase
Trigger_U =
new
WeaponDryFire(
this
, NULL,
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_UNCOCKED);
87
WeaponStateBase
Trigger_C =
new
WeaponDryFire(
this
, NULL,
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_COCKED);
88
WeaponStateBase
Trigger_L =
new
WeaponFireLast(
this
, NULL,
WeaponActions
.FIRE,
WeaponActionFireTypes
.FIRE_NORMAL);
89
90
WeaponStateBase
Unjam_J =
new
WeaponUnjamming
(
this
, NULL,
WeaponActions
.UNJAMMING,
WeaponActionUnjammingTypes
.UNJAMMING_START);
91
92
// events
93
WeaponEventBase
__M__ =
new
WeaponEventMechanism;
94
WeaponEventBase
__T__ =
new
WeaponEventTrigger;
95
WeaponEventBase
__TJ_ =
new
WeaponEventTriggerToJam;
96
WeaponEventBase
__L__ =
new
WeaponEventLoad1Bullet;
97
WeaponEventBase
__U__ =
new
WeaponEventUnjam;
98
WeaponEventBase
_fin_ =
new
WeaponEventHumanCommandActionFinished;
99
WeaponEventBase
_abt_ =
new
WeaponEventHumanCommandActionAborted;
100
WeaponEventBase
_dto_ =
new
WeaponEventDryFireTimeout;
101
102
m_fsm =
new
WeaponFSM
();
103
104
//Charging
105
m_fsm.AddTransition(
new
WeaponTransition
(
C
, __M__,
C
));
106
107
m_fsm.AddTransition(
new
WeaponTransition
(
U
, __M__, Mech_U));
108
m_fsm.AddTransition(
new
WeaponTransition
( Mech_U, _fin_,
U
, null,
new
WeaponGuardWeaponDischarged
(
this
)));
109
m_fsm.AddTransition(
new
WeaponTransition
( Mech_U, _fin_,
C
));
110
m_fsm.AddTransition(
new
WeaponTransition
( Mech_U, _abt_,
U
, null,
new
WeaponGuardWeaponDischarged
(
this
)));
111
m_fsm.AddTransition(
new
WeaponTransition
( Mech_U, _abt_,
C
));
112
113
m_fsm.AddTransition(
new
WeaponTransition
(
L
, __M__, Mech_L));
114
m_fsm.AddTransition(
new
WeaponTransition
( Mech_L, _fin_,
C
, null,
new
WeaponGuardChamberEmpty(
this
)));
115
m_fsm.AddTransition(
new
WeaponTransition
( Mech_L, _fin_,
L
));
116
m_fsm.AddTransition(
new
WeaponTransition
( Mech_L, _abt_,
C
, null,
new
WeaponGuardChamberEmpty(
this
)));
117
m_fsm.AddTransition(
new
WeaponTransition
( Mech_L, _abt_,
L
));
118
119
120
//Chamber bolt
121
m_fsm.AddTransition(
new
WeaponTransition
(
U
, __L__, Chamber_U));
122
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_U, _fin_,
L
, null,
new
WeaponGuardChamberFull(
this
)));
123
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_U, _fin_,
C
, null,
new
WeaponGuardWeaponCharged(
this
)));
124
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_U, _fin_,
U
));
125
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_U, _abt_,
L
, null,
new
WeaponGuardChamberFull(
this
)));
126
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_U, _abt_,
C
, null,
new
WeaponGuardWeaponCharged(
this
)));
127
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_U, _abt_,
U
));
128
129
130
m_fsm.AddTransition(
new
WeaponTransition
(
C
, __L__, Chamber_C));
131
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_C, _fin_,
L
, null,
new
WeaponGuardChamberFull(
this
)));
132
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_C, _fin_,
C
));
133
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_C, _abt_,
L
, null,
new
WeaponGuardChamberFull(
this
)));
134
m_fsm.AddTransition(
new
WeaponTransition
( Chamber_C, _abt_,
C
));
135
136
m_fsm.AddTransition(
new
WeaponTransition
(
C
, __T__, Trigger_C));
137
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_C, _fin_,
U
));
138
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_C, _abt_,
U
));
139
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_C, _dto_,
U
));
140
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_C, _abt_,
U
));
141
142
m_fsm.AddTransition(
new
WeaponTransition
(
U
, __T__, Trigger_U));
143
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_U, _fin_,
U
));
144
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_U, _abt_,
U
));
145
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_U, _dto_,
U
));
146
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_U, _abt_,
U
));
147
148
m_fsm.AddTransition(
new
WeaponTransition
(
L
, __T__, Trigger_L));
149
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_L, _fin_,
U
));
150
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_L, _abt_,
U
));
151
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_L, _dto_,
U
));
152
m_fsm.AddTransition(
new
WeaponTransition
( Trigger_L, _abt_,
U
));
153
154
SelectionBulletHide();
155
EffectBulletHide(0);
156
157
SetInitialState(
U
);
158
m_fsm.Start();
159
}
160
161
override
float
GetChanceToJam
()
162
{
163
return
0.0;
164
}
165
166
override
void
OnDebugSpawnEx
(DebugSpawnParams params)
167
{
168
SpawnAmmo(
"Ammo_HuntingBolt"
,SAMF_DEFAULT);
169
GameInventory
inventory = GetInventory();
170
171
GetInventory().CreateInInventory(
"ACOGOptic_6x"
);
172
173
EntityAI
entity;
174
175
GameInventory
inv = null;
176
if
(params.m_Player)
177
{
178
inv = params.m_Player.GetInventory();
179
}
180
181
SpawnInInventoryOrGroundPos(
"Ammo_HuntingBolt"
, inv,
GetPosition
());
182
SpawnInInventoryOrGroundPos(
"Ammo_ImprovisedBolt_1"
, inv,
GetPosition
());
183
SpawnInInventoryOrGroundPos(
"Ammo_ImprovisedBolt_2"
, inv,
GetPosition
());
184
185
SpawnInInventoryOrGroundPos(
"ACOGOptic"
, inv,
GetPosition
());
186
entity = SpawnInInventoryOrGroundPos(
"M68Optic"
, inv,
GetPosition
());
187
entity.GetInventory().CreateInInventory(
"Battery9V"
);
188
entity = SpawnInInventoryOrGroundPos(
"M4_T3NRDSOptic"
, inv,
GetPosition
());
189
entity.GetInventory().CreateInInventory(
"Battery9V"
);
190
entity = SpawnInInventoryOrGroundPos(
"ReflexOptic"
, inv,
GetPosition
());
191
entity.GetInventory().CreateInInventory(
"Battery9V"
);
192
entity = SpawnInInventoryOrGroundPos(
"StarlightOptic"
, inv,
GetPosition
());
193
entity.GetInventory().CreateInInventory(
"Battery9V"
);
194
}
195
196
override
bool
CanBeUsedForSuicide
()
197
{
198
float
ammoDamage;
199
string
ammoTypeName;
200
GetCartridgeInfo(GetCurrentMuzzle(), ammoDamage, ammoTypeName);
201
if
(ammoTypeName ==
"Bullet_CupidsBolt"
)
202
return
false
;
203
204
return
super.CanBeUsedForSuicide();
205
}
206
}
207
208
class
Crossbow :
Crossbow_Base
{}
209
class
Crossbow_Autumn :
Crossbow_Base
{}
210
class
Crossbow_Summer :
Crossbow_Base
{}
211
class
Crossbow_Black :
Crossbow_Base
{}
212
class
Crossbow_Wood :
Crossbow_Base
{}
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
Archery_Base::Archery_Base
void Archery_Base()
Crossbow_Base
base for Crossbow @NOTE name copies config base class
Definition
crossbow.c:54
Crossbow_Base::GetChanceToJam
override float GetChanceToJam()
Definition
crossbow.c:161
Crossbow_Base::InitStateMachine
override void InitStateMachine()
Definition
crossbow.c:62
Crossbow_Base::Crossbow_Base
void Crossbow_Base()
Crossbow_Base::OnDebugSpawnEx
override void OnDebugSpawnEx(DebugSpawnParams params)
Definition
crossbow.c:166
Crossbow_Base::CanBeUsedForSuicide
override bool CanBeUsedForSuicide()
Definition
crossbow.c:196
Crossbow_Base::SpawnRecoilObject
override RecoilBase SpawnRecoilObject()
Definition
crossbow.c:57
CrossbowRecoil
Definition
crossbowrecoil.c:2
EntityAI
Definition
inventoryitem.c:2
GameInventory
script counterpart to engine's class Inventory
Definition
inventory.c:81
LogManager
Definition
debug.c:692
LogManager::IsWeaponLogEnable
static bool IsWeaponLogEnable()
Definition
debug.c:816
Object
Definition
objecttyped.c:2
RecoilBase
Definition
recoilbase.c:2
Weapon_Base::C
ref WeaponStableState C
Definition
magnum.c:52
WeaponChambering_Base::OnExit
override void OnExit(WeaponEventBase e)
Definition
weaponchambering.c:439
WeaponEventBase
signalize mechanism manipulation
Definition
events.c:35
WeaponFSM
weapon finite state machine
WeaponStableState
represents weapon's stable state (i.e.
Definition
crossbow.c:27
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
crossbow.c:29
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
WeaponUnjamming
unjam submachine
Loaded
Loaded
Definition
crossbow.c:21
UncockedEmpty
UncockedEmpty
Definition
crossbow.c:19
CockedEmpty
CockedEmpty
Definition
crossbow.c:20
XBStableStateID
XBStableStateID
Definition
crossbow.c:8
XBAnimState
XBAnimState
Definition
crossbow.c:2
uncocked
@ uncocked
default weapon state, closed and discharged
Definition
crossbow.c:3
cocked
@ cocked
Definition
crossbow.c:4
Object
class LOD Object
GetPosition
vector GetPosition()
Get the world position of the Effect.
Definition
effect.c:473
m_weapon
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
Definition
guards.c:604
WeaponGuardWeaponDischarged
void WeaponGuardWeaponDischarged(Weapon_Base w=NULL)
Definition
guards.c:580
WeaponActionChamberingTypes
WeaponActionChamberingTypes
Definition
human.c:876
WeaponActions
WeaponActions
actions
Definition
human.c:816
WeaponActionUnjammingTypes
WeaponActionUnjammingTypes
Definition
human.c:918
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
U
@ U
UNKNOWN.
Definition
weaponstablestate.c:17
L
@ L
LOADED.
Definition
weaponstablestate.c:23
m_muzzleHasBullet
ref array< MuzzleState > m_muzzleHasBullet
Definition
weaponstablestate.c:30
Games
Dayz
scripts
4_world
entities
firearms
archery
crossbow.c
Generated by
1.17.0