-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathD2DataTables.h
1746 lines (1707 loc) · 46.1 KB
/
D2DataTables.h
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
/*==========================================================
* D2Ex2
* https://github.com/lolet/D2Ex2
* ==========================================================
* Copyright (c) 2011-2014 Bartosz Jankowski
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ==========================================================
*/
struct ArenaTxt
{
DWORD dwSuicide;
DWORD dwPlayerKill;
DWORD dwPKPercent;
DWORD dwMonsterKill;
DWORD dwPlayerDeath;
DWORD dwPlayerDeathPercent;
DWORD dwMonsterDeath;
};
#pragma pack(push,1)
struct LvlMazeTxt
{
DWORD dwLevelId; //0x00
DWORD dwRooms[3]; //0x04
DWORD dwSizeX; //0x10
DWORD dwSizeY; //0x14
DWORD dwMerge; //0x18
};
struct LvlWarpTxt
{
DWORD dwLevelId;
DWORD dwSelectX;
DWORD dwSelectY;
DWORD dwSelectDX;
DWORD dwSelectDY;
DWORD dwExitWalkX;
DWORD dwExitWalkY;
DWORD dwOffsetX;
DWORD dwOffsetY;
DWORD dwLitVersion;
DWORD dwTiles;
DWORD dwDirection;
};
struct PropertiesTxt
{
WORD wProp; //0x00
BYTE nSet[8]; //0x02
WORD wVal[7]; //0x0A
BYTE nFunc[8]; //0x18
WORD wStat[7]; //0x20
};
struct ItemsTxtStat
{
DWORD dwProp; //0x00
DWORD dwPar; //0x04
int dwMin; //0x08
int dwMax; //0x0C
};
/*
Valid for Automagic.txt, MagicSuffix.txt, MagicPrefix.txt
*/
struct AutoMagicTxt
{
char szName[31]; //0x00
BYTE _1; //0x1F
WORD wIndex; //0x20
WORD wVersion; //0x22
ItemsTxtStat hMods[3]; //0x24
WORD wSpawnable; //0x54
WORD wTransformColor; //0x56
DWORD dwLevel; //0x58
DWORD dwGroup; //0x5C
DWORD dwMaxLevel; //0x60
BYTE nRare; //0x64
BYTE nLevelReq; //0x65
BYTE nClassSpecific; //0x66
BYTE nClass; //0x67
WORD wClassLevelReq; //0x68
WORD wIType[7]; //0x6A
WORD wEType[5]; //0x78
BYTE bFrequency; //0x82
BYTE _2; //0x83
DWORD dwDivide; //0x84
DWORD dwMultiply; //0x88
DWORD dwAdd; //0x8C
};
struct UniqueItemsTxt
{
WORD _1; //0x00
char szName[34]; //0x02
DWORD dwVersion; //0x24
union
{
DWORD dwCode;
char szCode[4];
}; //0x28
DWORD dwUniqueItemFlags; //0x2C
DWORD dwRarity; //0x30
WORD wLvl; //0x34
WORD wLvlReq; //0x36
BYTE nChrTransform; //0x38
BYTE nInvTransform; //0x39
char szFlippyFile[32]; //0x3A
char szInvFile[34]; //0x5A
DWORD dwCostMult; //0x7C
DWORD dwCostAdd; //0x80
WORD wDropSound; //0x84
WORD wUseSound; //0x86
DWORD dwDropSfxFrame; //0x88
ItemsTxtStat hStats[12]; //0x90
};
struct SetItemsTxt
{
WORD wSetItemId; //0x00
char szName[32]; //0x02
WORD _1; //0x22
DWORD dwTblIndex; //0x24
union
{
DWORD dwCode;
char szCode[4];
}; //0x28
DWORD _2; //0x2C
WORD wLvl; //0x30
WORD wLvlReq; //0x32
DWORD dwRarity; //0x34
DWORD dwCostMult; //0x38
DWORD dwCostAdd; //0x3C
BYTE nChrTransform; //0x40
BYTE nInvTransform; //0x41
char szFlippyFile[32]; //0x42
char szInvFile[32]; //0x62
WORD wDropSound; //0x82
WORD wUseSound; //0x84
BYTE nDropSfxFrame; //0x86
BYTE nAddFunc; //0x87
ItemsTxtStat hStats[9]; //0x88
ItemsTxtStat hGreenStats[10]; //0x118
};
struct RunesTxt
{
char szName[64]; //0x00
char szRuneName[64]; //0x40
BYTE bComplete; //0x80
BYTE bServer; //0x81
DWORD dwRwId; //0x82
WORD dwIType[6]; //0x86
WORD dwEType[3]; //0x92
DWORD dwRune[6]; //0x98
ItemsTxtStat hStats[7]; //0xB0
};
struct PetTypesTxt
{
WORD pet_type; // 0x0
struct {
BYTE warp:1; // 0x4
BYTE range:1; // 0x4
BYTE partysend:1; // 0x4
BYTE unsummon:1; // 0x4
BYTE automap:1; // 0x4
BYTE drawhp:1; // 0x4
} dwFlags;
BYTE _pad[5];
WORD group; // 0x8
WORD basemax; // 0xa
WORD name; // 0xc
BYTE icontype; // 0xe
char baseicon[32]; // 0xf
char micon1[32]; // 0x2f
char micon2[32]; // 0x4f
char micon3[32]; // 0x6f
char micon4[32]; // 0x8f
BYTE _1[3];
WORD mclass1; // 0xb2
WORD mclass2; // 0xb4
WORD mclass3; // 0xb6
WORD mclass4; // 0xb8
};
/*
Time-saving credit goes to Mnw1995
http://d2mods.info/forum/viewtopic.php?f=8&t=61189
Isn't simpler now?
*/
struct InventoryLayout //sizeof 0x14
{
DWORD dwLeft; //0x00
DWORD dwRight; //0x04
DWORD dwTop; //0x08
DWORD dwBottom; //0x0C
union
{
struct
{
BYTE nGridX; //0x10
BYTE nGridY; //0x11
};
struct
{
BYTE nWidth; //0x10
BYTE nHeight; //0x11
};
};
WORD _align; //0x12
};
struct InventoryTxt //sizeof 0xF0
{
InventoryLayout Inventory; //0x00
InventoryLayout Grid; //0x14
union
{
struct
{
InventoryLayout RightArm; //0x28
InventoryLayout Torso; //0x3C
InventoryLayout LeftArm; //0x50
InventoryLayout Head; //0x64
InventoryLayout Neck; //0x78
InventoryLayout RightHand; //0x8C
InventoryLayout LeftHand; //0xA0
InventoryLayout Belt; //0xB4
InventoryLayout Feet; //0xC8
InventoryLayout Gloves; //0xDC
};
InventoryLayout hItem[9];
};
};
struct BeltBox
{
DWORD dwBoxLeft; //0x00
DWORD dwBoxRight; //0x04
DWORD dwBoxTop; //0x08
DWORD dwBoxBottom; //0x0C
};
struct BeltsTxt //sizeof 0x108
{
DWORD _unusedName; //0x00 placeholder for name field
DWORD dwNumBoxes; //0x04
BeltBox hBox[16]; //0x08
};
struct AutomapTxt
{
char szLevelName[16]; //0x00
char szTileName[8]; //0x10
BYTE nStyle; //0x18
BYTE nStartSequence; //0x19
WORD wEndSequence; //0x1A
DWORD dwCel1; //0x1C
DWORD dwCel2; //0x20
DWORD dwCel3; //0x24
DWORD dwCel4; //0x28
};
struct BodyLocsTxt
{
union
{
DWORD dwCode; //0x00
char szCode[4]; //0x00
};
};
struct StatesTxt
{
WORD wState; //0x00
WORD wOverlay[4]; //0x02
WORD wCastOverlay; //0x0A
WORD wRemoveOverlay; //0x0C
WORD wPrgOverlay; //0x0E
struct {
BYTE bNosend : 1; //1
BYTE bAura : 1; //2
BYTE bHide : 1; //3
BYTE bTransform : 1; //4
BYTE bPgsv : 1; //5
BYTE bActive : 1; //6
BYTE bRemhit : 1; //7
BYTE bDamblue : 1; //8
BYTE bDamred : 1; //9
BYTE bAttblue : 1; //10
BYTE bAttred : 1; //11
BYTE bCurse : 1; //12
BYTE bCurable : 1; //13
BYTE bPlrstaydeath : 1; //14
BYTE bMonstaydeath : 1; //15
BYTE bBossstaydeath : 1; //16
BYTE bDisguise : 1; //17
BYTE bRestrict : 1; //18
BYTE bBlue : 1; //19
BYTE bArmblue : 1; //20
BYTE bRfblue : 1; //21
BYTE bRcblue : 1; //22
BYTE bRlblue : 1; //23
BYTE bRpblue : 1; //24
BYTE bStambarblue : 1; //25
BYTE bArmred : 1; //26
BYTE bRfred : 1; //27
BYTE bRcred : 1; //28
BYTE bRlred : 1; //29
BYTE bRpred : 1; //30
BYTE bExp : 1; //31
BYTE bShatter : 1; //32
} bStateFlags; //0x10
struct {
BYTE bLife : 1; //1
BYTE bUdead : 1; //2
BYTE bGreen : 1; //3
BYTE bNooverlays : 1; //4
BYTE bNoclear : 1; //5
BYTE bBossinv : 1; //6
BYTE bMeleeonly : 1; //7
BYTE bNotondead : 1; //8
} bStateFlagsEx; //0x14
BYTE _1[3]; //0x15
WORD wStat; //0x18
WORD wSetFunc; //0x1A
WORD wRemFunc; //0x1C
WORD wGroup; //0x1E
BYTE nColorPri; //0x20
BYTE nColorShift; //0x21
BYTE nLightRGB[4]; //0x22
WORD wOnSound; //0x26
WORD wOffSound; //0x28
WORD wItemType; //0x2A
BYTE nItemTrans; //0x2C
BYTE nGfxType; //0x2D
WORD wGfxClass; //0x2E
WORD wCltEvent; //0x30
WORD wCltEventFunc; //0x32
WORD wCltActiveFunc; //0x34
WORD wSrvActiveFunc; //0x36
WORD wSkill; //0x38
WORD wMissile; //0x3A
};
struct ObjectTxt
{
CHAR szName[0x40]; //0x00
WCHAR wszName[0x40]; //0x40
BYTE _1[4]; //0xC0
BYTE nSelectable0; //0xC4
BYTE _2[0x87]; //0xC5
BYTE nOrientation; //0x14C
BYTE _2b[0x19]; //0x14D
BYTE nSubClass; //0x166
BYTE _3[0x11]; //0x167
BYTE nParm0; //0x178
BYTE _4[0x39]; //0x179
BYTE nPopulateFn; //0x1B2
BYTE nOperateFn; //0x1B3
BYTE _5[8]; //0x1B4
DWORD nAutoMap; //0x1BB
};
struct LevelsTxt
{
WORD wLevelNo;
BYTE nPal;
BYTE nAct;
BYTE nTeleport;
BYTE nRain;
BYTE nMud;
BYTE nNoPer;
BYTE nIsInside;
BYTE nDrawEdges;
WORD unk0x0A;
DWORD dwWarpDist;
WORD wMonLvl1;
WORD wMonLvl2;
WORD wMonLvl3;
WORD wMonLvl1Ex;
WORD wMonLvl2Ex;
WORD wMonLvl3Ex;
DWORD dwMonDen[3];
BYTE nMonUMin[3];
BYTE nMonUMax[3];
BYTE nMonWndr;
BYTE nMonSpcWalk;
BYTE nQuest;
BYTE nRangedSpawn;
DWORD dwNumMon;
WORD wMon[25];
WORD wNMon[25];
WORD wUMon[25];
WORD wCMon[4];
WORD wCPct[4];
WORD wCAmt[4];
BYTE nWaypoint;
BYTE nObjGroup[8];
BYTE nObjPrb[8];
char szLevelName[40];
char szLevelWarp[40];
char szEntryFile[41];
wchar_t wszLevelName[40];
wchar_t wszLevelWarp[41];
DWORD dwThemes;
DWORD dwFloorFilter;
DWORD dwBlankScreen;
DWORD dwSoundEnv;
};
struct ItemStatCostTxt //size 0x144
{
WORD wStat; //0x00
WORD _1; //0x02
struct {
BYTE bSendOther : 1; //1
BYTE bSigned : 1; //2
BYTE bDamageRelated : 1; //3
BYTE bItemSpecific : 1; //4
BYTE bDirect : 1; //5
BYTE _1 : 1; //6
BYTE _2 : 1; //7
BYTE _3 : 1; //8
BYTE _4 : 1; //9
BYTE bUpdateanimrate : 1; //10
BYTE bFmin : 1; //11
BYTE bFcallback : 1; //12
BYTE bSaved : 1; //13
BYTE bCsvsigned : 1; //14
BYTE _6 : 1; //15
BYTE _7 : 1; //16
} bItemStatFlags; //0x04
WORD _2; //0x06
BYTE bSendBits; //0x08
BYTE bSendParamBits; //0x09
BYTE bCsvBits; //0x0A
BYTE bCsvParam; //0x0B
DWORD dwDivide; //0x0C
DWORD dwMultiply; //0x10
DWORD dwAdd; //0x14
BYTE bValShift; //0x18
BYTE bSaveBits; //0x19
BYTE b09SaveBits; //0x1A
BYTE _3; //0x1B
DWORD dwSaveAdd; //0x1C
DWORD dw09SaveAdd; //0x20
DWORD dwSaveParamBits; //0x24
DWORD _4; //0x28
DWORD dwMinAccr; //0x2C
BYTE bEncode; //0x30
BYTE _5; //0x31
WORD wMaxAtat; //0x32
WORD wDescPriority; //0x34
BYTE bDescFunc; //0x36
BYTE bDescVal; //0x37
WORD wDescStrPos; //0x38
WORD wDescStrNeg; //0x3A
WORD wDescStr2; //0x3C
WORD wDGrp; //0x3E
BYTE bDGrpFunc; //0x40
BYTE bDGrpVal; //0x41
WORD wDGrpStrPos; //0x42
WORD wDGrpStrNeg; //0x44
WORD wDGrpStr2; //0x46
WORD wItemEvent1; //0x48
WORD wItemEvent2; //0x4A
WORD wItemEventFunc1; //0x4C
WORD wItemEventFunc2; //0x4E
DWORD bKeepZero; //0x50
BYTE bOp; //0x54
BYTE bOpParam; //0x55
WORD wOpBase; //0x56
WORD wOpStat1; //0x58
WORD wOpStat2; //0x5A
WORD wOpStat3; //0x5C
BYTE _Stuff[230]; //0x5E
};
struct MissilesTxt
{
DWORD dwId; //0x00
DWORD dwMissileFlags; //0x04
WORD wCltDoFunc; //0x08
WORD wCltHitFunc; //0x0A
WORD wSrvDoFunc; //0x0C
WORD wSrvHitFunc; //0x0E
WORD wSrvDmgFunc; //0x10
WORD wTravelSound; //0x12
WORD wHitSound; //0x14
WORD wExplosionMissile; //0x16
WORD wSubMissile[3]; //0x18
WORD wCltSubMissile[3]; //0x1E
WORD wHitSubMissile[4]; //0x24
WORD wCltHitSubMissile[4]; //0x2C
WORD wProgSound; //0x34
WORD wProgOverlay; //0x36
DWORD dwParam[5]; //0x38
DWORD dwHitPar[3]; //0x4C
DWORD dwCltParam[5]; //0x58
DWORD dwCltHitPar[3]; //0x6C
DWORD dwDmgParam[2]; //0x78
DWORD dwSrvCalc; //0x80
DWORD dwCltCalc; //0x84
DWORD dwHitCalc; //0x88
DWORD dwCltHitCalc; //0x8C
DWORD dwDmgCalc; //0x90
WORD wHitClass; //0x94
WORD wRange; //0x96
WORD wLevRange; //0x98
BYTE nVel; //0x9A
BYTE nVelLev; //0x9B
WORD wMaxVel; //0x9C
WORD wAccel; //0x9E
WORD wAnimRate; //0xA0
WORD wXoffset; //0xA2
WORD wYoffset; //0xA4
WORD wZoffset; //0xA6
DWORD dwHitFlags; //0xA8
WORD wResultFlags; //0xAC
WORD wKnockBack; //0xAE
DWORD dwMinDamage; //0xB0
DWORD dwMaxDamage; //0xB4
DWORD dwMinLevDam[5]; //0xB8
DWORD dwMaxLevDam[5]; //0xCC
DWORD dwDmgSymPerCalc; //0xE0
DWORD dwElemType; //0xE4
DWORD dwElemMin; //0xE8
DWORD dwElemMax; //0xEC
DWORD dwMinElemLev[5]; //0xF0
DWORD dwMaxElemLev[5]; //0x104
DWORD dwElemDmgSymPerCalc; //0x118
DWORD dwElemLen; //0x11C
DWORD dwElemLevLen[3]; //0x120
BYTE unk0x12C; //0x12C
BYTE nSrcDamage; //0x12D
BYTE nSrcMissDmg; //0x12E
BYTE nHoly; //0x12F
BYTE nLight; //0x130
BYTE nFlicker; //0x131
BYTE nRGB[3]; //0x132
BYTE nInitSteps; //0x135
BYTE nActivate; //0x136
BYTE nLoopAnim; //0x137
char szCelFile[64]; //0x138
DWORD dwAnimLen; //0x178
DWORD dwRandStart; //0x17C
BYTE nSubLoop; //0x180
BYTE nSubStart; //0x181
BYTE nSubStop; //0x182
BYTE nCollideType; //0x183
BYTE nCollision; //0x184
BYTE nClientCol; //0x185
BYTE nCollideKill; //0x186
BYTE nCollideFriend; //0x187
BYTE nNextHit; //0x188
BYTE nNextDelay; //0x189
BYTE nSize; //0x18A
BYTE nToHit; //0x18B
BYTE nAlwaysExplode; //0x18C
BYTE nTrans; //0x18D
WORD wQty; //0x18E
DWORD dwSpecialSetup; //0x190
WORD wSkill; //0x194
BYTE nHitShift; //0x196
BYTE unk0x197[5]; //0x197
DWORD dwDamageRate; //0x19C
BYTE nNumDirections; //0x1A0
BYTE nAnimSpeed; //0x1A1
BYTE nLocalBlood; //0x1A2
BYTE unk; //0x1A3
};
#pragma pack(pop)
struct DifficultyLevelsTxt //size 0x58
{
DWORD ResistPenalty; //0x00
DWORD DeathExpPenalty; //0x04
DWORD UberCodeOddsNorm; //0x08
DWORD UberCodeOddsGood; //0x0C
DWORD MonsterSkillBonus; //0x10
DWORD MonsterFreezeDiv; //0x14
DWORD MonsterColdDiv; //0x18
DWORD AiCurseDiv; //0x1C
DWORD UltraCodeOddsNorm; //0x20
DWORD UltraCodeOddsGood; //0x24
DWORD LifeStealDiv; //0x28
DWORD ManaStealDiv; //0x2C
DWORD UniqueDmgBonus; //0x30
DWORD ChampionDmgBonus; //0x34
DWORD HireableBossDmgPercent; //0x38
DWORD MonsterCEDmgPercent; //0x3C
DWORD StaticFieldMin; //0x40
DWORD GambleRare; //0x44
DWORD GambleSet; //0x48
DWORD GambleUniq; //0x4C
DWORD GambleUber; //0x50
DWORD GambleUltra; //0x54
};
struct CubeInputItem //size (0x08)
{
struct {
BYTE bCodeFlag:1; //1
BYTE bClassFlag:1; //2
BYTE bAnyFlag:1; //3
BYTE bSocketFlag:1; //4
BYTE bNoEtherealFlag:1; //5
BYTE bRepairFlag:1; //6
BYTE bUniqueItemNameFlag:1; //7
BYTE bUpgFlag:1; //8
} bInputFlags; //0x00
BYTE ItemType; //0x01
WORD Item; //0x02
WORD ItemID; //0x04
BYTE Quality; //0x06
BYTE Quantity; //0x07
};
struct CubeOutputItem //size 0x54
{
BYTE bItemFlags; //0x00
BYTE ItemType; //0x01
WORD Item; //0x02
WORD ItemID; //0x04
union
{
struct
{
BYTE nQuality;
BYTE nQuantity;
};
struct
{
BYTE nLevel;
BYTE nAct;
}; //for CUBE_OUTPUT_PORTAL
WORD nParam; //0x06
};
BYTE Type; //0x08
BYTE Lvl; //0x09
BYTE PLvl; //0x0A
BYTE ILvl; //0x0B
WORD PrefixId[3]; //0x0C
WORD SuffixId[3]; //0x12
struct { //size 0x0C
DWORD dwMod; //0x00
WORD wModParam; //0x04
WORD wModMin; //0x06
WORD wModMax; //0x08
WORD bModChance; //0x0A
} sMods[5]; //0x18
};
struct CubeMainTxt //size 0x148
{
BYTE bEnabled; //0x00
BYTE bLadder; //0x01
BYTE bMindiff; //0x02
BYTE bClass; //0x03
BYTE bOp; //0x04
BYTE _1[3]; //0x05
DWORD dwParam; //0x08
DWORD dwValue; //0x0C
WORD bNuminputs; //0x10
WORD wVersion; //0x12
CubeInputItem InputItem[7]; //0x14
CubeOutputItem OutputItem[3];//0x4C
};
struct CharStatsTxt
{
char szwClass[32]; //0x0
char szClass[15]; //0x20
BYTE bStr; //0x30
BYTE bDex; //0x31
BYTE bEne; //0x32
BYTE bVita; //0x33
BYTE bStamina; //0x34
BYTE bHpAdd; //0x35
BYTE bPercentStr; //0x36
BYTE bPercentInt; //0x37
BYTE bPercentDex; //0x38
BYTE bPercentVit; //0x39
BYTE bManaRegen; //0x3A
BYTE _1; //0x3B
DWORD dwToHitFactor; //0x3C
BYTE bWalkVelocity; //0x40
BYTE bRunVelocity; //0x41
BYTE bRunDrain; //0x42
BYTE bLifePerLevel; //0x43
BYTE bStaminaPerLevel; //0x44
BYTE bManaPerLevel; //0x45
BYTE bLifePerVitality; //0x46
BYTE bStaminaPerVitality; //0x47
BYTE bManaPerMagic; //0x48
BYTE bBlockFactor; //0x49
BYTE _2[2]; //0x4A
DWORD dwBaseWClass; //0x4C
BYTE bStatPerLevel; //0x50
BYTE _3; //0x51
WORD wStrAllSkills; //0x52
WORD wStrSkillTab1; //0x54
WORD wStrSkillTab2; //0x56
WORD wStrSkillTab3; //0x58
WORD wStrClassOnly; //0x5A
DWORD dwItem1; //0x5C
BYTE bItem1loc; //0x60
BYTE bItem1count; //0x61
BYTE _4[2]; //0x62
DWORD dwItem2; //0x64
BYTE bItem2loc; //0x68
BYTE bItem2count; //0x69
BYTE _5[2]; //0x6A
DWORD dwItem3; //0x6C
BYTE bItem3loc; //0x70
BYTE bItem3count; //0x71
BYTE _6[2]; //0x72
DWORD dwItem4; //0x74
BYTE bItem4loc; //0x78
BYTE bItem4count; //0x79
BYTE _7[2]; //0x7A
DWORD dwItem5; //0x7C
BYTE bItem5loc; //0x80
BYTE bItem5count; //0x81
BYTE _8[2]; //0x82
DWORD dwItem6; //0x84
BYTE bItem6loc; //0x88
BYTE bItem6count; //0x89
BYTE _9[2]; //0x8A
DWORD dwItem7; //0x8C
BYTE bItem7loc; //0x90
BYTE bItem7count; //0x91
BYTE _10[2]; //0x92
DWORD dwItem8; //0x94
BYTE bItem8loc; //0x98
BYTE bItem8count; //0x99
BYTE _11[2]; //0x9A
DWORD dwItem9; //0x9C
BYTE bItem9loc; //0xA0
BYTE bItem9count; //0xA1
BYTE _12[2]; //0xA2
DWORD dwItem10; //0xA4
BYTE bItem10loc; //0xA8
BYTE bItem10count; //0xA9
BYTE _13[2]; //0xAA
WORD wStartSkill; //0xAC
WORD wSkill1; //0xAE
WORD wSkill2; //0xB0
WORD wSkill3; //0xB2
WORD wSkill4; //0xB4
WORD wSkill5; //0xB6
WORD wSkill6; //0xB8
WORD wSkill7; //0xBA
WORD wSkill8; //0xBC
WORD wSkill9; //0xBE
WORD wSkill10; //0xC0
};
struct MonStatsTxt // size 0x1A8
{
WORD wId; //0x00
WORD wBaseId; //0x02
WORD wNextInClass; //0x04
WORD wNameStr; //0x06
WORD wDescStr; //0x08
WORD _1a; //0x0A
struct {
BYTE bisSpawn:1; //1
BYTE bisMelee:1; //2
BYTE bnoRatio:1; //3
BYTE bOpenDoors:1; //4
BYTE bSetBoss:1; //5
BYTE bBossXfer:1; //6
BYTE bBossXfer2:1; //7
BYTE bPrimeEvil:1; //8
BYTE bNPC:1; //9
BYTE bInteract:1; //10
BYTE binTown:1; //11
BYTE blUndead:1; //12
BYTE bhUndead:1; //13
BYTE bDemon:1; //14
BYTE bFlying:1; //15
BYTE bKillable:1; //16
BYTE bSwitchAI:1; //17
BYTE bNoMultiShot:1; //18
BYTE bNeverCount:1; //19
BYTE bPetIgnore:1; //20
BYTE bDeathDmg:1; //21
BYTE bGenericSpawn:1; //22
BYTE bZoo:1; //23
BYTE bPlaceSpawn:1; //24
BYTE bInventory:1; //25
BYTE bEnabled:1; //26
BYTE bNoShldBlock:1; //27
BYTE bNoAura:1; //28
BYTE bRangedType:1; //29
} dwFlags; //0x0C
DWORD dwCode; //0x10
WORD wMonSound; //0x14
WORD wUMonSound; //0x16
WORD wMonStatsEx; //0x18
WORD wMonProp; //0x1A
WORD wMonType; //0x1C
WORD wAI; //0x1E
WORD wSpawn; //0x20
BYTE bSpawnX; //0x22
BYTE bSpawnY; //0x23
WORD bSpawnMode; //0x24
WORD wMinion1; //0x26
WORD wMinion2; //0x28
WORD _1; //0x2A
BYTE bPartyMin; //0x2C
BYTE bPartyMax; //0x2D
BYTE bRarity; //0x2E
BYTE bMinGrp; //0x2F
BYTE bMaxGrp; //0x30
BYTE bSparsePopulate; //0x31
WORD wVelocity; //0x32
WORD wRun; //0x34
WORD _2; //0x36
WORD _2b; //0x38
WORD wMissA1; //0x3A
WORD wMissA2; //0x3C
WORD wMissS1; //0x3E
WORD wMissS2; //0x40
WORD wMissS3; //0x42
WORD wMissS4; //0x44
WORD wMissC; //0x46
WORD wMissSQ; //0x48
WORD _3; //0x4A
BYTE bAlign; //0x4C
BYTE bTransLvl; //0x4D
BYTE bThreat; //0x4E
BYTE bAIdel; //0x4F
BYTE bAIdel_N; //0x50
BYTE bAIdel_H; //0x51
BYTE bAiDist; //0x52
BYTE bAiDist_N; //0x53
WORD bAiDist_H; //0x54
WORD wAiP1; //0x56
WORD wAiP1_N; //0x58
WORD wAiP1_H; //0x5A
WORD wAiP2; //0x5C
WORD wAiP2_N; //0x5E
WORD wAiP2_H; //0x60
WORD wAiP3; //0x62
WORD wAiP3_N; //0x64
WORD wAiP3_H; //0x66
WORD wAiP4; //0x68
WORD wAiP4_N; //0x6A
WORD wAiP4_H; //0x6C
WORD wAiP5; //0x6E
WORD wAiP5_N; //0x70
WORD wAiP5_H; //0x72
WORD wAiP6; //0x74
WORD wAiP6_N; //0x76
WORD wAiP6_H; //0x78
WORD wAiP7; //0x7A
WORD wAiP7_N; //0x7C
WORD wAiP7_H; //0x7E
WORD wAiP8; //0x80
WORD wAiP8_N; //0x82
WORD wAiP8_H; //0x84
WORD wTreasureClass1; //0x86
WORD wTreasureClass2; //0x88
WORD wTreasureClass3; //0x8A
WORD wTreasureClass4; //0x8C
WORD wTreasureClass1_N; //0x8E
WORD wTreasureClass2_N; //0x90
WORD wTreasureClass3_N; //0x92
WORD wTreasureClass4_N; //0x94
WORD wTreasureClass1_H; //0x96
WORD wTreasureClass2_H; //0x98
WORD wTreasureClass3_H; //0x9A
WORD wTreasureClass4_H; //0x9C
BYTE bTCQuestId; //0x9E
BYTE bTCQuestCP; //0x9F
BYTE bDrain; //0xA0
BYTE bDrain_N; //0xA1
BYTE bDrain_H; //0xA2
BYTE bToBlock; //0xA3
BYTE bToBlock_N; //0xA4
BYTE bToBlock_H; //0xA5
WORD bCrit; //0xA6
WORD wSkillDamage; //0xA8
WORD wLevel; //0xAA
WORD wLevel_N; //0xAC
WORD wLevel_H; //0xAE
WORD wMinHP; //0xB0
WORD wMinHP_N; //0xB2
WORD wMinHP_H; //0xB4
WORD wMaxHP; //0xB6
WORD wMaxHP_N; //0xB8
WORD wMaxHP_H; //0xBA
WORD wAC; //0xBC
WORD wAC_N; //0xBE
WORD wAC_H; //0xC0
WORD wA1TH; //0xC2
WORD wA1TH_N; //0xC4
WORD wA1TH_H; //0xC6
WORD wA2TH; //0xC8
WORD wA2TH_N; //0xCA
WORD wA2TH_H; //0xCC
WORD wS1TH; //0xCE
WORD wS1TH_N; //0xD0
WORD wS1TH_H; //0xD2
WORD wExp; //0xD4
WORD wExp_N; //0xD6
WORD wExp_H; //0xD8
WORD wA1MinD; //0xDA
WORD wA1MinD_N; //0xDC
WORD wA1MinD_H; //0xDE
WORD wA1MaxD; //0xE0
WORD wA1MaxD_N; //0xE2
WORD wA1MaxD_H; //0xE4
WORD wA2MinD; //0xE6
WORD wA2MinD_N; //0xE8
WORD wA2MinD_H; //0xEA
WORD wA2MaxD; //0xEC
WORD wA2MaxD_N; //0xEE
WORD wA2MaxD_H; //0xF0
WORD wS1MinD; //0xF2
WORD wS1MinD_N; //0xF4
WORD wS1MinD_H; //0xF6
WORD wS1MaxD; //0xF8
WORD wS1MaxD_N; //0xFA
WORD wS1MaxD_H; //0xFC
BYTE bEl1Mode; //0xFE
BYTE bEl2Mode; //0xFF
BYTE bEl3Mode; //0x100
BYTE bEl1Type; //0x101
BYTE bEl2Type; //0x102
BYTE bEl3Type; //0x103
BYTE bEl1Pct; //0x104
BYTE bEl1Pct_N; //0x105
BYTE bEl1Pct_H; //0x106
BYTE bEl2Pct; //0x107
BYTE bEl2Pct_N; //0x108
BYTE bEl2Pct_H; //0x109
BYTE bEl3Pct; //0x10A
BYTE bEl3Pct_N; //0x10B
BYTE bEl3Pct_H; //0x10C
BYTE _4; //0x10D
WORD wEl1MinD; //0x10E
WORD wEl1MinD_N; //0x110
WORD wEl1MinD_H; //0x112
WORD wEl2MinD; //0x114
WORD wEl2MinD_N; //0x116
WORD wEl2MinD_H; //0x118
WORD wEl3MinD; //0x11A
WORD wEl3MinD_N; //0x11C
WORD wEl3MinD_H; //0x11E
WORD wEl1MaxD; //0x120
WORD wEl1MaxD_N; //0x122
WORD wEl1MaxD_H; //0x124
WORD wEl2MaxD; //0x126
WORD wEl2MaxD_N; //0x128
WORD wEl2MaxD_H; //0x12A
WORD wEl3MaxD; //0x12C
WORD wEl3MaxD_N; //0x12E
WORD wEl3MaxD_H; //0x130
WORD wEl1Dur; //0x132
WORD wEl1Dur_N; //0x134
WORD wEl1Dur_H; //0x136
WORD wEl2Dur; //0x138
WORD wEl2Dur_N; //0x13A
WORD wEl2Dur_H; //0x13C
WORD wEl3Dur; //0x13E
WORD wEl3Dur_N; //0x140
WORD wEl3Dur_H; //0x142
WORD wResDmg; //0x144
WORD wResDmg_N; //0x146
WORD wResDmg_H; //0x148
WORD wResMagic; //0x14A
WORD wResMagic_N; //0x14C
WORD wResMagic_H; //0x14E
WORD wResFire; //0x150
WORD wResFire_N; //0x152
WORD wResFire_H; //0x154