.col - Synthlight/MHW-Editor GitHub Wiki
The OAP part at the end isn't really covered and what's there for it is a guess.
//------------------------------------------------
//--- 010 Editor v10.0 Binary Template
// Authors: Greg, ライトニング (Faith), dtlnor
//------------------------------------------------
typedef struct {
string name <optimize=false>; // Null terminated.
int unk1;
int moveId;
int unk3;
ushort unk4;
ubyte unk5;
uint unk6;
} Name;
typedef struct {
ubyte unk10;
ubyte unk20;
float unk30;
float unk40;
float unk50;
float unk60;
short unk70;
short unk75;
float unk80;
float unk90;
float unk100;
float unk110;
float unk120;
float unk130;
ushort unk140;
uint unk150;
short unk160;
float unk170;
float unk180;
float unk190;
float unk200;
ushort unk210;
} CLGM_inner;
typedef struct {
uint magic1;
char type[4];
uint magic2;
uint count;
CLGM_inner clgm_inner[count] <optimize=false>;
uint unk10;
uint unk20;
ubyte unk30;
ubyte unk40;
ubyte unk50;
ubyte unk60;
uint unk70;
uint unk80;
short unk90;
ushort unk100;
ushort unk110;
ubyte unk120;
} CLGM0;
typedef struct {
uint magic1;
char type[4];
uint magic2;
uint count;
CLGM_inner clgm_inner[count] <optimize=false>;
uint unk10;
uint unk20;
ubyte unk30;
ubyte unk40;
ubyte unk50;
ubyte unk60;
uint unk70;
uint unk80;
short unk90;
ushort unk100;
ushort unk110;
ubyte unk120;
} CLGM1;
typedef struct {
uint magic1;
char type[4];
uint magic2;
uint count;
CLGM_inner clgm_inner[count] <optimize=false>;
uint unk10;
uint unk20;
ubyte unk30;
ubyte unk40;
ubyte unk50;
ubyte unk60;
uint unk70;
uint unk80;
short unk90;
ushort unk100;
ushort unk110;
int unk120;
int unk130;
int unk140;
int unk150;
int unk160;
int unk170;
int unk180;
int unk190;
ubyte unk200;
} CLGM2;
typedef struct {
uint magic1;
char type[4];
uint magic2;
uint count;
uint clgmType;
ubyte unk20;
if (clgmType == 0) {CLGM0 clgm[count] <optimize=false>;}
if (clgmType == 1) {CLGM1 clgm[count] <optimize=false>;}
if (clgmType == 2) {CLGM2 clgm[count] <optimize=false>;}
ubyte unk30;
ubyte unk40;
ubyte unk50;
} CLND;
typedef struct { // Size: 179
uint index; // 0
uint unk10; // 4
uint unk20; // 8
float unk30; // 12
float unk40; // 16
float unk50; // 20
uint unk60; // 24
uint unk70; // 28
uint unk80; // 32
uint unk90; // 36
uint unk100; // 40
uint unk110; // 44
uint unk120; // 48
uint unk130; // 52
uint unk140; // 56
uint unk150; // 60
uint unk160; // 64
uint unk170; // 68
uint unk180; // 72
uint unk190; // 76
uint unk200; // 80
uint unk210; // 84
uint unk220; // 88
float unk230; // 92
float unk240; // 96
float unk250; // 100
uint unk260; // 104
uint unk270; // 108
uint unk280; // 112
uint unk290; // 116
float unk300; // 120
uint unk310; // 124
uint unk320; // 128
ubyte unk330; // 132
uint unk340; // 133
float unk350; // 137
float unk360; // 141
uint unk370; // 145
uint unk380; // 149
uint unk390; // 153
uint unk400; // 157
uint unk410; // 161
uint unk420; // 165
uint unk430; // 169
uint unk440; // 173
ushort unk450; // 177
} ATK0;
typedef struct { // Size: 218
uint index; // 0
uint attack_type; // 4
float motion_value; // 8
float fixed_damage; // 12
float part_modifier; // 16
float elemental_modifier; // 20
float status_modifier; // 24
float stun; // 28
float exhausted; // 32
float mount; // 36
float unk12; // 40
float unk13; // 44
ubyte unk14; // 48
float soften_value; // 49
float unk16; // 53
float unk17; // 57
float unk18; // 61
float unk19; // 65
float unk20; // 69
float unk21; // 73
float unk22; // 77
float unk23; // 81
uint flinch_value; // 85
uint unk25; // 89
ubyte minds_eye; // 93
float unk27; // 94
float unk28; // 98
ubyte unk29; // 102
float unk30; // 103
float unk31; // 107
float hit_lag_a; // 111
float unk33; // 115
float unk34; // 119
float unk35; // 123
float unk36; // 127
float hit_lag_b; // 131
float unk38; // 135
float unk39; // 139
uint unk40; // 143
byte unk41; // 147
ubyte unk42; // 148
uint unk43; // 149
float unk44; // 153
float unk45; // 157
float unk46; // 161
ubyte unk47; // 165
float unk48; // 166
uint unk49; // 170
ushort unk50; // 174
float sprite_gen; // 176
float motion_value_from_spending_enough_sprite; // 180
float unk53; // 184
uint unk54; // 188
uint unk55; // 192
uint unk56; // 196
uint unk57; // 200
uint unk58; // 204
uint unk59; // 208
uint unk60; // 212
ushort unk61; // 216
} ATK1;
typedef struct { // Size: 171
uint Index; // 0
uint knockbackType; // 4
uint knockbackLvl; // 8
uint unk3; // 12
float motionValue; // 16
uint unk5; // 20
uint unk6; // 24
float guard_staminaCost; // 28
uint guard_lvReq; // 32
uint elementId; // 36
uint unk10; // 40
float elementDmg; // 44
float poison; // 48
float deadly_poison; // 52
float paralysis; // 56
float sleep; // 60
float blast; // 64
float blast_scorge; // 68
float stun; // 72
float miasma; // 76
float bleed; // 80
ubyte eleResDownDouble;//?
ubyte eleResDown;
ubyte defDownDouble;
ubyte defDown;
uint unk22; // 88
uint unk23; // 92
uint unk24; // 96
float unk25; // 100
float unk26; // 104
float unk27; // 108
uint unk28; // 112
uint unk29; // 116
uint unk30; // 120
uint unk31; // 124
ubyte unk32; // 125
float unk33; // 129
uint unk34; // 133
uint unk35; // 137
uint unk36; // 141
uint unk37; // 145
uint unk38; // 149
uint unk39; // 153
uint unk40; // 157
uint unk41; // 161
uint unk42; // 165
ushort unk43; // 169
} ATK2;
typedef struct { // Size: 199
uint Index; // 0
uint damageType; // 4
uint damageType2; // 8
float damageMotionValue <bgcolor=0xff0000>; // 12
float Fixed_Damage; // 16
float Modifier_partDamage; // 20
uint Element_Type; // 24
float Fixed_Elemental_Damage; // 28
float Modifier_element; // 32
float Modifier_status; // 36
float Fixed_statusValue_Poison; // 40
float Fixed_statusValue_Paralyis; // 44
float Fixed_statusValue_Sleep; // 48
float Fixed_statusValue_Blast; // 52
float extraStun; // 56
float extraExhaust; // 60
float Fixed_statusValue_Traq; // 64
float Unk10; // 68
float Unk20; // 72
float Soften_Value; // 76
float Unk30; // 80
float Unk40; // 84
float Unk50; // 88
float Unk60; // 92
float Unk70; // 96
float Unk80; // 100
uint Unk90; // 104
uint Unk100; // 108
uint Unk110; // 112
uint Unk120; // 116
uint Unk125; // 120
uint Unk130; // 124
byte Unk140; // 128
ubyte Unk150; // 129
ubyte Unk160; // 130
uint Unk170; // 131
uint Unk180; // 135
float Unk190; // 139
uint Unk200; // 143
ubyte Unk210; // 147
float Unk220; // 148
ubyte Unk230; // 152
uint Unk240; // 153
uint Unk250; // 157
uint Unk260; // 161
uint Unk270; // 165
uint Unk280; // 169
uint Unk290; // 173
uint Unk300; // 177
uint Unk310; // 181
uint Unk320; // 185
uint Unk330; // 189
uint Unk340; // 193
ushort Unk350; // 197
} ATK3;
typedef struct {
uint unk1;
int unk2;
uint unk3;
uint unk4;
} OAP_Inner1;
typedef struct {
uint unk1;
uint unk2;
uint unk3;
ubyte unk4;
} OAP_Inner2;
typedef struct {
uint unk10;
ushort unk20;
ushort unk30;
uint unk40;
uint unk50;
uint unk60;
int unk70;
uint unk80;
uint unk90;
uint unk100;
int unk110;
uint unk120;
uint unk130;
} OAP_Inner3;
uint magic10;
char type[4]; // COL
uint magic20;
uint unk10;
uint unk20;
uint nameCount;
Name names[nameCount] <optimize=false>;
CLND clnd;
uint magic30;
char type2[4]; // ATK
uint magic40;
uint atkCount;
uint atkType;
if (atkType == 0) {ATK0 atks[atkCount];}
if (atkType == 1) {ATK1 atks[atkCount];}
if (atkType == 2) {ATK2 atks[atkCount];}
if (atkType == 3) {ATK3 atks[atkCount];}
uint OAPTypeHeader; // AE EE CF AB = hm 2D 40 B2 10 = em
uint magic50;
char type3[4]; // OAP
uint magic60;
typedef struct {
uint unk1;
uint unk2;
short unk3;
short unk4;
uint unk5;
} OAP_Inner_HM;
typedef struct {
uint unk1;
uint unk2;
uint unk5;
ubyte unk3;
} OAP_Inner_EM;
uint oapInnerCount;
if (OAPTypeHeader == 2882530990) { OAP_Inner_HM oapInner[oapInnerCount];}
if (OAPTypeHeader == 280117293 || OAPTypeHeader == 714995538) { OAP_Inner_EM oapInner[oapInnerCount];}
uint oapUnk1;
uint oapUnk2;
uint oapUnk3;
uint oapUnk4;