add DC NTE map variations
This commit is contained in:
+10
@@ -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(
|
vector<string> map_filenames_for_variation(
|
||||||
Episode episode, bool is_solo, uint8_t floor, uint32_t var1, uint32_t var2, bool is_enemies) {
|
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
|
// Map filenames are like map_<name_token>[_VV][_VV][_off]<e|o>[_s].dat
|
||||||
|
|||||||
@@ -325,6 +325,9 @@ void generate_variations(
|
|||||||
std::shared_ptr<PSOLFGEncryption> random,
|
std::shared_ptr<PSOLFGEncryption> random,
|
||||||
Episode episode,
|
Episode episode,
|
||||||
bool is_solo);
|
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(
|
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);
|
Episode episode, bool is_solo, uint8_t floor, uint32_t var1, uint32_t var2, bool is_enemies);
|
||||||
void load_map_files();
|
void load_map_files();
|
||||||
|
|||||||
@@ -3795,10 +3795,10 @@ shared_ptr<Lobby> create_game_generic(
|
|||||||
bool is_solo = (game->mode == GameMode::SOLO);
|
bool is_solo = (game->mode == GameMode::SOLO);
|
||||||
|
|
||||||
// Generate the map variations
|
// Generate the map variations
|
||||||
if (game->is_ep3() ||
|
if (game->is_ep3()) {
|
||||||
(c->version() == Version::DC_NTE) ||
|
|
||||||
(c->version() == Version::DC_V1_12_2000_PROTOTYPE)) {
|
|
||||||
game->variations.clear(0);
|
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 {
|
} else {
|
||||||
generate_variations(game->variations, game->random_crypt, game->episode, is_solo);
|
generate_variations(game->variations, game->random_crypt, game->episode, is_solo);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user