/
script_commands.txt
290 lines (226 loc) · 15.4 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
-- --------------------------
## 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
-- --------------------------
## delay
-- --------------------------
Delay in seconds
The order of which each step are executed.
-- --------------------------
## command
-- --------------------------
The action to execute.
-- --------------------------
## datalong
-- --------------------------
2 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!
-- --------------------------
## 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)
Detailed meaning described below!
-- --------------------------
## dataint
-- --------------------------
4 multipurpose fields, store raw data as signed values
Note: currently used only for text ids SCRIPT_COMMAND_TALK (0),
and in relation 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.
-- --------------------------
## Each command has different parameters, and are as follows:
-- --------------------------
0 SCRIPT_COMMAND_TALK resultingSource = WorldObject, resultingTarget = Unit/none
* dataint = text entry from db_script_string -table. dataint2-dataint4 optionally, for random selection of text
1 SCRIPT_COMMAND_EMOTE resultingSource = Unit, resultingTarget = Unit/none
* datalong = emote_id
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
* datalong2 = travel_speed*100 (use 0 for creature default movement)
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: teleport unit to position
* x/y/z/o
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_SUMMON_CREATURE source = any, target = any
* datalong = creature entry
* datalong2 = despawn_delay
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: summon as active object
11 SCRIPT_COMMAND_OPEN_DOOR source = any
* datalong = db_guid (can be skipped for buddy)
* datalong2 = reset_delay
12 SCRIPT_COMMAND_CLOSE_DOOR source = any
* datalong = db_guid (can be skipped for buddy)
* datalong2 = reset_delay
13 SCRIPT_COMMAND_ACTIVATE_OBJECT source = unit, target=GO
14 SCRIPT_COMMAND_REMOVE_AURA resultingSource = Unit
* datalong = spell_id
15 SCRIPT_COMMAND_CAST_SPELL resultingSource = Unit, cast spell at resultingTarget = Unit
* datalong = spell id
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: cast triggered
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;
so 1|2 = 3 is target with distance dependent)
17 SCRIPT_COMMAND_CREATE_ITEM source or target must be player
* datalong = item entry
* datalong2 = amount
18 SCRIPT_COMMAND_DESPAWN_SELF resultingSource = 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 or 2:waypoint)
* datalong2 = wanderDistance (for random movement)
* data_flags & SCRIPT_FLAG_COMMAND_ADDITIONAL: RandomMovement around current position
21 SCRIPT_COMMAND_SET_ACTIVEOBJECT resultingSource = Creature
* 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 three 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)
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
* 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= 0x00=toggle, 0x01=add, 0x02=remove
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
* !(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)
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