.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;