namespace pkNX.Structures.FlatBuffers.SWSH;
attribute "fs_serializer";

enum FixedGender : byte {
    Random = 0,
    Male = 1,
    Female = 2,
    Genderless = 2,
}

// scenarios that are set for specific story encounters, most don't work on encounters that are not meant to have them
enum Scenario : int {
    None,
    Legendary_Pokemon,
    _2,
    _3,
    Eternatus,
    Eternamax_Eternatus_1,
    Eternamax_Eternatus_2,
    Zacian_Zamazenta_Fog,
    Motostoke_Gym_Challenge,
    Max_Raid_Battle_1,
    Max_Raid_Battle_2,
    Max_Raid_Battle_3,
    Max_Raid_Battle_4,
    Zacian_Zamazenta_Boss,
    Fast_Slowpoke,
    Regigigas_Raid_Battle,
    Special_Raid_Battle,
    Calyrex,
    Glastrier_Spectrier,
    Calyrex_Fusion,
}

table EncounterStatic {
    BackgroundFarTypeID:ulong;
    BackgroundNearTypeID:ulong;
    EV_SPE:ubyte;
    EV_ATK:ubyte;
    EV_DEF:ubyte;
    EV_HP:ubyte;
    EV_SPA:ubyte;
    EV_SPD:ubyte;
    Form:ubyte;
    DynamaxLevel:ubyte;
    Field_0A:int;
    EncounterID:ulong (key);
    Field_0C:ubyte;
    CanGigantamax:bool;
    HeldItem:int;
    Level:ubyte;
    EncounterScenario:Scenario;
    Species:int;
    ShinyLock:uint;
    Nature:uint;
    Gender:byte;
    IV_SPE:byte;
    IV_ATK:byte;
    IV_DEF:byte;
    IV_HP:byte;
    IV_SPA:byte;
    IV_SPD:byte;
    Ability:int;
    Move0:int;
    Move1:int;
    Move2:int;
    Move3:int;
}

table EncounterStaticArchive (fs_serializer) {
    Table:[EncounterStatic] (required);
}

root_type EncounterStaticArchive;
