-
Notifications
You must be signed in to change notification settings - Fork 303
/
script_commands.txt
453 lines (365 loc) · 29.9 KB
/
script_commands.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
-- --------------------------
## Script processing
-- --------------------------
This file is part of the CMaNGOS Project. See AUTHORS file for Copyright information
-- --------------------------
## id
-- --------------------------
dbscripts_on_creature_death Creature entry
dbscripts_on_creature_movement DB project self defined id
dbscripts_on_event Event id. Several sources: spell effect 61, taxi/transport nodes, gameobject_template data
dbscripts_on_go_use Gameobject guid
dbscripts_on_go_template_use Gameobject entry
dbscripts_on_gossip DB project self defined id
dbscripts_on_quest_end DB project self defined id (generally quest entry)
dbscripts_on_quest_start DB project self defined id (generally quest entry)
dbscripts_on_spell Spell id
dbscripts_on_relay DB project self defined id, Id is used in dbscripts, EAI or SD2 to launch it
-- --------------------------
## delay
-- --------------------------
Delay in seconds
The order of which each step are executed.
-- --------------------------
## command
-- --------------------------
The action to execute.
-- --------------------------
## datalong
-- --------------------------
3 multipurpose fields, store raw data as unsigned values
-- --------------------------
## buddy_entry
-- --------------------------
1 field to store the entry of a "buddy" (depending on command can be both GameObject and Creature entry)
-- --------------------------
## search_radius
-- --------------------------
Range in which the buddy defined in buddy_entry will be searched
In case of SCRIPT_FLAG_BUDDY_BY_GUID this field is the buddy's guid!
In case of SCRIPT_FLAG_BUDDY_BY_POOL this field is the buddy's pool id!
-- --------------------------
## data_flags
-- --------------------------
Field which holds a combination of these flags:
SCRIPT_FLAG_BUDDY_AS_TARGET = 0x01
SCRIPT_FLAG_REVERSE_DIRECTION = 0x02
SCRIPT_FLAG_SOURCE_TARGETS_SELF = 0x04
SCRIPT_FLAG_COMMAND_ADDITIONAL = 0x08 (Only for some commands possible)
SCRIPT_FLAG_BUDDY_BY_GUID = 0x10 (Interpret search_radius as buddy's guid)
SCRIPT_FLAG_BUDDY_IS_PET = 0x20 (Do not search for an npc, but for a pet)
SCRIPT_FLAG_BUDDY_IS_DESPAWNED = 0X40 (Search for a buddy that is dead or despawned)
SCRIPT_FLAG_BUDDY_BY_POOL = 0x80 (buddy should be part of a pool)
SCRIPT_FLAG_BUDDY_BY_SPAWN_GROUP = 0x100, (buddy is from spawn group - NYI - TODO:)
SCRIPT_FLAG_ALL_ELIGIBLE_BUDDIES = 0x200, (multisource/multitarget - will execute for each eligible)
SCRIPT_FLAG_BUDDY_BY_GO = 0x400, (take the buddy by GO (for commands which can target both creature and GO))
SCRIPT_FLAG_BUDDY_BY_STRING_ID = 0x800, (takes buddy from string id - creature or go)
Detailed meaning described below!
-- --------------------------
## dataint
-- --------------------------
4 multipurpose fields, store raw data as signed values
Note: used for text ids SCRIPT_COMMAND_TALK (0),
for emote ids in SCRIPT_COMMAND_EMOTE (1),
for spell ids in SCRIPT_COMMAND_CAST_SPELL (15)
and as waittime with SCRIPT_COMMAND_TERMINATE_SCRIPT (31)
-- --------------------------
## x y z o
-- --------------------------
Map coordinates for commands that need it.
-- --------------------------
## origin of script and source/target in scripts
-- --------------------------
dbscripts_on_creature_death
Creature death
Source: creature. Target: Unit (player/creature)
dbscripts_on_creature_movement
`creature_movement` `creature_movement_template`
Source: creature. Target: creature
dbscripts_on_event
Flight path
Source: player. Target: player
Transport path
Source: transport GO. Target: Transport GO
`gameobject_template`
Source: User (player/creature). Target: GO
Spell (effect 61)
Source: caster. Target: Target
dbscripts_on_go_use
dbscripts_on_go_template_use
Gameobject use
Source: user: Target: GO
dbscripts_on_gossip
`gossip_menu_option`, `gossip_menu`
Source: creature. Target: player (in case of NPC-Gossip)
Source: player. Target: GO (in case of GO-Gossip)
dbscripts_on_quest_end
`quest_template`
Source: quest taker (creature/GO). Target: player
dbscripts_on_quest_start
`quest_template`
Source: quest giver (creature/GO). Target: player
dbscripts_on_spell
Spell (effect 77 - SCRIPT_EFFECT)
Spell (effect 3 - DUMMY)
Spell (effect 64 - TRIGGER_SPELL, with non-existing triggered spell)
Source: caster: Target: target of spell (Unit)
-- --------------------------
## Buddy concept
-- --------------------------
Commands except the ones requiring a player (like KILL_CREDIT) have support for the buddy concept.
This means that if an entry for buddy_entry is provided,
aside from source and target as listed above also a "buddy" is available.
Which one on the three (originalSource, originalTarget, buddy) will be used in the command, depends on the data_flags
Note that some commands (like EMOTE) use only the resulting source for an action.
Possible combinations of the flags
SCRIPT_FLAG_BUDDY_AS_TARGET = 0x01
SCRIPT_FLAG_REVERSE_DIRECTION = 0x02
SCRIPT_FLAG_SOURCE_TARGETS_SELF = 0x04
are:
0: originalSource / buddyIfProvided -> originalTarget
1: originalSource -> buddy
2: originalTarget -> originalSource / buddyIfProvided
3: buddy -> originalSource
4: originalSource / buddyIfProvided -> originalSource / buddyIfProvided
5: originalSource -> originalSource
6: originalTarget -> originalTarget
7: buddy -> buddy
Where "A -> B" means that the command is executed from A with B as target.
Defining a buddy could be done in several way:
default (take the buddy by entry)
SCRIPT_FLAG_BUDDY_BY_GUID = 0x10 (take the buddy by guid)
SCRIPT_FLAG_BUDDY_IS_PET = 0x20 (buddy is a pet)
SCRIPT_FLAG_BUDDY_IS_DESPAWNED = 0x40 (buddy is dead or despawned)
SCRIPT_FLAG_BUDDY_BY_POOL = 0x80 (buddy should be part of a pool)
SCRIPT_FLAG_BUDDY_BY_STRING_ID = 0x800 (buddy should be part of a spawn group)
-- --------------------------
## Each command has different parameters, and are as follows:
-- --------------------------
0 SCRIPT_COMMAND_TALK resultingSource = WorldObject, resultingTarget = Unit/none
* datalong = dbscript_string_template ID - will randomize between all dbscript_strings in given template, ids from template are checked against dbscript_string table
* dataint = text entry from dbscript_string -table. dataint2-dataint4 optionally, for random selection of text
1 SCRIPT_COMMAND_EMOTE resultingSource = Unit, resultingTarget = Unit/none
* datalong = emote_id
* dataint1-dataint4 optionally, for random selection of emote
2 SCRIPT_COMMAND_FIELD_SET source = any
* datalong = field_id
* datalong2 = field value
3 SCRIPT_COMMAND_MOVE_TO resultingSource = Creature
If position is very near to current position, or x=y=z=0, then only orientation is changed
If x=y=0 and z !=0, then only Z position is changed (new value will be added to current 'z' position)
* datalong = dbscripts_on_relay id - executed for source and target same as this script
* datalong2 = travel_speed*100 (use 0 for creature default movement)
* datalong3 = enum ForcedMovement
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: teleport unit to position
* x/y/z/o
* dataint = 1 to init move to respawn position, 2 to init creature group member each in their respawn position.
no other data is needed. So ex: command 3 ... dataint=1 and creature should head to its respawn pos
4 SCRIPT_COMMAND_FLAG_SET source = any
* datalong = field_id
* datalong2 = bitmask
5 SCRIPT_COMMAND_FLAG_REMOVE source = any
* datalong = field_id
* datalong2 = bitmask
6 SCRIPT_COMMAND_TELEPORT_TO source or target with Player
* datalong = map_id
* x/y/z
7 SCRIPT_COMMAND_QUEST_EXPLORED one from source or target must be Player, another GO/Creature
* datalong = quest_id
* datalong2 = distance or 0
8 SCRIPT_COMMAND_KILL_CREDIT source or target with Player
* datalong = creature entry, or 0; If 0 the entry of the creature source or target is used
* datalong2 = bool (0=personal credit, 1=group credit)
9 SCRIPT_COMMAND_RESPAWN_GAMEOBJECT source = any, target = any
* datalong=db_guid (can be skipped for buddy)
* datalong2 = despawn_delay
10 SCRIPT_COMMAND_TEMP_SPAWN_CREATURE source = any, target = any
* datalong = creature entry
* datalong2 = despawn_delay
* datalong3 = pathId - creature_movement_template
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: summon as active object
* dataint = (bool) setRun; 0 = off (default), 1 = on
(note, migrated from old where faction and modelid were 2 and 3 and now are in spawndatatemplate)
* dataint4 = spawndatatemplate - if > 0 uses settings from creature_spawn_data_template
11 SCRIPT_COMMAND_OPEN_DOOR source = any, works on both doors and buttons
* datalong = db_guid (can be skipped for buddy)
* datalong2 = reset_delay
* datalong3 = alternate state - bool 0 or 1
12 SCRIPT_COMMAND_CLOSE_DOOR source = any, works on both doors and buttons
* datalong = db_guid (can be skipped for buddy)
* datalong2 = reset_delay
13 SCRIPT_COMMAND_ACTIVATE_OBJECT source = unit, target=GO
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: send gameobject custom anim instead of Use()
* datalong = anim Id
14 SCRIPT_COMMAND_REMOVE_AURA resultingSource = Unit
* datalong = spell_id
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: remove aura by caster spell from script target
warning - if used with a channeled spell will not interrupt channel
15 SCRIPT_COMMAND_CAST_SPELL resultingSource = Unit, cast spell at resultingTarget = Unit
* datalong = spell id
* datalong2 = TriggerCastFlags
* dataint1-dataint4 optional. If some of these are set to a spell id, a random spell out of datalong, datint1, ..,dataintX is cast.
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: do not pass target to spellcast
16 SCRIPT_COMMAND_PLAY_SOUND source = any object, target=any/player
* datalong = sound_id
* datalong2 (bitmask: 0/1=target-player, 0/2=with distance dependent, 0/4=map wide, 0/8=zone wide, 0/16=area wide;
so 1|2 = 3 is target with distance dependent), 8+16 does not work together
* datalong3 if datalong2 &8 or &16 zoneId or areaId respectively, defaults to source zone/area if not set
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: play music instead of sound
17 SCRIPT_COMMAND_CREATE_ITEM source or target must be player
* datalong = item entry
* datalong2 = amount
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: remove the item from player by the given amount
18 SCRIPT_COMMAND_DESPAWN_SELF resultingTarget = Creature
* datalong = despawn delay
19 SCRIPT_COMMAND_PLAY_MOVIE target can only be a player
* datalog = movie id
20 SCRIPT_COMMAND_MOVEMENT resultingSource = Creature
* datalong = MovementType (0:idle, 1:random, 2:waypoint, 3:path, 4:linear, 15:jump, 18:fall)
* datalong2 = wanderDistance (for random movement), pathId (for waypoint movement), relayId (for fall or jump movement)
* datalong3 = 0x1 - timer for timed random movement or pass target to waypoint and path movegen (by default, source targets self)
* 0x2 - for waypoint, path and linear path - uses pathId from waypoint_path table
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: RandomMovement around current position
* dataint = enum ForcedMovement
* dataFloat = vertical Speed - used by Jump and special case of Path
* speed = override of speed for Jump and Path
* Path when Vertical Speed is set - Uses exclusively waypoint_path, supports forcedMovement, pathId, speed, verticalSpeed
- moves to second to last point and jumps to last
21 SCRIPT_COMMAND_SET_ACTIVEOBJECT resultingSource = WorldObject
* datalong=bool 0=off, 1=on
22 SCRIPT_COMMAND_SET_FACTION resultingSource = Creature
* datalong=factionId OR 0 to restore original faction from creature_template
* datalong2=enum TemporaryFactionFlags
TEMPFACTION_NONE = 0x00, // When no flag is used in temporary faction change, faction will be persistent. It will then require manual change back to default/another faction when changed once
TEMPFACTION_RESTORE_RESPAWN = 0x01, // Default faction will be restored at respawn
TEMPFACTION_RESTORE_COMBAT_STOP = 0x02, // ... at CombatStop() (happens at creature death, at evade or custom scripte among others)
TEMPFACTION_RESTORE_REACH_HOME = 0x04, // ... at reaching home in home movement (evade), if not already done at CombatStop()
// The next flags allow to remove unit_flags combined with a faction change (also these flags will be reapplied when the faction is changed back)
TEMPFACTION_TOGGLE_NON_ATTACKABLE = 0x08, // Remove UNIT_FLAG_NON_ATTACKABLE(0x02) when faction is changed (reapply when temp-faction is removed)
TEMPFACTION_TOGGLE_OOC_NOT_ATTACK = 0x10, // Remove UNIT_FLAG_OOC_NOT_ATTACKABLE(0x100) when faction is changed (reapply when temp-faction is removed)
TEMPFACTION_TOGGLE_PASSIVE = 0x20, // Remove UNIT_FLAG_PASSIVE(0x200) when faction is changed (reapply when temp-faction is removed)
TEMPFACTION_TOGGLE_PACIFIED = 0x40, // Remove UNIT_FLAG_PACIFIED(0x20000) when faction is changed (reapply when temp-faction is removed)
TEMPFACTION_TOGGLE_NOT_SELECTABLE = 0x80, // Remove UNIT_FLAG_NOT_SELECTABLE(0x2000000) when faction is changed (reapply when temp-faction is removed)
23 SCRIPT_COMMAND_MORPH_TO_ENTRY_OR_MODEL resultingSource = Creature
* datalong=creature entry/modelid (depend on data_flags) OR 0 to demorph
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: use datalong value as modelid explicit
24 SCRIPT_COMMAND_MOUNT_TO_ENTRY_OR_MODEL resultingSource = Creature
* datalong=creature entry/modelid (depend on data_flags) OR 0 to dismount
* datalong2=bool 0=no, 1=yes, change speed to creature entry run speed in DB
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: use datalong value as modelid explicit
25 SCRIPT_COMMAND_SET_RUN resultingSource = Creature
* datalong= bool 0=off, 1=on
26 SCRIPT_COMMAND_ATTACK_START resultingSource = Creature, resultingTarget = Unit
27 SCRIPT_COMMAND_GO_LOCK_STATE resultingSource = GO
* datalong = flag_go_lock = 0x01, flag_go_unlock = 0x02,
flag_go_nonInteract = 0x04, flag_go_interact = 0x08
28 SCRIPT_COMMAND_STAND_STATE resultingSource = Creature
* datalong = stand state (enum UnitStandStateType)
29 SCRIPT_COMMAND_MODIFY_NPC_FLAGS resultingSource = Creature
* datalong=NPCFlags
* datalong2 => 0=remove, 1=add, 2=toggle
30 SCRIPT_COMMAND_SEND_TAXI_PATH resultingTarget or Source must be Player
* datalong = taxi path id
31 SCRIPT_COMMAND_TERMINATE_SCRIPT * datalong = search for npc entry if provided
* datalong2= search distance
* datalong3= pool id
* !(data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL): if npc not alive found, terminate script
data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: if npc alive found, terminate script
* dataint = change of waittime (MILLIESECONDS) of a current waypoint movement type (negative values will decrease time)
* when used with guid or entry search, can also search for GO guid through SCRIPT_FLAG_BUDDY_BY_GO
32 SCRIPT_COMMAND_PAUSE_WAYPOINTS resultingSource must be Creature
* datalong: 0/1 unpause/pause waypoint movement
33 SCRIPT_COMMAND_XP_USER source or target with Player
* datalong=bool 0=off, 1=on
34 SCRIPT_COMMAND_TERMINATE_COND * datalong = condition_id, datalong2 = fail-quest (if provided this quest will be failed for a player)
* !(data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL): terminate when condition is true
data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: terminate when condition is false
35 SCRIPT_COMMAND_SEND_AI_EVENT * resultingSource = Creature, resultingTarget = Unit
* datalong = AIEventType
* datalong2 = radius. If radius isn't provided and the target is a creature, then send AIEvent to target
* datalong3 = miscvalue - uint32 - for use in ReceiveAIEvent handler
36 SCRIPT_COMMAND_SET_FACING Turn resultingSource towards resultingTarget
* resultingSource = Creature, resultingTarget WorldObject
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL also set TargetGuid of resultingSource to resultingTarget.
In this case resultingTarget MUST be Creature/ Player
* datalong != 0 Reset TargetGuid, Reset orientation
37 SCRIPT_COMMAND_MOVE_DYNAMIC Move resultingSource to a random point around resultingTarget or to resultingTarget
* resultingSource = Creature, resultingTarget Worldobject.
* datalong = 0: Move resultingSource towards resultingTarget
* datalong != 0: Move resultingSource to a random point between datalong2..datalong around resultingTarget.
orientation != 0: Obtain a random point around resultingTarget in direction of orientation
* datalong3 = Exact contact point distance, to be used when you want to stop moving as soon as you're within this distance of the target
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL Obtain a point in direction of resTarget->GetOrientation + orientation
for resTarget == resSource and orientation == 0 this will mean resSource moving forward
* dataint1 = enum ForcedMovement
* dataint2 = dbscripts_on_relay id
38 SCRIPT_COMMAND_SEND_MAIL Send a mail from resSource to resTarget
* resultingSource = Creature OR NULL, resTarget must be Player
* datalong = mailTemplateId
* datalong2: AlternativeSenderEntry. Use as sender-Entry of the sent mail
* datalong3: Money
* dataint1: Delay (>= 0) in Seconds
39 SCRIPT_COMMAND_SET_HOVER * resultingSource = Creature
* datalong = bool 0=off, 1=on
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL set/unset byte flag UNIT_BYTE1_FLAG_FLY_ANIM
40 SCRIPT_COMMAND_DESPAWN_GO * resultingTarget = GameObject - if a GO doesnt work with this command - make a report - WIP
* datalong = despawnDelay
41 SCRIPT_COMMAND_RESPAWN * resultingSource = Creature. Requires SCRIPT_FLAG_BUDDY_IS_DESPAWNED to find dead or despawned targets
42 SCRIPT_COMMAND_SET_EQUIPMENT_SLOTS Change equipment slots of the resultingSource
* resultingSource = Creature
* datalong = resetDefault: bool 0=false, 1=true
* dataint = main hand slot; dataint2 = off hand slot; dataint3 = ranged slot
43 SCRIPT_COMMAND_RESET_GO * resultingTarget = GameObject. Reset doors or buttons (GO type 0 and 1)
44 SCRIPT_COMMAND_UPDATE_TEMPLATE Update creature entry of the resultingSource
* resultingSource = Creature
* datalong = new creature entry. Must be different than the current one
45 SCRIPT_COMMAND_START_RELAY_SCRIPT Launch dbscripts_on_relay script, either static one, or randomly chosen one from dbscript_random_templates
* source and target of command define source and target of launched dbscript
* datalong = dbscripts_on_relay id
* datalong2 = dbscript_random_templates id
46 SCRIPT_COMMAND_CAST_CUSTOM_SPELL resultingSource = Unit, cast spell at resultingTarget = Unit
* datalong = spell id
* datalong2 = TriggerCastFlags
* dataint1-dataint3 define the &bp for the spell. At least one field is required.
47 SCRIPT_COMMAND_INTERRUPT_SPELL Interrupt spell in specific slot
* source must be unit
* datalong = SpellType enum CurrentSpellTypes
48 SCRIPT_COMMAND_MODIFY_UNIT_FLAGS resultingSource = Creature
* datalong = UnitFlags
* datalong2 => 0=remove, 1=add, 2=toggle
49 SCRIPT_COMMAND_SET_DATA_64 Set instance data if it exists
* datalong - param1
* datalong2 - param2
50 SCRIPT_COMMAND_ZONE_PULSE Pulses zone for combat and attacks closest enemy
51 SCRIPT_COMMAND_SPAWN_GROUP Set of commands for creature spawn group
* datalong = command
only formation command(staring from 100) supported right now
- 100: switch formation shape.
datalong1 should have shape value
Random(0), Queue(1), Side bu side(2), Geese(3), Fanned out behind(4), Fanned out in front(5), Circle leader(6)
- 101: Set formation spread
Spread is set in x field as we need a float for it
- 102: Set formation options
Set flag 0x1 for keep compact option (after a member death)
Set flag 0x2 for disabling pathfinding (not impemented yet)
- 150: Add formation to that group
You either have to provide spawngroup id in datalong1 or source/target being already in its spawngroup
dataint is formation type -> Random(0), Queue(1), Side bu side(2), Geese(3), Fanned out behind(4), Fanned out in front(5), Circle leader(6)
dataint1 is formation options
x is formation spread
- 151: Remove formation from spawngroup (all followers will stop following the leader)
datalong1 spawngroup id
52 SCRIPT_COMMAND_SET_GOSSIP_MENU Sets a new gossip menu id for creature
* datalong = new gossip menu id
53 SCRIPT_COMMAND_SET_WORLDSTATE Sets worldstate variable to new value in current map
* dataint = worldstate variable id
* dataint2 = new value
54 SCRIPT_COMMAND_SET_SHEATHE Sets source unit sheathe state to new value (UNIT_FIELD_BYTES_2, offset 1)
* datalong = new sheathe state - enum SheathState, SHEATH_STATE_UNARMED(0), SHEATH_STATE_MELEE(1), SHEATH_STATE_RANGED(2)
55 SCRIPT_COMMAND_SET_STRING_ID Sets or removes a string_id from a WorldObject
* datalong = string_id id
* apply = 0 remove, 1 add
56 SCRIPT_COMMAND_RECALL_OR_RESPAWN_ACCESSORIES Recalls or respawns source vehicle accessories
* datalong = 0x1 recall, 0x2 respawn, 0x3 recall and respawn
* datalong2 = max distance for recall, of 0 any distance
* dataint = seat index for recall or respawn, if -1, all seats per vehicle accessory template