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
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
|
/*
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GameObjectData_h__
#define GameObjectData_h__
#include "Common.h"
#include "QuaternionData.h"
#include "SharedDefines.h"
#include "SpawnData.h"
#include "WorldPacket.h"
#include <array>
#include <set>
#include <string>
struct DestructibleHitpoint
{
uint32 Id;
uint32 IntactNumHits;
uint32 DamagedNumHits;
uint32 GetMaxHealth() const { return IntactNumHits + DamagedNumHits; }
};
// from `gameobject_template`
struct GameObjectTemplate
{
uint32 entry;
uint32 type;
uint32 displayId;
std::string name;
std::string IconName;
std::string castBarCaption;
std::string unk1;
float size;
int32 ContentTuningId;
union
{
// 0 GAMEOBJECT_TYPE_DOOR
struct
{
uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false
uint32 open; // 1 open, References: Lock_, NoValue = 0
uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000
uint32 noDamageImmune; // 3 noDamageImmune, enum { false, true, }; Default: false
uint32 openTextID; // 4 openTextID, References: BroadcastText, NoValue = 0
uint32 closeTextID; // 5 closeTextID, References: BroadcastText, NoValue = 0
uint32 IgnoredByPathing; // 6 Ignored By Pathing, enum { false, true, }; Default: false
uint32 conditionID1; // 7 conditionID1, References: PlayerCondition, NoValue = 0
uint32 DoorisOpaque; // 8 Door is Opaque (Disable portal on close), enum { false, true, }; Default: true
uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 10 Infinite AOI, enum { false, true, }; Default: false
uint32 NotLOSBlocking; // 11 Not LOS Blocking, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 12 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Collisionupdatedelayafteropen; // 13 Collision update delay(ms) after open, int, Min value: 0, Max value: 2147483647, Default value: 0
} door;
// 1 GAMEOBJECT_TYPE_BUTTON
struct
{
uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: false
uint32 open; // 1 open, References: Lock_, NoValue = 0
uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000
uint32 linkedTrap; // 3 linkedTrap, References: GameObjects, NoValue = 0
uint32 noDamageImmune; // 4 noDamageImmune, enum { false, true, }; Default: false
uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false
uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0
uint32 closeTextID; // 7 closeTextID, References: BroadcastText, NoValue = 0
uint32 requireLOS; // 8 require LOS, enum { false, true, }; Default: false
uint32 conditionID1; // 9 conditionID1, References: PlayerCondition, NoValue = 0
uint32 InteractRadiusOverride; // 10 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} button;
// 2 GAMEOBJECT_TYPE_QUESTGIVER
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 questGiver; // 1 questGiver, References: QuestGiver, NoValue = 0
uint32 pageMaterial; // 2 pageMaterial, References: PageTextMaterial, NoValue = 0
uint32 gossipID; // 3 gossipID, References: Gossip, NoValue = 0
uint32 customAnim; // 4 customAnim, int, Min value: 0, Max value: 4, Default value: 0
uint32 noDamageImmune; // 5 noDamageImmune, enum { false, true, }; Default: false
uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0
uint32 requireLOS; // 7 require LOS, enum { false, true, }; Default: false
uint32 allowMounted; // 8 allowMounted, enum { false, true, }; Default: false
uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false
uint32 conditionID1; // 10 conditionID1, References: PlayerCondition, NoValue = 0
uint32 NeverUsableWhileMounted; // 11 Never Usable While Mounted, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 12 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} questgiver;
// 3 GAMEOBJECT_TYPE_CHEST
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 chestLoot; // 1 chestLoot (legacy/classic), References: Treasure, NoValue = 0
uint32 chestRestockTime; // 2 chestRestockTime, int, Min value: 0, Max value: 1800000, Default value: 0
uint32 consumable; // 3 consumable, enum { false, true, }; Default: false
uint32 minRestock; // 4 minRestock, int, Min value: 0, Max value: 65535, Default value: 0
uint32 maxRestock; // 5 maxRestock, int, Min value: 0, Max value: 65535, Default value: 0
uint32 triggeredEvent; // 6 triggeredEvent, References: GameEvents, NoValue = 0
uint32 linkedTrap; // 7 linkedTrap, References: GameObjects, NoValue = 0
uint32 questID; // 8 questID, References: QuestV2, NoValue = 0
uint32 InteractRadiusOverride; // 9 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 requireLOS; // 10 require LOS, enum { false, true, }; Default: false
uint32 leaveLoot; // 11 leaveLoot, enum { false, true, }; Default: false
uint32 notInCombat; // 12 notInCombat, enum { false, true, }; Default: false
uint32 logloot; // 13 log loot, enum { false, true, }; Default: false
uint32 openTextID; // 14 openTextID, References: BroadcastText, NoValue = 0
uint32 usegrouplootrules; // 15 use group loot rules, enum { false, true, }; Default: false
uint32 floatingTooltip; // 16 floatingTooltip, enum { false, true, }; Default: false
uint32 conditionID1; // 17 conditionID1, References: PlayerCondition, NoValue = 0
int32 xpLevel; // 18 xpLevel, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 xpDifficulty; // 19 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp
uint32 Unused; // 20 Unused, int, Min value: 0, Max value: 123, Default value: 0
uint32 GroupXP; // 21 Group XP, enum { false, true, }; Default: false
uint32 DamageImmuneOK; // 22 Damage Immune OK, enum { false, true, }; Default: false
uint32 trivialSkillLow; // 23 trivialSkillLow, int, Min value: 0, Max value: 65535, Default value: 0
uint32 trivialSkillHigh; // 24 trivialSkillHigh, int, Min value: 0, Max value: 65535, Default value: 0
uint32 DungeonEncounter; // 25 Dungeon Encounter, References: DungeonEncounter, NoValue = 0
uint32 spell; // 26 spell, References: Spell, NoValue = 0
uint32 GiganticAOI; // 27 Gigantic AOI, enum { false, true, }; Default: false
uint32 LargeAOI; // 28 Large AOI, enum { false, true, }; Default: false
uint32 SpawnVignette; // 29 Spawn Vignette, References: vignette, NoValue = 0
uint32 chestPersonalLoot; // 30 chest Personal Loot, References: Treasure, NoValue = 0
uint32 turnpersonallootsecurityoff; // 31 turn personal loot security off, enum { false, true, }; Default: false
uint32 ChestProperties; // 32 Chest Properties, References: ChestProperties, NoValue = 0
uint32 chestPushLoot; // 33 chest Push Loot, References: Treasure, NoValue = 0
uint32 ForceSingleLooter; // 34 Force Single Looter, enum { false, true, }; Default: false
} chest;
// 4 GAMEOBJECT_TYPE_BINDER
struct
{
uint32 InteractRadiusOverride; // 0 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} binder;
// 5 GAMEOBJECT_TYPE_GENERIC
struct
{
uint32 floatingTooltip; // 0 floatingTooltip, enum { false, true, }; Default: false
uint32 highlight; // 1 highlight, enum { false, true, }; Default: true
uint32 serverOnly; // 2 serverOnly, enum { false, true, }; Default: false
uint32 GiganticAOI; // 3 Gigantic AOI, enum { false, true, }; Default: false
uint32 floatOnWater; // 4 floatOnWater, enum { false, true, }; Default: false
uint32 questID; // 5 questID, References: QuestV2, NoValue = 0
uint32 conditionID1; // 6 conditionID1, References: PlayerCondition, NoValue = 0
uint32 LargeAOI; // 7 Large AOI, enum { false, true, }; Default: false
uint32 UseGarrisonOwnerGuildColors; // 8 Use Garrison Owner Guild Colors, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 9 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} generic;
// 6 GAMEOBJECT_TYPE_TRAP
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 Unused; // 1 Unused, int, Min value: 0, Max value: 65535, Default value: 0
uint32 radius; // 2 radius, int, Min value: 0, Max value: 100, Default value: 0
uint32 spell; // 3 spell, References: Spell, NoValue = 0
uint32 charges; // 4 charges, int, Min value: 0, Max value: 65535, Default value: 1
uint32 cooldown; // 5 cooldown, int, Min value: 0, Max value: 65535, Default value: 0
uint32 autoClose; // 6 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 startDelay; // 7 startDelay, int, Min value: 0, Max value: 65535, Default value: 0
uint32 serverOnly; // 8 serverOnly, enum { false, true, }; Default: false
uint32 stealthed; // 9 stealthed, enum { false, true, }; Default: false
uint32 GiganticAOI; // 10 Gigantic AOI, enum { false, true, }; Default: false
uint32 stealthAffected; // 11 stealthAffected, enum { false, true, }; Default: false
uint32 openTextID; // 12 openTextID, References: BroadcastText, NoValue = 0
uint32 closeTextID; // 13 closeTextID, References: BroadcastText, NoValue = 0
uint32 IgnoreTotems; // 14 Ignore Totems, enum { false, true, }; Default: false
uint32 conditionID1; // 15 conditionID1, References: PlayerCondition, NoValue = 0
uint32 playerCast; // 16 playerCast, enum { false, true, }; Default: false
uint32 SummonerTriggered; // 17 Summoner Triggered, enum { false, true, }; Default: false
uint32 requireLOS; // 18 require LOS, enum { false, true, }; Default: false
uint32 TriggerCondition; // 19 Trigger Condition, References: PlayerCondition, NoValue = 0
uint32 Checkallunits; // 20 Check all units (spawned traps only check players), enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 21 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} trap;
// 7 GAMEOBJECT_TYPE_CHAIR
struct
{
uint32 chairslots; // 0 chairslots, int, Min value: 1, Max value: 5, Default value: 1
uint32 chairheight; // 1 chairheight, int, Min value: 0, Max value: 2, Default value: 1
uint32 onlyCreatorUse; // 2 onlyCreatorUse, enum { false, true, }; Default: false
uint32 triggeredEvent; // 3 triggeredEvent, References: GameEvents, NoValue = 0
uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
uint32 InteractRadiusOverride; // 5 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} chair;
// 8 GAMEOBJECT_TYPE_SPELL_FOCUS
struct
{
uint32 spellFocusType; // 0 spellFocusType, References: SpellFocusObject, NoValue = 0
uint32 radius; // 1 radius, int, Min value: 0, Max value: 50, Default value: 10
uint32 linkedTrap; // 2 linkedTrap, References: GameObjects, NoValue = 0
uint32 serverOnly; // 3 serverOnly, enum { false, true, }; Default: false
uint32 questID; // 4 questID, References: QuestV2, NoValue = 0
uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false
uint32 floatingTooltip; // 6 floatingTooltip, enum { false, true, }; Default: false
uint32 floatOnWater; // 7 floatOnWater, enum { false, true, }; Default: false
uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
uint32 InteractRadiusOverride; // 9 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 gossipID; // 10 gossipID, References: Gossip, NoValue = 0
uint32 spellFocusType2; // 11 spellFocusType 2, References: SpellFocusObject, NoValue = 0
uint32 spellFocusType3; // 12 spellFocusType 3, References: SpellFocusObject, NoValue = 0
uint32 spellFocusType4; // 13 spellFocusType 4, References: SpellFocusObject, NoValue = 0
uint32 Profession; // 14 Profession, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing
uint32 Profession2; // 15 Profession 2, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing
uint32 Profession3; // 16 Profession 3, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing
} spellFocus;
// 9 GAMEOBJECT_TYPE_TEXT
struct
{
uint32 pageID; // 0 pageID, References: PageText, NoValue = 0
uint32 language; // 1 language, References: Languages, NoValue = 0
uint32 pageMaterial; // 2 pageMaterial, References: PageTextMaterial, NoValue = 0
uint32 allowMounted; // 3 allowMounted, enum { false, true, }; Default: false
uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
uint32 NeverUsableWhileMounted; // 5 Never Usable While Mounted, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 6 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} text;
// 10 GAMEOBJECT_TYPE_GOOBER
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 questID; // 1 questID, References: QuestV2, NoValue = 0
uint32 eventID; // 2 eventID, References: GameEvents, NoValue = 0
uint32 autoClose; // 3 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000
uint32 customAnim; // 4 customAnim, int, Min value: 0, Max value: 4, Default value: 0
uint32 consumable; // 5 consumable, enum { false, true, }; Default: false
uint32 cooldown; // 6 cooldown, int, Min value: 0, Max value: 65535, Default value: 0
uint32 pageID; // 7 pageID, References: PageText, NoValue = 0
uint32 language; // 8 language, References: Languages, NoValue = 0
uint32 pageMaterial; // 9 pageMaterial, References: PageTextMaterial, NoValue = 0
uint32 spell; // 10 spell, References: Spell, NoValue = 0
uint32 noDamageImmune; // 11 noDamageImmune, enum { false, true, }; Default: false
uint32 linkedTrap; // 12 linkedTrap, References: GameObjects, NoValue = 0
uint32 GiganticAOI; // 13 Gigantic AOI, enum { false, true, }; Default: false
uint32 openTextID; // 14 openTextID, References: BroadcastText, NoValue = 0
uint32 closeTextID; // 15 closeTextID, References: BroadcastText, NoValue = 0
uint32 requireLOS; // 16 require LOS, enum { false, true, }; Default: false
uint32 allowMounted; // 17 allowMounted, enum { false, true, }; Default: false
uint32 floatingTooltip; // 18 floatingTooltip, enum { false, true, }; Default: false
uint32 gossipID; // 19 gossipID, References: Gossip, NoValue = 0
uint32 AllowMultiInteract; // 20 Allow Multi-Interact, enum { false, true, }; Default: false
uint32 floatOnWater; // 21 floatOnWater, enum { false, true, }; Default: false
uint32 conditionID1; // 22 conditionID1, References: PlayerCondition, NoValue = 0
uint32 playerCast; // 23 playerCast, enum { false, true, }; Default: false
uint32 SpawnVignette; // 24 Spawn Vignette, References: vignette, NoValue = 0
uint32 startOpen; // 25 startOpen, enum { false, true, }; Default: false
uint32 DontPlayOpenAnim; // 26 Dont Play Open Anim, enum { false, true, }; Default: false
uint32 IgnoreBoundingBox; // 27 Ignore Bounding Box, enum { false, true, }; Default: false
uint32 NeverUsableWhileMounted; // 28 Never Usable While Mounted, enum { false, true, }; Default: false
uint32 SortFarZ; // 29 Sort Far Z, enum { false, true, }; Default: false
uint32 SyncAnimationtoObjectLifetime; // 30 Sync Animation to Object Lifetime (global track only), enum { false, true, }; Default: false
uint32 NoFuzzyHit; // 31 No Fuzzy Hit, enum { false, true, }; Default: false
uint32 LargeAOI; // 32 Large AOI, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 33 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} goober;
// 11 GAMEOBJECT_TYPE_TRANSPORT
struct
{
uint32 Timeto2ndfloor; // 0 Time to 2nd floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false
uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached1stfloor; // 3 Reached 1st floor, References: GameEvents, NoValue = 0
uint32 Reached2ndfloor; // 4 Reached 2nd floor, References: GameEvents, NoValue = 0
int32 SpawnMap; // 5 Spawn Map, References: Map, NoValue = -1
uint32 Timeto3rdfloor; // 6 Time to 3rd floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached3rdfloor; // 7 Reached 3rd floor, References: GameEvents, NoValue = 0
uint32 Timeto4thfloor; // 8 Time to 4th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached4thfloor; // 9 Reached 4th floor, References: GameEvents, NoValue = 0
uint32 Timeto5thfloor; // 10 Time to 5th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached5thfloor; // 11 Reached 5th floor, References: GameEvents, NoValue = 0
uint32 Timeto6thfloor; // 12 Time to 6th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached6thfloor; // 13 Reached 6th floor, References: GameEvents, NoValue = 0
uint32 Timeto7thfloor; // 14 Time to 7th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached7thfloor; // 15 Reached 7th floor, References: GameEvents, NoValue = 0
uint32 Timeto8thfloor; // 16 Time to 8th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached8thfloor; // 17 Reached 8th floor, References: GameEvents, NoValue = 0
uint32 Timeto9thfloor; // 18 Time to 9th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached9thfloor; // 19 Reached 9th floor, References: GameEvents, NoValue = 0
uint32 Timeto10thfloor; // 20 Time to 10th floor (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Reached10thfloor; // 21 Reached 10th floor, References: GameEvents, NoValue = 0
uint32 onlychargeheightcheck; // 22 only charge height check. (yards), int, Min value: 0, Max value: 65535, Default value: 0
uint32 onlychargetimecheck; // 23 only charge time check, int, Min value: 0, Max value: 65535, Default value: 0
uint32 InteractRadiusOverride; // 24 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} transport;
// 12 GAMEOBJECT_TYPE_AREADAMAGE
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 radius; // 1 radius, int, Min value: 0, Max value: 50, Default value: 3
uint32 damageMin; // 2 damageMin, int, Min value: 0, Max value: 65535, Default value: 0
uint32 damageMax; // 3 damageMax, int, Min value: 0, Max value: 65535, Default value: 0
uint32 damageSchool; // 4 damageSchool, int, Min value: 0, Max value: 65535, Default value: 0
uint32 autoClose; // 5 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0
uint32 closeTextID; // 7 closeTextID, References: BroadcastText, NoValue = 0
uint32 InteractRadiusOverride; // 8 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} areaDamage;
// 13 GAMEOBJECT_TYPE_CAMERA
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 camera; // 1 camera, References: CinematicSequences, NoValue = 0
uint32 eventID; // 2 eventID, References: GameEvents, NoValue = 0
uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
uint32 InteractRadiusOverride; // 5 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} camera;
// 14 GAMEOBJECT_TYPE_MAP_OBJECT
struct
{
} mapobject;
// 15 GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT
struct
{
uint32 taxiPathID; // 0 taxiPathID, References: TaxiPath, NoValue = 0
uint32 moveSpeed; // 1 moveSpeed, int, Min value: 1, Max value: 60, Default value: 1
uint32 accelRate; // 2 accelRate, int, Min value: 1, Max value: 20, Default value: 1
uint32 startEventID; // 3 startEventID, References: GameEvents, NoValue = 0
uint32 stopEventID; // 4 stopEventID, References: GameEvents, NoValue = 0
uint32 transportPhysics; // 5 transportPhysics, References: TransportPhysics, NoValue = 0
int32 SpawnMap; // 6 Spawn Map, References: Map, NoValue = -1
uint32 worldState1; // 7 worldState1, References: WorldState, NoValue = 0
uint32 allowstopping; // 8 allow stopping, enum { false, true, }; Default: false
uint32 InitStopped; // 9 Init Stopped, enum { false, true, }; Default: false
uint32 TrueInfiniteAOI; // 10 True Infinite AOI (programmer only!), enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 11 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Allowareaexplorationwhileonthistransport;// 12 Allow area exploration while on this transport, enum { false, true, }; Default: false
} moTransport;
// 16 GAMEOBJECT_TYPE_DUEL_ARBITER
struct
{
uint32 InteractRadiusOverride; // 0 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Willthisduelgountilaplayerdies; // 1 Will this duel go until a player dies?, enum { false, true, }; Default: false
} duelFlag;
// 17 GAMEOBJECT_TYPE_FISHINGNODE
struct
{
uint32 InteractRadiusOverride; // 0 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} fishingNode;
// 18 GAMEOBJECT_TYPE_RITUAL
struct
{
uint32 casters; // 0 casters, int, Min value: 1, Max value: 10, Default value: 1
uint32 spell; // 1 spell, References: Spell, NoValue = 0
uint32 animSpell; // 2 animSpell, References: Spell, NoValue = 0
uint32 ritualPersistent; // 3 ritualPersistent, enum { false, true, }; Default: false
uint32 casterTargetSpell; // 4 casterTargetSpell, References: Spell, NoValue = 0
uint32 casterTargetSpellTargets; // 5 casterTargetSpellTargets, int, Min value: 1, Max value: 10, Default value: 1
uint32 castersGrouped; // 6 castersGrouped, enum { false, true, }; Default: true
uint32 ritualNoTargetCheck; // 7 ritualNoTargetCheck, enum { false, true, }; Default: true
uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
uint32 InteractRadiusOverride; // 9 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Allowunfriendlycrossfactionpartymemberstocollaborateonaritual;// 10 Allow unfriendly cross faction party members to collaborate on a ritual, enum { false, true, }; Default: false
} ritual;
// 19 GAMEOBJECT_TYPE_MAILBOX
struct
{
uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0
uint32 InteractRadiusOverride; // 1 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} mailbox;
// 20 GAMEOBJECT_TYPE_DO_NOT_USE
struct
{
} DONOTUSE;
// 21 GAMEOBJECT_TYPE_GUARDPOST
struct
{
uint32 creatureID; // 0 creatureID, References: Creature, NoValue = 0
uint32 charges; // 1 charges, int, Min value: 0, Max value: 65535, Default value: 1
uint32 Preferonlyifinlineofsight; // 2 Prefer only if in line of sight (expensive), enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 3 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} guardPost;
// 22 GAMEOBJECT_TYPE_SPELLCASTER
struct
{
uint32 spell; // 0 spell, References: Spell, NoValue = 0
int32 charges; // 1 charges, int, Min value: -1, Max value: 65535, Default value: 1
uint32 partyOnly; // 2 partyOnly, enum { false, true, }; Default: false
uint32 allowMounted; // 3 allowMounted, enum { false, true, }; Default: false
uint32 GiganticAOI; // 4 Gigantic AOI, enum { false, true, }; Default: false
uint32 conditionID1; // 5 conditionID1, References: PlayerCondition, NoValue = 0
uint32 playerCast; // 6 playerCast, enum { false, true, }; Default: false
uint32 NeverUsableWhileMounted; // 7 Never Usable While Mounted, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 8 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} spellCaster;
// 23 GAMEOBJECT_TYPE_MEETINGSTONE
struct
{
uint32 Unused; // 0 Unused, int, Min value: 0, Max value: 65535, Default value: 1
uint32 Unused2; // 1 Unused, int, Min value: 1, Max value: 65535, Default value: 60
uint32 areaID; // 2 areaID, References: AreaTable, NoValue = 0
uint32 InteractRadiusOverride; // 3 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Preventmeetingstonefromtargetinganunfriendlypartymemberoutsideofinstances;// 4 Prevent meeting stone from targeting an unfriendly party member outside of instances, enum { false, true, }; Default: false
} meetingStone;
// 24 GAMEOBJECT_TYPE_FLAGSTAND
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 pickupSpell; // 1 pickupSpell, References: Spell, NoValue = 0
uint32 radius; // 2 radius, int, Min value: 0, Max value: 50, Default value: 0
uint32 returnAura; // 3 returnAura, References: Spell, NoValue = 0
uint32 returnSpell; // 4 returnSpell, References: Spell, NoValue = 0
uint32 noDamageImmune; // 5 noDamageImmune, enum { false, true, }; Default: false
uint32 openTextID; // 6 openTextID, References: BroadcastText, NoValue = 0
uint32 requireLOS; // 7 require LOS, enum { false, true, }; Default: true
uint32 conditionID1; // 8 conditionID1, References: PlayerCondition, NoValue = 0
uint32 playerCast; // 9 playerCast, enum { false, true, }; Default: false
uint32 GiganticAOI; // 10 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 11 Infinite AOI, enum { false, true, }; Default: false
uint32 cooldown; // 12 cooldown, int, Min value: 0, Max value: 2147483647, Default value: 3000
uint32 InteractRadiusOverride; // 13 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} flagStand;
// 25 GAMEOBJECT_TYPE_FISHINGHOLE
struct
{
uint32 radius; // 0 radius, int, Min value: 0, Max value: 50, Default value: 0
uint32 chestLoot; // 1 chestLoot (legacy/classic), References: Treasure, NoValue = 0
uint32 minRestock; // 2 minRestock, int, Min value: 0, Max value: 65535, Default value: 0
uint32 maxRestock; // 3 maxRestock, int, Min value: 0, Max value: 65535, Default value: 0
uint32 open; // 4 open, References: Lock_, NoValue = 0
uint32 InteractRadiusOverride; // 5 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} fishingHole;
// 26 GAMEOBJECT_TYPE_FLAGDROP
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 eventID; // 1 eventID, References: GameEvents, NoValue = 0
uint32 pickupSpell; // 2 pickupSpell, References: Spell, NoValue = 0
uint32 noDamageImmune; // 3 noDamageImmune, enum { false, true, }; Default: false
uint32 openTextID; // 4 openTextID, References: BroadcastText, NoValue = 0
uint32 playerCast; // 5 playerCast, enum { false, true, }; Default: false
uint32 ExpireDuration; // 6 Expire Duration, int, Min value: 0, Max value: 60000, Default value: 10000
uint32 GiganticAOI; // 7 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 8 Infinite AOI, enum { false, true, }; Default: false
uint32 cooldown; // 9 cooldown, int, Min value: 0, Max value: 2147483647, Default value: 3000
uint32 InteractRadiusOverride; // 10 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} flagDrop;
// 27 GAMEOBJECT_TYPE_MINI_GAME
struct
{
} miniGame;
// 28 GAMEOBJECT_TYPE_DO_NOT_USE_2
struct
{
} DONOTUSE2;
// 29 GAMEOBJECT_TYPE_CONTROL_ZONE
struct
{
uint32 radius; // 0 radius, int, Min value: 0, Max value: 100, Default value: 10
uint32 spell; // 1 spell, References: Spell, NoValue = 0
uint32 worldState1; // 2 worldState1, References: WorldState, NoValue = 0
uint32 worldstate2; // 3 worldstate2, References: WorldState, NoValue = 0
uint32 CaptureEventHorde; // 4 Capture Event (Horde), References: GameEvents, NoValue = 0
uint32 CaptureEventAlliance; // 5 Capture Event (Alliance), References: GameEvents, NoValue = 0
uint32 ContestedEventHorde; // 6 Contested Event (Horde), References: GameEvents, NoValue = 0
uint32 ContestedEventAlliance; // 7 Contested Event (Alliance), References: GameEvents, NoValue = 0
uint32 ProgressEventHorde; // 8 Progress Event (Horde), References: GameEvents, NoValue = 0
uint32 ProgressEventAlliance; // 9 Progress Event (Alliance), References: GameEvents, NoValue = 0
uint32 NeutralEventHorde; // 10 Neutral Event (Horde), References: GameEvents, NoValue = 0
uint32 NeutralEventAlliance; // 11 Neutral Event (Alliance), References: GameEvents, NoValue = 0
uint32 neutralPercent; // 12 neutralPercent, int, Min value: 0, Max value: 100, Default value: 0
uint32 worldstate3; // 13 worldstate3, References: WorldState, NoValue = 0
uint32 minSuperiority; // 14 minSuperiority, int, Min value: 1, Max value: 65535, Default value: 1
uint32 maxSuperiority; // 15 maxSuperiority, int, Min value: 1, Max value: 65535, Default value: 1
uint32 minTime; // 16 minTime, int, Min value: 1, Max value: 65535, Default value: 1
uint32 maxTime; // 17 maxTime, int, Min value: 1, Max value: 65535, Default value: 1
uint32 GiganticAOI; // 18 Gigantic AOI, enum { false, true, }; Default: false
uint32 highlight; // 19 highlight, enum { false, true, }; Default: true
uint32 startingValue; // 20 startingValue, int, Min value: 0, Max value: 100, Default value: 50
uint32 unidirectional; // 21 unidirectional, enum { false, true, }; Default: false
uint32 killbonustime; // 22 kill bonus time %, int, Min value: 0, Max value: 100, Default value: 0
uint32 speedWorldState1; // 23 speedWorldState1, References: WorldState, NoValue = 0
uint32 speedWorldState2; // 24 speedWorldState2, References: WorldState, NoValue = 0
uint32 UncontestedTime; // 25 Uncontested Time, int, Min value: 0, Max value: 65535, Default value: 0
uint32 FrequentHeartbeat; // 26 Frequent Heartbeat, enum { false, true, }; Default: false
uint32 EnablingWorldStateExpression; // 27 Enabling World State Expression, References: WorldStateExpression, NoValue = 0
uint32 InteractRadiusOverride; // 28 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} controlZone;
// 30 GAMEOBJECT_TYPE_AURA_GENERATOR
struct
{
uint32 startOpen; // 0 startOpen, enum { false, true, }; Default: true
uint32 radius; // 1 radius, int, Min value: 0, Max value: 100, Default value: 10
uint32 auraID1; // 2 auraID1, References: Spell, NoValue = 0
uint32 conditionID1; // 3 conditionID1, References: PlayerCondition, NoValue = 0
uint32 auraID2; // 4 auraID2, References: Spell, NoValue = 0
uint32 conditionID2; // 5 conditionID2, References: PlayerCondition, NoValue = 0
uint32 serverOnly; // 6 serverOnly, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 7 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} auraGenerator;
// 31 GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY
struct
{
uint32 InstanceType; // 0 Instance Type, enum { Not Instanced, Party Dungeon, Raid Dungeon, PVP Battlefield, Arena Battlefield, Scenario, WoWLabs, }; Default: Party Dungeon
uint32 DifficultyNormal; // 1 Difficulty Normal, References: animationdata, NoValue = 0
uint32 DifficultyHeroic; // 2 Difficulty Heroic, References: animationdata, NoValue = 0
uint32 DifficultyEpic; // 3 Difficulty Epic, References: animationdata, NoValue = 0
uint32 DifficultyLegendary; // 4 Difficulty Legendary, References: animationdata, NoValue = 0
uint32 HeroicAttachment; // 5 Heroic Attachment, References: gameobjectdisplayinfo, NoValue = 0
uint32 ChallengeAttachment; // 6 Challenge Attachment, References: gameobjectdisplayinfo, NoValue = 0
uint32 DifficultyAnimations; // 7 Difficulty Animations, References: GameObjectDiffAnim, NoValue = 0
uint32 LargeAOI; // 8 Large AOI, enum { false, true, }; Default: false
uint32 GiganticAOI; // 9 Gigantic AOI, enum { false, true, }; Default: false
uint32 Legacy; // 10 Legacy, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 11 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} dungeonDifficulty;
// 32 GAMEOBJECT_TYPE_BARBER_CHAIR
struct
{
uint32 chairheight; // 0 chairheight, int, Min value: 0, Max value: 2, Default value: 1
int32 HeightOffset; // 1 Height Offset (inches), int, Min value: -100, Max value: 100, Default value: 0
uint32 SitAnimKit; // 2 Sit Anim Kit, References: AnimKit, NoValue = 0
uint32 InteractRadiusOverride; // 3 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 CustomizationFeatureMask; // 4 Customization Feature Mask, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Preventteleportingtheplayeroutofthebarbershopchair;// 5 Prevent teleporting the player out of the barbershop chair, enum { false, true, }; Default: false
} barberChair;
// 33 GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING
struct
{
int32 Unused; // 0 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 CreditProxyCreature; // 1 Credit Proxy Creature, References: Creature, NoValue = 0
uint32 HealthRec; // 2 Health Rec, References: DestructibleHitpoint, NoValue = 0
uint32 IntactEvent; // 3 Intact Event, References: GameEvents, NoValue = 0
uint32 PVPEnabling; // 4 PVP Enabling, enum { false, true, }; Default: false
uint32 InteriorVisible; // 5 Interior Visible, enum { false, true, }; Default: false
uint32 InteriorLight; // 6 Interior Light, enum { false, true, }; Default: false
int32 Unused1; // 7 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Unused2; // 8 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 DamagedEvent; // 9 Damaged Event, References: GameEvents, NoValue = 0
int32 Unused3; // 10 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Unused4; // 11 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Unused5; // 12 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Unused6; // 13 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 DestroyedEvent; // 14 Destroyed Event, References: GameEvents, NoValue = 0
int32 Unused7; // 15 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 RebuildingTime; // 16 Rebuilding: Time (secs), int, Min value: 0, Max value: 65535, Default value: 0
int32 Unused8; // 17 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 DestructibleModelRec; // 18 Destructible Model Rec, References: DestructibleModelData, NoValue = 0
uint32 RebuildingEvent; // 19 Rebuilding: Event, References: GameEvents, NoValue = 0
int32 Unused9; // 20 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Unused10; // 21 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 DamageEvent; // 22 Damage Event, References: GameEvents, NoValue = 0
uint32 Displaymouseoverasanameplate; // 23 Display mouseover as a nameplate, enum { false, true, }; Default: false
int32 Thexoffsetofthedestructiblenameplateifitisenabled;// 24 The x offset (in hundredths) of the destructible nameplate, if it is enabled, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Theyoffsetofthedestructiblenameplateifitisenabled;// 25 The y offset (in hundredths) of the destructible nameplate, if it is enabled, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
int32 Thezoffsetofthedestructiblenameplateifitisenabled;// 26 The z offset (in hundredths) of the destructible nameplate, if it is enabled, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 InteractRadiusOverride; // 27 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} destructibleBuilding;
// 34 GAMEOBJECT_TYPE_GUILD_BANK
struct
{
uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0
uint32 InteractRadiusOverride; // 1 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} guildbank;
// 35 GAMEOBJECT_TYPE_TRAPDOOR
struct
{
uint32 AutoLink; // 0 Auto Link, enum { false, true, }; Default: false
uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false
uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 BlocksPathsDown; // 3 Blocks Paths Down, enum { false, true, }; Default: false
int32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false
uint32 DoorisOpaque; // 7 Door is Opaque (Disable portal on close), enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 8 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} trapdoor;
// 36 GAMEOBJECT_TYPE_NEW_FLAG
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 pickupSpell; // 1 pickupSpell, References: Spell, NoValue = 0
uint32 openTextID; // 2 openTextID, References: BroadcastText, NoValue = 0
uint32 requireLOS; // 3 require LOS, enum { false, true, }; Default: true
uint32 conditionID1; // 4 conditionID1, References: PlayerCondition, NoValue = 0
uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false
uint32 ExpireDuration; // 7 Expire Duration, int, Min value: 0, Max value: 3600000, Default value: 10000
uint32 RespawnTime; // 8 Respawn Time, int, Min value: 0, Max value: 3600000, Default value: 20000
uint32 FlagDrop; // 9 Flag Drop, References: GameObjects, NoValue = 0
int32 ExclusiveCategory; // 10 Exclusive Category (BGs Only), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 worldState1; // 11 worldState1, References: WorldState, NoValue = 0
uint32 ReturnonDefenderInteract; // 12 Return on Defender Interact, enum { false, true, }; Default: false
uint32 SpawnVignette; // 13 Spawn Vignette, References: vignette, NoValue = 0
uint32 InteractRadiusOverride; // 14 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} newflag;
// 37 GAMEOBJECT_TYPE_NEW_FLAG_DROP
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 SpawnVignette; // 1 Spawn Vignette, References: vignette, NoValue = 0
uint32 InteractRadiusOverride; // 2 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} newflagdrop;
// 38 GAMEOBJECT_TYPE_GARRISON_BUILDING
struct
{
int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1
uint32 InteractRadiusOverride; // 1 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonBuilding;
// 39 GAMEOBJECT_TYPE_GARRISON_PLOT
struct
{
uint32 PlotInstance; // 0 Plot Instance, References: GarrPlotInstance, NoValue = 0
int32 SpawnMap; // 1 Spawn Map, References: Map, NoValue = -1
uint32 InteractRadiusOverride; // 2 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonPlot;
// 40 GAMEOBJECT_TYPE_CLIENT_CREATURE
struct
{
uint32 CreatureDisplayInfo; // 0 Creature Display Info, References: CreatureDisplayInfo, NoValue = 0
uint32 AnimKit; // 1 Anim Kit, References: AnimKit, NoValue = 0
uint32 creatureID; // 2 creatureID, References: Creature, NoValue = 0
} clientCreature;
// 41 GAMEOBJECT_TYPE_CLIENT_ITEM
struct
{
uint32 Item; // 0 Item, References: Item, NoValue = 0
} clientItem;
// 42 GAMEOBJECT_TYPE_CAPTURE_POINT
struct
{
uint32 CaptureTime; // 0 Capture Time (ms), int, Min value: 0, Max value: 2147483647, Default value: 60000
uint32 GiganticAOI; // 1 Gigantic AOI, enum { false, true, }; Default: false
uint32 highlight; // 2 highlight, enum { false, true, }; Default: true
uint32 open; // 3 open, References: Lock_, NoValue = 0
uint32 AssaultBroadcastHorde; // 4 Assault Broadcast (Horde), References: BroadcastText, NoValue = 0
uint32 CaptureBroadcastHorde; // 5 Capture Broadcast (Horde), References: BroadcastText, NoValue = 0
uint32 DefendedBroadcastHorde; // 6 Defended Broadcast (Horde), References: BroadcastText, NoValue = 0
uint32 AssaultBroadcastAlliance; // 7 Assault Broadcast (Alliance), References: BroadcastText, NoValue = 0
uint32 CaptureBroadcastAlliance; // 8 Capture Broadcast (Alliance), References: BroadcastText, NoValue = 0
uint32 DefendedBroadcastAlliance; // 9 Defended Broadcast (Alliance), References: BroadcastText, NoValue = 0
uint32 worldState1; // 10 worldState1, References: WorldState, NoValue = 0
uint32 ContestedEventHorde; // 11 Contested Event (Horde), References: GameEvents, NoValue = 0
uint32 CaptureEventHorde; // 12 Capture Event (Horde), References: GameEvents, NoValue = 0
uint32 DefendedEventHorde; // 13 Defended Event (Horde), References: GameEvents, NoValue = 0
uint32 ContestedEventAlliance; // 14 Contested Event (Alliance), References: GameEvents, NoValue = 0
uint32 CaptureEventAlliance; // 15 Capture Event (Alliance), References: GameEvents, NoValue = 0
uint32 DefendedEventAlliance; // 16 Defended Event (Alliance), References: GameEvents, NoValue = 0
uint32 SpellVisual1; // 17 Spell Visual 1, References: SpellVisual, NoValue = 0
uint32 SpellVisual2; // 18 Spell Visual 2, References: SpellVisual, NoValue = 0
uint32 SpellVisual3; // 19 Spell Visual 3, References: SpellVisual, NoValue = 0
uint32 SpellVisual4; // 20 Spell Visual 4, References: SpellVisual, NoValue = 0
uint32 SpellVisual5; // 21 Spell Visual 5, References: SpellVisual, NoValue = 0
uint32 SpawnVignette; // 22 Spawn Vignette, References: vignette, NoValue = 0
uint32 InteractRadiusOverride; // 23 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} capturePoint;
// 43 GAMEOBJECT_TYPE_PHASEABLE_MO
struct
{
int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1
int32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 DoodadSetA; // 2 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 DoodadSetB; // 3 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 InteractRadiusOverride; // 4 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} phaseableMO;
// 44 GAMEOBJECT_TYPE_GARRISON_MONUMENT
struct
{
uint32 TrophyTypeID; // 0 Trophy Type ID, References: TrophyType, NoValue = 0
uint32 TrophyInstanceID; // 1 Trophy Instance ID, References: TrophyInstance, NoValue = 0
uint32 InteractRadiusOverride; // 2 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonMonument;
// 45 GAMEOBJECT_TYPE_GARRISON_SHIPMENT
struct
{
uint32 ShipmentContainer; // 0 Shipment Container, References: CharShipmentContainer, NoValue = 0
uint32 GiganticAOI; // 1 Gigantic AOI, enum { false, true, }; Default: false
uint32 LargeAOI; // 2 Large AOI, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 3 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonShipment;
// 46 GAMEOBJECT_TYPE_GARRISON_MONUMENT_PLAQUE
struct
{
uint32 TrophyInstanceID; // 0 Trophy Instance ID, References: TrophyInstance, NoValue = 0
uint32 InteractRadiusOverride; // 1 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrisonMonumentPlaque;
// 47 GAMEOBJECT_TYPE_ITEM_FORGE
struct
{
uint32 conditionID1; // 0 conditionID1, References: PlayerCondition, NoValue = 0
uint32 LargeAOI; // 1 Large AOI, enum { false, true, }; Default: false
uint32 IgnoreBoundingBox; // 2 Ignore Bounding Box, enum { false, true, }; Default: false
uint32 CameraMode; // 3 Camera Mode, References: CameraMode, NoValue = 0
uint32 FadeRegionRadius; // 4 Fade Region Radius, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 ForgeType; // 5 Forge Type, enum { Artifact Forge, Relic Forge, Heart Forge, Soulbind Forge, Anima Reservoir, }; Default: Relic Forge
uint32 InteractRadiusOverride; // 6 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 GarrTalentTreeID; // 7 GarrTalentTree ID, References: GarrTalentTree, NoValue = 0
} itemForge;
// 48 GAMEOBJECT_TYPE_UI_LINK
struct
{
uint32 UILinkType; // 0 UI Link Type(Deprecated), enum { Adventure Journal, Obliterum Forge, Scrapping Machine, Item Interaction, }; Default: Adventure Journal
uint32 allowMounted; // 1 allowMounted, enum { false, true, }; Default: false
uint32 GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false
uint32 spellFocusType; // 3 spellFocusType, References: SpellFocusObject, NoValue = 0
uint32 radius; // 4 radius, int, Min value: 0, Max value: 50, Default value: 10
uint32 InteractRadiusOverride; // 5 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 ItemInteractionID; // 6 Item Interaction ID, References: UiItemInteraction, NoValue = 0
uint32 PlayerInteractionType; // 7 Player Interaction Type, enum { None, TradePartner, Item, Gossip, QuestGiver, Merchant, TaxiNode, Trainer, Banker, AlliedRaceDetailsGiver, GuildBanker, Registrar, Vendor, PetitionVendor, GuildTabardVendor, TalentMaster, SpecializationMaster, MailInfo, SpiritHealer, AreaSpiritHealer, Binder, Auctioneer, StableMaster, BattleMaster, Transmogrifier, LFGDungeon, VoidStorageBanker, BlackMarketAuctioneer, AdventureMap, WorldMap, GarrArchitect, GarrTradeskill, GarrMission, ShipmentCrafter, GarrRecruitment, GarrTalent, Trophy, PlayerChoice, ArtifactForge, ObliterumForge, ScrappingMachine, ContributionCollector, AzeriteRespec, IslandQueue, ItemInteraction, ChromieTime, CovenantPreview, AnimaDiversion, LegendaryCrafting, WeeklyRewards, Soulbind, CovenantSanctum, NewPlayerGuide, ItemUpgrade, AdventureJournal, Renown, AzeriteForge, PerksProgramVendor, ProfessionsCraftingOrder, Professions, ProfessionsCustomerOrder, TraitSystem, BarbersChoice, JailersTowerBuffs, MajorFactionRenown, PersonalTabardVendor, ForgeMaster, CharacterBanker, AccountBanker, ProfessionRespec, PlaceholderType71, PlaceholderType72, PlaceholderType73, PlaceholderType74, PlaceholderType75, PlaceholderType76, GuildRename, PlaceholderType76, }; Default: None
} UILink;
// 49 GAMEOBJECT_TYPE_KEYSTONE_RECEPTACLE
struct
{
uint32 InteractRadiusOverride; // 0 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} KeystoneReceptacle;
// 50 GAMEOBJECT_TYPE_GATHERING_NODE
struct
{
uint32 open; // 0 open, References: Lock_, NoValue = 0
uint32 chestLoot; // 1 chestLoot (legacy/classic), References: Treasure, NoValue = 0
uint32 Unused; // 2 Unused, int, Min value: 0, Max value: 65535, Default value: 0
uint32 notInCombat; // 3 notInCombat, enum { false, true, }; Default: false
uint32 trivialSkillLow; // 4 trivialSkillLow, int, Min value: 0, Max value: 65535, Default value: 0
uint32 trivialSkillHigh; // 5 trivialSkillHigh, int, Min value: 0, Max value: 65535, Default value: 0
uint32 ObjectDespawnDelay; // 6 Object Despawn Delay, int, Min value: 0, Max value: 600, Default value: 15
uint32 triggeredEvent; // 7 triggeredEvent, References: GameEvents, NoValue = 0
uint32 requireLOS; // 8 require LOS, enum { false, true, }; Default: false
uint32 openTextID; // 9 openTextID, References: BroadcastText, NoValue = 0
uint32 floatingTooltip; // 10 floatingTooltip, enum { false, true, }; Default: false
uint32 conditionID1; // 11 conditionID1, References: PlayerCondition, NoValue = 0
int32 Unused2; // 12 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 xpDifficulty; // 13 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp
uint32 spell; // 14 spell, References: Spell, NoValue = 0
uint32 GiganticAOI; // 15 Gigantic AOI, enum { false, true, }; Default: false
uint32 LargeAOI; // 16 Large AOI, enum { false, true, }; Default: false
uint32 SpawnVignette; // 17 Spawn Vignette, References: vignette, NoValue = 0
uint32 MaxNumberofLoots; // 18 Max Number of Loots, int, Min value: 1, Max value: 40, Default value: 10
uint32 logloot; // 19 log loot, enum { false, true, }; Default: false
uint32 linkedTrap; // 20 linkedTrap, References: GameObjects, NoValue = 0
uint32 PlayOpenAnimationonOpening; // 21 Play Open Animation on Opening, enum { false, true, }; Default: false
uint32 turnpersonallootsecurityoff; // 22 turn personal loot security off, enum { false, true, }; Default: false
uint32 ClearObjectVignetteonOpening; // 23 Clear Object Vignette on Opening, enum { false, true, }; Default: false
uint32 InteractRadiusOverride; // 24 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Overrideminimaptrackingicon; // 25 Override minimap tracking icon, References: UiTextureAtlasMember, NoValue = 0
} gatheringNode;
// 51 GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD
struct
{
int32 Unused; // 0 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
uint32 open; // 2 open, References: Lock_, NoValue = 0
uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
uint32 InteractRadiusOverride; // 4 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} challengeModeReward;
// 52 GAMEOBJECT_TYPE_MULTI
struct
{
uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0
} multi;
// 53 GAMEOBJECT_TYPE_SIEGEABLE_MULTI
struct
{
uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0
uint32 InitialDamage; // 1 Initial Damage, enum { None, Raw, Ratio, }; Default: None
} siegeableMulti;
// 54 GAMEOBJECT_TYPE_SIEGEABLE_MO
struct
{
uint32 SiegeableProperties; // 0 Siegeable Properties, References: SiegeableProperties, NoValue = 0
uint32 DoodadSetA; // 1 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 DoodadSetB; // 2 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 DoodadSetC; // 3 Doodad Set C, int, Min value: 0, Max value: 2147483647, Default value: 0
int32 SpawnMap; // 4 Spawn Map, References: Map, NoValue = -1
int32 AreaNameSet; // 5 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 InteractRadiusOverride; // 6 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} siegeableMO;
// 55 GAMEOBJECT_TYPE_PVP_REWARD
struct
{
int32 Unused; // 0 Unused, int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
uint32 open; // 2 open, References: Lock_, NoValue = 0
uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
uint32 InteractRadiusOverride; // 4 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} pvpReward;
// 56 GAMEOBJECT_TYPE_PLAYER_CHOICE_CHEST
struct
{
uint32 spell; // 0 spell, References: Spell, NoValue = 0
uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
uint32 GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false
uint32 PlayerChoice; // 3 Player Choice, References: PlayerChoice, NoValue = 0
uint32 MawPowerFilter; // 4 Maw Power Filter, References: MawPowerFilter, NoValue = 0
uint32 Script; // 5 Script, References: SpellScript, NoValue = 0
uint32 SpellVisual1; // 6 Spell Visual 1, References: SpellVisual, NoValue = 0
uint32 InteractRadiusOverride; // 7 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 Dontupdateplayerinteractability; // 8 Don't update player interactability, enum { false, true, }; Default: false
} playerChoiceChest;
// 57 GAMEOBJECT_TYPE_LEGENDARY_FORGE
struct
{
uint32 PlayerChoice; // 0 Player Choice, References: PlayerChoice, NoValue = 0
uint32 CustomItemBonusFilter; // 1 Custom Item Bonus Filter, References: CustomItemBonusFilter, NoValue = 0
uint32 InteractRadiusOverride; // 2 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} legendaryForge;
// 58 GAMEOBJECT_TYPE_GARR_TALENT_TREE
struct
{
uint32 UiMapID; // 0 Ui Map ID, References: UiMap, NoValue = 0
uint32 GarrTalentTreeID; // 1 GarrTalentTree ID, References: GarrTalentTree, NoValue = 0
uint32 InteractRadiusOverride; // 2 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
} garrTalentTree;
// 59 GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST
struct
{
uint32 WhenAvailable; // 0 When Available, References: GameObjectDisplayInfo, NoValue = 0
uint32 open; // 1 open, References: Lock_, NoValue = 0
uint32 InteractRadiusOverride; // 2 Interact Radius Override (Yards * 100), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 ExpansionLevel; // 3 Expansion Level, int, Min value: 0, Max value: 2147483647, Default value: 0
} weeklyRewardChest;
// 60 GAMEOBJECT_TYPE_CLIENT_MODEL
struct
{
uint32 LargeAOI; // 0 Large AOI, enum { false, true, }; Default: false
uint32 GiganticAOI; // 1 Gigantic AOI, enum { false, true, }; Default: false
uint32 InfiniteAOI; // 2 Infinite AOI, enum { false, true, }; Default: false
uint32 TrueInfiniteAOI; // 3 True Infinite AOI (programmer only!), enum { false, true, }; Default: false
} clientModel;
// 61 GAMEOBJECT_TYPE_CRAFTING_TABLE
struct
{
uint32 Profession; // 0 Profession, enum { First Aid, Blacksmithing, Leatherworking, Alchemy, Herbalism, Cooking, Mining, Tailoring, Engineering, Enchanting, Fishing, Skinning, Jewelcrafting, Inscription, Archaeology, }; Default: Blacksmithing
} craftingTable;
// 62 GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST
struct
{
uint32 Script; // 0 Script, References: SpellScript, NoValue = 0
uint32 autoClose; // 1 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 3000
} PerksProgramChest;
// 63 GAMEOBJECT_TYPE_FUTURE_PATCH
struct
{
} futurePatchGameObject;
// 64 GAMEOBJECT_TYPE_ASSIST_ACTION
struct
{
uint32 AssistActionType; // 0 Assist Action Type, enum { None, Lounging Player, Grave Marker, Placed VO, Player Guardian, Player Slayer, Captured Buff, }; Default: None
uint32 cooldown; // 1 cooldown, int, Min value: 0, Max value: 2147483647, Default value: 3000
uint32 gossipID; // 2 gossipID, References: Gossip, NoValue = 0
uint32 spell; // 3 spell, References: Spell, NoValue = 0
uint32 playerCast; // 4 playerCast, enum { false, true, }; Default: false
} assistAction;
struct
{
uint32 data[MAX_GAMEOBJECT_DATA];
} raw;
};
std::string AIName;
uint32 ScriptId;
std::string StringId;
WorldPacket QueryData[TOTAL_LOCALES];
// helpers
bool IsDespawnAtAction() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.consumable != 0;
case GAMEOBJECT_TYPE_GOOBER: return goober.consumable != 0;
default: return false;
}
}
bool IsUsableMounted() const
{
switch (type)
{
case GAMEOBJECT_TYPE_MAILBOX: return true;
case GAMEOBJECT_TYPE_BARBER_CHAIR: return false;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.allowMounted != 0;
case GAMEOBJECT_TYPE_TEXT: return text.allowMounted != 0;
case GAMEOBJECT_TYPE_GOOBER: return goober.allowMounted != 0;
case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.allowMounted != 0;
case GAMEOBJECT_TYPE_UI_LINK: return UILink.allowMounted != 0;
default: return false;
}
}
uint32 GetQuestID() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.questID;
case GAMEOBJECT_TYPE_GENERIC: return generic.questID;
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.questID;
case GAMEOBJECT_TYPE_GOOBER: return goober.questID;
default: return 0;
}
}
uint32 GetConditionID1() const
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.conditionID1;
case GAMEOBJECT_TYPE_BUTTON: return button.conditionID1;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.conditionID1;
case GAMEOBJECT_TYPE_CHEST: return chest.conditionID1;
case GAMEOBJECT_TYPE_GENERIC: return generic.conditionID1;
case GAMEOBJECT_TYPE_TRAP: return trap.conditionID1;
case GAMEOBJECT_TYPE_CHAIR: return chair.conditionID1;
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.conditionID1;
case GAMEOBJECT_TYPE_TEXT: return text.conditionID1;
case GAMEOBJECT_TYPE_GOOBER: return goober.conditionID1;
case GAMEOBJECT_TYPE_CAMERA: return camera.conditionID1;
case GAMEOBJECT_TYPE_RITUAL: return ritual.conditionID1;
case GAMEOBJECT_TYPE_MAILBOX: return mailbox.conditionID1;
case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.conditionID1;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.conditionID1;
case GAMEOBJECT_TYPE_AURA_GENERATOR: return auraGenerator.conditionID1;
case GAMEOBJECT_TYPE_GUILD_BANK: return guildbank.conditionID1;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.conditionID1;
case GAMEOBJECT_TYPE_ITEM_FORGE: return itemForge.conditionID1;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.conditionID1;
default: return 0;
}
}
uint32 GetInteractRadiusOverride() const
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.InteractRadiusOverride;
case GAMEOBJECT_TYPE_BUTTON: return button.InteractRadiusOverride;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.InteractRadiusOverride;
case GAMEOBJECT_TYPE_CHEST: return chest.InteractRadiusOverride;
case GAMEOBJECT_TYPE_BINDER: return binder.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GENERIC: return generic.InteractRadiusOverride;
case GAMEOBJECT_TYPE_TRAP: return trap.InteractRadiusOverride;
case GAMEOBJECT_TYPE_CHAIR: return chair.InteractRadiusOverride;
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.InteractRadiusOverride;
case GAMEOBJECT_TYPE_TEXT: return text.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GOOBER: return goober.InteractRadiusOverride;
case GAMEOBJECT_TYPE_TRANSPORT: return transport.InteractRadiusOverride;
case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.InteractRadiusOverride;
case GAMEOBJECT_TYPE_CAMERA: return camera.InteractRadiusOverride;
case GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT: return moTransport.InteractRadiusOverride;
case GAMEOBJECT_TYPE_DUEL_ARBITER: return duelFlag.InteractRadiusOverride;
case GAMEOBJECT_TYPE_FISHINGNODE: return fishingNode.InteractRadiusOverride;
case GAMEOBJECT_TYPE_RITUAL: return ritual.InteractRadiusOverride;
case GAMEOBJECT_TYPE_MAILBOX: return mailbox.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GUARDPOST: return guardPost.InteractRadiusOverride;
case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.InteractRadiusOverride;
case GAMEOBJECT_TYPE_MEETINGSTONE: return meetingStone.InteractRadiusOverride;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.InteractRadiusOverride;
case GAMEOBJECT_TYPE_FISHINGHOLE: return fishingHole.InteractRadiusOverride;
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.InteractRadiusOverride;
case GAMEOBJECT_TYPE_CONTROL_ZONE: return controlZone.InteractRadiusOverride;
case GAMEOBJECT_TYPE_AURA_GENERATOR: return auraGenerator.InteractRadiusOverride;
case GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY: return dungeonDifficulty.InteractRadiusOverride;
case GAMEOBJECT_TYPE_BARBER_CHAIR: return barberChair.InteractRadiusOverride;
case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING: return destructibleBuilding.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GUILD_BANK: return guildbank.InteractRadiusOverride;
case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.InteractRadiusOverride;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.InteractRadiusOverride;
case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GARRISON_BUILDING: return garrisonBuilding.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GARRISON_PLOT: return garrisonPlot.InteractRadiusOverride;
case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.InteractRadiusOverride;
case GAMEOBJECT_TYPE_PHASEABLE_MO: return phaseableMO.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GARRISON_MONUMENT: return garrisonMonument.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GARRISON_SHIPMENT: return garrisonShipment.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GARRISON_MONUMENT_PLAQUE: return garrisonMonumentPlaque.InteractRadiusOverride;
case GAMEOBJECT_TYPE_ITEM_FORGE: return itemForge.InteractRadiusOverride;
case GAMEOBJECT_TYPE_UI_LINK: return UILink.InteractRadiusOverride;
case GAMEOBJECT_TYPE_KEYSTONE_RECEPTACLE: return KeystoneReceptacle.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.InteractRadiusOverride;
case GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD: return challengeModeReward.InteractRadiusOverride;
case GAMEOBJECT_TYPE_SIEGEABLE_MO: return siegeableMO.InteractRadiusOverride;
case GAMEOBJECT_TYPE_PVP_REWARD: return pvpReward.InteractRadiusOverride;
case GAMEOBJECT_TYPE_PLAYER_CHOICE_CHEST: return playerChoiceChest.InteractRadiusOverride;
case GAMEOBJECT_TYPE_LEGENDARY_FORGE: return legendaryForge.InteractRadiusOverride;
case GAMEOBJECT_TYPE_GARR_TALENT_TREE: return garrTalentTree.InteractRadiusOverride;
case GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST: return weeklyRewardChest.InteractRadiusOverride;
default: return 0;
}
}
uint32 GetRequireLOS() const
{
switch (type)
{
case GAMEOBJECT_TYPE_BUTTON: return button.requireLOS;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.requireLOS;
case GAMEOBJECT_TYPE_CHEST: return chest.requireLOS;
case GAMEOBJECT_TYPE_TRAP: return trap.requireLOS;
case GAMEOBJECT_TYPE_GOOBER: return goober.requireLOS;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.requireLOS;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.requireLOS;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.requireLOS;
default: return 0;
}
}
uint32 GetLockId() const
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.open;
case GAMEOBJECT_TYPE_BUTTON: return button.open;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.open;
case GAMEOBJECT_TYPE_CHEST: return chest.open;
case GAMEOBJECT_TYPE_TRAP: return trap.open;
case GAMEOBJECT_TYPE_GOOBER: return goober.open;
case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.open;
case GAMEOBJECT_TYPE_CAMERA: return camera.open;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.open;
case GAMEOBJECT_TYPE_FISHINGHOLE: return fishingHole.open;
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.open;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.open;
case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.open;
case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.open;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.open;
case GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD: return challengeModeReward.open;
case GAMEOBJECT_TYPE_PVP_REWARD: return pvpReward.open;
case GAMEOBJECT_TYPE_WEEKLY_REWARD_CHEST: return weeklyRewardChest.open;
default: return 0;
}
}
bool GetDespawnPossibility() const // despawn at targeting of cast?
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.noDamageImmune != 0;
case GAMEOBJECT_TYPE_BUTTON: return button.noDamageImmune != 0;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.noDamageImmune != 0;
case GAMEOBJECT_TYPE_GOOBER: return goober.noDamageImmune != 0;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.noDamageImmune != 0;
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.noDamageImmune != 0;
default: return true;
}
}
// Cannot be used/activated/looted by players under immunity effects (example: Divine Shield)
uint32 GetNoDamageImmune() const
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.noDamageImmune;
case GAMEOBJECT_TYPE_BUTTON: return button.noDamageImmune;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.noDamageImmune;
case GAMEOBJECT_TYPE_CHEST: return !chest.DamageImmuneOK;
case GAMEOBJECT_TYPE_GOOBER: return goober.noDamageImmune;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.noDamageImmune;
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.noDamageImmune;
default: return 0;
}
}
uint32 GetNotInCombat() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.notInCombat;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.notInCombat;
default: return 0;
}
}
uint32 GetCharges() const // despawn at uses amount
{
switch (type)
{
//case GAMEOBJECT_TYPE_TRAP: return trap.charges;
case GAMEOBJECT_TYPE_GUARDPOST: return guardPost.charges;
case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.charges;
default: return 0;
}
}
uint32 GetLinkedGameObjectEntry() const
{
switch (type)
{
case GAMEOBJECT_TYPE_BUTTON: return button.linkedTrap;
case GAMEOBJECT_TYPE_CHEST: return chest.linkedTrap;
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.linkedTrap;
case GAMEOBJECT_TYPE_GOOBER: return goober.linkedTrap;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.linkedTrap;
default: return 0;
}
}
uint32 GetAutoCloseTime() const
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.autoClose;
case GAMEOBJECT_TYPE_BUTTON: return button.autoClose;
case GAMEOBJECT_TYPE_TRAP: return trap.autoClose;
case GAMEOBJECT_TYPE_GOOBER: return goober.autoClose;
case GAMEOBJECT_TYPE_TRANSPORT: return transport.autoClose;
case GAMEOBJECT_TYPE_AREADAMAGE: return areaDamage.autoClose;
case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.autoClose;
case GAMEOBJECT_TYPE_PERKS_PROGRAM_CHEST: return PerksProgramChest.autoClose;
default: return 0;
}
}
uint32 GetLootId() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.chestLoot;
case GAMEOBJECT_TYPE_FISHINGHOLE: return fishingHole.chestLoot;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.chestLoot;
default: return 0;
}
}
uint32 GetGossipMenuId() const
{
switch (type)
{
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.gossipID;
case GAMEOBJECT_TYPE_GOOBER: return goober.gossipID;
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.gossipID;
case GAMEOBJECT_TYPE_ASSIST_ACTION: return assistAction.gossipID;
default: return 0;
}
}
std::set<uint32> GetEventScriptSet() const
{
std::set<uint32> eventSet;
switch (type)
{
case GAMEOBJECT_TYPE_CHEST:
eventSet.insert(chest.triggeredEvent);
break;
case GAMEOBJECT_TYPE_CHAIR:
eventSet.insert(chair.triggeredEvent);
break;
case GAMEOBJECT_TYPE_GOOBER:
eventSet.insert(goober.eventID);
break;
case GAMEOBJECT_TYPE_TRANSPORT:
eventSet.insert(transport.Reached1stfloor);
eventSet.insert(transport.Reached2ndfloor);
eventSet.insert(transport.Reached3rdfloor);
eventSet.insert(transport.Reached4thfloor);
eventSet.insert(transport.Reached5thfloor);
eventSet.insert(transport.Reached6thfloor);
eventSet.insert(transport.Reached7thfloor);
eventSet.insert(transport.Reached8thfloor);
eventSet.insert(transport.Reached9thfloor);
eventSet.insert(transport.Reached10thfloor);
break;
case GAMEOBJECT_TYPE_CAMERA:
eventSet.insert(camera.eventID);
break;
case GAMEOBJECT_TYPE_MAP_OBJ_TRANSPORT:
eventSet.insert(moTransport.startEventID);
eventSet.insert(moTransport.stopEventID);
break;
case GAMEOBJECT_TYPE_FLAGDROP:
eventSet.insert(flagDrop.eventID);
break;
case GAMEOBJECT_TYPE_CONTROL_ZONE:
eventSet.insert(controlZone.CaptureEventHorde);
eventSet.insert(controlZone.CaptureEventAlliance);
eventSet.insert(controlZone.ContestedEventHorde);
eventSet.insert(controlZone.ContestedEventAlliance);
eventSet.insert(controlZone.ProgressEventHorde);
eventSet.insert(controlZone.ProgressEventAlliance);
eventSet.insert(controlZone.NeutralEventHorde);
eventSet.insert(controlZone.NeutralEventAlliance);
break;
case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING:
eventSet.insert(destructibleBuilding.IntactEvent);
eventSet.insert(destructibleBuilding.DamagedEvent);
eventSet.insert(destructibleBuilding.DestroyedEvent);
eventSet.insert(destructibleBuilding.RebuildingEvent);
eventSet.insert(destructibleBuilding.DamageEvent);
break;
case GAMEOBJECT_TYPE_CAPTURE_POINT:
eventSet.insert(capturePoint.ContestedEventHorde);
eventSet.insert(capturePoint.CaptureEventHorde);
eventSet.insert(capturePoint.DefendedEventHorde);
eventSet.insert(capturePoint.ContestedEventAlliance);
eventSet.insert(capturePoint.CaptureEventAlliance);
eventSet.insert(capturePoint.DefendedEventAlliance);
break;
case GAMEOBJECT_TYPE_GATHERING_NODE:
eventSet.insert(gatheringNode.triggeredEvent);
break;
default:
break;
}
// Erase invalid value added from unused GameEvents data fields
eventSet.erase(0);
return eventSet;
}
uint32 GetTrivialSkillHigh() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.trivialSkillHigh;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.trivialSkillHigh;
default: return 0;
}
}
uint32 GetTrivialSkillLow() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.trivialSkillLow;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.trivialSkillLow;
default: return 0;
}
}
uint32 GetCooldown() const // Cooldown preventing goober and traps to cast spell
{
switch (type)
{
case GAMEOBJECT_TYPE_TRAP: return trap.cooldown;
case GAMEOBJECT_TYPE_GOOBER: return goober.cooldown;
case GAMEOBJECT_TYPE_ASSIST_ACTION: return assistAction.cooldown;
default: return 0;
}
}
bool IsInfiniteGameObject() const
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.InfiniteAOI != 0;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.InfiniteAOI != 0;
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.InfiniteAOI != 0;
case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING: return true;
case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.InfiniteAOI != 0;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.InfiniteAOI != 0;
case GAMEOBJECT_TYPE_GARRISON_BUILDING: return true;
case GAMEOBJECT_TYPE_PHASEABLE_MO: return true;
case GAMEOBJECT_TYPE_SIEGEABLE_MO: return true;
case GAMEOBJECT_TYPE_CLIENT_MODEL: return newflag.InfiniteAOI != 0;
default: return false;
}
}
bool IsGiganticGameObject() const
{
switch (type)
{
case GAMEOBJECT_TYPE_DOOR: return door.GiganticAOI != 0;
case GAMEOBJECT_TYPE_BUTTON: return button.GiganticAOI != 0;
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.GiganticAOI != 0;
case GAMEOBJECT_TYPE_CHEST: return chest.GiganticAOI != 0;
case GAMEOBJECT_TYPE_GENERIC: return generic.GiganticAOI != 0;
case GAMEOBJECT_TYPE_TRAP: return trap.GiganticAOI != 0;
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.GiganticAOI != 0;
case GAMEOBJECT_TYPE_GOOBER: return goober.GiganticAOI != 0;
case GAMEOBJECT_TYPE_TRANSPORT: return true;
case GAMEOBJECT_TYPE_SPELLCASTER: return spellCaster.GiganticAOI != 0;
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.GiganticAOI != 0;
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.GiganticAOI != 0;
case GAMEOBJECT_TYPE_CONTROL_ZONE: return controlZone.GiganticAOI != 0;
case GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY: return dungeonDifficulty.GiganticAOI != 0;
case GAMEOBJECT_TYPE_TRAPDOOR: return trapdoor.GiganticAOI != 0;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.GiganticAOI != 0;
case GAMEOBJECT_TYPE_GARRISON_PLOT: return true;
case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.GiganticAOI != 0;
case GAMEOBJECT_TYPE_GARRISON_SHIPMENT: return garrisonShipment.GiganticAOI != 0;
case GAMEOBJECT_TYPE_UI_LINK: return UILink.GiganticAOI != 0;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.GiganticAOI != 0;
case GAMEOBJECT_TYPE_PLAYER_CHOICE_CHEST: return gatheringNode.GiganticAOI != 0;
case GAMEOBJECT_TYPE_CLIENT_MODEL: return gatheringNode.GiganticAOI != 0;
default: return false;
}
}
bool IsLargeGameObject() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.LargeAOI != 0;
case GAMEOBJECT_TYPE_GENERIC: return generic.LargeAOI != 0;
case GAMEOBJECT_TYPE_GOOBER: return goober.LargeAOI != 0;
case GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY: return dungeonDifficulty.LargeAOI != 0;
case GAMEOBJECT_TYPE_GARRISON_SHIPMENT: return garrisonShipment.LargeAOI != 0;
case GAMEOBJECT_TYPE_ITEM_FORGE: return itemForge.LargeAOI != 0;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.LargeAOI != 0;
case GAMEOBJECT_TYPE_CLIENT_MODEL: return clientModel.LargeAOI != 0;
default: return false;
}
}
uint32 GetServerOnly() const
{
switch (type)
{
case GAMEOBJECT_TYPE_GENERIC: return generic.serverOnly;
case GAMEOBJECT_TYPE_TRAP: return trap.serverOnly;
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.serverOnly;
case GAMEOBJECT_TYPE_AURA_GENERATOR: return auraGenerator.serverOnly;
default: return 0;
}
}
uint32 GetSpawnVignette() const
{
switch (type)
{
case GAMEOBJECT_TYPE_CHEST: return chest.SpawnVignette;
case GAMEOBJECT_TYPE_GOOBER: return goober.SpawnVignette;
case GAMEOBJECT_TYPE_NEW_FLAG: return newflag.SpawnVignette;
case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.SpawnVignette;
case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.SpawnVignette;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.SpawnVignette;
default: return 0;
}
}
bool ClearObjectVignetteonOpening() const
{
switch (type)
{
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.ClearObjectVignetteonOpening != 0;
default: return false;
}
}
uint32 GetSpellFocusType() const
{
switch (type)
{
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.spellFocusType;
case GAMEOBJECT_TYPE_UI_LINK: return UILink.spellFocusType;
default: return 0;
}
}
uint32 GetSpellFocusRadius() const
{
switch (type)
{
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.radius;
case GAMEOBJECT_TYPE_UI_LINK: return UILink.radius;
default: return 0;
}
}
bool IsDisplayMandatory() const
{
switch (type)
{
case GAMEOBJECT_TYPE_SPELL_FOCUS:
case GAMEOBJECT_TYPE_MULTI:
case GAMEOBJECT_TYPE_SIEGEABLE_MULTI:
return false;
default:
return true;
}
}
void InitializeQueryData();
WorldPacket BuildQueryData(LocaleConstant loc) const;
};
// From `gameobject_template_addon`, `gameobject_overrides`
struct GameObjectOverride
{
uint32 Faction = 0;
uint32 Flags = 0;
};
// From `gameobject_template_addon`
struct GameObjectTemplateAddon : public GameObjectOverride
{
uint32 Mingold = 0;
uint32 Maxgold = 0;
std::array<uint32, 5> ArtKits = { };
uint32 WorldEffectID = 0;
uint32 AIAnimKitID = 0;
};
struct GameObjectLocale
{
std::vector<std::string> Name;
std::vector<std::string> CastBarCaption;
std::vector<std::string> Unk1;
};
// `gameobject_addon` table
struct GameObjectAddon
{
QuaternionData ParentRotation;
InvisibilityType invisibilityType;
uint32 InvisibilityValue;
uint32 WorldEffectID;
uint32 AIAnimKitID;
};
// `gameobject` table
struct GameObjectData : public SpawnData
{
GameObjectData() : SpawnData(SPAWN_TYPE_GAMEOBJECT) { }
QuaternionData rotation;
uint32 animprogress = 0;
GOState goState = GO_STATE_ACTIVE;
uint32 artKit = 0;
};
enum class GameObjectActions : uint32
{
// Name from client executable // Comments
None = 0, // -NONE-
AnimateCustom0 = 1, // Animate Custom0
AnimateCustom1 = 2, // Animate Custom1
AnimateCustom2 = 3, // Animate Custom2
AnimateCustom3 = 4, // Animate Custom3
Disturb = 5, // Disturb // Triggers trap
Unlock = 6, // Unlock // Resets GO_FLAG_LOCKED
Lock = 7, // Lock // Sets GO_FLAG_LOCKED
Open = 8, // Open // Sets GO_STATE_ACTIVE
OpenAndUnlock = 9, // Open + Unlock // Sets GO_STATE_ACTIVE and resets GO_FLAG_LOCKED
Close = 10, // Close // Sets GO_STATE_READY
ToggleOpen = 11, // Toggle Open
Destroy = 12, // Destroy // Sets GO_STATE_DESTROYED
Rebuild = 13, // Rebuild // Resets from GO_STATE_DESTROYED
Creation = 14, // Creation
Despawn = 15, // Despawn
MakeInert = 16, // Make Inert // Disables interactions
MakeActive = 17, // Make Active // Enables interactions
CloseAndLock = 18, // Close + Lock // Sets GO_STATE_READY and sets GO_FLAG_LOCKED
UseArtKit0 = 19, // Use ArtKit0 // 46904: 121
UseArtKit1 = 20, // Use ArtKit1 // 36639: 81, 46903: 122
UseArtKit2 = 21, // Use ArtKit2
UseArtKit3 = 22, // Use ArtKit3
SetTapList = 23, // Set Tap List
GoTo1stFloor = 24, // Go to 1st floor
GoTo2ndFloor = 25, // Go to 2nd floor
GoTo3rdFloor = 26, // Go to 3rd floor
GoTo4thFloor = 27, // Go to 4th floor
GoTo5thFloor = 28, // Go to 5th floor
GoTo6thFloor = 29, // Go to 6th floor
GoTo7thFloor = 30, // Go to 7th floor
GoTo8thFloor = 31, // Go to 8th floor
GoTo9thFloor = 32, // Go to 9th floor
GoTo10thFloor = 33, // Go to 10th floor
UseArtKit4 = 34, // Use ArtKit4
PlayAnimKit = 35, // Play Anim Kit "{AnimKit}"
OpenAndPlayAnimKit = 36, // Open + Play Anim Kit "{AnimKit}"
CloseAndPlayAnimKit = 37, // Close + Play Anim Kit "{AnimKit}"
PlayOneShotAnimKit = 38, // Play One-shot Anim Kit "{AnimKit}"
StopAnimKit = 39, // Stop Anim Kit
OpenAndStopAnimKit = 40, // Open + Stop Anim Kit
CloseAndStopAnimKit = 41, // Close + Stop Anim Kit
PlaySpellVisual = 42, // Play Spell Visual "{SpellVisual}"
StopSpellVisual = 43, // Stop Spell Visual
SetTappedToChallengePlayers = 44, // Set Tapped to Challenge Players
Max
};
#endif // GameObjectData_h__
|