disable $bank when character overlay is present
This commit is contained in:
@@ -1001,6 +1001,9 @@ static void server_command_change_bank(shared_ptr<Client> c, const std::string&
|
|||||||
if (c->config.check_flag(Client::Flag::AT_BANK_COUNTER)) {
|
if (c->config.check_flag(Client::Flag::AT_BANK_COUNTER)) {
|
||||||
throw runtime_error("cannot change banks while at the bank counter");
|
throw runtime_error("cannot change banks while at the bank counter");
|
||||||
}
|
}
|
||||||
|
if (c->has_overlay()) {
|
||||||
|
throw runtime_error("cannot change banks while Battle or Challenge is in progress");
|
||||||
|
}
|
||||||
|
|
||||||
ssize_t new_char_index = args.empty() ? (c->bb_character_index + 1) : stol(args, nullptr, 0);
|
ssize_t new_char_index = args.empty() ? (c->bb_character_index + 1) : stol(args, nullptr, 0);
|
||||||
|
|
||||||
|
|||||||
+9
-1
@@ -926,13 +926,21 @@ void Client::use_default_bank() {
|
|||||||
|
|
||||||
bool Client::use_shared_bank() {
|
bool Client::use_shared_bank() {
|
||||||
this->use_default_bank();
|
this->use_default_bank();
|
||||||
|
|
||||||
string filename = this->shared_bank_filename();
|
string filename = this->shared_bank_filename();
|
||||||
if (isfile(filename)) {
|
auto files_manager = this->require_server_state()->player_files_manager;
|
||||||
|
this->external_bank = files_manager->get_bank(filename);
|
||||||
|
if (this->external_bank) {
|
||||||
|
player_data_log.info("Using loaded shared bank %s", filename.c_str());
|
||||||
|
return true;
|
||||||
|
} else if (isfile(filename)) {
|
||||||
this->external_bank = make_shared<PlayerBank>(load_object_file<PlayerBank>(filename));
|
this->external_bank = make_shared<PlayerBank>(load_object_file<PlayerBank>(filename));
|
||||||
|
files_manager->set_bank(filename, this->external_bank);
|
||||||
player_data_log.info("Loaded shared bank %s", filename.c_str());
|
player_data_log.info("Loaded shared bank %s", filename.c_str());
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
this->external_bank = make_shared<PlayerBank>();
|
this->external_bank = make_shared<PlayerBank>();
|
||||||
|
files_manager->set_bank(filename, this->external_bank);
|
||||||
player_data_log.info("Created shared bank for %s", filename.c_str());
|
player_data_log.info("Created shared bank for %s", filename.c_str());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1896,9 +1896,11 @@ static void on_quest_loaded(shared_ptr<Lobby> l) {
|
|||||||
if (l->base_version != Version::BB_V4) {
|
if (l->base_version != Version::BB_V4) {
|
||||||
lc->delete_overlay();
|
lc->delete_overlay();
|
||||||
if (l->quest->battle_rules) {
|
if (l->quest->battle_rules) {
|
||||||
|
lc->use_default_bank();
|
||||||
lc->create_battle_overlay(l->quest->battle_rules, s->level_table);
|
lc->create_battle_overlay(l->quest->battle_rules, s->level_table);
|
||||||
lc->log.info("Created battle overlay");
|
lc->log.info("Created battle overlay");
|
||||||
} else if (l->quest->challenge_template_index >= 0) {
|
} else if (l->quest->challenge_template_index >= 0) {
|
||||||
|
lc->use_default_bank();
|
||||||
lc->create_challenge_overlay(lc->version(), l->quest->challenge_template_index, s->level_table);
|
lc->create_challenge_overlay(lc->version(), l->quest->challenge_template_index, s->level_table);
|
||||||
lc->log.info("Created challenge overlay");
|
lc->log.info("Created challenge overlay");
|
||||||
l->assign_inventory_and_bank_item_ids(lc);
|
l->assign_inventory_and_bank_item_ids(lc);
|
||||||
@@ -3463,6 +3465,7 @@ static void on_DF_BB(shared_ptr<Client> c, uint16_t command, uint32_t, string& d
|
|||||||
|
|
||||||
for (auto lc : l->clients) {
|
for (auto lc : l->clients) {
|
||||||
if (lc) {
|
if (lc) {
|
||||||
|
lc->use_default_bank();
|
||||||
lc->create_challenge_overlay(lc->version(), l->quest->challenge_template_index, s->level_table);
|
lc->create_challenge_overlay(lc->version(), l->quest->challenge_template_index, s->level_table);
|
||||||
lc->log.info("Created challenge overlay");
|
lc->log.info("Created challenge overlay");
|
||||||
l->assign_inventory_and_bank_item_ids(lc);
|
l->assign_inventory_and_bank_item_ids(lc);
|
||||||
|
|||||||
@@ -2440,6 +2440,7 @@ static void on_battle_restart_bb(shared_ptr<Client> c, uint8_t, uint8_t, const v
|
|||||||
for (auto& lc : l->clients) {
|
for (auto& lc : l->clients) {
|
||||||
if (lc) {
|
if (lc) {
|
||||||
lc->delete_overlay();
|
lc->delete_overlay();
|
||||||
|
lc->use_default_bank();
|
||||||
lc->create_battle_overlay(new_rules, s->level_table);
|
lc->create_battle_overlay(new_rules, s->level_table);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user