DarkflameServer/dScripts/02_server/Map/NS/Waves/ZoneNsWaves.cpp
jadebenn ef6f2f133e
chore: Eradicate C-style casts and further clean up some code (#1361)
* cast and code cleanup

* cast cleanup

* bug fixes and improvements

* no getBoolField method exists

* fixes

* unbroke sg cannon scoring

* removing comments

* Remove the c-style cast warning I added from CMakeLists now that they're gone (it triggers on 3rd party dependencies and slows down compilation)

* (Hopefully) fix MacOS compilation error

* partially-implemented feedback

* more updates to account for feedback

* change bool default

---------

Co-authored-by: jadebenn <jonahebenn@yahoo.com>
2023-12-27 22:18:20 -06:00

501 lines
20 KiB
C++

#include "ZoneNsWaves.h"
WaveConstants ZoneNsWaves::GetConstants() {
return {
60,
2,
6,
2,
"surprise",
"intro"
};
}
std::vector<std::string> ZoneNsWaves::GetSpawnerNames() {
return {
"Base_MobA",
"Base_MobB",
"Base_MobC",
"MobA_01",
"MobB_01",
"MobC_01",
"MobA_02",
"MobB_02",
"MobC_02",
"MobA_03",
"MobB_03",
"MobC_03",
"Reward_01",
"Base_Reward",
"Obstacle_01",
"Boss",
"Ape_Boss",
"Geyser_01",
"Treasure_01",
"Cavalry_Boss",
"Horseman_01",
"Horseman_02",
"Horseman_03",
"Horseman_04"
};
}
std::vector<WaveMission> ZoneNsWaves::GetWaveMissions() {
return {
{190, 7, 1242},
{240, 7, 1226},
{450, 15, 1243},
{600, 15, 1227},
{720, 22, 1244},
{840, 22, 1228},
{1080, 29, 1245},
{1200, 29, 1229},
};
}
std::vector<Wave> ZoneNsWaves::GetWaves() {
return {
// Wave 1
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::stromling_minifig, 8, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::stromling_minifig, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::stromling_minifig, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::stromling_minifig, 2, GetSpawnerName(SpawnerName::gf_A) },
}
},
// Wave 2
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 8, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::gf_A) },
}
},
// Wave 3
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 4, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::gf_A) },
},
},
// Wave 4
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 3, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 5
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::stromling, 1, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::stromling, 1, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 6
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::stromling, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 7
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::stromling_boss, 1, GetSpawnerName(SpawnerName::Boss) },
},
{1885},
{},
"Stromling_Boss",
5.0f
},
// Wave 8
Wave {
std::vector<MobDefinition> {
{SpawnLOTS::mushroom, 6, GetSpawnerName(SpawnerName::Reward_01) },
{SpawnLOTS::mushroom, 3, GetSpawnerName(SpawnerName::interior_Reward) },
}, {}, {}, "", -1.0f,
25,
},
// Wave 9
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 10
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::mech, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::admiral, 2, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 11
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::gf_C) },
}
},
// Wave 12
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 4, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::mech, 2, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_C) },
}
},
// Wave 13
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 3, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::admiral, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 14
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::interior_A) },
{ 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 {
std::vector<MobDefinition> {
{ SpawnLOTS::ape_boss, 1, GetSpawnerName(SpawnerName::Ape_Boss) },
},
{1886},
{},
"Gorilla_Boss",
5.0f
},
// Wave 16
Wave {
std::vector<MobDefinition> {
{SpawnLOTS::outhouse, 3, GetSpawnerName(SpawnerName::interior_Reward) },
{SpawnLOTS::mushroom, 6, GetSpawnerName(SpawnerName::Reward_01) },
}, {}, {}, "", -1.0f,
25,
},
// Wave 17
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::hammerling_melee, 1, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 18
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::hammerling_melee, 4, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::hammerling_melee, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 19
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::hammerling, 4, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::sentry, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::hammerling, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::gf_B) },
}
},
// Wave 20
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::sentry, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::hammerling, 1, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::sentry, 1, GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::gf_C) },
}
},
// Wave 21
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::admiral, 2, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::ronin, 2, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling_ve, 2, GetSpawnerName(SpawnerName::interior_C) },
{ SpawnLOTS::admiral, 1, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::ronin, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::ag_C) },
{ 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 {
std::vector<MobDefinition> {
{ SpawnLOTS::spiderling_boss, 1, GetSpawnerName(SpawnerName::Cavalry_Boss) },
},
{1887},
{},
"Spiderling_Boss",
5.0f
},
// Wave 23
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::outhouse, 6, GetSpawnerName(SpawnerName::Reward_01) },
{ SpawnLOTS::outhouse, 3, GetSpawnerName(SpawnerName::interior_Reward) },
{ SpawnLOTS::maelstrom_chest, 4, GetSpawnerName(SpawnerName::Obstacle) },
}, {}, {}, "", -1.0f,
25,
},
// Wave 24
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::pirate, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::pirate, 3, GetSpawnerName(SpawnerName::ag_A) },
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::ronin, 2, GetSpawnerName(SpawnerName::interior_B) },
}
},
// Wave 25
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::cavalry, 2, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::gf_A) },
{ SpawnLOTS::spiderling, 2, GetSpawnerName(SpawnerName::concert_A) },
{ SpawnLOTS::spiderling, 1, GetSpawnerName(SpawnerName::ag_A) },
}
},
// Wave 26
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::ronin, 3, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::spiderling_ve, 1, GetSpawnerName(SpawnerName::concert_B) },
{ SpawnLOTS::admiral_cp, 2, GetSpawnerName(SpawnerName::gf_C) },
{ SpawnLOTS::admiral_cp, 2, GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::concert_C) },
}
},
// Wave 27
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::ronin, 5, GetSpawnerName(SpawnerName::interior_A) },
{ SpawnLOTS::ronin, 4, GetSpawnerName(SpawnerName::interior_B) },
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::ag_C) },
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::gf_C) },
{ SpawnLOTS::cavalry, 1, GetSpawnerName(SpawnerName::concert_C) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::ag_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::gf_B) },
{ SpawnLOTS::admiral_cp, 1, GetSpawnerName(SpawnerName::concert_B) },
}
},
// Wave 28
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::dragon_statue, 12, GetSpawnerName(SpawnerName::Reward_01) },
}, {}, {}, "", -1.0f,
30,
},
// Wave 29
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::horseman_boss01, 1, GetSpawnerName(SpawnerName::Horseman_01) },
{ SpawnLOTS::horseman_boss02, 1, GetSpawnerName(SpawnerName::Horseman_02) },
{ SpawnLOTS::horseman_boss03, 1, GetSpawnerName(SpawnerName::Horseman_03) },
{ SpawnLOTS::horseman_boss04, 1, GetSpawnerName(SpawnerName::Horseman_04) },
},
{1888},
{1236, 1237, 1249},
"Horsemen_Boss",
5.0f
},
// Wave 30 (treasure)
Wave {
std::vector<MobDefinition> {
{ SpawnLOTS::treasure_chest, 1, GetSpawnerName(SpawnerName::Treasure_01) },
}, {}, {},
"Treasure_Camera",
5.0f,
static_cast<uint32_t>(-1),
true,
60,
},
};
}
std::string ZoneNsWaves::GetSpawnerName(SpawnerName spawnerName) {
switch (spawnerName) {
case interior_A:
return "Base_MobA";
case interior_B:
return "Base_MobB";
case interior_C:
return "Base_MobC";
case gf_A:
return "MobA_01";
case gf_B:
return "MobB_01";
case gf_C:
return "MobC_01";
case concert_A:
return "MobA_02";
case concert_B:
return "MobB_02";
case concert_C:
return "MobC_02";
case ag_A:
return "MobA_03";
case ag_B:
return "MobB_03";
case ag_C:
return "MobC_03";
case Reward_01:
return "Reward_01";
case interior_Reward:
return "Base_Reward";
case Obstacle:
return "Obstacle_01";
case Boss:
return "Boss";
case Ape_Boss:
return "Ape_Boss";
case Geyser:
return "Geyser_01";
case Treasure_01:
return "Treasure_01";
case Cavalry_Boss:
return "Cavalry_Boss";
case Horseman_01:
return "Horseman_01";
case Horseman_02:
return "Horseman_02";
case Horseman_03:
return "Horseman_03";
case Horseman_04:
return "Horseman_04";
default:
return "";
}
}