#include "ZoneAgSurvival.h"

Constants ZoneAgSurvival::GetConstants() {
    return Constants {
        60,
        2,
        7,
        5,
        10,
        5,
        15,
        10,
        0,
        true,
        std::vector<uint32_t> {8, 13, 18, 23, 28, 32},
        std::vector<uint32_t> {2, 10, 15, 20, 25, 30}
    };
}

MobSets ZoneAgSurvival::GetMobSets() {
    return MobSets {
        std::map<std::string, std::vector<LOT>> {
            {"MobA", {6351, 8088, 8089} },
            {"MobB", {6668, 8090, 8091} },
            {"MobC", {6454, 8096, 8097} },
        },
        std::map<std::string, std::vector<std::vector<std::vector<uint32_t>>>> {
            { BaseMobSet, {
                { {3, 0, 0}, },
                { {2, 1, 0}, },
                { {4, 1, 0}, },
                { {1, 2, 0}, },
                { {0, 1, 1}, },
                { {0, 2, 2}, }
            }},
            { RandMobSet, {
                { {4, 0, 0}, {4, 0, 0}, {4, 0, 0}, {4, 0, 0}, {3, 1, 0} },
                { {4, 1, 0}, {4, 1, 0}, {4, 1, 0}, {4, 1, 0}, {2, 1, 1} },
                { {1, 2, 0}, {1, 2, 0}, {1, 2, 0}, {1, 2, 0}, {0, 1, 1} },
                { {1, 2, 1}, {1, 2, 1}, {1, 2, 1}, {0, 2, 1}, {0, 2, 2} },
                { {0, 1, 2}, {0, 1, 2}, {0, 1, 2}, {0, 1, 3}, {0, 1, 3} },
                { {0, 2, 3}, {0, 2, 3}, {0, 2, 3}, {0, 2, 3}, {0, 2, 3} },
            }}
        }
    };
}

SpawnerNetworks ZoneAgSurvival::GetSpawnerNetworks() {
    return SpawnerNetworks {
        SpawnerNetworkCollection {
            BaseMobSet,
            {
                SpawnerNetwork {
                    std::vector<std::string> { "Base_MobA", "Base_MobB", "Base_MobC" },
                    "",
                    false,
                    false
                },
            }
        },
        SpawnerNetworkCollection {
            RandMobSet,
            {
                SpawnerNetwork {
                    std::vector<std::string> {"MobA_", "MobB_", "MobC_"},
                    "01",
                    false,
                    false
                },
                SpawnerNetwork {
                    std::vector<std::string> {"MobA_", "MobB_", "MobC_"},
                    "02",
                    false,
                    false
                },
                SpawnerNetwork {
                    std::vector<std::string> {"MobA_", "MobB_", "MobC_"},
                    "03",
                    true,
                    false
                },
            }
        },
        SpawnerNetworkCollection {
            "",
            {
                SpawnerNetwork {
                    std::vector<std::string> { "Rewards_" },
                    "01",
                    false,
                    false
                },
            }
        },
        SpawnerNetworkCollection {
            "",
            {
                SpawnerNetwork {
                    std::vector<std::string> { "Smash_" },
                    "01",
                    false,
                    false
                },
            }
        }
    };
}

std::map<uint32_t, uint32_t> ZoneAgSurvival::GetMissionsToUpdate() {
    return std::map<uint32_t, uint32_t> {
        { 479, 60 },
        { 1153, 180 },
        { 1618, 420 },
        { 1628, 420 },
        { 1638, 420 },
        { 1648, 420 },
        { 1412, 120 },
        { 1510, 120 },
        { 1547, 120 },
        { 1584, 120 },
        { 1426, 300 },
        { 1524, 300 },
        { 1561, 300 },
        { 1598, 300 },
        { 1865, 180 }
    };
}