use aggregate initializers

This commit is contained in:
David Markowitz 2023-08-07 19:44:37 -07:00
parent 471e711458
commit e42fffd533
3 changed files with 493 additions and 442 deletions

View File

@ -1,13 +1,13 @@
#include "ZoneNsWaves.h" #include "ZoneNsWaves.h"
WaveConstants ZoneNsWaves::GetConstants() { WaveConstants ZoneNsWaves::GetConstants() {
return { return WaveConstants{
60, .acceptedDelay = 60,
2, .startDelay = 2,
6, .waveTime = 6,
2, .waveCompleteDelay = 2,
"surprise", .eventGroup = "surprise",
"intro" .introCelebration = "intro"
}; };
} }
@ -42,405 +42,455 @@ std::vector<std::string> ZoneNsWaves::GetSpawnerNames() {
std::vector<WaveMission> ZoneNsWaves::GetWaveMissions() { std::vector<WaveMission> ZoneNsWaves::GetWaveMissions() {
return { return {
{190, 7, 1242}, WaveMission{
{240, 7, 1226}, .time = 190,
{450, 15, 1243}, .wave = 7,
{600, 15, 1227}, .missionID = 1242
{720, 22, 1244}, },
{840, 22, 1228}, WaveMission{
{1080, 29, 1245}, .time = 240,
{1200, 29, 1229}, .wave = 7,
.missionID = 1226
},
WaveMission{
.time = 450,
.wave = 15,
.missionID = 1243
},
WaveMission{
.time = 600,
.wave = 15,
.missionID = 1227
},
WaveMission{
.time = 720,
.wave = 22,
.missionID = 1244
},
WaveMission{
.time = 840,
.wave = 22,
.missionID = 1228
},
WaveMission{
.time = 1080,
.wave = 29,
.missionID = 1245
},
WaveMission{
.time = 1200,
.wave = 29,
.missionID = 1229
},
}; };
} }
std::vector<Wave> ZoneNsWaves::GetWaves() { std::vector<Wave> ZoneNsWaves::GetWaves() {
return { return std::vector<Wave>{
// Wave 1 // Wave 1
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::stromling_minifig, 8, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::stromling_minifig, .amountToSpawn = 8, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::stromling_minifig, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::stromling_minifig, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::stromling_minifig, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::stromling_minifig, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::stromling_minifig, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::stromling_minifig, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
} }
}, },
// Wave 2 // Wave 2
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 8, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 8, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
} }
}, },
// Wave 3 // Wave 3
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 4, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
}, },
}, },
// Wave 4 // Wave 4
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
} }
}, },
// Wave 5 // Wave 5
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::interior_C) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::stromling, 1, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::stromling, 1, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
} }
}, },
// Wave 6 // Wave 6
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::interior_C) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_C) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::stromling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
} }
},
// Wave 7
Wave{
.waveMobs = std::vector<MobDefinition> {
{ .lot = SpawnLOTS::stromling_boss, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Boss) },
}, },
.soloMissions = {1885},
.missions = {},
.cinematic = "Stromling_Boss",
.cinematicLength = 5.0f
},
// Wave 7 // Wave 8
Wave { Wave{
std::vector<MobDefinition> { .waveMobs = std::vector<MobDefinition> {
{ SpawnLOTS::stromling_boss, 1, GetSpawnerName(SpawnerName::Boss) }, {.lot = SpawnLOTS::mushroom, .amountToSpawn = 6, .spawnerName = GetSpawnerName(SpawnerName::Reward_01) },
}, {.lot = SpawnLOTS::mushroom, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_Reward) },
{1885}, },
{}, .soloMissions = {},
"Stromling_Boss", .missions = {},
5.0f .cinematic = "",
}, .cinematicLength = -1.0f,
.timeLimit = 25,
},
// Wave 8 // Wave 9
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{SpawnLOTS::mushroom, 6, GetSpawnerName(SpawnerName::Reward_01) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{SpawnLOTS::mushroom, 3, GetSpawnerName(SpawnerName::interior_Reward) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
}, {}, {}, "", -1.0f, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
25, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
}, }
},
// Wave 9 // Wave 10
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
} { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
}, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ .lot = SpawnLOTS::admiral, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 10 // Wave 11
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::admiral, 2, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_C) },
} }
}, },
// Wave 11 // Wave 12
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::interior_C) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_C) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::concert_C) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::gf_C) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
} { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_C) },
}, }
},
// Wave 12 // Wave 13
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::interior_C) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_C) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::concert_C) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_C) }, }
} },
},
// Wave 13 // Wave 14
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 3, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::admiral, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
} { .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_C) },
}, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
{ .lot = SpawnLOTS::mech, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_C) },
}
},
// Wave 14 // Wave 15
Wave { Wave{
std::vector<MobDefinition> { .waveMobs = std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::ape_boss, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Ape_Boss) },
{ SpawnLOTS::admiral, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::gf_C) },
}
},
// Wave 15 },
Wave { .soloMissions = {1886},
std::vector<MobDefinition> { .missions = {},
{ SpawnLOTS::ape_boss, 1, GetSpawnerName(SpawnerName::Ape_Boss) }, .cinematic = "Gorilla_Boss",
.cinematicLength = 5.0f
},
}, // Wave 16
{1886}, Wave{
{}, .waveMobs = std::vector<MobDefinition> {
"Gorilla_Boss", {.lot = SpawnLOTS::outhouse, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_Reward) },
5.0f {.lot = SpawnLOTS::mushroom, .amountToSpawn = 6, .spawnerName = GetSpawnerName(SpawnerName::Reward_01) },
}, },
.soloMissions = {},
.missions = {},
.cinematic = "",
.cinematicLength = -1.0f,
.timeLimit = 25,
},
// Wave 16 // Wave 17
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{SpawnLOTS::outhouse, 3, GetSpawnerName(SpawnerName::interior_Reward) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{SpawnLOTS::mushroom, 6, GetSpawnerName(SpawnerName::Reward_01) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
}, {}, {}, "", -1.0f, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
25, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
}, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 17 // Wave 18
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::hammerling_melee, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
} }
}, },
// Wave 18 // Wave 19
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::hammerling_melee, 4, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::sentry, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::sentry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::sentry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::sentry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
} }
}, },
// Wave 19 // Wave 20
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::hammerling, 4, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::sentry, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::sentry, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::sentry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::sentry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
} { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_C) },
}, { .lot = SpawnLOTS::hammerling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ .lot = SpawnLOTS::sentry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
{ .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_C) },
}
},
// Wave 20 // Wave 21
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::sentry, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::interior_C) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::ag_C) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::concert_C) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::admiral, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::gf_C) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_C) },
} }
}, },
// Wave 21 // Wave 22
Wave { Wave{
std::vector<MobDefinition> { .waveMobs = std::vector<MobDefinition> {
{ SpawnLOTS::admiral, 2, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::spiderling_boss, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Cavalry_Boss) },
{ SpawnLOTS::ronin, 2, GetSpawnerName(SpawnerName::interior_B) }, },
{ SpawnLOTS::spiderling_ve, 2, GetSpawnerName(SpawnerName::interior_C) }, .soloMissions = {1887},
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::ag_A) }, .missions = {},
{ SpawnLOTS::ronin, 1, GetSpawnerName(SpawnerName::ag_B) }, .cinematic = "Spiderling_Boss",
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::ag_C) }, .cinematicLength = 5.0f
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::concert_A) }, },
{ SpawnLOTS::ronin, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::ronin, 1, GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::gf_C) },
}
},
// Wave 22 // Wave 23
Wave { Wave{
std::vector<MobDefinition> { .waveMobs = std::vector<MobDefinition> {
{ SpawnLOTS::spiderling_boss, 1, GetSpawnerName(SpawnerName::Cavalry_Boss) }, { .lot = SpawnLOTS::outhouse, .amountToSpawn = 6, .spawnerName = GetSpawnerName(SpawnerName::Reward_01) },
}, { .lot = SpawnLOTS::outhouse, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_Reward) },
{1887}, { .lot = SpawnLOTS::maelstrom_chest, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::Obstacle) },
{}, },
"Spiderling_Boss", .soloMissions = {},
5.0f .missions = {},
}, .cinematic = "",
.cinematicLength = -1.0f,
.timeLimit = 25,
},
// Wave 23 // Wave 24
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::outhouse, 6, GetSpawnerName(SpawnerName::Reward_01) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::outhouse, 3, GetSpawnerName(SpawnerName::interior_Reward) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::maelstrom_chest, 4, GetSpawnerName(SpawnerName::Obstacle) }, { .lot = SpawnLOTS::pirate, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
}, {}, {}, "", -1.0f, { .lot = SpawnLOTS::ronin, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
25, { .lot = SpawnLOTS::ronin, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
}, }
},
// Wave 24 // Wave 25
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::cavalry, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::cavalry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::pirate, 3, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::ronin, 2, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
} { .lot = SpawnLOTS::spiderling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_A) },
}, { .lot = SpawnLOTS::spiderling, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::concert_A) },
{ .lot = SpawnLOTS::spiderling, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_A) },
}
},
// Wave 25 // Wave 26
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::cavalry, 2, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 3, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::spiderling_ve, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::gf_A) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::gf_C) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::concert_A) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 2, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_A) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_C) },
} }
}, },
// Wave 26 // Wave 27
Wave { Wave{
std::vector<MobDefinition> { std::vector<MobDefinition> {
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 5, .spawnerName = GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_B) }, { .lot = SpawnLOTS::ronin, .amountToSpawn = 4, .spawnerName = GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::ag_B) }, { .lot = SpawnLOTS::cavalry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::gf_B) }, { .lot = SpawnLOTS::cavalry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_C) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::concert_B) }, { .lot = SpawnLOTS::cavalry, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::admiral_cp, 2, GetSpawnerName(SpawnerName::gf_C) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::admiral_cp, 2, GetSpawnerName(SpawnerName::ag_C) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::concert_C) }, { .lot = SpawnLOTS::admiral_cp, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::concert_B) },
} }
}, },
// Wave 27 // Wave 28
Wave { Wave{
std::vector<MobDefinition> { .waveMobs = std::vector<MobDefinition> {
{ SpawnLOTS::ronin, 5, GetSpawnerName(SpawnerName::interior_A) }, { .lot = SpawnLOTS::dragon_statue, .amountToSpawn = 12, .spawnerName = GetSpawnerName(SpawnerName::Reward_01) },
{ SpawnLOTS::ronin, 4, GetSpawnerName(SpawnerName::interior_B) }, },
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::ag_C) }, .soloMissions = {},
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::gf_C) }, .missions = {},
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::concert_C) }, .cinematic = "",
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::ag_B) }, .cinematicLength = -1.0f,
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::gf_B) }, .timeLimit = 30,
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::concert_B) }, },
}
},
// Wave 28 // Wave 29
Wave { Wave{
std::vector<MobDefinition> { .waveMobs = std::vector<MobDefinition> {
{ SpawnLOTS::dragon_statue, 12, GetSpawnerName(SpawnerName::Reward_01) }, { .lot = SpawnLOTS::horseman_boss01, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Horseman_01) },
}, {}, {}, "", -1.0f, { .lot = SpawnLOTS::horseman_boss02, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Horseman_02) },
30, { .lot = SpawnLOTS::horseman_boss03, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Horseman_03) },
}, { .lot = SpawnLOTS::horseman_boss04, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Horseman_04) },
},
.soloMissions = {1888},
.missions = {1236, 1237, 1249},
.cinematic = "Horsemen_Boss",
.cinematicLength = 5.0f
},
// Wave 29 // Wave 30 (treasure)
Wave { Wave{
std::vector<MobDefinition> { .waveMobs = std::vector<MobDefinition> {
{ SpawnLOTS::horseman_boss01, 1, GetSpawnerName(SpawnerName::Horseman_01) }, { .lot = SpawnLOTS::treasure_chest, .amountToSpawn = 1, .spawnerName = GetSpawnerName(SpawnerName::Treasure_01) },
{ SpawnLOTS::horseman_boss02, 1, GetSpawnerName(SpawnerName::Horseman_02) }, },
{ SpawnLOTS::horseman_boss03, 1, GetSpawnerName(SpawnerName::Horseman_03) }, .soloMissions = {},
{ SpawnLOTS::horseman_boss04, 1, GetSpawnerName(SpawnerName::Horseman_04) }, .missions = {},
}, .cinematic = "Treasure_Camera",
{1888}, .cinematicLength = 5.0f,
{1236, 1237, 1249}, .timeLimit = (uint32_t)-1,
"Horsemen_Boss", .notifyWin = true,
5.0f .winDelay = 60,
}, },
// Wave 30 (treasure)
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::treasure_chest, 1, GetSpawnerName(SpawnerName::Treasure_01) },
}, {}, {},
"Treasure_Camera",
5.0f,
(uint32_t)-1,
true,
60,
},
}; };
} }

