forked from three-houses-research-team/010-binary-templates
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathItemData.bt
718 lines (698 loc) · 31.8 KB
/
ItemData.bt
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
//------------------------------------------------
//--- 010 Editor v9.0.2 Binary Template
//
// File: Item.bin / 6.bin
// Authors: Moonling
// Version: 1.0
// Purpose: Three Houses Item Mapping
// History: 1.0 - Moonling: Created this
// 1.1 - Raytwo: Added StatIncreaseType for items + typo fixf
//------------------------------------------------
#include "3H_WepEnums.bt"
LittleEndian();
local int i<hidden=true>;
struct FILE {
struct SECTIONPOINTERS {
uint header<name="Header">;
uint PointerToItemBlock01<bgcolor=cRed>;
uint ItemBlockStructSize01<bgcolor=cRed>;
uint PointerToItemBlock02<bgcolor=cRed>;
uint ItemBlockStructSize02<bgcolor=cRed>;
uint PointerToItemBlock03<bgcolor=cRed>;
uint ItemBlockStructSize03<bgcolor=cRed>;
uint PointerToItemBlock04<bgcolor=cRed>;
uint ItemBlockStructSize04<bgcolor=cRed>;
uint PointerToItemBlock05<bgcolor=cRed>;
uint ItemBlockStructSize05<bgcolor=cRed>;
uint PointerToItemBlock06<bgcolor=cRed>;
uint ItemBlockStructSize06<bgcolor=cRed>;
uint PointerToItemBlock07<bgcolor=cRed>;
uint ItemBlockStructSize07<bgcolor=cRed>;
uint PointerToItemBlock08<bgcolor=cRed>;
uint ItemBlockStructSize08<bgcolor=cRed>;
uint PointerToItemBlock09<bgcolor=cRed>;
uint ItemBlockStructSize09<bgcolor=cRed>;
uint PointerToItemBlock10<bgcolor=cRed>;
uint ItemBlockStructSize10<bgcolor=cRed>;
uint PointerToItemBlock11<bgcolor=cRed>;
uint ItemBlockStructSize11<bgcolor=cRed>;
uint PointerToItemBlock12<bgcolor=cRed>;
uint ItemBlockStructSize12<bgcolor=cRed>;
uint PointerToItemBlock13<bgcolor=cRed>;
uint ItemBlockStructSize13<bgcolor=cRed>;
uint PointerToItemBlock14<bgcolor=cRed>;
uint ItemBlockStructSize14<bgcolor=cRed>;
uint PointerToItemBlock15<bgcolor=cRed>;
uint ItemBlockStructSize15<bgcolor=cRed>;
uint PointerToItemBlock16<bgcolor=cRed>;
uint ItemBlockStructSize16<bgcolor=cRed>;
}SectionPointer<name="Section pointers">;
// Table 1
FSeek(SectionPointer.PointerToItemBlock01);
struct ItemStructure01 {
uint ItemMagic01<bgcolor=cRed>;
uint numItem01<bgcolor=cRed>;
uint SizeOfItemBlock01<bgcolor=cRed>;
struct ItemHeaderPadding01 {
byte Padding[0x34];
}itemheaderpadding01<name="Padding", bgcolor=cBlue>;
struct ITEM01{
for( i = 0; i < numItem01; i++ )
{
struct WEAP01DATA {
local WeapID NameOfWeapon<hidden=true>;
NameOfWeapon = i;
byte UnknownByte01;
byte UnknownBytes01;
ubyte HPMod<name="HP Modification">;
byte UnknownBytes02[1];
ExtraMagEffect MagEff<name="Magic Effect">;
WeaponTypes WeaponType<name="Waepon Type">;
WeaponRanks WeaponRank<name="Weapon Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Weapon Model">;
Crests RequiredCrest<name="Crests">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability">;
WeaponExtraEffects WepEff<name="Extra Effect">;
ItemTypes ItemType<name="Item Type">;
struct EffectivenessBits{
ubyte bit0 : 1<name="Infantry">;
ubyte bit1 : 1<name="Armor">;
ubyte bit2 : 1<name="Cavalry">;
ubyte bit3 : 1<name="Flier">;
ubyte bit4 : 1<name="Dragon">;
ubyte bit5 : 1<name="Monster">;
ubyte bit6 : 1<name="???", comment="Unseen">;
ubyte bit7 : 1<name="???", comment="Unseen">;
}effectivenessbits<name="Effectiveness", comment="All = Crown">;
byte UnknownByte04;
byte MT<name="MT">;
byte Hit<name="Hit">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
struct WepFlags01{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wepflags01<name="Flags 01">;
struct WepFlags02{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wepflags02<name="Flags 02">;
struct WepFlags03{
ubyte bit0 : 1<name="Magic">;
ubyte bit1 : 1<name="Ignores Res">;
ubyte bit2 : 1<name="Foe Left With 1 HP">;
ubyte bit3 : 1<name="Doesn't Effect Flying">;
ubyte bit4 : 1<name="Cannot Tigger Follow Up Attacks">;
ubyte bit5 : 1<name="Attack Twice">;
ubyte bit6 : 1<name="Regalia">;
ubyte bit7 : 1<name="Hero Relic">;
}wepflags03<name="Flags 03">;
byte Padding<name="Padding">;
}Weap01Data<name="Weapon Data", read=GetWeaponModelName>;
}
}Item01<name="Weapons">;
}itemstructure01<name="Weapon Block", bgcolor=cYellow>;
// Table 2
FSeek(SectionPointer.PointerToItemBlock02);
struct ItemStructure02 {
uint ItemMagic02<bgcolor=cRed>;
uint numItem02<bgcolor=cRed>;
uint SizeOfItemBlock02<bgcolor=cRed>;
struct ItemHeaderPadding02 {
byte Padding[0x34];
}itemheaderpadding02<name="Padding", bgcolor=cBlue>;
struct ITEM02{
for( i = 0; i < numItem02; i++ )
{
struct MAGICDATA {
local SpellID NameOfMagic<hidden=true>;
NameOfMagic = i;
byte UnknownByte01;
byte UnknownBytes01[3];
ExtraMagEffect MagEff<name="Magic Effect">;
WeaponTypes WeaponType<name="Waepon Type">;
WeaponRanks WeaponRank<name="Weapon Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Weapon Model">;
Crests RequiredCrest<name="Crests">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability">;
WeaponExtraEffects WepEff<name="Extra Effect">;
ItemTypes ItemType<name="Item Type">;
struct EffectivenessBits02{
ubyte bit0 : 1<name="Infantry">;
ubyte bit1 : 1<name="Armor">;
ubyte bit2 : 1<name="Cavalry">;
ubyte bit3 : 1<name="Flier">;
ubyte bit4 : 1<name="Dragon">;
ubyte bit5 : 1<name="Monster">;
ubyte bit6 : 1<name="???", comment="Unseen">;
ubyte bit7 : 1<name="???", comment="Unseen">;
}effectivenessbits02<name="Effectiveness", comment="All = Crown">;
byte UnknownByte04;
byte MT<name="MT">;
byte Hit<name="Hit">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
struct Wep02Flags01{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep02flags01<name="Flags 01">;
struct Wep02Flags02{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep02flags02<name="Flags 02">;
struct Wep02Flags03{
ubyte bit0 : 1<name="Magic">;
ubyte bit1 : 1<name="Ignores Res">;
ubyte bit2 : 1<name="Foe Left With 1 HP">;
ubyte bit3 : 1<name="Doesn't Effect Flying">;
ubyte bit4 : 1<name="Cannot Tigger Follow Up Attacks">;
ubyte bit5 : 1<name="Attack Twice">;
ubyte bit6 : 1<name="Silver Icon">;
ubyte bit7 : 1<name="Gold Icon">;
}wep02flags03<name="Flags 03">;
byte Padding<name="Padding">;
}MagicData<name="Magic Data", read=GetMagicName>;
}
}Item02<name="Magic">;
}itemstructure02<name="Magic Block", bgcolor=cLtGreen>;
//Table 3
FSeek(SectionPointer.PointerToItemBlock03);
struct ItemStructure03 {
uint ItemMagic03<bgcolor=cRed>;
uint numItem03<bgcolor=cRed>;
uint SizeOfItemBlock03<bgcolor=cRed>;
struct ItemHeaderPadding03 {
byte Padding[0x34];
}itemheaderpadding03<name="Padding", bgcolor=cBlue>;
struct ITEM03{
byte Item03Size[SizeOfItemBlock03];
}Item03[numItem03]<name="Item Data">;
}itemstructure03<name="Turret Block", bgcolor=cLtBlue>;
//Table 04
FSeek(SectionPointer.PointerToItemBlock04);
struct ItemStructure04 {
uint ItemMagic04<bgcolor=cRed>;
uint numItem04<bgcolor=cRed>;
uint SizeOfItemBlock04<bgcolor=cRed>;
struct ItemHeaderPadding04 {
byte Padding[0x34];
}itemheaderpadding04<name="Padding", bgcolor=cBlue>;
struct ITEM04{
for( i = 0; i < numItem04; i++ )
{
struct GAMBITDATA {
local GambitType NameOfGambit<hidden=true>;
NameOfGambit = i;
byte UnknownByte01;
byte UnknownBytes01[4];
WeaponTypes WeaponType<name="Waepon Type">;
WeaponRanks WeaponRank<name="Weapon Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Weapon Model">;
Crests RequiredCrest<name="Crests">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability">;
WeaponExtraEffects WepEff<name="Extra Effect">;
ItemTypes ItemType<name="Item Type">;
struct EffectivenessBits04{
ubyte bit0 : 1<name="Infantry">;
ubyte bit1 : 1<name="Armor">;
ubyte bit2 : 1<name="Cavalry">;
ubyte bit3 : 1<name="Flier">;
ubyte bit4 : 1<name="Dragon">;
ubyte bit5 : 1<name="Monster">;
ubyte bit6 : 1<name="???", comment="Unseen">;
ubyte bit7 : 1<name="???", comment="Unseen">;
}effectivenessbits04<name="Effectiveness", comment="All = Crown">;
byte UnknownByte04;
byte MT<name="MT">;
byte Hit<name="Hit">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
struct Wep04Flags01{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep04flags01<name="Flags 01">;
struct Wep04Flags02{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep04flags02<name="Flags 02">;
struct Wep04Flags03{
ubyte bit0 : 1<name="Magic">;
ubyte bit1 : 1<name="Ignores Res">;
ubyte bit2 : 1<name="Foe Left With 1 HP">;
ubyte bit3 : 1<name="Doesn't Effect Flying">;
ubyte bit4 : 1<name="Cannot Tigger Follow Up Attacks">;
ubyte bit5 : 1<name="Attack Twice">;
ubyte bit6 : 1<name="Silver Icon">;
ubyte bit7 : 1<name="Gold Icon">;
}wep04flags03<name="Flags 03">;
byte Padding<name="Padding">;
}GambitData<name="Gambit Data", read=GetGambitName>;
}
}Item04<name="Gambit">;
}itemstructure04<name="Gambit Block", bgcolor=cLtRed>;
//Table 5
FSeek(SectionPointer.PointerToItemBlock05);
struct ItemStructure05 {
uint ItemMagic05<bgcolor=cRed>;
uint numItem05<bgcolor=cRed>;
uint SizeOfItemBlock05<bgcolor=cRed>;
struct ItemHeaderPadding05 {
byte Padding[0x34];
}itemheaderpadding05<name="Padding", bgcolor=cBlue>;
struct ITEM05{
byte Item05Size[SizeOfItemBlock05];
}Item05[numItem05]<name="Item Data">;
}itemstructure05<name="Monster AOE Attack Block", bgcolor=cYellow>;
//Table 6
FSeek(SectionPointer.PointerToItemBlock06);
struct ItemStructure06 {
uint ItemMagic06<bgcolor=cRed>;
uint numItem06<bgcolor=cRed>;
uint SizeOfItemBlock06<bgcolor=cRed>;
struct ItemHeaderPadding06 {
byte Padding[0x34];
}itemheaderpadding06<name="Padding", bgcolor=cBlue>;
struct ITEM06{
for( i = 0; i < numItem06; i++ )
{
struct EQUIPDATA {
local EquipID NameOfEquipment<hidden=true>;
NameOfEquipment = i;
byte UnknownByte01;
byte UnknownBytes01[4];
WeaponTypes WeaponType<name="Waepon Type">;
WeaponRanks WeaponRank<name="Weapon Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Weapon Model">;
Crests RequiredCrest<name="Crests">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability">;
WeaponExtraEffects WepEff<name="Extra Effect">;
ItemTypes ItemType<name="Item Type">;
struct EffectivenessBits06{
ubyte bit0 : 1<name="Infantry">;
ubyte bit1 : 1<name="Armor">;
ubyte bit2 : 1<name="Cavalry">;
ubyte bit3 : 1<name="Flier">;
ubyte bit4 : 1<name="Dragon">;
ubyte bit5 : 1<name="Monster">;
ubyte bit6 : 1<name="???", comment="Unseen">;
ubyte bit7 : 1<name="???", comment="Unseen">;
}effectivenessbits06<name="Effectiveness", comment="All = Crown">;
byte UnknownByte04;
byte MT<name="MT">;
byte Hit<name="Hit">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
struct EquipFlags01{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep02flags01<name="Flags 01">;
struct EquipFlags02{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep02flags02<name="Flags 02">;
struct EquipFlags03{
ubyte bit0 : 1<name="Magic">;
ubyte bit1 : 1<name="Ignores Res">;
ubyte bit2 : 1<name="Foe Left With 1 HP">;
ubyte bit3 : 1<name="Doesn't Effect Flying">;
ubyte bit4 : 1<name="Cannot Tigger Follow Up Attacks">;
ubyte bit5 : 1<name="Attack Twice">;
ubyte bit6 : 1<name="Silver Icon">;
ubyte bit7 : 1<name="Gold Icon">;
}wep02flags03<name="Flags 03">;
byte Padding<name="Padding">;
}EquipData<name="Equipment Data", read=GetEquipmentName>;
}
}Item06<name="Equipment">;
}itemstructure06<name="Equipment Block", bgcolor=cYellow>;
//Table 7
FSeek(SectionPointer.PointerToItemBlock07);
struct ItemStructure07 {
uint ItemMagic07<bgcolor=cRed>;
uint numItem07<bgcolor=cRed>;
uint SizeOfItemBlock07<bgcolor=cRed>;
struct ItemHeaderPadding07 {
byte Padding[0x34];
}itemheaderpadding07<name="Padding", bgcolor=cBlue>;
struct ITEM07{
for( i = 0; i < numItem07; i++ )
{
struct ITEMDATA {
local ItemID NameOfItem<hidden=true>;
NameOfItem = i;
byte UnknownByte01;
byte UnknownBytes01[3];
byte StatIncreaseType<name="Stat increase type", comment="1 is for healing calculation, 0x15 for bonus stats">;
WeaponTypes WeaponType<name="Weapon Type">;
WeaponRanks WeaponRank<name="Weapon Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Weapon Model">;
Crests RequiredCrest<name="Crests">;
byte MinimumRange<name="Minimum Range">;
ubyte Uses<name="Uses">;
WeaponExtraEffects WepEff<name="Extra Effect">;
ItemTypes ItemType<name="Item Type">;
struct EffectivenessBits07{
ubyte bit0 : 1<name="Infantry">;
ubyte bit1 : 1<name="Armor">;
ubyte bit2 : 1<name="Cavalry">;
ubyte bit3 : 1<name="Flier">;
ubyte bit4 : 1<name="Dragon">;
ubyte bit5 : 1<name="Monster">;
ubyte bit6 : 1<name="???", comment="Unseen">;
ubyte bit7 : 1<name="???", comment="Unseen">;
}effectivenessbits07<name="Effectiveness", comment="All = Crown">;
byte UnknownByte04;
byte Increase<name="Increase">;
Stats Stat<name="Stat">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
struct ItemFlags01{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep02flags01<name="Flags 01">;
struct ItemFlags02{
ubyte bit0 : 1<name="???">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="???">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}wep02flags02<name="Flags 02">;
struct ItemFlags03{
ubyte bit0 : 1<name="Magic">;
ubyte bit1 : 1<name="Ignores Res">;
ubyte bit2 : 1<name="Foe Left With 1 HP">;
ubyte bit3 : 1<name="Doesn't Effect Flying">;
ubyte bit4 : 1<name="Cannot Tigger Follow Up Attacks">;
ubyte bit5 : 1<name="Attack Twice">;
ubyte bit6 : 1<name="Silver Icon">;
ubyte bit7 : 1<name="Gold Icon">;
}wep02flags03<name="Flags 03">;
byte Padding<name="Padding">;
}ItemData<name="Item Data", read=GetItemsName>;
}
}Item07<name="Items">;
}itemstructure07<name="Items Block", bgcolor=cYellow>;
//Table 8
FSeek(SectionPointer.PointerToItemBlock08);
struct ItemStructure08 {
uint ItemMagic08<bgcolor=cRed>;
uint numItem08<bgcolor=cRed>;
uint SizeOfItemBlock08<bgcolor=cRed>;
struct ItemHeaderPadding08 {
byte Padding[0x34];
}itemheaderpadding08<name="Padding", bgcolor=cBlue>;
struct ITEM08{
for( i = 0; i < numItem08; i++ )
{
struct ARTSDATA {
local ArtID NameOfArt<hidden=true>;
NameOfArt = i;
AnotherWeapIDEnumForArtsBecauseFuckingWhyNot RequiredWeap<name="Required Weapon">;
byte CAAvoid<name="Avoid">;
ubyte CAMight<name="Might">;
byte CACrit<name="Crit">;
byte CAHit<name="Hit">;
byte CAAvoid2<name="Avoid 2", comment="Always the same as Avoid">;
CAEffect CAEffectdata<name="Effect">;
ClassName CARequiredClass<name="Required Class">;
ubyte CADurCost<name="Durability Cost">;
ubyte CAMaxRange<name="Maximum Range">;
ubyte CAMinRange<name="Minimum Range">;
byte Unk;
byte Unk;
struct CAEffectivenessBits{
ubyte bit0 : 1<name="Infantry">;
ubyte bit1 : 1<name="Armor">;
ubyte bit2 : 1<name="Cavalry">;
ubyte bit3 : 1<name="Flier">;
ubyte bit4 : 1<name="Dragon">;
ubyte bit5 : 1<name="Monster">;
ubyte bit6 : 1<name="???", comment="Unseen">;
ubyte bit7 : 1<name="???", comment="Unseen">;
}caeffectivenessbits<name="Effectiveness">;
struct CAFlags{
ubyte bit0 : 1<name="Magic">;
ubyte bit1 : 1<name="???">;
ubyte bit2 : 1<name="???">;
ubyte bit3 : 1<name="No Counter">;
ubyte bit4 : 1<name="???">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="???">;
ubyte bit7 : 1<name="???">;
}caflags<name="Flags">;
ushort CAPadding;
}ArtsData<name="Combat Arts Data", read=GetArtsName>;
}
}Item08<name="Combat Arts">;
}itemstructure08<name="Combat Arts Table", bgcolor=cYellow>;
//Table 09
FSeek(SectionPointer.PointerToItemBlock09);
struct ItemStructure09 {
uint ItemMagic09<bgcolor=cRed>;
uint numItem09<bgcolor=cRed>;
uint SizeOfItemBlock09<bgcolor=cRed>;
struct ItemHeaderPadding09 {
byte Padding[0x34];
}itemheaderpadding09<name="Padding", bgcolor=cBlue>;
struct ITEM09{
byte Item09Size[SizeOfItemBlock09];
}Item09[numItem09]<name="Item Data">;
}itemstructure09<name="Other Block 02", bgcolor=cYellow>;
//Table 10
FSeek(SectionPointer.PointerToItemBlock10);
struct ItemStructure10 {
uint ItemMagic10<bgcolor=cRed>;
uint numItem10<bgcolor=cRed>;
uint SizeOfItemBlock10<bgcolor=cRed>;
struct ItemHeaderPadding10 {
byte Padding[0x34];
}itemheaderpadding10<name="Padding", bgcolor=cBlue>;
struct ITEM10{
byte Item10Size[SizeOfItemBlock10];
}Item10[numItem10]<name="Item Data">;
}itemstructure10<name="Other Block 03", bgcolor=cYellow>;
//Table 11
FSeek(SectionPointer.PointerToItemBlock11);
struct ItemStructure11 {
uint ItemMagic11<bgcolor=cRed>;
uint numItem11<bgcolor=cRed>;
uint SizeOfItemBlock11<bgcolor=cRed>;
struct ItemHeaderPadding11 {
byte Padding[0x34];
}itemheaderpadding11<name="Padding", bgcolor=cBlue>;
struct ITEM11{
byte Item11Size[SizeOfItemBlock11];
}Item11[numItem11]<name="Item Data">;
}itemstructure11<name="Other Block 04", bgcolor=cYellow>;
//Table 12
FSeek(SectionPointer.PointerToItemBlock12);
struct ItemStructure12 {
uint ItemMagic12<bgcolor=cRed>;
uint numItem12<bgcolor=cRed>;
uint SizeOfItemBlock12<bgcolor=cRed>;
struct ItemHeaderPadding12 {
byte Padding[0x34];
}itemheaderpadding12<name="Padding", bgcolor=cBlue>;
struct ITEM12{
for( i = 0; i < numItem12; i++ )
{
struct BATTALIONDATA {
local BattalionID NameOfBatta<hidden=true>;
NameOfBatta = i;
uint StringPointer;
ushort unknown<name="Unknown Value">;
ushort BEndur<name="Endurance">;
byte BMag<name="Magic">;
byte BMagGrowth<name="Magic Growth">;
byte BPhys<name="Physical">;
ubyte BHit<name="Hit">;
ubyte BCrit<name="Crit">;
ubyte BAvo<name="Avoid">;
byte BAvo2<name="Avoid 2">;
ubyte BPrt<name="Protection">;
ubyte BRsl<name="Resilience">;
struct BattalionGrowth{
ubyte unknown<name="Unknown Value">;
ubyte unknown<name="Unknown Value">;
ubyte BPhysGrowth<name="Phys Growth">;
ubyte BHitGrowth<name="Hit Growth">;
ubyte BCritGrowth<name="Crit Growth">;
ubyte BAvoGrowth1<name="Avo Growth 1">;
ubyte BAvoGrowth2<name="Avo Growth 2", comment="Must be same as Avo 1">;
ubyte BProtGrowth<name="Prot Growth">;
ubyte BResGrowth<name="Res Growth">;
ubyte unknown<name="Unknown Value">;
ubyte unknown<name="Unknown Value">;
}battalionboost<name="Battalion Stat Growths">;
struct BattalionBoost{
ubyte BStrBoost<name="Str Boost">;
ubyte BMagBoost<name="Mag Boost">;
ubyte BDexBoost<name="Dex Boost">;
ubyte BSpdBoost<name="Spd Boost">;
ubyte BLckBoost<name="Lck Boost">;
ubyte BDefBoost<name="Def Boost">;
ubyte BResBoost<name="Res Boost">;
ubyte BMovBoost<name="Mov Boost">;
ubyte BCha<name="Cha Boost">;
}battalionboost<name="Battalion Stat Boosts">;
byte unknown<name="Unknown Value">;
WeaponRanks BRanks<name="Rank">;
GambitType BGambit<name="Gambit">;
byte BAttSp<name="Attack Speed">;
byte unknown<name="Unknown Value">;
byte Model01<name="Model Table Entry 1">;
byte Model02<name="Model Table Entry 2">;
}BattalionData<name="Battalion Data", read=GetBattalionName>;
}
}Item12<name="Battalion">;
}itemstructure12<name="Battalion Block", bgcolor=cYellow>;
//Table 13
FSeek(SectionPointer.PointerToItemBlock13);
struct ItemStructure13 {
uint ItemMagic13<bgcolor=cRed>;
uint numItem13<bgcolor=cRed>;
uint SizeOfItemBlock13<bgcolor=cRed>;
struct ItemHeaderPadding13 {
byte Padding[0x34];
}itemheaderpadding13<name="Padding", bgcolor=cBlue>;
struct ITEM13{
ubyte Item13Size[SizeOfItemBlock13];
}Item13[numItem13]<name="Item Data">;
}itemstructure13<name="Other Block 06", bgcolor=cYellow>;
//Table 14
FSeek(SectionPointer.PointerToItemBlock14);
struct ItemStructure14 {
uint ItemMagic14<bgcolor=cRed>;
uint numItem14<bgcolor=cRed>;
uint SizeOfItemBlock14<bgcolor=cRed>;
struct ItemHeaderPadding14 {
byte Padding[0x34];
}itemheaderpadding14<name="Padding", bgcolor=cBlue>;
struct ITEM14{
Names Model01;
Names Model02;
ubyte Unk;
ubyte Unk;
}Item14[numItem14]<name="Battalion Model Data">;
}itemstructure14<name="Battalion Model Block", bgcolor=cYellow>;
//Table 15
FSeek(SectionPointer.PointerToItemBlock15);
struct ItemStructure15 {
uint ItemMagic15<bgcolor=cRed>;
uint numItem15<bgcolor=cRed>;
uint SizeOfItemBlock15<bgcolor=cRed>;
struct ItemHeaderPadding15 {
byte Padding[0x34];
}itemheaderpadding15<name="Padding", bgcolor=cBlue>;
struct ITEM15{
byte Item15Size[SizeOfItemBlock15];
}Item15[numItem15]<name="Item Data">;
}itemstructure15<name="Other Block 08", bgcolor=cYellow>;
//Table 16
FSeek(SectionPointer.PointerToItemBlock16);
struct ItemStructure16 {
uint ItemMagic16<bgcolor=cRed>;
uint numItem16<bgcolor=cRed>;
uint SizeOfItemBlock16<bgcolor=cRed>;
struct ItemHeaderPadding16 {
byte Padding[0x34];
}itemheaderpadding16<name="Padding", bgcolor=cBlue>;
struct ITEM16{
byte Item16Size[SizeOfItemBlock16];
}Item16[numItem16]<name="Item Data">;
}itemstructure16<name="Other Block 09", bgcolor=cYellow>;
}File<name="Item.bin File">;
string GetWeaponModelName(WEAP01DATA &q)
{
return EnumToString(q.NameOfWeapon);
}
string GetMagicName(MAGICDATA &q)
{
return EnumToString(q.NameOfMagic);
}
string GetEquipmentName(EQUIPDATA &q)
{
return EnumToString(q.NameOfEquipment);
}
string GetItemsName(ITEMDATA &q)
{
return EnumToString(q.NameOfItem);
}
string GetArtsName(ARTSDATA &q)
{
return EnumToString(q.NameOfArt);
}
string GetBattalionName(BATTALIONDATA &q)
{
return EnumToString(q.NameOfBatta);
}
string GetGambitName(GAMBITDATA &q)
{
return EnumToString(q.NameOfGambit);
}