rename DC_V1_11_2000_PROTOTYPE to DC_11_2000
This commit is contained in:
+2
-2
@@ -263,7 +263,7 @@ void Channel::send(uint16_t cmd, uint32_t flag, const std::vector<std::pair<cons
|
||||
size_t send_data_size = 0;
|
||||
switch (this->version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -274,7 +274,7 @@ void Channel::send(uint16_t cmd, uint32_t flag, const std::vector<std::pair<cons
|
||||
PSOCommandHeaderDCV3 header;
|
||||
if (this->crypt_out.get() &&
|
||||
(this->version != Version::DC_NTE) &&
|
||||
(this->version != Version::DC_V1_11_2000_PROTOTYPE) &&
|
||||
(this->version != Version::DC_11_2000) &&
|
||||
(this->version != Version::DC_V1)) {
|
||||
send_data_size = (sizeof(header) + size + 3) & ~3;
|
||||
} else {
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ const vector<ChoiceSearchCategory> CHOICE_SEARCH_CATEGORIES({
|
||||
}
|
||||
switch (target_c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
return (choice_id == 0x0001);
|
||||
case Version::DC_V1:
|
||||
return (choice_id == 0x0002);
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ void Client::Config::set_flags_for_version(Version version, int64_t sub_version)
|
||||
this->set_flag(Flag::NO_D6);
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
this->set_flag(Flag::NO_D6);
|
||||
break;
|
||||
|
||||
+1
-1
@@ -869,7 +869,7 @@ void ItemCreator::generate_unit_stars_tables() {
|
||||
star_base_index = 0x124;
|
||||
num_units = 0x43;
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
star_base_index = 0x128;
|
||||
num_units = 0x44;
|
||||
|
||||
@@ -30,7 +30,7 @@ ItemParameterTable::ItemParameterTable(shared_ptr<const string> data, Version ve
|
||||
// TODO: Check if first_rare_mag_index is the same on this version
|
||||
break;
|
||||
}
|
||||
case Version::DC_V1_11_2000_PROTOTYPE: {
|
||||
case Version::DC_11_2000: {
|
||||
this->offsets_dc_protos = &this->r.pget<TableOffsetsDCProtos>(offset_table_offset);
|
||||
this->num_weapon_classes = 0x27;
|
||||
this->num_tool_classes = 0x0E;
|
||||
|
||||
+1
-1
@@ -223,7 +223,7 @@ void Lobby::create_item_creator(Version logic_version) {
|
||||
case Version::GC_EP3:
|
||||
throw runtime_error("cannot create item creator for this base version");
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
// TODO: We should probably have a v1 common item set at some point too
|
||||
common_item_set = s->common_item_set_v2;
|
||||
|
||||
+42
-21
@@ -114,7 +114,7 @@ Version get_cli_version(phosg::Arguments& args, Version default_value = Version:
|
||||
} else if (args.get<bool>("dc-nte")) {
|
||||
return Version::DC_NTE;
|
||||
} else if (args.get<bool>("dc-proto") || args.get<bool>("dc-11-2000")) {
|
||||
return Version::DC_V1_11_2000_PROTOTYPE;
|
||||
return Version::DC_11_2000;
|
||||
} else if (args.get<bool>("dc-v1")) {
|
||||
return Version::DC_V1;
|
||||
} else if (args.get<bool>("dc-v2") || args.get<bool>("dc")) {
|
||||
@@ -439,7 +439,7 @@ static void a_encrypt_decrypt_fn(phosg::Arguments& args) {
|
||||
shared_ptr<PSOEncryption> crypt;
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -2090,32 +2090,53 @@ Action a_name_all_items(
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stderr, "IDENT :");
|
||||
for (Version v : ALL_VERSIONS) {
|
||||
const auto& index = s->item_name_index_opt(v);
|
||||
if (index) {
|
||||
fprintf(stderr, " %30s ", phosg::name_for_enum(v));
|
||||
if (args.get<bool>("list")) {
|
||||
for (uint32_t primary_identifier : all_primary_identifiers) {
|
||||
fprintf(stderr, "%08" PRIX32 "\n", primary_identifier);
|
||||
for (Version v : ALL_VERSIONS) {
|
||||
const auto& index = s->item_name_index_opt(v);
|
||||
if (index) {
|
||||
auto pmt = s->item_parameter_table(v);
|
||||
ItemData item = ItemData::from_primary_identifier(*s->item_stack_limits(v), primary_identifier);
|
||||
string name = index->describe_item(item);
|
||||
try {
|
||||
bool is_rare = pmt->is_item_rare(item);
|
||||
fprintf(stderr, " %10s: %s %s\n", phosg::name_for_enum(v), is_rare ? "+++" : "---", name.c_str());
|
||||
} catch (const out_of_range&) {
|
||||
fprintf(stderr, " %10s: (missing)\n", phosg::name_for_enum(v));
|
||||
}
|
||||
}
|
||||
}
|
||||
fputc('\n', stderr);
|
||||
}
|
||||
}
|
||||
fputc('\n', stderr);
|
||||
|
||||
for (uint32_t primary_identifier : all_primary_identifiers) {
|
||||
fprintf(stderr, "%08" PRIX32 ":", primary_identifier);
|
||||
} else {
|
||||
fprintf(stderr, "IDENT :");
|
||||
for (Version v : ALL_VERSIONS) {
|
||||
const auto& index = s->item_name_index_opt(v);
|
||||
if (index) {
|
||||
auto pmt = s->item_parameter_table(v);
|
||||
ItemData item = ItemData::from_primary_identifier(*s->item_stack_limits(v), primary_identifier);
|
||||
string name = index->describe_item(item);
|
||||
try {
|
||||
bool is_rare = pmt->is_item_rare(item);
|
||||
fprintf(stderr, " %30s%s", name.c_str(), is_rare ? " (*)" : " ");
|
||||
} catch (const out_of_range&) {
|
||||
fprintf(stderr, " ");
|
||||
}
|
||||
fprintf(stderr, " %30s ", phosg::name_for_enum(v));
|
||||
}
|
||||
}
|
||||
fputc('\n', stderr);
|
||||
|
||||
for (uint32_t primary_identifier : all_primary_identifiers) {
|
||||
fprintf(stderr, "%08" PRIX32 ":", primary_identifier);
|
||||
for (Version v : ALL_VERSIONS) {
|
||||
const auto& index = s->item_name_index_opt(v);
|
||||
if (index) {
|
||||
auto pmt = s->item_parameter_table(v);
|
||||
ItemData item = ItemData::from_primary_identifier(*s->item_stack_limits(v), primary_identifier);
|
||||
string name = index->describe_item(item);
|
||||
try {
|
||||
bool is_rare = pmt->is_item_rare(item);
|
||||
fprintf(stderr, " %30s%s", name.c_str(), is_rare ? " (*)" : " ");
|
||||
} catch (const out_of_range&) {
|
||||
fprintf(stderr, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
fputc('\n', stderr);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+1
-1
@@ -344,7 +344,7 @@ const array<vector<vector<string>>, 0x12> SetDataTableDC112000::NAMES = {{
|
||||
/* 11 */ {},
|
||||
}};
|
||||
|
||||
SetDataTableDC112000::SetDataTableDC112000() : SetDataTableBase(Version::DC_V1_11_2000_PROTOTYPE) {}
|
||||
SetDataTableDC112000::SetDataTableDC112000() : SetDataTableBase(Version::DC_11_2000) {}
|
||||
|
||||
Variations::Entry SetDataTableDC112000::num_available_variations_for_floor(Episode, uint8_t floor) const {
|
||||
const auto& floor_names = this->NAMES.at(floor);
|
||||
|
||||
+7
-7
@@ -25,7 +25,7 @@ uint16_t PSOCommandHeader::command(Version version) const {
|
||||
case Version::PC_V2:
|
||||
return this->pc.command;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
return this->dc.command;
|
||||
@@ -52,7 +52,7 @@ void PSOCommandHeader::set_command(Version version, uint16_t command) {
|
||||
this->pc.command = command;
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
this->dc.command = command;
|
||||
@@ -82,7 +82,7 @@ uint16_t PSOCommandHeader::size(Version version) const {
|
||||
case Version::PC_V2:
|
||||
return this->pc.size;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
return this->dc.size;
|
||||
@@ -109,7 +109,7 @@ void PSOCommandHeader::set_size(Version version, uint32_t size) {
|
||||
this->pc.size = size;
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
this->dc.size = size;
|
||||
@@ -139,7 +139,7 @@ uint32_t PSOCommandHeader::flag(Version version) const {
|
||||
case Version::PC_V2:
|
||||
return this->pc.flag;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
return this->dc.flag;
|
||||
@@ -166,7 +166,7 @@ void PSOCommandHeader::set_flag(Version version, uint32_t flag) {
|
||||
this->pc.flag = flag;
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
this->dc.flag = flag;
|
||||
@@ -213,7 +213,7 @@ std::string prepend_command_header(
|
||||
phosg::StringWriter ret;
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
|
||||
@@ -256,7 +256,7 @@ static HandlerResult S_V123P_02_17(
|
||||
// TODO
|
||||
throw runtime_error("DC NTE proxy is not implemented");
|
||||
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
if (!ses->login->dc_license) {
|
||||
throw runtime_error("DC license missing from login");
|
||||
@@ -1948,7 +1948,7 @@ static HandlerResult C_06(shared_ptr<ProxyServer::LinkedSession> ses, uint16_t,
|
||||
return HandlerResult::Type::SUPPRESS;
|
||||
}
|
||||
|
||||
char command_sentinel = (ses->version() == Version::DC_V1_11_2000_PROTOTYPE) ? '@' : '$';
|
||||
char command_sentinel = (ses->version() == Version::DC_11_2000) ? '@' : '$';
|
||||
bool is_command = (text[0] == command_sentinel) ||
|
||||
(text[0] == '\t' && text[1] != 'C' && text[2] == command_sentinel);
|
||||
if (is_command && ses->config.check_flag(Client::Flag::PROXY_CHAT_COMMANDS_ENABLED)) {
|
||||
|
||||
+3
-3
@@ -190,7 +190,7 @@ void ProxyServer::on_client_connect(
|
||||
case Version::BB_PATCH:
|
||||
throw logic_error("cannot create unlinked patch session");
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -296,7 +296,7 @@ void ProxyServer::UnlinkedSession::on_input(Channel& ch, uint16_t command, uint3
|
||||
try {
|
||||
switch (ses->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -783,7 +783,7 @@ void ProxyServer::LinkedSession::set_drop_mode(DropMode new_mode) {
|
||||
case Version::GC_EP3:
|
||||
throw runtime_error("cannot create item creator for this base version");
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
// TODO: We should probably have a v1 common item set at some point too
|
||||
common_item_set = s->common_item_set_v2;
|
||||
|
||||
+4
-4
@@ -244,7 +244,7 @@ VersionedQuest::VersionedQuest(
|
||||
break;
|
||||
}
|
||||
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2: {
|
||||
if (bin_decompressed.size() < sizeof(PSOQuestHeaderDC)) {
|
||||
@@ -693,7 +693,7 @@ QuestIndex::QuestIndex(
|
||||
// Get the version from the second token
|
||||
static const unordered_map<string, Version> name_to_version({
|
||||
{"dn", Version::DC_NTE},
|
||||
{"dp", Version::DC_V1_11_2000_PROTOTYPE},
|
||||
{"dp", Version::DC_11_2000},
|
||||
{"d1", Version::DC_V1},
|
||||
{"dc", Version::DC_V2},
|
||||
{"pcn", Version::PC_NTE},
|
||||
@@ -987,7 +987,7 @@ shared_ptr<VersionedQuest> VersionedQuest::create_download_quest(uint8_t overrid
|
||||
// There's no known language field in this version, so we don't write
|
||||
// anything here
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
if (decompressed_bin.size() < sizeof(PSOQuestHeaderDC)) {
|
||||
@@ -1401,7 +1401,7 @@ string encode_qst_file(
|
||||
// unfortunate abstraction-breaking.
|
||||
switch (version) {
|
||||
case Version::DC_NTE: // DC NTE doesn't support quests, but we support encoding QST files anyway
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
for (const auto& it : files) {
|
||||
|
||||
+7
-7
@@ -243,7 +243,7 @@ static constexpr uint16_t F_PASS = 0x0001; // Version::PC_PATCH (unused for ques
|
||||
static constexpr uint16_t F_ARGS = 0x0002; // Version::BB_PATCH (unused for quests)
|
||||
// The following flags are used to specify which versions support each opcode.
|
||||
static constexpr uint16_t F_DC_NTE = 0x0004; // Version::DC_NTE
|
||||
static constexpr uint16_t F_DC_112000 = 0x0008; // Version::DC_V1_11_2000_PROTOTYPE
|
||||
static constexpr uint16_t F_DC_112000 = 0x0008; // Version::DC_11_2000
|
||||
static constexpr uint16_t F_DC_V1 = 0x0010; // Version::DC_V1
|
||||
static constexpr uint16_t F_DC_V2 = 0x0020; // Version::DC_V2
|
||||
static constexpr uint16_t F_PC_NTE = 0x0040; // Version::PC_NTE
|
||||
@@ -261,7 +261,7 @@ static constexpr uint16_t F_RET = 0x4000;
|
||||
static constexpr uint16_t F_SET_EPISODE = 0x8000;
|
||||
|
||||
static_assert(F_DC_NTE == v_flag(Version::DC_NTE));
|
||||
static_assert(F_DC_112000 == v_flag(Version::DC_V1_11_2000_PROTOTYPE));
|
||||
static_assert(F_DC_112000 == v_flag(Version::DC_11_2000));
|
||||
static_assert(F_DC_V1 == v_flag(Version::DC_V1));
|
||||
static_assert(F_DC_V2 == v_flag(Version::DC_V2));
|
||||
static_assert(F_PC_NTE == v_flag(Version::PC_NTE));
|
||||
@@ -2888,7 +2888,7 @@ opcodes_by_name_for_version(Version v) {
|
||||
void check_opcode_definitions() {
|
||||
static const array<Version, 12> versions = {
|
||||
Version::DC_NTE,
|
||||
Version::DC_V1_11_2000_PROTOTYPE,
|
||||
Version::DC_11_2000,
|
||||
Version::DC_V1,
|
||||
Version::DC_V2,
|
||||
Version::PC_NTE,
|
||||
@@ -2931,7 +2931,7 @@ std::string disassemble_quest_script(
|
||||
lines.emplace_back(".name " + escape_string(header.name.decode(0)));
|
||||
break;
|
||||
}
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2: {
|
||||
const auto& header = r.get<PSOQuestHeaderDC>();
|
||||
@@ -3651,7 +3651,7 @@ Episode find_quest_episode_from_script(const void* data, size_t size, Version ve
|
||||
Episode header_episode = Episode::NONE;
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -4305,7 +4305,7 @@ std::string assemble_quest_script(const std::string& text, const std::string& in
|
||||
code_w.write(bin ? text : tt_utf8_to_sega_sjis(text));
|
||||
code_w.put_u8(0);
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -4557,7 +4557,7 @@ std::string assemble_quest_script(const std::string& text, const std::string& in
|
||||
w.put(header);
|
||||
break;
|
||||
}
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2: {
|
||||
PSOQuestHeaderDC header;
|
||||
|
||||
+13
-13
@@ -79,7 +79,7 @@ static shared_ptr<const Menu> proxy_options_menu_for_client(shared_ptr<const Cli
|
||||
"Block patches", "Disable patches sent\nby the remote server");
|
||||
if (!is_ep3(c->version())) {
|
||||
add_flag_option(ProxyOptionsMenuItemID::SWITCH_ASSIST, Client::Flag::SWITCH_ASSIST_ENABLED,
|
||||
"Switch assist", "Automatically try\nto unlock 2-player\ndoors when you step\non both switches\nsequentially");
|
||||
"Switch assist", "Automatically unlock\nmulti-player doors\nwhen you step on\nany of the door\'s\nswitches");
|
||||
}
|
||||
if ((s->cheat_mode_behavior != ServerState::BehaviorSwitch::OFF) ||
|
||||
c->login->account->check_flag(Account::Flag::CHEAT_ANYWHERE)) {
|
||||
@@ -824,11 +824,11 @@ static void on_93_DC(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
|
||||
if (!c->config.check_flag(Client::Flag::CHECKED_FOR_DC_V1_PROTOTYPE)) {
|
||||
send_command(c, 0x90, 0x01);
|
||||
c->config.set_flag(Client::Flag::CHECKED_FOR_DC_V1_PROTOTYPE);
|
||||
c->channel.version = Version::DC_V1_11_2000_PROTOTYPE;
|
||||
c->channel.version = Version::DC_11_2000;
|
||||
if (specific_version_is_indeterminate(c->config.specific_version)) {
|
||||
c->config.specific_version = SPECIFIC_VERSION_DC_11_2000_PROTOTYPE;
|
||||
}
|
||||
c->log.info("Game version changed to DC_V1_11_2000_PROTOTYPE (will be changed to V1 if 92 is received)");
|
||||
c->log.info("Game version changed to DC_11_2000 (will be changed to V1 if 92 is received)");
|
||||
} else {
|
||||
on_login_complete(c);
|
||||
}
|
||||
@@ -2264,7 +2264,7 @@ static void on_10(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
|
||||
c->config.clear_flag(Client::Flag::SHOULD_SEND_ENABLE_SAVE);
|
||||
// DC NTE and the v1 prototype crash if they receive a 97 command,
|
||||
// so we instead do the redirect immediately
|
||||
if ((c->version() == Version::DC_NTE) || (c->version() == Version::DC_V1_11_2000_PROTOTYPE)) {
|
||||
if ((c->version() == Version::DC_NTE) || (c->version() == Version::DC_11_2000)) {
|
||||
send_client_to_lobby_server(c);
|
||||
} else {
|
||||
send_command(c, 0x97, 0x01);
|
||||
@@ -3157,7 +3157,7 @@ static void on_61_98(shared_ptr<Client> c, uint16_t command, uint32_t flag, stri
|
||||
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1: {
|
||||
const auto& cmd = check_size_t<C_CharacterData_DCv1_61_98>(data);
|
||||
c->v1_v2_last_reported_disp = make_unique<PlayerDispDataDCPCV3>(cmd.disp);
|
||||
@@ -3480,7 +3480,7 @@ static void on_30(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
|
||||
case Version::GC_EP3:
|
||||
throw logic_error("Episode 3 case not handled correctly");
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::PC_NTE:
|
||||
case Version::PC_V2:
|
||||
@@ -3539,7 +3539,7 @@ static void on_06(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
|
||||
return;
|
||||
}
|
||||
|
||||
char command_sentinel = (c->version() == Version::DC_V1_11_2000_PROTOTYPE) ? '@' : '$';
|
||||
char command_sentinel = (c->version() == Version::DC_11_2000) ? '@' : '$';
|
||||
if ((text[0] == command_sentinel) && c->can_use_chat_commands()) {
|
||||
if (text[1] == command_sentinel) {
|
||||
text = text.substr(1);
|
||||
@@ -4147,7 +4147,7 @@ static void on_81(shared_ptr<Client> c, uint16_t, uint32_t, string& data) {
|
||||
uint32_t to_guild_card_number;
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -4335,7 +4335,7 @@ shared_ptr<Lobby> create_game_generic(
|
||||
static_assert(NUM_VERSIONS == 14, "Don't forget to update the group compatibility restrictions");
|
||||
if (!allow_v1 || (difficulty > 2) || (mode != GameMode::NORMAL)) {
|
||||
game->forbid_version(Version::DC_NTE);
|
||||
game->forbid_version(Version::DC_V1_11_2000_PROTOTYPE);
|
||||
game->forbid_version(Version::DC_11_2000);
|
||||
game->forbid_version(Version::DC_V1);
|
||||
}
|
||||
switch (game->episode) {
|
||||
@@ -4415,7 +4415,7 @@ shared_ptr<Lobby> create_game_generic(
|
||||
const unordered_map<uint16_t, IntegralExpression>* quest_flag_rewrites;
|
||||
switch (creator_c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -4577,7 +4577,7 @@ static void on_0C_C1_E7_EC(shared_ptr<Client> c, uint16_t command, uint32_t, str
|
||||
auto s = c->require_server_state();
|
||||
|
||||
shared_ptr<Lobby> game;
|
||||
if ((c->version() == Version::DC_NTE) || (c->version() == Version::DC_V1_11_2000_PROTOTYPE)) {
|
||||
if ((c->version() == Version::DC_NTE) || (c->version() == Version::DC_11_2000)) {
|
||||
const auto& cmd = check_size_t<C_CreateGame_DCNTE>(data);
|
||||
game = create_game_generic(s, c, cmd.name.decode(c->language()), cmd.password.decode(c->language()), Episode::EP1, GameMode::NORMAL, 0, true);
|
||||
|
||||
@@ -5730,7 +5730,7 @@ static on_command_t handlers[0x100][NUM_NON_PATCH_VERSIONS] = {
|
||||
static void check_logged_out_command(Version version, uint8_t command) {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
// newserv doesn't actually know that DC clients are DC until it receives
|
||||
@@ -5797,7 +5797,7 @@ void on_command(shared_ptr<Client> c, uint16_t command, uint32_t flag, string& d
|
||||
void on_command_with_header(shared_ptr<Client> c, const string& data) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
|
||||
+12
-12
@@ -82,7 +82,7 @@ static const SubcommandDefinition* def_for_proto_subcommand(uint8_t subcommand)
|
||||
const SubcommandDefinition* def_for_subcommand(Version version, uint8_t subcommand) {
|
||||
if (version == Version::DC_NTE) {
|
||||
return def_for_nte_subcommand(subcommand);
|
||||
} else if (version == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
} else if (version == Version::DC_11_2000) {
|
||||
return def_for_proto_subcommand(subcommand);
|
||||
} else {
|
||||
return &subcommand_definitions[subcommand];
|
||||
@@ -95,7 +95,7 @@ uint8_t translate_subcommand_number(Version to_version, Version from_version, ui
|
||||
return 0x00;
|
||||
} else if (to_version == Version::DC_NTE) {
|
||||
return def->nte_subcommand;
|
||||
} else if (to_version == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
} else if (to_version == Version::DC_11_2000) {
|
||||
return def->proto_subcommand;
|
||||
} else {
|
||||
return def->final_subcommand;
|
||||
@@ -159,7 +159,7 @@ static void forward_subcommand(shared_ptr<Client> c, uint8_t command, uint8_t fl
|
||||
data_to_send = nte_data.data();
|
||||
size_to_send = nte_data.size();
|
||||
}
|
||||
} else if (lc->version() == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
} else if (lc->version() == Version::DC_11_2000) {
|
||||
if (def && def->proto_subcommand) {
|
||||
if (proto_data.empty()) {
|
||||
proto_data.assign(reinterpret_cast<const char*>(data), size);
|
||||
@@ -272,7 +272,7 @@ static void forward_subcommand_t(shared_ptr<Client> c, uint8_t command, uint8_t
|
||||
|
||||
static void on_invalid(shared_ptr<Client> c, uint8_t command, uint8_t flag, void* data, size_t size) {
|
||||
const auto& cmd = check_size_t<G_UnusedHeader>(data, size, 0xFFFF);
|
||||
if ((c->version() == Version::DC_NTE) || c->version() == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
if ((c->version() == Version::DC_NTE) || c->version() == Version::DC_11_2000) {
|
||||
c->log.error("Unrecognized DC NTE/prototype subcommand: %02hhX", cmd.subcommand);
|
||||
forward_subcommand(c, command, flag, data, size);
|
||||
} else if (command_is_private(command)) {
|
||||
@@ -284,7 +284,7 @@ static void on_invalid(shared_ptr<Client> c, uint8_t command, uint8_t flag, void
|
||||
|
||||
static void on_unimplemented(shared_ptr<Client> c, uint8_t command, uint8_t flag, void* data, size_t size) {
|
||||
const auto& cmd = check_size_t<G_UnusedHeader>(data, size, 0xFFFF);
|
||||
if ((c->version() == Version::DC_NTE) || c->version() == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
if ((c->version() == Version::DC_NTE) || c->version() == Version::DC_11_2000) {
|
||||
c->log.error("Unimplemented DC NTE/prototype subcommand: %02hhX", cmd.subcommand);
|
||||
forward_subcommand(c, command, flag, data, size);
|
||||
} else {
|
||||
@@ -943,8 +943,8 @@ G_SyncPlayerDispAndInventory_DC112000_6x70 Parsed6x70Data::as_dc_112000(shared_p
|
||||
ret.items = this->items;
|
||||
|
||||
transcode_inventory_items(
|
||||
ret.items, ret.num_items, this->item_version, Version::DC_V1_11_2000_PROTOTYPE, s->item_parameter_table_for_encode(Version::DC_V1_11_2000_PROTOTYPE));
|
||||
ret.visual.enforce_lobby_join_limits_for_version(Version::DC_V1_11_2000_PROTOTYPE);
|
||||
ret.items, ret.num_items, this->item_version, Version::DC_11_2000, s->item_parameter_table_for_encode(Version::DC_11_2000));
|
||||
ret.visual.enforce_lobby_join_limits_for_version(Version::DC_11_2000);
|
||||
|
||||
uint32_t name_color = s->name_color_for_client(this->from_version, this->from_client_customization);
|
||||
if (name_color) {
|
||||
@@ -1157,7 +1157,7 @@ static void on_sync_joining_player_disp_and_inventory(
|
||||
c->login->account->account_id, c_v, is_client_customisation));
|
||||
c->last_reported_6x70->clear_dc_protos_unused_item_fields();
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
c->last_reported_6x70.reset(new Parsed6x70Data(
|
||||
check_size_t<G_SyncPlayerDispAndInventory_DC112000_6x70>(data, size),
|
||||
c->login->account->account_id, c->language(), c_v, is_client_customisation));
|
||||
@@ -1344,7 +1344,7 @@ static void on_send_guild_card(shared_ptr<Client> c, uint8_t command, uint8_t fl
|
||||
c->character(true, false)->guild_card.description.encode(cmd.guild_card.description.decode(c->language()), c->language());
|
||||
break;
|
||||
}
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2: {
|
||||
const auto& cmd = check_size_t<G_SendGuildCard_DC_6x06>(data, size);
|
||||
@@ -1434,7 +1434,7 @@ static void on_word_select_t(shared_ptr<Client> c, uint8_t command, uint8_t, voi
|
||||
uint8_t subcommand;
|
||||
if (lc->version() == Version::DC_NTE) {
|
||||
subcommand = 0x62;
|
||||
} else if (lc->version() == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
} else if (lc->version() == Version::DC_11_2000) {
|
||||
subcommand = 0x69;
|
||||
} else {
|
||||
subcommand = 0x74;
|
||||
@@ -4056,7 +4056,7 @@ static void on_destroy_floor_item(shared_ptr<Client> c, uint8_t command, uint8_t
|
||||
case Version::DC_NTE:
|
||||
is_6x5C = (cmd.header.subcommand == 0x4E);
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
is_6x5C = (cmd.header.subcommand == 0x55);
|
||||
break;
|
||||
default:
|
||||
@@ -4105,7 +4105,7 @@ static void on_destroy_floor_item(shared_ptr<Client> c, uint8_t command, uint8_t
|
||||
case Version::DC_NTE:
|
||||
out_cmd.header.subcommand = is_6x5C ? 0x4E : 0x55;
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
out_cmd.header.subcommand = is_6x5C ? 0x55 : 0x5C;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -145,7 +145,7 @@ void ReplaySession::check_for_password(shared_ptr<const Event> ev) const {
|
||||
}
|
||||
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -237,7 +237,7 @@ void ReplaySession::apply_default_mask(shared_ptr<Event> ev) {
|
||||
break;
|
||||
}
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -292,7 +292,7 @@ void ReplaySession::apply_default_mask(shared_ptr<Event> ev) {
|
||||
auto& mask = check_size_t<S_JoinGame_XB_64>(mask_data, mask_size);
|
||||
mask.variations = Variations();
|
||||
mask.random_seed = 0;
|
||||
} else if (version == Version::DC_NTE || version == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
} else if (version == Version::DC_NTE || version == Version::DC_11_2000) {
|
||||
auto& mask = check_size_t<S_JoinGame_DCNTE_64>(mask_data, mask_size);
|
||||
mask.variations = Variations();
|
||||
} else {
|
||||
@@ -397,7 +397,7 @@ void ReplaySession::apply_default_mask(shared_ptr<Event> ev) {
|
||||
auto& mask = check_size_t<G_SyncPlayerDispAndInventory_DCNTE_6x70>(mask_data, mask_size, 0xFFFF);
|
||||
mask.visual.name_color_checksum = 0;
|
||||
}
|
||||
} else if (version == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
} else if (version == Version::DC_11_2000) {
|
||||
const auto& header = check_size_t<G_UnusedHeader>(cmd_data, cmd_size, 0xFFFF);
|
||||
if (header.subcommand == 0x67) {
|
||||
auto& mask = check_size_t<G_SyncPlayerDispAndInventory_DC112000_6x70>(mask_data, mask_size, 0xFFFF);
|
||||
@@ -748,7 +748,7 @@ void ReplaySession::on_command_received(
|
||||
}
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
|
||||
@@ -926,7 +926,7 @@ PSOBBCharacterFile::operator PSODC112000CharacterFile::Character() const {
|
||||
ret.inventory = this->inventory;
|
||||
// We don't need to do the v1-compatible encoding (hence it is OK to pass
|
||||
// nullptr here) but we do need to encode mag stats in the v2 format
|
||||
ret.inventory.encode_for_client(Version::DC_V1_11_2000_PROTOTYPE, nullptr);
|
||||
ret.inventory.encode_for_client(Version::DC_11_2000, nullptr);
|
||||
ret.disp = this->disp.to_dcpcv3<false>(language, language);
|
||||
ret.disp.visual.enforce_lobby_join_limits_for_version(Version::DC_V2);
|
||||
ret.validation_flags = this->validation_flags.load();
|
||||
|
||||
+21
-21
@@ -30,7 +30,7 @@ extern const char* QUEST_BARRIER_DISCONNECT_HOOK_NAME;
|
||||
inline uint8_t get_pre_v1_subcommand(Version v, uint8_t nte_subcommand, uint8_t proto_subcommand, uint8_t final_subcommand) {
|
||||
if (v == Version::DC_NTE) {
|
||||
return nte_subcommand;
|
||||
} else if (v == Version::DC_V1_11_2000_PROTOTYPE) {
|
||||
} else if (v == Version::DC_11_2000) {
|
||||
return proto_subcommand;
|
||||
} else {
|
||||
return final_subcommand;
|
||||
@@ -128,7 +128,7 @@ void send_command_with_header(Channel& ch, const void* data, size_t size) {
|
||||
send_command_with_header_t<PSOCommandHeaderPC>(ch, data, size);
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -180,7 +180,7 @@ void send_server_init_dc_pc_v3(shared_ptr<Client> c, uint8_t flags) {
|
||||
c->channel.crypt_out = make_shared<PSOV2Encryption>(server_key);
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -241,7 +241,7 @@ void send_server_init_bb(shared_ptr<Client> c, uint8_t flags) {
|
||||
void send_server_init(shared_ptr<Client> c, uint8_t flags) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -265,7 +265,7 @@ void send_update_client_config(shared_ptr<Client> c, bool always_send) {
|
||||
if (always_send || (is_v3(c->version()) && (c->config.should_update_vs(c->synced_config)))) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -487,7 +487,7 @@ void send_function_call(
|
||||
bool send_protected_command(std::shared_ptr<Client> c, const void* data, size_t size, bool echo_to_lobby) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -825,7 +825,7 @@ void send_message_box(shared_ptr<Client> c, const string& text) {
|
||||
command = 0x13;
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -886,13 +886,13 @@ void send_ship_info(Channel& ch, const string& text) {
|
||||
}
|
||||
|
||||
void send_text_message(Channel& ch, const string& text) {
|
||||
if ((ch.version != Version::DC_NTE) && (ch.version != Version::DC_V1_11_2000_PROTOTYPE)) {
|
||||
if ((ch.version != Version::DC_NTE) && (ch.version != Version::DC_11_2000)) {
|
||||
send_header_text(ch, 0xB0, 0, text, ColorMode::ADD);
|
||||
}
|
||||
}
|
||||
|
||||
void send_text_message(shared_ptr<Client> c, const string& text) {
|
||||
if ((c->version() != Version::DC_NTE) && (c->version() != Version::DC_V1_11_2000_PROTOTYPE)) {
|
||||
if ((c->version() != Version::DC_NTE) && (c->version() != Version::DC_11_2000)) {
|
||||
send_header_text(c->channel, 0xB0, 0, text, ColorMode::ADD);
|
||||
}
|
||||
}
|
||||
@@ -1072,7 +1072,7 @@ void send_simple_mail_bb(shared_ptr<Client> c, uint32_t from_guild_card_number,
|
||||
void send_simple_mail(shared_ptr<Client> c, uint32_t from_guild_card_number, const string& from_name, const string& text) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -1210,7 +1210,7 @@ void send_card_search_result(
|
||||
shared_ptr<Lobby> result_lobby) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -1321,7 +1321,7 @@ void send_guild_card(
|
||||
send_guild_card_dc_pc_gc_t<G_SendGuildCard_DCNTE_6x06>(
|
||||
ch, guild_card_number, name, description, language, section_id, char_class);
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
send_guild_card_dc_pc_gc_t<G_SendGuildCard_DC_6x06>(
|
||||
@@ -1393,7 +1393,7 @@ void send_menu_t(shared_ptr<Client> c, shared_ptr<const Menu> menu, bool is_info
|
||||
bool is_visible = true;
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
is_visible &= !(item.flags & MenuItem::Flag::INVISIBLE_ON_DC_PROTOS);
|
||||
[[fallthrough]];
|
||||
case Version::DC_V1:
|
||||
@@ -1655,7 +1655,7 @@ void send_quest_menu(
|
||||
send_quest_menu_t<S_QuestMenuEntry_PC_A2_A4>(c, quests, is_download_menu);
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -1686,7 +1686,7 @@ void send_quest_categories_menu(
|
||||
send_quest_categories_menu_t<S_QuestMenuEntry_PC_A2_A4>(c, quest_index, menu_type, episode);
|
||||
break;
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -1983,7 +1983,7 @@ void send_join_game(shared_ptr<Client> c, shared_ptr<Lobby> l) {
|
||||
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE: {
|
||||
case Version::DC_11_2000: {
|
||||
S_JoinGame_DCNTE_64 cmd;
|
||||
cmd.client_id = c->lobby_client_id;
|
||||
cmd.leader_id = l->leader_id;
|
||||
@@ -2290,7 +2290,7 @@ void send_join_lobby(shared_ptr<Client> c, shared_ptr<Lobby> l) {
|
||||
} else {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
send_join_lobby_dc_nte(c, l);
|
||||
break;
|
||||
case Version::DC_V1:
|
||||
@@ -2330,7 +2330,7 @@ void send_player_join_notification(shared_ptr<Client> c,
|
||||
shared_ptr<Lobby> l, shared_ptr<Client> joining_client) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
send_join_lobby_dc_nte(c, l, joining_client);
|
||||
break;
|
||||
case Version::DC_V1:
|
||||
@@ -2391,7 +2391,7 @@ void send_self_leave_notification(shared_ptr<Client> c) {
|
||||
void send_get_player_info(shared_ptr<Client> c, bool request_extended) {
|
||||
switch (c->version()) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::PC_NTE:
|
||||
case Version::PC_V2:
|
||||
@@ -2965,7 +2965,7 @@ void send_game_player_state(shared_ptr<Client> to_c, shared_ptr<Client> from_c,
|
||||
case Version::DC_NTE:
|
||||
send_or_enqueue_command(to_c, 0x6D, to_c->lobby_client_id, to_send.as_dc_nte(s));
|
||||
break;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
send_or_enqueue_command(to_c, 0x6D, to_c->lobby_client_id, to_send.as_dc_112000(s));
|
||||
break;
|
||||
case Version::DC_V1:
|
||||
@@ -3897,7 +3897,7 @@ void send_open_quest_file(
|
||||
shared_ptr<const string> contents) {
|
||||
|
||||
switch (c->version()) {
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
|
||||
+11
-11
@@ -318,7 +318,7 @@ shared_ptr<const Menu> ServerState::information_menu(Version version) const {
|
||||
shared_ptr<const Menu> ServerState::proxy_destinations_menu(Version version) const {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
return this->proxy_destinations_menu_dc;
|
||||
@@ -340,7 +340,7 @@ shared_ptr<const Menu> ServerState::proxy_destinations_menu(Version version) con
|
||||
const vector<pair<string, uint16_t>>& ServerState::proxy_destinations(Version version) const {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -420,7 +420,7 @@ shared_ptr<const SetDataTableBase> ServerState::set_data_table(
|
||||
shared_ptr<const LevelTable> ServerState::level_table(Version version) const {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
@@ -1014,7 +1014,7 @@ void ServerState::load_config_early() {
|
||||
for (size_t v_s = NUM_PATCH_VERSIONS; v_s < NUM_VERSIONS; v_s++) {
|
||||
if (!this->item_stack_limits_tables[v_s]) {
|
||||
Version v = static_cast<Version>(v_s);
|
||||
if ((v == Version::DC_NTE) || (v == Version::DC_V1_11_2000_PROTOTYPE)) {
|
||||
if ((v == Version::DC_NTE) || (v == Version::DC_11_2000)) {
|
||||
this->item_stack_limits_tables[v_s] = make_shared<ItemData::StackLimits>(
|
||||
v, ItemData::StackLimits::DEFAULT_TOOL_LIMITS_DC_NTE, 999999);
|
||||
} else if (v_s < static_cast<size_t>(Version::GC_NTE)) {
|
||||
@@ -1052,7 +1052,7 @@ void ServerState::load_config_early() {
|
||||
0x0000, // PC_PATCH
|
||||
0x0000, // BB_PATCH
|
||||
0x0004, // DC_NTE compatible only with itself
|
||||
0x0008, // DC_V1_11_2000_PROTOTYPE compatible only with itself
|
||||
0x0008, // DC_11_2000 compatible only with itself
|
||||
0x00B0, // DC_V1 compatible with DC_V1, DC_V2, and PC_V2
|
||||
0x00B0, // DC_V2 compatible with DC_V1, DC_V2, and PC_V2
|
||||
0x0040, // PC_NTE compatible only with itself
|
||||
@@ -1748,7 +1748,7 @@ void ServerState::load_set_data_tables(bool from_non_event_thread) {
|
||||
};
|
||||
|
||||
new_tables[static_cast<size_t>(Version::DC_NTE)] = make_shared<SetDataTableDCNTE>();
|
||||
new_tables[static_cast<size_t>(Version::DC_V1_11_2000_PROTOTYPE)] = make_shared<SetDataTableDC112000>();
|
||||
new_tables[static_cast<size_t>(Version::DC_11_2000)] = make_shared<SetDataTableDC112000>();
|
||||
load_table(Version::DC_V1);
|
||||
load_table(Version::DC_V2);
|
||||
load_table(Version::PC_NTE);
|
||||
@@ -1856,8 +1856,8 @@ void ServerState::load_word_select_table(bool from_non_event_thread) {
|
||||
|
||||
config_log.info("(Word select) Loading DC_NTE data");
|
||||
WordSelectSet dc_nte_ws(phosg::load_file("system/text-sets/dc-nte/ws_data.bin"), Version::DC_NTE, nullptr, true);
|
||||
config_log.info("(Word select) Loading DC_V1_11_2000_PROTOTYPE data");
|
||||
WordSelectSet dc_112000_ws(phosg::load_file("system/text-sets/dc-11-2000/ws_data.bin"), Version::DC_V1_11_2000_PROTOTYPE, nullptr, false);
|
||||
config_log.info("(Word select) Loading DC_11_2000 data");
|
||||
WordSelectSet dc_112000_ws(phosg::load_file("system/text-sets/dc-11-2000/ws_data.bin"), Version::DC_11_2000, nullptr, false);
|
||||
config_log.info("(Word select) Loading DC_V1 data");
|
||||
WordSelectSet dc_v1_ws(phosg::load_file("system/text-sets/dc-v1/ws_data.bin"), Version::DC_V1, nullptr, false);
|
||||
config_log.info("(Word select) Loading DC_V2 data");
|
||||
@@ -1899,8 +1899,8 @@ shared_ptr<ItemNameIndex> ServerState::create_item_name_index_for_version(
|
||||
switch (limits->version) {
|
||||
case Version::DC_NTE:
|
||||
return make_shared<ItemNameIndex>(pmt, limits, text_index->get(Version::DC_NTE, 0, 2));
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
return make_shared<ItemNameIndex>(pmt, limits, text_index->get(Version::DC_V1_11_2000_PROTOTYPE, 1, 2));
|
||||
case Version::DC_11_2000:
|
||||
return make_shared<ItemNameIndex>(pmt, limits, text_index->get(Version::DC_11_2000, 1, 2));
|
||||
case Version::DC_V1:
|
||||
return make_shared<ItemNameIndex>(pmt, limits, text_index->get(Version::DC_V1, 1, 2));
|
||||
case Version::DC_V2:
|
||||
@@ -2185,7 +2185,7 @@ void ServerState::create_default_lobbies() {
|
||||
if (allow_non_ep3) {
|
||||
if (allow_v1) {
|
||||
l->allow_version(Version::DC_NTE);
|
||||
l->allow_version(Version::DC_V1_11_2000_PROTOTYPE);
|
||||
l->allow_version(Version::DC_11_2000);
|
||||
l->allow_version(Version::DC_V1);
|
||||
}
|
||||
l->allow_version(Version::DC_V2);
|
||||
|
||||
@@ -251,7 +251,7 @@ const unordered_map<string, uint8_t> name_to_npc_id = {
|
||||
bool npc_valid_for_version(uint8_t npc, Version version) {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
return false;
|
||||
case Version::DC_V2:
|
||||
|
||||
+1
-1
@@ -516,7 +516,7 @@ TextIndex::TextIndex(
|
||||
auto make_unitxt = +[](const string& data, bool) { return make_shared<UnicodeTextSet>(data); };
|
||||
|
||||
add_version(Version::DC_NTE, "dc-nte", make_binary_dcnte_dcv1);
|
||||
add_version(Version::DC_V1_11_2000_PROTOTYPE, "dc-11-2000", make_binary_dc112000);
|
||||
add_version(Version::DC_11_2000, "dc-11-2000", make_binary_dc112000);
|
||||
add_version(Version::DC_V1, "dc-v1", make_binary_dcnte_dcv1);
|
||||
add_version(Version::DC_V2, "dc-v2", make_binary_dcv2);
|
||||
add_version(Version::PC_NTE, "pc-nte", make_unitxt);
|
||||
|
||||
+10
-10
@@ -15,7 +15,7 @@ const char* login_port_name_for_version(Version v) {
|
||||
case Version::BB_PATCH:
|
||||
return "bb-patch";
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -42,7 +42,7 @@ const char* lobby_port_name_for_version(Version v) {
|
||||
case Version::BB_PATCH:
|
||||
return "bb-patch";
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -69,7 +69,7 @@ const char* proxy_port_name_for_version(Version v) {
|
||||
case Version::BB_PATCH:
|
||||
return "bb-patch";
|
||||
case Version::DC_NTE:
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
case Version::DC_V1:
|
||||
case Version::DC_V2:
|
||||
case Version::GC_NTE:
|
||||
@@ -99,8 +99,8 @@ const char* phosg::name_for_enum<Version>(Version v) {
|
||||
return "BB_PATCH";
|
||||
case Version::DC_NTE:
|
||||
return "DC_NTE";
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
return "DC_V1_11_2000_PROTOTYPE";
|
||||
case Version::DC_11_2000:
|
||||
return "DC_11_2000";
|
||||
case Version::DC_V1:
|
||||
return "DC_V1";
|
||||
case Version::DC_V2:
|
||||
@@ -134,8 +134,8 @@ Version phosg::enum_for_name<Version>(const char* name) {
|
||||
return Version::BB_PATCH;
|
||||
} else if (!strcmp(name, "DC_NTE")) {
|
||||
return Version::DC_NTE;
|
||||
} else if (!strcmp(name, "DC_V1_11_2000_PROTOTYPE")) {
|
||||
return Version::DC_V1_11_2000_PROTOTYPE;
|
||||
} else if (!strcmp(name, "DC_11_2000")) {
|
||||
return Version::DC_11_2000;
|
||||
} else if (!strcmp(name, "DC_V1")) {
|
||||
return Version::DC_V1;
|
||||
} else if (!strcmp(name, "DC_V2") || !strcasecmp(name, "dc")) {
|
||||
@@ -203,7 +203,7 @@ uint32_t default_sub_version_for_version(Version version) {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
return 0x20;
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
return 0x21;
|
||||
case Version::DC_V1:
|
||||
return 0x21;
|
||||
@@ -236,7 +236,7 @@ uint32_t default_specific_version_for_version(Version version, int64_t sub_versi
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
return SPECIFIC_VERSION_DC_NTE; // 1OJ1 (NTE)
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
return SPECIFIC_VERSION_DC_11_2000_PROTOTYPE; // 1OJ2 (11/2000)
|
||||
case Version::DC_V1:
|
||||
switch (sub_version) {
|
||||
@@ -356,7 +356,7 @@ const char* file_path_token_for_version(Version version) {
|
||||
return "bb-patch";
|
||||
case Version::DC_NTE:
|
||||
return "dc-nte";
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
return "dc-11-2000";
|
||||
case Version::DC_V1:
|
||||
return "dc-v1";
|
||||
|
||||
+9
-9
@@ -11,7 +11,7 @@ enum class Version {
|
||||
PC_PATCH = 0,
|
||||
BB_PATCH = 1,
|
||||
DC_NTE = 2,
|
||||
DC_V1_11_2000_PROTOTYPE = 3,
|
||||
DC_11_2000 = 3,
|
||||
DC_V1 = 4,
|
||||
DC_V2 = 5,
|
||||
PC_NTE = 6,
|
||||
@@ -29,7 +29,7 @@ constexpr std::array<Version, 14> ALL_VERSIONS = {
|
||||
Version::PC_PATCH,
|
||||
Version::BB_PATCH,
|
||||
Version::DC_NTE,
|
||||
Version::DC_V1_11_2000_PROTOTYPE,
|
||||
Version::DC_11_2000,
|
||||
Version::DC_V1,
|
||||
Version::DC_V2,
|
||||
Version::PC_NTE,
|
||||
@@ -43,7 +43,7 @@ constexpr std::array<Version, 14> ALL_VERSIONS = {
|
||||
};
|
||||
constexpr std::array<Version, 12> ALL_NON_PATCH_VERSIONS = {
|
||||
Version::DC_NTE,
|
||||
Version::DC_V1_11_2000_PROTOTYPE,
|
||||
Version::DC_11_2000,
|
||||
Version::DC_V1,
|
||||
Version::DC_V2,
|
||||
Version::PC_NTE,
|
||||
@@ -57,7 +57,7 @@ constexpr std::array<Version, 12> ALL_NON_PATCH_VERSIONS = {
|
||||
};
|
||||
constexpr std::array<Version, 10> ALL_ARPG_SEMANTIC_VERSIONS = {
|
||||
Version::DC_NTE,
|
||||
Version::DC_V1_11_2000_PROTOTYPE,
|
||||
Version::DC_11_2000,
|
||||
Version::DC_V1,
|
||||
Version::DC_V2,
|
||||
Version::PC_NTE,
|
||||
@@ -81,7 +81,7 @@ Version phosg::enum_for_name<Version>(const char* name);
|
||||
|
||||
constexpr bool is_any_nte(Version version) {
|
||||
return (version == Version::DC_NTE) ||
|
||||
(version == Version::DC_V1_11_2000_PROTOTYPE) ||
|
||||
(version == Version::DC_11_2000) ||
|
||||
(version == Version::PC_NTE) ||
|
||||
(version == Version::GC_NTE) ||
|
||||
(version == Version::GC_EP3_NTE);
|
||||
@@ -91,10 +91,10 @@ constexpr bool is_patch(Version version) {
|
||||
return (version == Version::PC_PATCH) || (version == Version::BB_PATCH);
|
||||
}
|
||||
constexpr bool is_pre_v1(Version version) {
|
||||
return (version == Version::DC_NTE) || (version == Version::DC_V1_11_2000_PROTOTYPE);
|
||||
return (version == Version::DC_NTE) || (version == Version::DC_11_2000);
|
||||
}
|
||||
constexpr bool is_v1(Version version) {
|
||||
return (version == Version::DC_NTE) || (version == Version::DC_V1_11_2000_PROTOTYPE) || (version == Version::DC_V1);
|
||||
return (version == Version::DC_NTE) || (version == Version::DC_11_2000) || (version == Version::DC_V1);
|
||||
}
|
||||
constexpr bool is_v2(Version version) {
|
||||
return (version == Version::DC_V2) || (version == Version::PC_NTE) || (version == Version::PC_V2) || (version == Version::GC_NTE);
|
||||
@@ -118,7 +118,7 @@ constexpr bool is_ep3(Version version) {
|
||||
|
||||
constexpr bool is_dc(Version version) {
|
||||
return (version == Version::DC_NTE) ||
|
||||
(version == Version::DC_V1_11_2000_PROTOTYPE) ||
|
||||
(version == Version::DC_11_2000) ||
|
||||
(version == Version::DC_V1) ||
|
||||
(version == Version::DC_V2);
|
||||
}
|
||||
@@ -131,7 +131,7 @@ constexpr bool is_gc(Version version) {
|
||||
|
||||
constexpr bool is_sh4(Version version) {
|
||||
return (version == Version::DC_NTE) ||
|
||||
(version == Version::DC_V1_11_2000_PROTOTYPE) ||
|
||||
(version == Version::DC_11_2000) ||
|
||||
(version == Version::DC_V1) ||
|
||||
(version == Version::DC_V2);
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ WordSelectSet::WordSelectSet(const string& data, Version version, const vector<s
|
||||
this->parse_non_windows_t<false, 0x469, 0x466>(decrypted, use_sjis);
|
||||
break;
|
||||
}
|
||||
case Version::DC_V1_11_2000_PROTOTYPE:
|
||||
case Version::DC_11_2000:
|
||||
this->parse_non_windows_t<false, 0x45E, 0x44B>(decrypt_and_decompress_pr2_data<false>(data), use_sjis);
|
||||
break;
|
||||
case Version::DC_V1:
|
||||
|
||||
@@ -1135,7 +1135,7 @@
|
||||
0x0000, // PC_PATCH
|
||||
0x0000, // BB_PATCH
|
||||
0x0004, // DC_NTE compatible only with itself
|
||||
0x0008, // DC_V1_11_2000_PROTOTYPE compatible only with itself
|
||||
0x0008, // DC_11_2000 compatible only with itself
|
||||
0x00B0, // DC_V1 compatible with DC_V1, DC_V2, and PC_V2
|
||||
0x00B0, // DC_V2 compatible with DC_V1, DC_V2, and PC_V2
|
||||
0x0040, // PC_NTE compatible only with itself
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
// These specify the quest's name, description, and other information.
|
||||
|
||||
// The .version directive specifies which version of the game the quest is for.
|
||||
// The values are DC_NTE, DC_V1_11_2000_PROTOTYPE, DC_V1, DC_V2, PC_V2, GC_NTE,
|
||||
// GC_V3, GC_EP3_NTE, GC_EP3, XB_V3, and BB_V4. This determines which set of
|
||||
// opcodes to use during compilation, and also specifies the header format and
|
||||
// string encoding. This does not affect where the quest appears in menus, so
|
||||
// for versions that use the same opcodes, headers, and string encodings, it is
|
||||
// OK to use a symbolic link (hence q058-xb-e.bin.txt is a link to this file).
|
||||
// The values are DC_NTE, DC_11_2000, DC_V1, DC_V2, PC_V2, GC_NTE, GC_V3,
|
||||
// GC_EP3_NTE, GC_EP3, XB_V3, and BB_V4. This determines which set of opcodes
|
||||
// to use during compilation, and also specifies the header format and string
|
||||
// encoding. This does not affect where the quest appears in menus, so for
|
||||
// versions that use the same opcodes, headers, and string encodings, it is OK
|
||||
// to use a symbolic link (hence q058-xb-e.bin.txt is a link to this file).
|
||||
.version GC_V3
|
||||
|
||||
// The .quest_num directive specifies the internal number of the quest. This
|
||||
|
||||
@@ -506,13 +506,13 @@ I 97037 2023-12-29 15:56:50 - [Commands] Sending to C-4 (version=DC_V1 command=0
|
||||
0000 | 04 00 0C 00 00 00 01 00 77 77 77 77 | wwww
|
||||
I 97037 2023-12-29 15:56:50 - [Commands] Sending to C-4 (version=DC_V1 command=90 flag=01)
|
||||
0000 | 90 01 04 00 |
|
||||
I 97037 2023-12-29 15:56:50 - [C-4] Game version changed to DC_V1_11_2000_PROTOTYPE (will be changed to V1 if 92 is received)
|
||||
I 97037 2023-12-29 15:56:51 - [Commands] Received from C-4 (version=DC_V1_11_2000_PROTOTYPE command=96 flag=00)
|
||||
I 97037 2023-12-29 15:56:50 - [C-4] Game version changed to DC_11_2000 (will be changed to V1 if 92 is received)
|
||||
I 97037 2023-12-29 15:56:51 - [Commands] Received from C-4 (version=DC_11_2000 command=96 flag=00)
|
||||
0000 | 96 00 0C 00 8D C3 16 8B 05 00 00 00 |
|
||||
I 97037 2023-12-29 15:56:51 - [Commands] Sending to C-4 (version=DC_V1_11_2000_PROTOTYPE command=B1 flag=00)
|
||||
I 97037 2023-12-29 15:56:51 - [Commands] Sending to C-4 (version=DC_11_2000 command=B1 flag=00)
|
||||
0000 | B1 00 20 00 32 30 32 33 3A 31 32 3A 32 39 3A 20 | 2023:12:29:
|
||||
0010 | 32 33 3A 35 36 3A 35 31 2E 30 30 30 00 01 00 00 | 23:56:51.000
|
||||
I 97037 2023-12-29 15:56:51 - [Commands] Received from C-4 (version=DC_V1_11_2000_PROTOTYPE command=92 flag=00)
|
||||
I 97037 2023-12-29 15:56:51 - [Commands] Received from C-4 (version=DC_11_2000 command=92 flag=00)
|
||||
0000 | 92 00 A4 00 00 00 13 2B 64 B2 2C B2 21 00 00 00 | +d , !
|
||||
0010 | 00 01 00 00 38 41 30 46 32 39 36 45 00 00 00 00 | 8A0F296E
|
||||
0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
|
||||
@@ -618,8 +618,8 @@ I 97037 2023-12-29 15:56:58 - [Commands] Sending to C-5 (version=DC_V1 command=0
|
||||
0000 | 04 00 0C 00 00 00 01 00 77 77 77 77 | wwww
|
||||
I 97037 2023-12-29 15:56:58 - [Commands] Sending to C-5 (version=DC_V1 command=90 flag=01)
|
||||
0000 | 90 01 04 00 |
|
||||
I 97037 2023-12-29 15:56:58 - [C-5] Game version changed to DC_V1_11_2000_PROTOTYPE (will be changed to V1 if 92 is received)
|
||||
I 97037 2023-12-29 15:56:58 - [Commands] Received from C-5 (version=DC_V1_11_2000_PROTOTYPE command=92 flag=00)
|
||||
I 97037 2023-12-29 15:56:58 - [C-5] Game version changed to DC_11_2000 (will be changed to V1 if 92 is received)
|
||||
I 97037 2023-12-29 15:56:58 - [Commands] Received from C-5 (version=DC_11_2000 command=92 flag=00)
|
||||
0000 | 92 00 A4 00 00 00 13 2B 64 B2 2C B2 21 00 00 00 | +d , !
|
||||
0010 | 00 01 00 00 38 41 30 46 32 39 36 45 00 00 00 00 | 8A0F296E
|
||||
0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
|
||||
|
||||
Reference in New Issue
Block a user