Fix BB EP4 solo quest unlocks and ship-state marking

This commit is contained in:
2026-05-31 08:42:39 -04:00
parent 7099045ea1
commit a030983b61
2 changed files with 21 additions and 0 deletions
+14
View File
@@ -405,6 +405,13 @@ bool Client::can_see_quest(
if (!q->has_version_any_language(this->version())) { if (!q->has_version_any_language(this->version())) {
return false; return false;
} }
if ((this->version() == Version::BB_V4) &&
game &&
(game->mode == GameMode::SOLO) &&
(game->episode == Episode::EP4) &&
(q->meta.episode == Episode::EP4)) {
return true;
}
return this->evaluate_quest_availability_expression( return this->evaluate_quest_availability_expression(
q->meta.available_expression, game, event, difficulty, num_players, v1_present); q->meta.available_expression, game, event, difficulty, num_players, v1_present);
} }
@@ -422,6 +429,13 @@ bool Client::can_play_quest(
if ((q->meta.max_players > 0) && (num_players > q->meta.max_players)) { if ((q->meta.max_players > 0) && (num_players > q->meta.max_players)) {
return false; return false;
} }
if ((this->version() == Version::BB_V4) &&
game &&
(game->mode == GameMode::SOLO) &&
(game->episode == Episode::EP4) &&
(q->meta.episode == Episode::EP4)) {
return true;
}
return this->evaluate_quest_availability_expression( return this->evaluate_quest_availability_expression(
q->meta.enabled_expression, game, event, difficulty, num_players, v1_present); q->meta.enabled_expression, game, event, difficulty, num_players, v1_present);
} }
+7
View File
@@ -4409,6 +4409,13 @@ static asio::awaitable<void> on_E5_BB(shared_ptr<Client> c, Channel::Message& ms
} }
c->log.info_f("Marked BB character as Test: {}", c->character_filename()); c->log.info_f("Marked BB character as Test: {}", c->character_filename());
} }
if (!enforce_bb_test_ship_lock(c, s->enable_test_mode)) {
c->unload_character(false);
should_send_approve = false;
} else if (!enforce_bb_hardcore_ship_lock(c, s->enable_hardcore_mode)) {
c->unload_character(false);
should_send_approve = false;
}
} catch (const exception& e) { } catch (const exception& e) {
send_message_box(c, std::format("$C6New character could not be created:\n{}", e.what())); send_message_box(c, std::format("$C6New character could not be created:\n{}", e.what()));
should_send_approve = false; should_send_approve = false;