don't double-clear destroyed entity set during quest load
This commit is contained in:
+2
-1
@@ -72,7 +72,8 @@ void Lobby::create_item_creator() {
|
||||
(this->mode == GameMode::SOLO) ? GameMode::NORMAL : this->mode,
|
||||
this->difficulty,
|
||||
this->section_id,
|
||||
this->random_seed));
|
||||
this->random_seed,
|
||||
this->quest ? this->quest->battle_rules : nullptr));
|
||||
}
|
||||
|
||||
void Lobby::create_ep3_server() {
|
||||
|
||||
@@ -2085,11 +2085,14 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
|
||||
} else {
|
||||
l->set_flag(Lobby::Flag::QUEST_IN_PROGRESS);
|
||||
}
|
||||
|
||||
l->quest = q;
|
||||
l->episode = q->episode;
|
||||
|
||||
if (q->battle_rules && l->item_creator) {
|
||||
l->item_creator->set_restrictions(q->battle_rules);
|
||||
if (l->item_creator) {
|
||||
l->item_creator->clear_destroyed_entities();
|
||||
if (q->battle_rules) {
|
||||
l->item_creator->set_restrictions(q->battle_rules);
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t client_id = 0; client_id < l->max_clients; client_id++) {
|
||||
@@ -2498,11 +2501,9 @@ static void on_AC_V3_BB(shared_ptr<Client> c, uint16_t, uint32_t, string& data)
|
||||
(l->base_version == GameVersion::BB) &&
|
||||
l->map &&
|
||||
l->quest) {
|
||||
auto dat_contents = prs_decompress(*l->quest->version(QuestScriptVersion::BB_V4, c->language())->dat_contents);
|
||||
auto vq = l->quest->version(QuestScriptVersion::BB_V4, c->language());
|
||||
auto dat_contents = prs_decompress(*vq->dat_contents);
|
||||
l->map->clear();
|
||||
if (l->item_creator) {
|
||||
l->item_creator->clear_destroyed_entities();
|
||||
}
|
||||
l->map->add_enemies_from_quest_data(l->episode, l->difficulty, l->event, dat_contents.data(), dat_contents.size());
|
||||
c->log.info("Replaced enemies list with quest layout (%zu entries)",
|
||||
l->map->enemies.size());
|
||||
|
||||
Reference in New Issue
Block a user