-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathItemData.bt
672 lines (652 loc) · 29.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
//------------------------------------------------
//--- 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"
#include "3H_SkillEnums.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 UnknownByte02;
byte Property1Value<name="Skill Property 1 Value">;
byte Property2Value<name="Skill Property 2 Value">;
ExtraMagEffect MagEff<name="Effect">;
WeaponTypes WeaponType<name="Type">;
WeaponRanks WeaponRank<name="Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Model">;
Crests RequiredCrest<name="Crest">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability/Uses">;
Status WepEff<name="Status Effect", comment="Pairs with 'Status Effect Block'">;
ItemTypes ItemType<name="Icon">;
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 Flags", comment="All = Crown">;
struct Wep01Flags01{
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="Broken Weapon">;
ubyte bit7 : 1<name="Stone">;
}wep01flags01<name="Additional Flags 1">;
byte MT<name="MT">;
byte Hit<name="Hit">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
SkillProperty Property1<name="Skill Property 1">;
SkillProperty Property2<name="Skill Property 2">;
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="Additional Flags 2">;
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 UnknownByte02;
byte Property1Value<name="Skill Property 1 Value">;
byte Property2Value<name="Skill Property 2 Value">;
ExtraMagEffect MagEff<name="Effect">;
WeaponTypes WeaponType<name="Type">;
WeaponRanks WeaponRank<name="Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Model">;
Crests RequiredCrest<name="Crest">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability/Uses">;
Status WepEff<name="Status Effect", comment="Pairs with 'Status Effect Block'">;
ItemTypes ItemType<name="Icon">;
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 Flags", comment="All = Crown">;
byte UnknownByte04;
byte MT<name="MT">;
byte Hit<name="Hit">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
SkillProperty Property1<name="Skill Property 1">;
SkillProperty Property2<name="Skill Property 2">;
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="Additional Flags">;
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 UnknownByte02;
byte Property1Value<name="Skill Property 1 Value">;
byte Property2Value<name="Skill Property 2 Value">;
ExtraMagEffect MagEff<name="Effect">;
WeaponTypes WeaponType<name="Type">;
WeaponRanks WeaponRank<name="Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Model">;
Crests RequiredCrest<name="Crest">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability/Uses">;
Status WepEff<name="Status Effect", comment="Pairs with 'Status Effect Block'">;
ItemTypes ItemType<name="Icon">;
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 Flags", comment="All = Crown">;
byte UnknownByte04;
byte MT<name="MT">;
byte Hit<name="Hit">;
byte Crit<name="Crit">;
byte WT<name="Weight">;
SkillProperty Property1<name="Skill Property 1">;
SkillProperty Property2<name="Skill Property 2">;
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="Additional Flags">;
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 UnknownByte01;
byte Property1Value<name="Skill Property 1 Value">;
byte Property2Value<name="Skill Property 2 Value">;
ExtraMagEffect MagEff<name="Effect">;
WeaponTypes WeaponType<name="Type">;
WeaponRanks WeaponRank<name="Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Model">;
Crests RequiredCrest<name="Crest">;
byte MinimumRange<name="Minimum Range">;
ubyte Durability<name="Durability/Uses">;
Status WepEff<name="Status Effect", comment="Pairs with 'Status Effect Block'">;
ItemTypes ItemType<name="Icon">;
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 Flags", comment="All = Crown">;
byte UnknownByte04;
byte MT<name="Prt">;
byte Hit<name="Unused">;
byte Crit<name="Unused">;
byte WT<name="Weight">;
SkillProperty Property1<name="Skill Property 1">;
SkillProperty Property2<name="Skill Property 2">;
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="Additional Flags">;
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 UnknownByte01;
byte Property1Value<name="Skill Property 1 Value">;
byte Property2Value<name="Skill Property 2 Value">;
ExtraMagEffect MagEff<name="Effect">;
WeaponTypes WeaponType<name="Type">;
WeaponRanks WeaponRank<name="Rank">;
ubyte MaximumRange<name="Maximum Range">;
WeaponModel ModelID<name="Model">;
Crests RequiredCrest<name="Crest">;
byte MinimumRange<name="Minimum Range">;
ubyte Uses<name="Durability/Uses">;
Status WepEff<name="Status Effect", comment="Pairs with 'Status Effect Block'">;
ItemTypes ItemType<name="Icon">;
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 Flags", comment="All = Crown">;
byte UnknownByte04;
byte Increase<name="Amount">;
Stats Stat<name="Stat">;
byte Crit<name="ID">;
byte WT<name="Weight">;
SkillProperty Property1<name="Skill Property 1">;
SkillProperty Property2<name="Skill Property 2">;
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="Additional Flags">;
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">;
byte Unk;
ubyte CADurCost<name="Durability Cost">;
ubyte CAMaxRange<name="Maximum Range">;
ubyte CAMinRange<name="Minimum Range">;
struct CAWeaponTypeBits{
ubyte bit0 : 1<name="Sword">;
ubyte bit1 : 1<name="Lance">;
ubyte bit2 : 1<name="Axe">;
ubyte bit3 : 1<name="Bow">;
ubyte bit4 : 1<name="Gauntlet">;
ubyte bit5 : 1<name="Tome">;
ubyte bit6 : 1<name="???", comment="Unseen">;
ubyte bit7 : 1<name="???", comment="Unseen">;
}caweapontypebits<name="Usable Weapons">;
ubyte 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="Prevent Counterattack">;
ubyte bit4 : 1<name="Learned by All">;
ubyte bit5 : 1<name="???">;
ubyte bit6 : 1<name="Target Self">;
ubyte bit7 : 1<name="Target Ally">;
}caflags<name="Flags">;
ubyte 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{
for( i = 0; i < numItem11; i++ )
{
struct STATUSDATA {
local Status NameOfStatus<hidden=true>;
NameOfStatus = i;
byte StatusAmount<name="Amount">;
byte unk1;
StatusVFX SVFX<name="VFX">;
StatusEffect SEffect<name="Status Effect">;
}StatusData<name="Status Effect Data", read=GetStatusName>;
}
}Item11<name="Status Effects">;
}itemstructure11<name="Status Effect Block", 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 GetStatusName(STATUSDATA &q)
{
return EnumToString(q.NameOfStatus);
}
string GetBattalionName(BATTALIONDATA &q)
{
return EnumToString(q.NameOfBatta);
}
string GetGambitName(GAMBITDATA &q)
{
return EnumToString(q.NameOfGambit);
}