forked from three-houses-research-team/010-binary-templates
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGroupWork.bt
More file actions
158 lines (146 loc) · 4.6 KB
/
GroupWork.bt
File metadata and controls
158 lines (146 loc) · 4.6 KB
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
//------------------------------------------------
//--- 010 Editor v9.0.2 Binary Template
//
// File: Starts at 27.bin/ fixed_groupwork.bin
// Authors: NellsRelo
// Version: 0.50
// Purpose: Mapping of fixed_groupwork.bin.
// History
// 0.75 2020-08-14 NellsRelo - Start
//------------------------------------------------
#include "misc_util.bt";
#include "3H_Enums.bt";
LittleEndian();
struct GroupTaskSection {
SectionMagic groupTaskMagic;
struct GroupTask {
short goodGoldReward<name="Gold Reward (Good)">;
short perfectGoldReward<name="Gold Reward (Perfect)">;
RankStats raisedSkill<name="Skill to Improve">;
byte goodReward<name="Item Reward (Good)">;
byte perfectReward<name="Item Reward (Perfect)">;
byte goodRewardAmount<name="Reward Amount (Good)">;
byte perfectRewardAmount<name="Reward Amount (Perfect)">;
byte uncPadding<bgcolor=cDkYellow,name="Padding">;
} groupTasks[groupTaskMagic.num];
};
// These all affect what dialog is shown during group
// tasks. Unfortunately, it is inconsistent in terms of
// which byte affects which task for each duo.
struct GroupTaskDialog {
TrueFalse groupTaskDialog;
TrueFalse groupTaskDialog;
TrueFalse groupTaskDialog;
TrueFalse groupTaskDialog;
TrueFalse groupTaskDialog;
TrueFalse groupTaskDialog;
TrueFalse groupTaskDialog;
TrueFalse groupTaskDialog;
};
struct ActivityConversationSection {
SectionMagic activityConversationMagic;
struct ActivityConversationData {
CharID charID1<name="Character ID">;
CharID charID2<name="Character ID">;
// These next 4 bytes may be route related.
byte unkVal;
// Related to timeskip Dmitri being a person again(Chapter
// 18)? Value is 0 in each instance except for Dmitri/Gilber
// and Dmitri/Dedue.
byte unkVal;
byte unkVal;
byte unkVal;
// 0 = None, 1 = C, 2 = B, 3 = A
byte mealDialogueSupport1<name="Unique Dining Chat Support Requirement">;
byte mealDialogSupport2<name="Unique Dining Chat Support Requirement">;
byte mealDialogASupport3<name="Unique Dining Chat Support Requirement">;
GroupTaskDialog groupTasks<name="Group Task Dialog Options">;
TrueFalse unkVal;
} activityConversations[activityConversationMagic.num]<read=getActivityConvoName>;
};
struct UnknownSection3 {
SectionMagic unknownSection3Magic;
struct UnknownData3 {
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte uncPadding<bgcolor=cDkYellow>;
} unknownData3[unknownSection3Magic.num];
};
struct UnknownSection4 {
SectionMagic unknownSection4Magic;
struct UnknownData4 {
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
byte unkVal;
} unknownData4[unknownSection4Magic.num];
};
// Not present prior to DLC waves. Possibly Sauna-related?
struct UnknownSection5 {
SectionMagic unknownSection5Magic;
struct UnknownData5 {
short unkID;
short unkID;
byte unkVal; // Always 1
byte uncPadding<bgcolor=cDkYellow>;
} unknownData5[unknownSection5Magic.num];
};
struct File {
SectionPointer sectionPointer;
GroupTaskSection groupTaskSection<bgcolor=cDkGreen>;
ActivityConversationSection activityConversationSection<bgcolor=cBlue>;
UnknownSection3 unknownSection3<bgcolor=cPurple>;
UnknownSection4 unknownSection4<bgcolor=cDkRed>;
short padding<bgcolor=cDkYellow>;
byte padding<bgcolor=cDkYellow>;
UnknownSection5 unknownSection5<bgcolor=cYellow>;
} file;
string getActivityConvoName(ActivityConversationData & q) {
return EnumToString(q.charID1) + " & " + EnumToString(q.charID2);
}