#pragma once

namespace ai {

enum class Age {
    DarkAge,
    FeudalAge,
    CastleAge,
    ImperialAge,
    PostImperialAge,
};
enum class Building {
    ArcheryRange,
    Barracks,
    Blacksmith,
    BombardTower,
    Castle,
    Dock,
    Farm,
    FishTrap,
    GuardTower,
    House,
    Keep,
    LumberCamp,
    Market,
    Mill,
    MiningCamp,
    Monastery,
    Outpost,
    SiegeWorkshop,
    Stable,
    TownCenter,
    University,
    WatchTower,
    Wonder,
    WatchTowerLine,
};
enum class Civ {
    Briton,
    Byzantine,
    Celtic,
    Chinese,
    Frankish,
    Gothic,
    Japanese,
    Mongol,
    Persian,
    Saracen,
    Teutonic,
    Turkish,
    Viking,
    MyCiv,
};
enum class Commodity {
    Food,
    Stone,
    Wood,
    Gold,
};
enum class DifficultyLevel {
    Easiest,
    Easy,
    Moderate,
    Hard,
    Hardest,
};
enum class DifficultyParameter {
    AbilityToDodgeMissiles,
    AbilityToMaintainDistance,
};
enum class DiplomaticStance {
    Ally,
    Neutral,
    Enemy,
};
enum class MapSizeType {
    Tiny,
    Small,
    Medium,
    Normal,
    Large,
    Giant,
};
enum class MapTypeName {
    Arabia,
    Archipelago,
    Baltic,
    BlackForest,
    Coastal,
    Continental,
    CraterLake,
    Fortress,
    GoldRush,
    Highland,
    Islands,
    Mediterranean,
    Migration,
    Rivers,
    TeamIslands,
    ScenarioMap,
};
enum class PlayerNumberType {
    AnyAlly,
    AnyComputer,
    AnyComputerAlly,
    AnyComputerEnemy,
    AnyComputerNeutral,
    AnyEnemy,
    AnyHuman,
    AnyHumanAlly,
    AnyHumanEnemy,
    AnyHumanNeutral,
    AnyNeutral,
    EveryAlly,
    EveryComputer,
    EveryEnemy,
    EveryHuman,
    EveryNeutral,
    MyPlayerNumber,
};
enum class RelOp {
    LessThan,
    LessOrEqual,
    GreaterThan,
    GreaterOrEqual,
    Equal,
    NotEqual,
};
enum class ResearchItem {
    RiArbalest,
    RiCrossbow,
    RiEliteSkirmisher,
    RiHandCannon,
    RiHeavyCavalryArcher,
    RiChampion,
    RiEliteEagleWarrior,
    RiHalberdier,
    RiLongSwordsman,
    RiManAtArms,
    RiParthianTactics,
    RiPikeman,
    RiSquires,
    RiThumbRing,
    RiTracking,
    RiTwoHandedSwordsman,
    RiBlastFurnace,
    RiBodkinArrow,
    RiBracer,
    RiChainBarding,
    RiChainMail,
    RiFletching,
    RiForging,
    RiIronCasting,
    RiLeatherArcherArmor,
    RiPaddedArcherArmor,
    RiPlateBarding,
    RiPlateMail,
    RiRingArcherArmor,
    RiScaleBarding,
    RiScaleMail,
    RiConscription,
    RiHoardings,
    RiSappers,
    RiEliteBerserk,
    RiEliteCataphract,
    RiEliteChuKoNu,
    RiEliteHuskarl,
    RiEliteJanissary,
    RiEliteLongbowman,
    RiEliteMameluke,
    RiEliteMangudai,
    RiEliteSamurai,
    RiEliteTeutonicKnight,
    RiEliteThrowingAxeman,
    RiEliteWarElephant,
    RiEliteWoadRaider,
    RiMyUniqueEliteUnit,
    RiMyUniqueResearch,
    RiCannonGalleon,
    RiCareening,
    RiDeckGuns,
    RiDryDock,
    RiEliteLongboat,
    RiFastFireShip,
    RiGalleon,
    RiHeavyDemolitionShip,
    RiShipwright,
    RiWarGalley,
    RiBowSaw,
    RiDoubleBitAxe,
    RiTwoManSaw,
    RiBanking,
    RiCaravan,
    RiCartography,
    RiCoinage,
    RiGuilds,
    RiCropRotation,
    RiHeavyPlow,
    RiHorseCollar,
    RiGoldMining,
    RiGoldShaftMining,
    RiStoneMining,
    RiStoneShaftMining,
    RiAtonement,
    RiBlockPrinting,
    RiFaith,
    RiFervor,
    RiHerbalMedicine,
    RiHeresy,
    RiIllumination,
    RiRedemption,
    RiSanctity,
    RiTheocracy,
    RiBombardCannon,
    RiCappedRam,
    RiHeavyScorpion,
    RiOnager,
    RiScorpion,
    RiSiegeOnager,
    RiSiegeRam,
    RiBloodlines,
    RiCavalier,
    RiHeavyCamel,
    RiHusbandry,
    RiHussar,
    RiLightCavalry,
    RiPaladin,
    RiHandCart,
    RiLoom,
    RiTownPatrol,
    RiTownWatch,
    RiWheelBarrow,
    RiArchitecture,
    RiBallistics,
    RiBombardTower,
    RiChemistry,
    RiFortifiedWall,
    RiGuardTower,
    RiHeatedShot,
    RiKeep,
    RiMasonry,
    RiMurderHoles,
    RiSiegeEngineers,
    RiStonecutting,
    MyUniqueUnitUpgrade,
    MyUniqueResearch,
};
enum class StartingResourcesType {
    LowResources,
    MediumResources,
    HighResources,
};
enum class StrategicNumberName {
    SnPercentCivilianExplorers,
    SnPercentCivilianBuilders,
    SnPercentCivilianGatherers,
    SnCapCivilianExplorers,
    SnCapCivilianBuilders,
    SnCapCivilianGatherers,
    SnMinimumAttackGroupSize,
    SnTotalNumberExplorers,
    SnPercentEnemySightedResponse,
    SnEnemySightedResponseDistance,
    SnSentryDistance,
    SnRelicReturnDistance,
    SnMinimumDefendGroupSize,
    SnMaximumAttackGroupSize,
    SnMaximumDefendGroupSize,
    SnMinimumPeaceLikeLevel,
    SnPercentExplorationRequired,
    SnZeroPriorityDistance,
    SnMinimumCivilianExplorers,
    SnNumberAttackGroups,
    SnNumberDefendGroups,
    SnAttackGroupGatherSpacing,
    SnNumberExploreGroups,
    SnMinimumExploreGroupSize,
    SnMaximumExploreGroupSize,
    SnGoldDefendPriority,
    SnStoneDefendPriority,
    SnForageDefendPriority,
    SnRelicDefendPriority,
    SnTownDefendPriority,
    SnDefenseDistance,
    SnNumberBoatAttackGroups,
    SnMinimumBoatAttackGroupSize,
    SnMaximumBoatAttackGroupSize,
    SnNumberBoatExploreGroups,
    SnMinimumBoatExploreGroupSize,
    SnMaximumBoatExploreGroupSize,
    SnNumberBoatDefendGroups,
    SnMinimumBoatDefendGroupSize,
    SnMaximumBoatDefendGroupSize,
    SnDockDefendPriority,
    SnSentryDistanceVariation,
    SnMinimumTownSize,
    SnMaximumTownSize,
    SnGroupCommanderSelectionMethod,
    SnConsecutiveIdleUnitLimit,
    SnTargetEvaluationDistance,
    SnTargetEvaluationHitpoints,
    SnTargetEvaluationDamageCapability,
    SnTargetEvaluationKills,
    SnTargetEvaluationAllyProximity,
    SnTargetEvaluationRof,
    SnTargetEvaluationRandomness,
    SnCampMaxDistance,
    SnMillMaxDistance,
    SnTargetEvaluationAttackAttempts,
    SnTargetEvaluationRange,
    SnDefendOverlapDistance,
    SnScaleMinimumAttackGroupSize,
    SnScaleMaximumAttackGroupSize,
    SnAttackGroupSizeRandomness,
    SnScalingFrequency,
    SnMaximumGaiaAttackResponse,
    SnBuildFrequency,
    SnAttackSeparationTimeRandomness,
    SnAttackIntelligence,
    SnInitialAttackDelay,
    SnSaveScenarioInformation,
    SnSpecialAttackType1,
    SnSpecialAttackInfluence1,
    SnMinimumWaterBodySizeForDock,
    SnNumberBuildAttemptsBeforeSkip,
    SnMaxSkipsPerAttempt,
    SnFoodGathererPercentage,
    SnGoldGathererPercentage,
    SnStoneGathererPercentage,
    SnWoodGathererPercentage,
    SnTargetEvaluationContinent,
    SnTargetEvaluationSiegeWeapon,
    SnGroupLeaderDefenseDistance,
    SnInitialAttackDelayType,
    SnBlotExplorationMap,
    SnBlotSize,
    SnIntelligentGathering,
    SnTaskUngroupedSoldiers,
    SnTargetEvaluationBoat,
    SnNumberEnemyObjectsRequired,
    SnNumberMaxSkipCycles,
    SnRetaskGatherAmount,
    SnMaxRetaskGatherAmount,
    SnMaxBuildPlanGathererPercentage,
    SnFoodDropsiteDistance,
    SnWoodDropsiteDistance,
    SnStoneDropsiteDistance,
    SnGoldDropsiteDistance,
    SnInitialExplorationRequired,
    SnRandomPlacementFactor,
    SnRequiredForestTiles,
    SnAttackDiplomacyImpact,
    SnPercentHalfExploration,
    SnTargetEvaluationTimeKillRatio,
    SnTargetEvaluationInProgress,
    SnAttackWinningPlayer,
    SnCoopShareInformation,
    SnAttackWinningPlayerFactor,
    SnCoopShareAttacking,
    SnCoopShareAttackingInterval,
    SnPercentageExploreExterminators,
    SnTrackPlayerHistory,
    SnMinimumDropsiteBuffer,
    SnUseByTypeMaxGathering,
    SnMinimumBoarHuntGroupSize,
    SnMinimumAmountForTrading,
    SnEasiestReactionPercentage,
    SnEasierReactionPercentage,
    SnHitsBeforeAllianceChange,
    SnAllowCivilianDefense,
    SnNumberForwardBuilders,
    SnPercentAttackSoldiers,
    SnPercentAttackBoats,
    SnDoNotScaleForDifficultyLevel,
    SnGroupFormDistance,
    SnIgnoreAttackGroupUnderAttack,
    SnGatherDefenseUnits,
    SnMaximumWoodDropDistance,
    SnMaximumFoodDropDistance,
    SnMaximumHuntDropDistance,
    SnMaximumFishBoatDropDistance,
    SnMaximumGoldDropDistance,
    SnMaximumStoneDropDistance,
    SnGatherIdleSoldiersAtCenter,
    SnGarrisonRams,
};
enum class Unit {
    Arbalest,
    Archer,
    CavalryArcher,
    Crossbowman,
    EliteSkirmisher,
    HandCannoneer,
    HeavyCavalryArcher,
    Skirmisher,
    Champion,
    EagleWarrior,
    EliteEagleWarrior,
    Halberdier,
    LongSwordsman,
    ManAtArms,
    Militiaman,
    Pikeman,
    Spearman,
    TwoHandedSwordsman,
    Berserk,
    Cataphract,
    ChuKoNu,
    Conquistador,
    EliteBerserk,
    EliteCataphract,
    EliteChuKoNu,
    EliteConquistador,
    EliteHuskarl,
    EliteJaguarWarrior,
    EliteJanissary,
    EliteLongbowman,
    EliteMameluke,
    EliteMangudai,
    ElitePlumedArcher,
    EliteSamurai,
    EliteTarkan,
    EliteTeutonicKnight,
    EliteThrowingAxeman,
    EliteWarElephant,
    EliteWarWagon,
    EliteWoadRaider,
    Huskarl,
    JaguarWarrior,
    Janissary,
    Longbowman,
    Mameluke,
    Mangudai,
    Petard,
    PlumedArcher,
    Samurai,
    Tarkan,
    TeutonicKnight,
    ThrowingAxeman,
    Trebuchet,
    WarElephant,
    WarWagon,
    WoadRaider,
    CannonGalleon,
    DemolitionShip,
    EliteCannonGalleon,
    EliteLongboat,
    EliteTurtleShip,
    FastFireShip,
    FireShip,
    FishingShip,
    Galleon,
    Galley,
    HeavyDemolitionShip,
    Longboat,
    TradeCog,
    TransportShip,
    TurtleShip,
    WarGalley,
    TradeCart,
    Missionary,
    Monk,
    BatteringRam,
    BombardCannon,
    CappedRam,
    HeavyScorpion,
    Mangonel,
    Onager,
    Scorpion,
    SiegeOnager,
    SiegeRam,
    Camel,
    Cavalier,
    HeavyCamel,
    Hussar,
    Knight,
    LightCavalry,
    Paladin,
    ScoutCavalry,
    Villager,
    ArcherLine,
    CavalryArcherLine,
    SkirmisherLine,
    EagleWarriorLine,
    MilitiamanLine,
    SpearmanLine,
    BerserkLine,
    CataphractLine,
    ChuKoNuLine,
    ConquistadorLine,
    HuskarlLine,
    JaguarWarriorLine,
    JanissaryLine,
    LongbowmanLine,
    MamelukeLine,
    MangudaiLine,
    PlumedArcherLine,
    SamuraiLine,
    TarkanLine,
    TeutonicKnightLine,
    ThrowingAxemanLine,
    WarElephantLine,
    WarWagonLine,
    WoadRaiderLine,
    CannonGalleonLine,
    DemolitionShipLine,
    FireShipLine,
    GalleyLine,
    LongboatLine,
    TurtleShipLine,
    BatteringRamLine,
    MangonelLine,
    ScorpionLine,
    CamelLine,
    KnightLine,
    ScoutCavalryLine,
    MyEliteUniqueUnit,
    MyUniqueUnit,
    MyUniqueUnitLine,
};
enum class VictoryConditionName {
    Standard,
    Conquest,
    TimeLimit,
    Score,
    Custom,
};
enum class WallType {
    FortifiedWall,
    PalisadeWall,
    StoneWall,
    StoneWallLine,
};
enum class ParameterType {
    DarkAge,
    FeudalAge,
    CastleAge,
    ImperialAge,
    PostImperialAge,
    ArcheryRange,
    Barracks,
    Blacksmith,
    BombardTower,
    Castle,
    Dock,
    Farm,
    FishTrap,
    GuardTower,
    House,
    Keep,
    LumberCamp,
    Market,
    Mill,
    MiningCamp,
    Monastery,
    Outpost,
    SiegeWorkshop,
    Stable,
    TownCenter,
    University,
    WatchTower,
    Wonder,
    WatchTowerLine,
    Briton,
    Byzantine,
    Celtic,
    Chinese,
    Frankish,
    Gothic,
    Japanese,
    Mongol,
    Persian,
    Saracen,
    Teutonic,
    Turkish,
    Viking,
    MyCiv,
    Food,
    Stone,
    Wood,
    Gold,
    Easiest,
    Easy,
    Moderate,
    Hard,
    Hardest,
    AbilityToDodgeMissiles,
    AbilityToMaintainDistance,
    Ally,
    Neutral,
    Enemy,
    Tiny,
    Small,
    Medium,
    Normal,
    Large,
    Giant,
    Arabia,
    Archipelago,
    Baltic,
    BlackForest,
    Coastal,
    Continental,
    CraterLake,
    Fortress,
    GoldRush,
    Highland,
    Islands,
    Mediterranean,
    Migration,
    Rivers,
    TeamIslands,
    ScenarioMap,
    AnyAlly,
    AnyComputer,
    AnyComputerAlly,
    AnyComputerEnemy,
    AnyComputerNeutral,
    AnyEnemy,
    AnyHuman,
    AnyHumanAlly,
    AnyHumanEnemy,
    AnyHumanNeutral,
    AnyNeutral,
    EveryAlly,
    EveryComputer,
    EveryEnemy,
    EveryHuman,
    EveryNeutral,
    MyPlayerNumber,
    LessThan,
    LessOrEqual,
    GreaterThan,
    GreaterOrEqual,
    Equal,
    NotEqual,
    RiArbalest,
    RiCrossbow,
    RiEliteSkirmisher,
    RiHandCannon,
    RiHeavyCavalryArcher,
    RiChampion,
    RiEliteEagleWarrior,
    RiHalberdier,
    RiLongSwordsman,
    RiManAtArms,
    RiParthianTactics,
    RiPikeman,
    RiSquires,
    RiThumbRing,
    RiTracking,
    RiTwoHandedSwordsman,
    RiBlastFurnace,
    RiBodkinArrow,
    RiBracer,
    RiChainBarding,
    RiChainMail,
    RiFletching,
    RiForging,
    RiIronCasting,
    RiLeatherArcherArmor,
    RiPaddedArcherArmor,
    RiPlateBarding,
    RiPlateMail,
    RiRingArcherArmor,
    RiScaleBarding,
    RiScaleMail,
    RiConscription,
    RiHoardings,
    RiSappers,
    RiEliteBerserk,
    RiEliteCataphract,
    RiEliteChuKoNu,
    RiEliteHuskarl,
    RiEliteJanissary,
    RiEliteLongbowman,
    RiEliteMameluke,
    RiEliteMangudai,
    RiEliteSamurai,
    RiEliteTeutonicKnight,
    RiEliteThrowingAxeman,
    RiEliteWarElephant,
    RiEliteWoadRaider,
    RiMyUniqueEliteUnit,
    RiMyUniqueResearch,
    RiCannonGalleon,
    RiCareening,
    RiDeckGuns,
    RiDryDock,
    RiEliteLongboat,
    RiFastFireShip,
    RiGalleon,
    RiHeavyDemolitionShip,
    RiShipwright,
    RiWarGalley,
    RiBowSaw,
    RiDoubleBitAxe,
    RiTwoManSaw,
    RiBanking,
    RiCaravan,
    RiCartography,
    RiCoinage,
    RiGuilds,
    RiCropRotation,
    RiHeavyPlow,
    RiHorseCollar,
    RiGoldMining,
    RiGoldShaftMining,
    RiStoneMining,
    RiStoneShaftMining,
    RiAtonement,
    RiBlockPrinting,
    RiFaith,
    RiFervor,
    RiHerbalMedicine,
    RiHeresy,
    RiIllumination,
    RiRedemption,
    RiSanctity,
    RiTheocracy,
    RiBombardCannon,
    RiCappedRam,
    RiHeavyScorpion,
    RiOnager,
    RiScorpion,
    RiSiegeOnager,
    RiSiegeRam,
    RiBloodlines,
    RiCavalier,
    RiHeavyCamel,
    RiHusbandry,
    RiHussar,
    RiLightCavalry,
    RiPaladin,
    RiHandCart,
    RiLoom,
    RiTownPatrol,
    RiTownWatch,
    RiWheelBarrow,
    RiArchitecture,
    RiBallistics,
    RiBombardTower,
    RiChemistry,
    RiFortifiedWall,
    RiGuardTower,
    RiHeatedShot,
    RiKeep,
    RiMasonry,
    RiMurderHoles,
    RiSiegeEngineers,
    RiStonecutting,
    MyUniqueUnitUpgrade,
    MyUniqueResearch,
    LowResources,
    MediumResources,
    HighResources,
    SnPercentCivilianExplorers,
    SnPercentCivilianBuilders,
    SnPercentCivilianGatherers,
    SnCapCivilianExplorers,
    SnCapCivilianBuilders,
    SnCapCivilianGatherers,
    SnMinimumAttackGroupSize,
    SnTotalNumberExplorers,
    SnPercentEnemySightedResponse,
    SnEnemySightedResponseDistance,
    SnSentryDistance,
    SnRelicReturnDistance,
    SnMinimumDefendGroupSize,
    SnMaximumAttackGroupSize,
    SnMaximumDefendGroupSize,
    SnMinimumPeaceLikeLevel,
    SnPercentExplorationRequired,
    SnZeroPriorityDistance,
    SnMinimumCivilianExplorers,
    SnNumberAttackGroups,
    SnNumberDefendGroups,
    SnAttackGroupGatherSpacing,
    SnNumberExploreGroups,
    SnMinimumExploreGroupSize,
    SnMaximumExploreGroupSize,
    SnGoldDefendPriority,
    SnStoneDefendPriority,
    SnForageDefendPriority,
    SnRelicDefendPriority,
    SnTownDefendPriority,
    SnDefenseDistance,
    SnNumberBoatAttackGroups,
    SnMinimumBoatAttackGroupSize,
    SnMaximumBoatAttackGroupSize,
    SnNumberBoatExploreGroups,
    SnMinimumBoatExploreGroupSize,
    SnMaximumBoatExploreGroupSize,
    SnNumberBoatDefendGroups,
    SnMinimumBoatDefendGroupSize,
    SnMaximumBoatDefendGroupSize,
    SnDockDefendPriority,
    SnSentryDistanceVariation,
    SnMinimumTownSize,
    SnMaximumTownSize,
    SnGroupCommanderSelectionMethod,
    SnConsecutiveIdleUnitLimit,
    SnTargetEvaluationDistance,
    SnTargetEvaluationHitpoints,
    SnTargetEvaluationDamageCapability,
    SnTargetEvaluationKills,
    SnTargetEvaluationAllyProximity,
    SnTargetEvaluationRof,
    SnTargetEvaluationRandomness,
    SnCampMaxDistance,
    SnMillMaxDistance,
    SnTargetEvaluationAttackAttempts,
    SnTargetEvaluationRange,
    SnDefendOverlapDistance,
    SnScaleMinimumAttackGroupSize,
    SnScaleMaximumAttackGroupSize,
    SnAttackGroupSizeRandomness,
    SnScalingFrequency,
    SnMaximumGaiaAttackResponse,
    SnBuildFrequency,
    SnAttackSeparationTimeRandomness,
    SnAttackIntelligence,
    SnInitialAttackDelay,
    SnSaveScenarioInformation,
    SnSpecialAttackType1,
    SnSpecialAttackInfluence1,
    SnMinimumWaterBodySizeForDock,
    SnNumberBuildAttemptsBeforeSkip,
    SnMaxSkipsPerAttempt,
    SnFoodGathererPercentage,
    SnGoldGathererPercentage,
    SnStoneGathererPercentage,
    SnWoodGathererPercentage,
    SnTargetEvaluationContinent,
    SnTargetEvaluationSiegeWeapon,
    SnGroupLeaderDefenseDistance,
    SnInitialAttackDelayType,
    SnBlotExplorationMap,
    SnBlotSize,
    SnIntelligentGathering,
    SnTaskUngroupedSoldiers,
    SnTargetEvaluationBoat,
    SnNumberEnemyObjectsRequired,
    SnNumberMaxSkipCycles,
    SnRetaskGatherAmount,
    SnMaxRetaskGatherAmount,
    SnMaxBuildPlanGathererPercentage,
    SnFoodDropsiteDistance,
    SnWoodDropsiteDistance,
    SnStoneDropsiteDistance,
    SnGoldDropsiteDistance,
    SnInitialExplorationRequired,
    SnRandomPlacementFactor,
    SnRequiredForestTiles,
    SnAttackDiplomacyImpact,
    SnPercentHalfExploration,
    SnTargetEvaluationTimeKillRatio,
    SnTargetEvaluationInProgress,
    SnAttackWinningPlayer,
    SnCoopShareInformation,
    SnAttackWinningPlayerFactor,
    SnCoopShareAttacking,
    SnCoopShareAttackingInterval,
    SnPercentageExploreExterminators,
    SnTrackPlayerHistory,
    SnMinimumDropsiteBuffer,
    SnUseByTypeMaxGathering,
    SnMinimumBoarHuntGroupSize,
    SnMinimumAmountForTrading,
    SnEasiestReactionPercentage,
    SnEasierReactionPercentage,
    SnHitsBeforeAllianceChange,
    SnAllowCivilianDefense,
    SnNumberForwardBuilders,
    SnPercentAttackSoldiers,
    SnPercentAttackBoats,
    SnDoNotScaleForDifficultyLevel,
    SnGroupFormDistance,
    SnIgnoreAttackGroupUnderAttack,
    SnGatherDefenseUnits,
    SnMaximumWoodDropDistance,
    SnMaximumFoodDropDistance,
    SnMaximumHuntDropDistance,
    SnMaximumFishBoatDropDistance,
    SnMaximumGoldDropDistance,
    SnMaximumStoneDropDistance,
    SnGatherIdleSoldiersAtCenter,
    SnGarrisonRams,
    Arbalest,
    Archer,
    CavalryArcher,
    Crossbowman,
    EliteSkirmisher,
    HandCannoneer,
    HeavyCavalryArcher,
    Skirmisher,
    Champion,
    EagleWarrior,
    EliteEagleWarrior,
    Halberdier,
    LongSwordsman,
    ManAtArms,
    Militiaman,
    Pikeman,
    Spearman,
    TwoHandedSwordsman,
    Berserk,
    Cataphract,
    ChuKoNu,
    Conquistador,
    EliteBerserk,
    EliteCataphract,
    EliteChuKoNu,
    EliteConquistador,
    EliteHuskarl,
    EliteJaguarWarrior,
    EliteJanissary,
    EliteLongbowman,
    EliteMameluke,
    EliteMangudai,
    ElitePlumedArcher,
    EliteSamurai,
    EliteTarkan,
    EliteTeutonicKnight,
    EliteThrowingAxeman,
    EliteWarElephant,
    EliteWarWagon,
    EliteWoadRaider,
    Huskarl,
    JaguarWarrior,
    Janissary,
    Longbowman,
    Mameluke,
    Mangudai,
    Petard,
    PlumedArcher,
    Samurai,
    Tarkan,
    TeutonicKnight,
    ThrowingAxeman,
    Trebuchet,
    WarElephant,
    WarWagon,
    WoadRaider,
    CannonGalleon,
    DemolitionShip,
    EliteCannonGalleon,
    EliteLongboat,
    EliteTurtleShip,
    FastFireShip,
    FireShip,
    FishingShip,
    Galleon,
    Galley,
    HeavyDemolitionShip,
    Longboat,
    TradeCog,
    TransportShip,
    TurtleShip,
    WarGalley,
    TradeCart,
    Missionary,
    Monk,
    BatteringRam,
    BombardCannon,
    CappedRam,
    HeavyScorpion,
    Mangonel,
    Onager,
    Scorpion,
    SiegeOnager,
    SiegeRam,
    Camel,
    Cavalier,
    HeavyCamel,
    Hussar,
    Knight,
    LightCavalry,
    Paladin,
    ScoutCavalry,
    Villager,
    ArcherLine,
    CavalryArcherLine,
    SkirmisherLine,
    EagleWarriorLine,
    MilitiamanLine,
    SpearmanLine,
    BerserkLine,
    CataphractLine,
    ChuKoNuLine,
    ConquistadorLine,
    HuskarlLine,
    JaguarWarriorLine,
    JanissaryLine,
    LongbowmanLine,
    MamelukeLine,
    MangudaiLine,
    PlumedArcherLine,
    SamuraiLine,
    TarkanLine,
    TeutonicKnightLine,
    ThrowingAxemanLine,
    WarElephantLine,
    WarWagonLine,
    WoadRaiderLine,
    CannonGalleonLine,
    DemolitionShipLine,
    FireShipLine,
    GalleyLine,
    LongboatLine,
    TurtleShipLine,
    BatteringRamLine,
    MangonelLine,
    ScorpionLine,
    CamelLine,
    KnightLine,
    ScoutCavalryLine,
    MyEliteUniqueUnit,
    MyUniqueUnit,
    MyUniqueUnitLine,
    Standard,
    Conquest,
    TimeLimit,
    Score,
    Custom,
    FortifiedWall,
    PalisadeWall,
    StoneWall,
    StoneWallLine,

};
enum class ActionType {
    AcknowledgeEvent,
    AcknowledgeTaunt,
    AttackNow,
    Build,
    BuildForward,
    BuildGate,
    BuildWall,
    BuyCommodity,
    CcAddResource,
    ChatLocal,
    ChatLocalToSelf,
    ChatLocalUsingId,
    ChatLocalUsingRange,
    ChatToAll,
    ChatToAllUsingId,
    ChatToAllUsingRange,
    ChatToAllies,
    ChatToAlliesUsingId,
    ChatToAlliesUsingRange,
    ChatToEnemies,
    ChatToEnemiesUsingId,
    ChatToEnemiesUsingRange,
    ChatToPlayer,
    ChatToPlayerUsingId,
    ChatToPlayerUsingRange,
    ChatTrace,
    ClearTributeMemory,
    DeleteBuilding,
    DeleteUnit,
    DisableSelf,
    DisableTimer,
    DoNothing,
    EnableTimer,
    EnableWallPlacement,
    GenerateRandomNumber,
    Log,
    LogTrace,
    ReleaseEscrow,
    Research,
    Resign,
    SellCommodity,
    SetDifficultyParameter,
    SetDoctrine,
    SetEscrowPercentage,
    SetGoal,
    SetSharedGoal,
    SetSignal,
    SetStance,
    SetStrategicNumber,
    Spy,
    Taunt,
    TauntUsingRange,
    Train,
    TributeToPlayer,

};
enum class Fact {
    Trueval,
    Falseval,
    AttackSoldierCount,
    AttackWarboatCount,
    BuildingAvailable,
    BuildingCount,
    BuildingCountTotal,
    BuildingTypeCount,
    BuildingTypeCountTotal,
    CanAffordBuilding,
    CanAffordCompleteWall,
    CanAffordResearch,
    CanAffordUnit,
    CanBuild,
    CanBuildGate,
    CanBuildGateWithEscrow,
    CanBuildWall,
    CanBuildWallWithEscrow,
    CanBuildWithEscrow,
    CanBuyCommodity,
    CanResearch,
    CanResearchWithEscrow,
    CanSellCommodity,
    CanSpy,
    CanSpyWithEscrow,
    CanTrain,
    CanTrainWithEscrow,
    CcPlayersBuildingCount,
    CcPlayersBuildingTypeCount,
    CcPlayersUnitCount,
    CcPlayersUnitTypeCount,
    CheatsEnabled,
    CivSelected,
    CivilianPopulation,
    CommodityBuyingPrice,
    CommoditySellingPrice,
    CurrentAge,
    CurrentAgeTime,
    CurrentScore,
    DeathMatchGame,
    DefendSoldierCount,
    DefendWarboatCount,
    Difficulty,
    Doctrine,
    DropsiteMinDistance,
    EnemyBuildingsInTown,
    EnemyCapturedRelics,
    EscrowAmount,
    EventDetected,
    FoodAmount,
    GameTime,
    Goal,
    GoldAmount,
    HousingHeadroom,
    IdleFarmCount,
    MapSize,
    MapType,
    MilitaryPopulation,
    PlayerComputer,
    PlayerHuman,
    PlayerInGame,
    PlayerNumber,
    PlayerResigned,
    PlayerValid,
    PlayersBuildingCount,
    PlayersBuildingTypeCount,
    PlayersCiv,
    PlayersCivilianPopulation,
    PlayersCurrentAge,
    PlayersCurrentAgeTime,
    PlayersMilitaryPopulation,
    PlayersPopulation,
    PlayersScore,
    PlayersStance,
    PlayersTribute,
    PlayersTributeMemory,
    PlayersUnitCount,
    PlayersUnitTypeCount,
    Population,
    PopulationCap,
    PopulationHeadroom,
    RandomNumber,
    RegicideGame,
    ResearchAvailable,
    ResearchCompleted,
    ResourceFound,
    SharedGoal,
    SheepAndForageTooFar,
    SoldierCount,
    StanceToward,
    StartingAge,
    StartingResources,
    StoneAmount,
    StrategicNumber,
    TauntDetected,
    TimerTriggered,
    TownUnderAttack,
    UnitAvailable,
    UnitCount,
    UnitCountTotal,
    UnitTypeCount,
    UnitTypeCountTotal,
    VictoryCondition,
    WallCompletedPercentage,
    WallInvisiblePercentage,
    WarboatCount,
    WoodAmount,

};

}// namespace ai