View File

@ -787,7 +787,7 @@ void SGCannon::ToggleSuperCharge(Entity* self, bool enable) {
self->SetVar<bool>(SuperChargeActiveVariable, enable); self->SetVar<bool>(SuperChargeActiveVariable, enable);
} }
std::vector<std::vector<SGEnemy>> GetWaves() { std::vector<std::vector<SGEnemy>> SGCannon::GetWaves() {
return return
std::vector<std::vector<SGEnemy>>{ std::vector<std::vector<SGEnemy>>{
std::vector<SGEnemy>{ std::vector<SGEnemy>{
@ -1265,41 +1265,41 @@ void SGCannon::ResetVars(Entity* self) {
} }
SGConstants SGCannon::GetConstants() { SGConstants SGCannon::GetConstants() {
return { return SGConstants{
Vector3 { -908.542480, 229.773178, -908.542480 }, .playerStartPosition = Vector3 { -908.542480, 229.773178, -908.542480 },
Quaternion { 0.91913521289825, 0, 0.39394217729568, 0 }, .playerStartRotation = Quaternion { 0.91913521289825, 0, 0.39394217729568, 0 },
1864, .cannonLot = 1864,
34, .impactSkillID = 34,
1822, .projectileLot = 1822,
Vector3 { 6.652, -2, 1.5 }, .playerOffset = Vector3 { 6.652, -2, 1.5 },
157, .rewardModelMatrix = 157,
129.0, .cannonVelocity = 129.0,
30.0, .cannonMinDistance = 30.0,
800.0, .cannonRefireRate = 800.0,
Vector3 { 0, 4.3, 9 }, .cannonBarrelOffset = Vector3 { 0, 4.3, 9 },
6297, .cannonSuperchargedProjectileLot = 6297,
1822, .cannonProjectileLot = 1822,
249, .cannonSuperChargeSkill = 249,
228, .cannonSkill = 228,
-1, .cannonTimeout = -1,
58.6, .cannonFOV = 58.6,
true, .useLeaderboards = true,
2, .streakModifier = 2,
10, .chargedTime = 10,
25000, .chargedPoints = 25000,
"QBRewardGroup", .rewardModelGroup = "QBRewardGroup",
1864, .activityID = 1864,
50000, .scoreReward1 = 50000,
157, .scoreLootMatrix1 = 157,
100000, .scoreReward2 = 100000,
187, .scoreLootMatrix2 = 187,
200000, .scoreReward3 = 200000,
188, .scoreLootMatrix3 = 188,
400000, .scoreReward4 = 400000,
189, .scoreLootMatrix4 = 189,
800000, .scoreReward5 = 800000,
190, .scoreLootMatrix5 = 190,
4.0, .firstWaveStartTime = 4.0,
7.0 .inBetweenWavePause = 7.0
}; };
} }

View File

@ -2,18 +2,18 @@
Constants ZoneAgSurvival::GetConstants() { Constants ZoneAgSurvival::GetConstants() {
return Constants{ return Constants{
60, .acceptedDelay = 60,
2, .startDelay = 2,
7, .waveTime = 7,
5, .rewardInterval = 5,
10, .coolDownTime = 10,
5, .mobSet2Wave = 5,
15, .mobSet3Wave = 15,
10, .unlockNetwork3 = 10,
0, .lotPhase = 0,
true, .useMobLots = true,
std::vector<uint32_t> {8, 13, 18, 23, 28, 32}, .baseMobsStartTier = std::vector<uint32_t> {8, 13, 18, 23, 28, 32},
std::vector<uint32_t> {2, 10, 15, 20, 25, 30} .randMobsStartTier = std::vector<uint32_t> {2, 10, 15, 20, 25, 30}
}; };
} }
@ -48,58 +48,58 @@ MobSets ZoneAgSurvival::GetMobSets() {
SpawnerNetworks ZoneAgSurvival::GetSpawnerNetworks() { SpawnerNetworks ZoneAgSurvival::GetSpawnerNetworks() {
return SpawnerNetworks{ return SpawnerNetworks{
SpawnerNetworkCollection { SpawnerNetworkCollection {
BaseMobSet, .mobSetName = BaseMobSet,
{ .networks = {
SpawnerNetwork { SpawnerNetwork {
std::vector<std::string> { "Base_MobA", "Base_MobB", "Base_MobC" }, .names = std::vector<std::string> { "Base_MobA", "Base_MobB", "Base_MobC" },
"", .number = "",
false, .isLocked = false,
false .isActive = false
}, },
} }
}, },
SpawnerNetworkCollection { SpawnerNetworkCollection {
RandMobSet, .mobSetName = RandMobSet,
{ .networks = {
SpawnerNetwork { SpawnerNetwork {
std::vector<std::string> {"MobA_", "MobB_", "MobC_"}, .names = std::vector<std::string> {"MobA_", "MobB_", "MobC_"},
"01", .number = "01",
false, .isLocked = false,
false .isActive = false
}, },
SpawnerNetwork { SpawnerNetwork {
std::vector<std::string> {"MobA_", "MobB_", "MobC_"}, .names = std::vector<std::string> {"MobA_", "MobB_", "MobC_"},
"02", .number = "02",
false, .isLocked = false,
false .isActive = false
}, },
SpawnerNetwork { SpawnerNetwork {
std::vector<std::string> {"MobA_", "MobB_", "MobC_"}, .names = std::vector<std::string> {"MobA_", "MobB_", "MobC_"},
"03", .number = "03",
true, .isLocked = true,
false .isActive = false
}, },
} }
}, },
SpawnerNetworkCollection { SpawnerNetworkCollection {
"", .mobSetName = "",
{ .networks = {
SpawnerNetwork { SpawnerNetwork {
std::vector<std::string> { "Rewards_" }, .names = std::vector<std::string> { "Rewards_" },
"01", .number = "01",
false, .isLocked = false,
false .isActive = false
}, },
} }
}, },
SpawnerNetworkCollection { SpawnerNetworkCollection {
"", .mobSetName = "",
{ .networks = {
SpawnerNetwork { SpawnerNetwork {
std::vector<std::string> { "Smash_" }, .names = std::vector<std::string> { "Smash_" },
"01", .number = "01",
false, .isLocked = false,
false .isActive = false
}, },
} }
} }
@ -107,6 +107,7 @@ SpawnerNetworks ZoneAgSurvival::GetSpawnerNetworks() {
} }
std::map<uint32_t, uint32_t> ZoneAgSurvival::GetMissionsToUpdate() { std::map<uint32_t, uint32_t> ZoneAgSurvival::GetMissionsToUpdate() {
// Mission : time to complete mission
return std::map<uint32_t, uint32_t> { return std::map<uint32_t, uint32_t> {
{ 479, 60 }, { 479, 60 },
{ 1153, 180 }, { 1153, 180 },