-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathScenario.bt
122 lines (107 loc) · 5.42 KB
/
Scenario.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
//------------------------------------------------
//--- 010 Editor v9.0.2 Binary Template
//
// File: Starts at 22.bin/ fixed_scenario.bin
// Authors: NellsRelo
// Version: 0.75
// Purpose: Mapping of fixed_scenario.bin.
// History
// 0.75 2020-08-12 NellsRelo - Start
//------------------------------------------------
#include "3H_Enums.bt"
#include "3H_ScenarioEnums.bt"
LittleEndian();
local int i<hidden=true>;
struct CharacterSettings{
short unavailableCharIDA<bgcolor=cDkGreen>;
short unavailableCharIDB<bgcolor=cDkGreen>;
short unavailableCharIDC<bgcolor=cDkGreen>;
// Relates to Character IDs in Paralogues
short unkParalogueCharIDA<bgcolor=cYellow>;
short unkParalogueCharIDB<bgcolor=cYellow>;
};
struct ParalogueExpiration{
ubyte expirationChapterSS<bgcolor=cDkGreen,name="Silver Snow Expiration Month">;
ubyte expirationChapterAM<bgcolor=cDkGreen,name="Azure Moon Expiration Month">;
ubyte expirationChapterVW<bgcolor=cDkGreen,name="Verdant Wind Expiration Month">;
ubyte expirationChapterCF<bgcolor=cDkGreen,name="Crimson Flower Expiration Month">;
ubyte expirationDateSS<bgcolor=cDkGreen,name="Silver Snow Expiration Day">;
ubyte expirationDateAM<bgcolor=cDkGreen,name="Azure Moon Expiration Day">;
ubyte expirationDateVW<bgcolor=cDkGreen,name="Verdant Wind Expiration Day">;
ubyte expirationDateCF<bgcolor=cDkGreen,name="Crimson Flower Expiration Day">;
};
struct ScenarioData{
uint32 scenarioMagic<bgcolor=cBlue>;
uint32 numberOfScenarios<bgcolor=cDkGreen>;
uint32 sizeOfScenario<bgcolor=cDkGreen>;
struct scenarioHeaderPadding{
byte Padding[0x34]<bgcolor=cDkYellow>;
}classdataheaderpadding<name="Padding">;
for( i = 0; i < numberOfScenarios; i++ ) {
struct Scenario {
local ScenarioName scenarioName;
scenarioName = i;
uint32 unk1<bgcolor=cRed>;
CharacterSettings characterSettings<bgcolor=cDkGreen,name="Character Settings">;
ubyte unkTernary<bgcolor=cRed>; // Only ever 0, 1, or 2
ubyte chapter<bgcolor=cDkGreen,name="Chapter ID">; // 23 = Paralogue, 24 = Aux battle, 25 = DLC Para/Aux
ubyte uncAuxiliaryAvailable<bgcolor=cYellow,name="Availability Chapter (Auxiliary)">;
// Functionality unknown. Seem to correlate with story progress.
ubyte unkProgressA<bgcolor=cYellow>;
ubyte unkProgressB<bgcolor=cYellow>;
ubyte unkProgressC<bgcolor=cYellow>;
ParalogueExpiration paralogueExpiration<name="Paralogue Expiration Date">;
ubyte recruitLevel<bgcolor=cDkGreen,name="Recruit/Recommended Level">;
BGM auxillaryBGM<bgcolor=cDkGreen,name="Auxillary BGM">;
ubyte hiddenTurnLimit<bgcolor=cDkGreen,name="Hidden Turn Limit">;
Conditions victoryConditionLabel<bgcolor=cDkGreen,name="Victory Condition Label">;
MapList map<bgcolor=cDkGreen,name="Map ID">;
// These will match with Enemy Commander's levels. Subcommanders will be value - 1,
// regular units will be value - 2. May be affected by BAI scripts.
ubyte enemyLevelScalingNorm<bgcolor=cDkGreen,name="Normal Level Scaling">;
ubyte enemyLevelScaleHard<bgcolor=cDkGreen,name="Hard Level Scaling">;
ubyte enemyLevelScaleMad<bgcolor=cDkGreen,name="Maddening Level Scaling">;
// Capable of moving, removing, and changing allegiance of units.
ubyte unkTeamModifier<bgcolor=cYellow>;
ubyte unk3<bgcolor=cRed>;
// Applies after compelting a mission. Negative numbers work, but will become 99 if player's total is under 0.
byte unkDivinePulseIncrease<bgcolor=cDkGreen,name="Divine Pulse Increase Reward">;
ubyte unkDivinePulseIncreaseMaddening<bgcolor=cDkGreen,name="Divine Pulse Increase Reward (Maddening)">;
// Don't affect gameplay itself.
Conditions casualDefeatConditionLabel<bgcolor=cDkGreen,name="Casual Defeat Conditions">;
Conditions defeatConditionLabelSS<bgcolor=cDkGreen,name="Default Defeat Conditions">;
Conditions defeatConditionLabelAM<bgcolor=cDkGreen,name="Azure Moon Defeat Conditions">;
Conditions defeatConditionLabelVW<bgcolor=cDkGreen,name="Verdant Wind Defeat Conditions">;
Conditions defeatConditionLabelCF<bgcolor=cDkGreen,name="Crimson Flower Defeat Conditions">;
ubyte Padding<bgcolor=cDkYellow>;
}scenario<name="Scenario",read=getScenarioName>;
};
};
//Requires fleshing out
struct UnknownData {
uint32 unkMagic<bgcolor=cBlue>;
uint32 unkDataNum<bgcolor=cPurple>;
uint32 unkSize<bgcolor=cPurple>;
struct unkHeaderPadding{
byte Padding[0x34]<bgcolor=cDkYellow>;
} classdataheaderpadding<name="Padding">;
struct Unknown{
ubyte unkA;
ubyte unkB;
ubyte unkC;
} unknown[unkDataNum]<bgcolor=cPurple>;
};
struct File {
struct SectionPointer {
uint32 header<bgcolor=cBlue>;
uint32 scenarioDataPointer<bgcolor=cDkGreen>;
uint32 scenarioDataSize<bgcolor=cDkGreen>;
uint32 unkDataPointer<bgcolor=cPurple>;
uint32 unkDataSize<bgcolor=cPurple>;
}sectionPointer<name="Section Pointers">;
ScenarioData scenarioData<name="Scenario Data">;
UnknownData unknownData<name="Unknown Data">;
}file;
string getScenarioName(Scenario & q) {
return EnumToString(q.scenarioName);
}