add DC NTE map variations

This commit is contained in:
Martin Michelsen
2023-11-25 19:23:25 -08:00
parent ccfdbf2faf
commit 0f45ced3e9
3 changed files with 16 additions and 3 deletions
+10
View File
@@ -1252,6 +1252,16 @@ void generate_variations(
}
}
void generate_variations_dc_nte(
parray<le_uint32_t, 0x20>& variations,
shared_ptr<PSOLFGEncryption> random_crypt) {
static const std::array<uint32_t, 0x20> maxes(
{1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1});
for (size_t z = 0; z < 0x20; z++) {
variations[z] = (maxes[z] < 2) ? 0 : (random_crypt->next() % maxes[z]);
}
}
vector<string> map_filenames_for_variation(
Episode episode, bool is_solo, uint8_t floor, uint32_t var1, uint32_t var2, bool is_enemies) {
// Map filenames are like map_<name_token>[_VV][_VV][_off]<e|o>[_s].dat
+3
View File
@@ -325,6 +325,9 @@ void generate_variations(
std::shared_ptr<PSOLFGEncryption> random,
Episode episode,
bool is_solo);
void generate_variations_dc_nte(
parray<le_uint32_t, 0x20>& variations,
std::shared_ptr<PSOLFGEncryption> random);
std::vector<std::string> map_filenames_for_variation(
Episode episode, bool is_solo, uint8_t floor, uint32_t var1, uint32_t var2, bool is_enemies);
void load_map_files();
+3 -3
View File
@@ -3795,10 +3795,10 @@ shared_ptr<Lobby> create_game_generic(
bool is_solo = (game->mode == GameMode::SOLO);
// Generate the map variations
if (game->is_ep3() ||
(c->version() == Version::DC_NTE) ||
(c->version() == Version::DC_V1_12_2000_PROTOTYPE)) {
if (game->is_ep3()) {
game->variations.clear(0);
} else if ((c->version() == Version::DC_NTE) || (c->version() == Version::DC_V1_12_2000_PROTOTYPE)) {
generate_variations_dc_nte(game->variations, game->random_crypt);
} else {
generate_variations(game->variations, game->random_crypt, game->episode, is_solo);
}