diff --git a/src/PlayerSubordinates.cc b/src/PlayerSubordinates.cc index 6658a68f..655a1bc8 100644 --- a/src/PlayerSubordinates.cc +++ b/src/PlayerSubordinates.cc @@ -668,6 +668,14 @@ void PlayerInventory::encode_for_client(shared_ptr c) { this->hp_from_materials = 0; this->tp_from_materials = 0; this->language = 0; + } else if (c->version() != Version::PC_V2) { + if (this->language > 4) { + this->language = 0; + } + } else { + if (this->language > 7) { + this->language = 0; + } } auto item_parameter_table = c->require_server_state()->item_parameter_table_for_version(c->version()); diff --git a/src/StaticGameData.cc b/src/StaticGameData.cc index f406f15b..67f4c36c 100644 --- a/src/StaticGameData.cc +++ b/src/StaticGameData.cc @@ -433,20 +433,7 @@ char abbreviation_for_difficulty(uint8_t difficulty) { } char char_for_language_code(uint8_t language_code) { - switch (language_code) { - case 0: - return 'J'; - case 1: - return 'E'; - case 2: - return 'G'; - case 3: - return 'F'; - case 4: - return 'S'; - default: - return '?'; - } + return (language_code < 8) ? "JEGFSBTK"[language_code] : '?'; } uint8_t language_code_for_char(char language_char) { @@ -466,6 +453,15 @@ uint8_t language_code_for_char(char language_char) { case 'S': case 's': return 4; + case 'B': + case 'b': + return 5; + case 'T': + case 't': + return 6; + case 'K': + case 'k': + return 7; default: throw runtime_error("unknown language"); }