minor cleanup
This commit is contained in:
+5
-5
@@ -83,14 +83,14 @@ void Client::Config::set_flags_for_version(Version version, int64_t sub_version)
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x20: // DCNTE, possibly also DCv1 JP
|
||||
case 0x20: // DC NTE, 11/2000, possibly also DCv1 JP
|
||||
case 0x21: // DCv1 US
|
||||
case 0x22: // DCv1 EU, 12/2000, and 01/2001, at 50Hz (presumably)
|
||||
case 0x23: // DCv1 EU, 12/2000, and 01/2001, at 60Hz (presumably)
|
||||
this->set_flag(Flag::NO_D6);
|
||||
break;
|
||||
case 0x25: // DCv2 JP
|
||||
case 0x26: // DCv2 US
|
||||
case 0x26: // DCv2 US and 08/2001
|
||||
case 0x27: // DCv2 EU 50Hz (presumably)
|
||||
case 0x28: // DCv2 EU 60Hz (presumably)
|
||||
this->set_flag(Flag::NO_D6);
|
||||
@@ -103,7 +103,7 @@ void Client::Config::set_flags_for_version(Version version, int64_t sub_version)
|
||||
this->set_flag(Flag::SEND_FUNCTION_CALL_CHECKSUM_ONLY);
|
||||
this->set_flag(Flag::SEND_FUNCTION_CALL_NO_CACHE_PATCH);
|
||||
break;
|
||||
case 0x30: // GC Ep1&2 GameJam demo, GC Ep1&2 Trial Edition, GC Ep1&2 JP v1.2, at least one version of XB
|
||||
case 0x30: // GC Ep1&2 GameJam demo, GC Ep1&2 Trial Edition, GC Ep1&2 JP v1.2, XB JP
|
||||
case 0x31: // GC Ep1&2 US v1.0, GC US v1.1, XB US
|
||||
this->set_flag(Flag::HAS_SEND_FUNCTION_CALL);
|
||||
break;
|
||||
@@ -119,7 +119,7 @@ void Client::Config::set_flags_for_version(Version version, int64_t sub_version)
|
||||
this->set_flag(Flag::ENCRYPTED_SEND_FUNCTION_CALL);
|
||||
this->set_flag(Flag::SEND_FUNCTION_CALL_NO_CACHE_PATCH);
|
||||
break;
|
||||
case 0x3A: // GC Ep1&2 US v1.2 (Plus) GMK edition
|
||||
case 0x3A: // GC Ep1&2 US v1.2 (Plus) Return to Ragol
|
||||
this->set_flag(Flag::IS_CLIENT_CUSTOMIZATION);
|
||||
[[fallthrough]];
|
||||
case 0x36: // GC Ep1&2 US v1.2 (Plus)
|
||||
@@ -135,7 +135,7 @@ void Client::Config::set_flags_for_version(Version version, int64_t sub_version)
|
||||
// sub_version can't be used to tell JP final and Trial Edition apart; we
|
||||
// instead look at header.flag in the 61 command and set the version then.
|
||||
break;
|
||||
case 0x41: // GC Ep3 US (and BB)
|
||||
case 0x41: // GC Ep3 US (and BB, but BB is handled above)
|
||||
case 0x42: // GC Ep3 EU 50Hz
|
||||
case 0x43: // GC Ep3 EU 60Hz
|
||||
this->set_flag(Flag::NO_D6_AFTER_LOBBY);
|
||||
|
||||
+19
-59
@@ -376,8 +376,7 @@ void Server::send_debug_command_received_message(uint8_t subsubcommand, const ch
|
||||
this->send_debug_message_printf("$C5*/CAx%02hhX %s", subsubcommand, description);
|
||||
}
|
||||
|
||||
void Server::send_debug_message_if_error_code_nonzero(
|
||||
uint8_t client_id, int32_t error_code) const {
|
||||
void Server::send_debug_message_if_error_code_nonzero(uint8_t client_id, int32_t error_code) const {
|
||||
if (error_code < 0) {
|
||||
this->send_debug_message_printf("$C4%hhu/ERROR -0x%zX", client_id, static_cast<ssize_t>(-error_code));
|
||||
} else if (error_code > 0) {
|
||||
@@ -393,8 +392,7 @@ void Server::add_team_exp(uint8_t team_id, int32_t exp) {
|
||||
}
|
||||
}
|
||||
|
||||
this->team_exp[team_id] = clamp<int16_t>(
|
||||
this->team_exp[team_id] + exp, 0, this->team_client_count[team_id] * 96);
|
||||
this->team_exp[team_id] = clamp<int16_t>(this->team_exp[team_id] + exp, 0, this->team_client_count[team_id] * 96);
|
||||
|
||||
uint8_t dice_boost = this->team_exp[team_id] / (this->team_client_count[team_id] * 12);
|
||||
this->card_special->adjust_dice_boost_if_team_has_condition_52(team_id, &dice_boost, 0);
|
||||
@@ -476,29 +474,7 @@ shared_ptr<Card> Server::card_for_set_card_ref(uint16_t card_ref) {
|
||||
}
|
||||
|
||||
shared_ptr<const Card> Server::card_for_set_card_ref(uint16_t card_ref) const {
|
||||
// TODO: It'd be nice to deduplicate this function with the non-const version.
|
||||
if (card_ref == 0xFFFF) {
|
||||
return nullptr;
|
||||
}
|
||||
uint8_t client_id = client_id_for_card_ref(card_ref);
|
||||
if (client_id == 0xFF) {
|
||||
return nullptr;
|
||||
}
|
||||
auto ps = this->player_states.at(client_id);
|
||||
if (!ps) {
|
||||
return nullptr;
|
||||
}
|
||||
auto card = ps->get_sc_card();
|
||||
if (card && (card->get_card_ref() == card_ref)) {
|
||||
return card;
|
||||
}
|
||||
for (size_t set_index = 0; set_index < 8; set_index++) {
|
||||
card = ps->get_set_card(set_index);
|
||||
if (card && (card->get_card_ref() == card_ref)) {
|
||||
return card;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
return const_cast<Server*>(this)->card_for_set_card_ref(card_ref);
|
||||
}
|
||||
|
||||
uint16_t Server::card_id_for_card_ref(uint16_t card_ref) const {
|
||||
@@ -1861,8 +1837,7 @@ void Server::on_server_data_input(shared_ptr<Client> sender_c, const string& dat
|
||||
|
||||
void Server::handle_CAx0B_mulligan_hand(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_RedrawInitialHand_Ep3_CAx0B>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "REDRAW");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "REDRAW");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -1894,8 +1869,7 @@ void Server::handle_CAx0B_mulligan_hand(shared_ptr<Client>, const string& data)
|
||||
|
||||
void Server::handle_CAx0C_end_mulligan_phase(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_EndInitialRedrawPhase_Ep3_CAx0C>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "SETUP ADV 2");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "SETUP ADV 2");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -1976,8 +1950,7 @@ void Server::handle_CAx0D_end_non_action_phase(shared_ptr<Client>, const string&
|
||||
|
||||
void Server::handle_CAx0E_discard_card_from_hand(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_DiscardCardFromHand_Ep3_CAx0E>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "DISCARD");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "DISCARD");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -2062,8 +2035,7 @@ void Server::handle_CAx0F_set_card_from_hand(shared_ptr<Client>, const string& d
|
||||
|
||||
void Server::handle_CAx10_move_fc_to_location(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_MoveFieldCharacter_Ep3_CAx10>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "MOVE");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "MOVE");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -2103,8 +2075,7 @@ void Server::handle_CAx10_move_fc_to_location(shared_ptr<Client>, const string&
|
||||
|
||||
void Server::handle_CAx11_enqueue_attack_or_defense(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_EnqueueAttackOrDefense_Ep3_CAx11>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "ENQUEUE ACT");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "ENQUEUE ACT");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -2142,8 +2113,7 @@ void Server::handle_CAx11_enqueue_attack_or_defense(shared_ptr<Client>, const st
|
||||
|
||||
void Server::handle_CAx12_end_attack_list(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_EndAttackList_Ep3_CAx12>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "END ATK LIST");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "END ATK LIST");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -2238,8 +2208,7 @@ void Server::handle_CAx13_update_map_during_setup(shared_ptr<Client> c, const st
|
||||
|
||||
void Server::handle_CAx14_update_deck_during_setup(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_SetPlayerDeck_Ep3_CAx14>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "UPDATE DECK");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "UPDATE DECK");
|
||||
|
||||
if (!this->battle_in_progress) {
|
||||
if ((this->setup_phase == SetupPhase::REGISTRATION) &&
|
||||
@@ -2285,8 +2254,7 @@ void Server::handle_CAx14_update_deck_during_setup(shared_ptr<Client>, const str
|
||||
|
||||
void Server::handle_CAx15_unused_hard_reset_server_state(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_HardResetServerState_Ep3_CAx15>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.header.subsubcommand, "HARD RESET");
|
||||
this->send_debug_command_received_message(in_cmd.header.subsubcommand, "HARD RESET");
|
||||
|
||||
// In the original implementation, this command recreates the server object.
|
||||
// This is possible because the dispatch function is not part of the server
|
||||
@@ -2303,8 +2271,7 @@ void Server::handle_CAx15_unused_hard_reset_server_state(shared_ptr<Client>, con
|
||||
|
||||
void Server::handle_CAx1B_update_player_name(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_SetPlayerName_Ep3_CAx1B>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.entry.client_id, in_cmd.header.subsubcommand, "UPDATE NAME");
|
||||
this->send_debug_command_received_message(in_cmd.entry.client_id, in_cmd.header.subsubcommand, "UPDATE NAME");
|
||||
|
||||
if (in_cmd.entry.client_id < 4) {
|
||||
if (!this->is_registration_complete()) {
|
||||
@@ -2335,8 +2302,7 @@ void Server::handle_CAx1B_update_player_name(shared_ptr<Client>, const string& d
|
||||
|
||||
void Server::handle_CAx1D_start_battle(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_StartBattle_Ep3_CAx1D>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.header.subsubcommand, "START BATTLE");
|
||||
this->send_debug_command_received_message(in_cmd.header.subsubcommand, "START BATTLE");
|
||||
|
||||
if (!this->battle_in_progress) {
|
||||
bool is_nte = this->options.is_nte();
|
||||
@@ -2382,8 +2348,7 @@ void Server::handle_CAx1D_start_battle(shared_ptr<Client>, const string& data) {
|
||||
|
||||
void Server::handle_CAx21_end_battle(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_EndBattle_Ep3_CAx21>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.header.subsubcommand, "END BATTLE");
|
||||
this->send_debug_command_received_message(in_cmd.header.subsubcommand, "END BATTLE");
|
||||
if (this->setup_phase == SetupPhase::BATTLE_ENDED) {
|
||||
this->battle_finished = true;
|
||||
|
||||
@@ -2397,8 +2362,7 @@ void Server::handle_CAx21_end_battle(shared_ptr<Client>, const string& data) {
|
||||
|
||||
void Server::handle_CAx28_end_defense_list(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_EndDefenseList_Ep3_CAx28>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "END DEF LIST");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "END DEF LIST");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -2458,8 +2422,7 @@ void Server::handle_CAx34_subtract_ally_atk_points(shared_ptr<Client>, const str
|
||||
const auto& in_cmd = check_size_t<G_PhotonBlastRequest_Ep3_CAx34>(data);
|
||||
|
||||
uint8_t card_ref_client_id = client_id_for_card_ref(in_cmd.card_ref);
|
||||
this->send_debug_command_received_message(
|
||||
card_ref_client_id, in_cmd.header.subsubcommand, "SUB ALLY ATK");
|
||||
this->send_debug_command_received_message(card_ref_client_id, in_cmd.header.subsubcommand, "SUB ALLY ATK");
|
||||
|
||||
if (card_ref_client_id >= 4) {
|
||||
return;
|
||||
@@ -2532,8 +2495,7 @@ void Server::handle_CAx34_subtract_ally_atk_points(shared_ptr<Client>, const str
|
||||
|
||||
void Server::handle_CAx37_client_ready_to_advance_from_starter_roll_phase(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_AdvanceFromStartingRollsPhase_Ep3_CAx37>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "SETUP ADV 1");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "SETUP ADV 1");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -2653,8 +2615,7 @@ void Server::handle_CAx41_map_request(shared_ptr<Client>, const string& data) {
|
||||
|
||||
void Server::handle_CAx48_end_turn(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_EndTurn_Ep3_CAx48>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.client_id, in_cmd.header.subsubcommand, "END TURN");
|
||||
this->send_debug_command_received_message(in_cmd.client_id, in_cmd.header.subsubcommand, "END TURN");
|
||||
if (in_cmd.client_id >= 4) {
|
||||
throw runtime_error("invalid client ID");
|
||||
}
|
||||
@@ -2671,8 +2632,7 @@ void Server::handle_CAx48_end_turn(shared_ptr<Client>, const string& data) {
|
||||
|
||||
void Server::handle_CAx49_card_counts(shared_ptr<Client>, const string& data) {
|
||||
const auto& in_cmd = check_size_t<G_CardCounts_Ep3_CAx49>(data);
|
||||
this->send_debug_command_received_message(
|
||||
in_cmd.header.sender_client_id, in_cmd.header.subsubcommand, "CARD COUNTS");
|
||||
this->send_debug_command_received_message(in_cmd.header.sender_client_id, in_cmd.header.subsubcommand, "CARD COUNTS");
|
||||
|
||||
// Note: Sega's implmentation completely ignores this command. This
|
||||
// implementation is not based on the original code.
|
||||
|
||||
+1
-1
@@ -558,7 +558,7 @@ void ItemCreator::clear_item_if_restricted(ItemData& item) const {
|
||||
break;
|
||||
case BattleRules::WeaponAndArmorMode::FORBID_RARES:
|
||||
if (this->item_parameter_table->is_item_rare(item)) {
|
||||
this->log.info("Restricted: rare items not allowed");
|
||||
this->log.info("Restricted: rare weapons and armors not allowed");
|
||||
item.clear();
|
||||
}
|
||||
break;
|
||||
|
||||
+166
-162
@@ -4634,6 +4634,10 @@ static void on_write_quest_counter_bb(shared_ptr<Client> c, uint8_t, uint8_t, vo
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// This makes it easier to see which handlers exist on which prototypes via
|
||||
// syntax highlighting
|
||||
constexpr uint8_t NONE = 0x00;
|
||||
|
||||
const SubcommandDefinition subcommand_definitions[0x100] = {
|
||||
/* 6x00 */ {0x00, 0x00, 0x00, on_invalid},
|
||||
/* 6x01 */ {0x01, 0x01, 0x01, on_invalid},
|
||||
@@ -4648,9 +4652,9 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
||||
/* 6x0A */ {0x0A, 0x0A, 0x0A, on_update_enemy_state},
|
||||
/* 6x0B */ {0x0B, 0x0B, 0x0B, on_update_object_state},
|
||||
/* 6x0C */ {0x0C, 0x0C, 0x0C, on_received_condition},
|
||||
/* 6x0D */ {0x00, 0x00, 0x0D, on_forward_check_game},
|
||||
/* 6x0E */ {0x00, 0x00, 0x0E, on_forward_check_game},
|
||||
/* 6x0F */ {0x00, 0x00, 0x0F, on_invalid},
|
||||
/* 6x0D */ {NONE, NONE, 0x0D, on_forward_check_game},
|
||||
/* 6x0E */ {NONE, NONE, 0x0E, on_forward_check_game},
|
||||
/* 6x0F */ {NONE, NONE, 0x0F, on_invalid},
|
||||
/* 6x10 */ {0x0E, 0x0E, 0x10, on_forward_check_game},
|
||||
/* 6x11 */ {0x0F, 0x0F, 0x11, on_forward_check_game},
|
||||
/* 6x12 */ {0x10, 0x10, 0x12, on_dragon_actions},
|
||||
@@ -4661,9 +4665,9 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
||||
/* 6x17 */ {0x15, 0x15, 0x17, on_forward_check_game},
|
||||
/* 6x18 */ {0x16, 0x16, 0x18, on_forward_check_game},
|
||||
/* 6x19 */ {0x17, 0x17, 0x19, on_forward_check_game},
|
||||
/* 6x1A */ {0x00, 0x00, 0x1A, on_invalid},
|
||||
/* 6x1B */ {0x00, 0x19, 0x1B, on_forward_check_game},
|
||||
/* 6x1C */ {0x00, 0x1A, 0x1C, on_forward_check_game},
|
||||
/* 6x1A */ {NONE, NONE, 0x1A, on_invalid},
|
||||
/* 6x1B */ {NONE, 0x19, 0x1B, on_forward_check_game},
|
||||
/* 6x1C */ {NONE, 0x1A, 0x1C, on_forward_check_game},
|
||||
/* 6x1D */ {0x19, 0x1B, 0x1D, on_invalid},
|
||||
/* 6x1E */ {0x1A, 0x1C, 0x1E, on_invalid},
|
||||
/* 6x1F */ {0x1B, 0x1D, 0x1F, on_change_floor_6x1F},
|
||||
@@ -4685,19 +4689,19 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
||||
/* 6x2F */ {0x2B, 0x2D, 0x2F, on_change_hp<G_ChangePlayerHP_6x2F>},
|
||||
/* 6x30 */ {0x2C, 0x2E, 0x30, on_level_up},
|
||||
/* 6x31 */ {0x2D, 0x2F, 0x31, on_forward_check_game},
|
||||
/* 6x32 */ {0x00, 0x00, 0x32, on_forward_check_game},
|
||||
/* 6x32 */ {NONE, NONE, 0x32, on_forward_check_game},
|
||||
/* 6x33 */ {0x2E, 0x30, 0x33, on_forward_check_game},
|
||||
/* 6x34 */ {0x2F, 0x31, 0x34, on_forward_check_game},
|
||||
/* 6x35 */ {0x30, 0x32, 0x35, on_invalid},
|
||||
/* 6x36 */ {0x00, 0x00, 0x36, on_forward_check_game},
|
||||
/* 6x36 */ {NONE, NONE, 0x36, on_forward_check_game},
|
||||
/* 6x37 */ {0x32, 0x33, 0x37, on_forward_check_game},
|
||||
/* 6x38 */ {0x33, 0x34, 0x38, on_forward_check_game},
|
||||
/* 6x39 */ {0x00, 0x36, 0x39, on_forward_check_game},
|
||||
/* 6x3A */ {0x00, 0x37, 0x3A, on_forward_check_game},
|
||||
/* 6x3B */ {0x00, 0x38, 0x3B, forward_subcommand_m},
|
||||
/* 6x39 */ {NONE, 0x36, 0x39, on_forward_check_game},
|
||||
/* 6x3A */ {NONE, 0x37, 0x3A, on_forward_check_game},
|
||||
/* 6x3B */ {NONE, 0x38, 0x3B, forward_subcommand_m},
|
||||
/* 6x3C */ {0x34, 0x39, 0x3C, forward_subcommand_m},
|
||||
/* 6x3D */ {0x00, 0x00, 0x3D, on_invalid},
|
||||
/* 6x3E */ {0x00, 0x00, 0x3E, on_movement_with_floor<G_StopAtPosition_6x3E>},
|
||||
/* 6x3D */ {NONE, NONE, 0x3D, on_invalid},
|
||||
/* 6x3E */ {NONE, NONE, 0x3E, on_movement_with_floor<G_StopAtPosition_6x3E>},
|
||||
/* 6x3F */ {0x36, 0x3B, 0x3F, on_movement_with_floor<G_SetPosition_6x3F>},
|
||||
/* 6x40 */ {0x37, 0x3C, 0x40, on_movement<G_WalkToPosition_6x40>},
|
||||
/* 6x41 */ {0x38, 0x3D, 0x41, forward_subcommand_m},
|
||||
@@ -4705,25 +4709,25 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
||||
/* 6x43 */ {0x3A, 0x3F, 0x43, on_forward_check_game_client},
|
||||
/* 6x44 */ {0x3B, 0x40, 0x44, on_forward_check_game_client},
|
||||
/* 6x45 */ {0x3C, 0x41, 0x45, on_forward_check_game_client},
|
||||
/* 6x46 */ {0x00, 0x42, 0x46, on_attack_finished},
|
||||
/* 6x46 */ {NONE, 0x42, 0x46, on_attack_finished},
|
||||
/* 6x47 */ {0x3D, 0x43, 0x47, on_cast_technique},
|
||||
/* 6x48 */ {0x00, 0x00, 0x48, on_cast_technique_finished},
|
||||
/* 6x48 */ {NONE, NONE, 0x48, on_cast_technique_finished},
|
||||
/* 6x49 */ {0x3E, 0x44, 0x49, on_execute_photon_blast},
|
||||
/* 6x4A */ {0x3F, 0x45, 0x4A, on_forward_check_game_client},
|
||||
/* 6x4B */ {0x40, 0x46, 0x4B, on_change_hp<G_ClientIDHeader>},
|
||||
/* 6x4C */ {0x41, 0x47, 0x4C, on_change_hp<G_ClientIDHeader>},
|
||||
/* 6x4D */ {0x42, 0x48, 0x4D, on_player_died},
|
||||
/* 6x4E */ {0x00, 0x00, 0x4E, on_player_revivable},
|
||||
/* 6x4E */ {NONE, NONE, 0x4E, on_player_revivable},
|
||||
/* 6x4F */ {0x43, 0x49, 0x4F, on_player_revived},
|
||||
/* 6x50 */ {0x44, 0x4A, 0x50, on_forward_check_game_client},
|
||||
/* 6x51 */ {0x00, 0x00, 0x51, on_invalid},
|
||||
/* 6x51 */ {NONE, NONE, 0x51, on_invalid},
|
||||
/* 6x52 */ {0x46, 0x4C, 0x52, on_set_animation_state},
|
||||
/* 6x53 */ {0x47, 0x4D, 0x53, on_forward_check_game},
|
||||
/* 6x54 */ {0x48, 0x4E, 0x54, forward_subcommand_m},
|
||||
/* 6x55 */ {0x49, 0x4F, 0x55, on_forward_check_game_client},
|
||||
/* 6x56 */ {0x4A, 0x50, 0x56, on_forward_check_game_client},
|
||||
/* 6x57 */ {0x00, 0x51, 0x57, on_forward_check_client},
|
||||
/* 6x58 */ {0x00, 0x00, 0x58, on_forward_check_client},
|
||||
/* 6x57 */ {NONE, 0x51, 0x57, on_forward_check_client},
|
||||
/* 6x58 */ {NONE, NONE, 0x58, on_forward_check_client},
|
||||
/* 6x59 */ {0x4B, 0x52, 0x59, on_pick_up_item},
|
||||
/* 6x5A */ {0x4C, 0x53, 0x5A, on_pick_up_item_request},
|
||||
/* 6x5B */ {0x4D, 0x54, 0x5B, forward_subcommand_m},
|
||||
@@ -4737,7 +4741,7 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
||||
/* 6x63 */ {0x55, 0x5C, 0x63, on_destroy_floor_item},
|
||||
/* 6x64 */ {0x56, 0x5D, 0x64, on_forward_check_game},
|
||||
/* 6x65 */ {0x57, 0x5E, 0x65, on_forward_check_game},
|
||||
/* 6x66 */ {0x00, 0x00, 0x66, on_forward_check_game},
|
||||
/* 6x66 */ {NONE, NONE, 0x66, on_forward_check_game},
|
||||
/* 6x67 */ {0x58, 0x5F, 0x67, on_trigger_set_event},
|
||||
/* 6x68 */ {0x59, 0x60, 0x68, on_update_telepipe_state},
|
||||
/* 6x69 */ {0x5A, 0x61, 0x69, on_npc_control},
|
||||
@@ -4746,151 +4750,151 @@ const SubcommandDefinition subcommand_definitions[0x100] = {
|
||||
/* 6x6C */ {0x5D, 0x64, 0x6C, on_sync_joining_player_compressed_state},
|
||||
/* 6x6D */ {0x5E, 0x65, 0x6D, on_sync_joining_player_compressed_state},
|
||||
/* 6x6E */ {0x5F, 0x66, 0x6E, on_sync_joining_player_compressed_state},
|
||||
/* 6x6F */ {0x00, 0x00, 0x6F, on_sync_joining_player_quest_flags},
|
||||
/* 6x6F */ {NONE, NONE, 0x6F, on_sync_joining_player_quest_flags},
|
||||
/* 6x70 */ {0x60, 0x67, 0x70, on_sync_joining_player_disp_and_inventory},
|
||||
/* 6x71 */ {0x00, 0x00, 0x71, on_forward_check_game_loading},
|
||||
/* 6x71 */ {NONE, NONE, 0x71, on_forward_check_game_loading},
|
||||
/* 6x72 */ {0x61, 0x68, 0x72, on_forward_check_game_loading},
|
||||
/* 6x73 */ {0x00, 0x00, 0x73, on_forward_check_game_quest},
|
||||
/* 6x73 */ {NONE, NONE, 0x73, on_forward_check_game_quest},
|
||||
/* 6x74 */ {0x62, 0x69, 0x74, on_word_select, SDF::ALWAYS_FORWARD_TO_WATCHERS},
|
||||
/* 6x75 */ {0x00, 0x00, 0x75, on_set_quest_flag},
|
||||
/* 6x76 */ {0x00, 0x00, 0x76, on_set_entity_set_flag},
|
||||
/* 6x77 */ {0x00, 0x00, 0x77, on_sync_quest_register},
|
||||
/* 6x78 */ {0x00, 0x00, 0x78, forward_subcommand_m},
|
||||
/* 6x79 */ {0x00, 0x00, 0x79, on_forward_check_lobby},
|
||||
/* 6x7A */ {0x00, 0x00, 0x7A, on_forward_check_game_client},
|
||||
/* 6x7B */ {0x00, 0x00, 0x7B, forward_subcommand_m},
|
||||
/* 6x7C */ {0x00, 0x00, 0x7C, on_challenge_update_records},
|
||||
/* 6x7D */ {0x00, 0x00, 0x7D, on_forward_check_game},
|
||||
/* 6x7E */ {0x00, 0x00, 0x7E, forward_subcommand_m},
|
||||
/* 6x7F */ {0x00, 0x00, 0x7F, on_battle_scores},
|
||||
/* 6x80 */ {0x00, 0x00, 0x80, on_forward_check_game},
|
||||
/* 6x81 */ {0x00, 0x00, 0x81, on_forward_check_game},
|
||||
/* 6x82 */ {0x00, 0x00, 0x82, on_forward_check_game},
|
||||
/* 6x83 */ {0x00, 0x00, 0x83, on_forward_check_game},
|
||||
/* 6x84 */ {0x00, 0x00, 0x84, on_forward_check_game},
|
||||
/* 6x85 */ {0x00, 0x00, 0x85, on_forward_check_game},
|
||||
/* 6x86 */ {0x00, 0x00, 0x86, on_forward_check_game},
|
||||
/* 6x87 */ {0x00, 0x00, 0x87, on_forward_check_game},
|
||||
/* 6x88 */ {0x00, 0x00, 0x88, on_forward_check_game},
|
||||
/* 6x89 */ {0x00, 0x00, 0x89, on_forward_check_game},
|
||||
/* 6x8A */ {0x00, 0x00, 0x8A, on_forward_check_game},
|
||||
/* 6x8B */ {0x00, 0x00, 0x8B, on_forward_check_game},
|
||||
/* 6x8C */ {0x00, 0x00, 0x8C, on_forward_check_game},
|
||||
/* 6x8D */ {0x00, 0x00, 0x8D, on_forward_check_game_client},
|
||||
/* 6x8E */ {0x00, 0x00, 0x8E, on_forward_check_game},
|
||||
/* 6x8F */ {0x00, 0x00, 0x8F, on_forward_check_game},
|
||||
/* 6x90 */ {0x00, 0x00, 0x90, on_forward_check_game},
|
||||
/* 6x91 */ {0x00, 0x00, 0x91, on_unknown_6x91},
|
||||
/* 6x92 */ {0x00, 0x00, 0x92, on_forward_check_game},
|
||||
/* 6x93 */ {0x00, 0x00, 0x93, on_activate_timed_switch},
|
||||
/* 6x94 */ {0x00, 0x00, 0x94, on_warp},
|
||||
/* 6x95 */ {0x00, 0x00, 0x95, on_forward_check_game},
|
||||
/* 6x96 */ {0x00, 0x00, 0x96, on_forward_check_game},
|
||||
/* 6x97 */ {0x00, 0x00, 0x97, on_challenge_mode_retry_or_quit},
|
||||
/* 6x98 */ {0x00, 0x00, 0x98, on_forward_check_game},
|
||||
/* 6x99 */ {0x00, 0x00, 0x99, on_forward_check_game},
|
||||
/* 6x9A */ {0x00, 0x00, 0x9A, on_forward_check_game_client},
|
||||
/* 6x9B */ {0x00, 0x00, 0x9B, on_forward_check_game},
|
||||
/* 6x9C */ {0x00, 0x00, 0x9C, on_forward_check_game},
|
||||
/* 6x9D */ {0x00, 0x00, 0x9D, on_forward_check_game},
|
||||
/* 6x9E */ {0x00, 0x00, 0x9E, forward_subcommand_m},
|
||||
/* 6x9F */ {0x00, 0x00, 0x9F, on_forward_check_game},
|
||||
/* 6xA0 */ {0x00, 0x00, 0xA0, on_forward_check_game},
|
||||
/* 6xA1 */ {0x00, 0x00, 0xA1, on_forward_check_game},
|
||||
/* 6xA2 */ {0x00, 0x00, 0xA2, on_entity_drop_item_request},
|
||||
/* 6xA3 */ {0x00, 0x00, 0xA3, on_forward_check_game},
|
||||
/* 6xA4 */ {0x00, 0x00, 0xA4, on_forward_check_game},
|
||||
/* 6xA5 */ {0x00, 0x00, 0xA5, on_forward_check_game},
|
||||
/* 6xA6 */ {0x00, 0x00, 0xA6, on_forward_check_game},
|
||||
/* 6xA7 */ {0x00, 0x00, 0xA7, forward_subcommand_m},
|
||||
/* 6xA8 */ {0x00, 0x00, 0xA8, on_gol_dragon_actions},
|
||||
/* 6xA9 */ {0x00, 0x00, 0xA9, on_forward_check_game},
|
||||
/* 6xAA */ {0x00, 0x00, 0xAA, on_forward_check_game},
|
||||
/* 6xAB */ {0x00, 0x00, 0xAB, on_gc_nte_exclusive},
|
||||
/* 6xAC */ {0x00, 0x00, 0xAC, on_gc_nte_exclusive},
|
||||
/* 6xAD */ {0x00, 0x00, 0xAD, on_forward_check_game},
|
||||
/* 6xAE */ {0x00, 0x00, 0xAE, on_forward_check_client},
|
||||
/* 6xAF */ {0x00, 0x00, 0xAF, on_forward_check_lobby_client},
|
||||
/* 6xB0 */ {0x00, 0x00, 0xB0, on_forward_check_lobby_client},
|
||||
/* 6xB1 */ {0x00, 0x00, 0xB1, forward_subcommand_m},
|
||||
/* 6xB2 */ {0x00, 0x00, 0xB2, on_play_sound_from_player},
|
||||
/* 6xB3 */ {0x00, 0x00, 0xB3, on_xbox_voice_chat_control},
|
||||
/* 6xB4 */ {0x00, 0x00, 0xB4, on_xbox_voice_chat_control},
|
||||
/* 6xB5 */ {0x00, 0x00, 0xB5, on_open_shop_bb_or_ep3_battle_subs},
|
||||
/* 6xB6 */ {0x00, 0x00, 0xB6, on_invalid},
|
||||
/* 6xB7 */ {0x00, 0x00, 0xB7, on_buy_shop_item_bb},
|
||||
/* 6xB8 */ {0x00, 0x00, 0xB8, on_identify_item_bb},
|
||||
/* 6xB9 */ {0x00, 0x00, 0xB9, on_invalid},
|
||||
/* 6xBA */ {0x00, 0x00, 0xBA, on_accept_identify_item_bb},
|
||||
/* 6xBB */ {0x00, 0x00, 0xBB, on_open_bank_bb_or_card_trade_counter_ep3},
|
||||
/* 6xBC */ {0x00, 0x00, 0xBC, on_forward_check_ep3_game},
|
||||
/* 6xBD */ {0x00, 0x00, 0xBD, on_ep3_private_word_select_bb_bank_action, SDF::ALWAYS_FORWARD_TO_WATCHERS},
|
||||
/* 6xBE */ {0x00, 0x00, 0xBE, forward_subcommand_m, SDF::ALWAYS_FORWARD_TO_WATCHERS | SDF::ALLOW_FORWARD_TO_WATCHED_LOBBY},
|
||||
/* 6xBF */ {0x00, 0x00, 0xBF, on_forward_check_ep3_lobby},
|
||||
/* 6xC0 */ {0x00, 0x00, 0xC0, on_sell_item_at_shop_bb},
|
||||
/* 6xC1 */ {0x00, 0x00, 0xC1, forward_subcommand_m},
|
||||
/* 6xC2 */ {0x00, 0x00, 0xC2, forward_subcommand_m},
|
||||
/* 6xC3 */ {0x00, 0x00, 0xC3, on_drop_partial_stack_bb},
|
||||
/* 6xC4 */ {0x00, 0x00, 0xC4, on_sort_inventory_bb},
|
||||
/* 6xC5 */ {0x00, 0x00, 0xC5, on_medical_center_bb},
|
||||
/* 6xC6 */ {0x00, 0x00, 0xC6, on_steal_exp_bb},
|
||||
/* 6xC7 */ {0x00, 0x00, 0xC7, on_charge_attack_bb},
|
||||
/* 6xC8 */ {0x00, 0x00, 0xC8, on_enemy_exp_request_bb},
|
||||
/* 6xC9 */ {0x00, 0x00, 0xC9, on_adjust_player_meseta_bb},
|
||||
/* 6xCA */ {0x00, 0x00, 0xCA, on_item_reward_request_bb},
|
||||
/* 6xCB */ {0x00, 0x00, 0xCB, on_transfer_item_via_mail_message_bb},
|
||||
/* 6xCC */ {0x00, 0x00, 0xCC, on_exchange_item_for_team_points_bb},
|
||||
/* 6xCD */ {0x00, 0x00, 0xCD, forward_subcommand_m},
|
||||
/* 6xCE */ {0x00, 0x00, 0xCE, forward_subcommand_m},
|
||||
/* 6xCF */ {0x00, 0x00, 0xCF, on_battle_restart_bb},
|
||||
/* 6xD0 */ {0x00, 0x00, 0xD0, on_battle_level_up_bb},
|
||||
/* 6xD1 */ {0x00, 0x00, 0xD1, on_request_challenge_grave_recovery_item_bb},
|
||||
/* 6xD2 */ {0x00, 0x00, 0xD2, on_write_quest_counter_bb},
|
||||
/* 6xD3 */ {0x00, 0x00, 0xD3, on_invalid},
|
||||
/* 6xD4 */ {0x00, 0x00, 0xD4, on_forward_check_game},
|
||||
/* 6xD5 */ {0x00, 0x00, 0xD5, on_quest_exchange_item_bb},
|
||||
/* 6xD6 */ {0x00, 0x00, 0xD6, on_wrap_item_bb},
|
||||
/* 6xD7 */ {0x00, 0x00, 0xD7, on_photon_drop_exchange_for_item_bb},
|
||||
/* 6xD8 */ {0x00, 0x00, 0xD8, on_photon_drop_exchange_for_s_rank_special_bb},
|
||||
/* 6xD9 */ {0x00, 0x00, 0xD9, on_momoka_item_exchange_bb},
|
||||
/* 6xDA */ {0x00, 0x00, 0xDA, on_upgrade_weapon_attribute_bb},
|
||||
/* 6xDB */ {0x00, 0x00, 0xDB, on_invalid},
|
||||
/* 6xDC */ {0x00, 0x00, 0xDC, on_forward_check_game},
|
||||
/* 6xDD */ {0x00, 0x00, 0xDD, on_invalid},
|
||||
/* 6xDE */ {0x00, 0x00, 0xDE, on_secret_lottery_ticket_exchange_bb},
|
||||
/* 6xDF */ {0x00, 0x00, 0xDF, on_photon_crystal_exchange_bb},
|
||||
/* 6xE0 */ {0x00, 0x00, 0xE0, on_quest_F95E_result_bb},
|
||||
/* 6xE1 */ {0x00, 0x00, 0xE1, on_quest_F95F_result_bb},
|
||||
/* 6xE2 */ {0x00, 0x00, 0xE2, on_quest_F960_result_bb},
|
||||
/* 6xE3 */ {0x00, 0x00, 0xE3, on_invalid},
|
||||
/* 6xE4 */ {0x00, 0x00, 0xE4, on_invalid},
|
||||
/* 6xE5 */ {0x00, 0x00, 0xE5, on_invalid},
|
||||
/* 6xE6 */ {0x00, 0x00, 0xE6, on_invalid},
|
||||
/* 6xE7 */ {0x00, 0x00, 0xE7, on_invalid},
|
||||
/* 6xE8 */ {0x00, 0x00, 0xE8, on_invalid},
|
||||
/* 6xE9 */ {0x00, 0x00, 0xE9, on_invalid},
|
||||
/* 6xEA */ {0x00, 0x00, 0xEA, on_invalid},
|
||||
/* 6xEB */ {0x00, 0x00, 0xEB, on_invalid},
|
||||
/* 6xEC */ {0x00, 0x00, 0xEC, on_invalid},
|
||||
/* 6xED */ {0x00, 0x00, 0xED, on_invalid},
|
||||
/* 6xEE */ {0x00, 0x00, 0xEE, on_invalid},
|
||||
/* 6xEF */ {0x00, 0x00, 0xEF, on_invalid},
|
||||
/* 6xF0 */ {0x00, 0x00, 0xF0, on_invalid},
|
||||
/* 6xF1 */ {0x00, 0x00, 0xF1, on_invalid},
|
||||
/* 6xF2 */ {0x00, 0x00, 0xF2, on_invalid},
|
||||
/* 6xF3 */ {0x00, 0x00, 0xF3, on_invalid},
|
||||
/* 6xF4 */ {0x00, 0x00, 0xF4, on_invalid},
|
||||
/* 6xF5 */ {0x00, 0x00, 0xF5, on_invalid},
|
||||
/* 6xF6 */ {0x00, 0x00, 0xF6, on_invalid},
|
||||
/* 6xF7 */ {0x00, 0x00, 0xF7, on_invalid},
|
||||
/* 6xF8 */ {0x00, 0x00, 0xF8, on_invalid},
|
||||
/* 6xF9 */ {0x00, 0x00, 0xF9, on_invalid},
|
||||
/* 6xFA */ {0x00, 0x00, 0xFA, on_invalid},
|
||||
/* 6xFB */ {0x00, 0x00, 0xFB, on_invalid},
|
||||
/* 6xFC */ {0x00, 0x00, 0xFC, on_invalid},
|
||||
/* 6xFD */ {0x00, 0x00, 0xFD, on_invalid},
|
||||
/* 6xFE */ {0x00, 0x00, 0xFE, on_invalid},
|
||||
/* 6xFF */ {0x00, 0x00, 0xFF, on_invalid},
|
||||
/* 6x75 */ {NONE, NONE, 0x75, on_set_quest_flag},
|
||||
/* 6x76 */ {NONE, NONE, 0x76, on_set_entity_set_flag},
|
||||
/* 6x77 */ {NONE, NONE, 0x77, on_sync_quest_register},
|
||||
/* 6x78 */ {NONE, NONE, 0x78, forward_subcommand_m},
|
||||
/* 6x79 */ {NONE, NONE, 0x79, on_forward_check_lobby},
|
||||
/* 6x7A */ {NONE, NONE, 0x7A, on_forward_check_game_client},
|
||||
/* 6x7B */ {NONE, NONE, 0x7B, forward_subcommand_m},
|
||||
/* 6x7C */ {NONE, NONE, 0x7C, on_challenge_update_records},
|
||||
/* 6x7D */ {NONE, NONE, 0x7D, on_forward_check_game},
|
||||
/* 6x7E */ {NONE, NONE, 0x7E, forward_subcommand_m},
|
||||
/* 6x7F */ {NONE, NONE, 0x7F, on_battle_scores},
|
||||
/* 6x80 */ {NONE, NONE, 0x80, on_forward_check_game},
|
||||
/* 6x81 */ {NONE, NONE, 0x81, on_forward_check_game},
|
||||
/* 6x82 */ {NONE, NONE, 0x82, on_forward_check_game},
|
||||
/* 6x83 */ {NONE, NONE, 0x83, on_forward_check_game},
|
||||
/* 6x84 */ {NONE, NONE, 0x84, on_forward_check_game},
|
||||
/* 6x85 */ {NONE, NONE, 0x85, on_forward_check_game},
|
||||
/* 6x86 */ {NONE, NONE, 0x86, on_forward_check_game},
|
||||
/* 6x87 */ {NONE, NONE, 0x87, on_forward_check_game},
|
||||
/* 6x88 */ {NONE, NONE, 0x88, on_forward_check_game},
|
||||
/* 6x89 */ {NONE, NONE, 0x89, on_forward_check_game},
|
||||
/* 6x8A */ {NONE, NONE, 0x8A, on_forward_check_game},
|
||||
/* 6x8B */ {NONE, NONE, 0x8B, on_forward_check_game},
|
||||
/* 6x8C */ {NONE, NONE, 0x8C, on_forward_check_game},
|
||||
/* 6x8D */ {NONE, NONE, 0x8D, on_forward_check_game_client},
|
||||
/* 6x8E */ {NONE, NONE, 0x8E, on_forward_check_game},
|
||||
/* 6x8F */ {NONE, NONE, 0x8F, on_forward_check_game},
|
||||
/* 6x90 */ {NONE, NONE, 0x90, on_forward_check_game},
|
||||
/* 6x91 */ {NONE, NONE, 0x91, on_unknown_6x91},
|
||||
/* 6x92 */ {NONE, NONE, 0x92, on_forward_check_game},
|
||||
/* 6x93 */ {NONE, NONE, 0x93, on_activate_timed_switch},
|
||||
/* 6x94 */ {NONE, NONE, 0x94, on_warp},
|
||||
/* 6x95 */ {NONE, NONE, 0x95, on_forward_check_game},
|
||||
/* 6x96 */ {NONE, NONE, 0x96, on_forward_check_game},
|
||||
/* 6x97 */ {NONE, NONE, 0x97, on_challenge_mode_retry_or_quit},
|
||||
/* 6x98 */ {NONE, NONE, 0x98, on_forward_check_game},
|
||||
/* 6x99 */ {NONE, NONE, 0x99, on_forward_check_game},
|
||||
/* 6x9A */ {NONE, NONE, 0x9A, on_forward_check_game_client},
|
||||
/* 6x9B */ {NONE, NONE, 0x9B, on_forward_check_game},
|
||||
/* 6x9C */ {NONE, NONE, 0x9C, on_forward_check_game},
|
||||
/* 6x9D */ {NONE, NONE, 0x9D, on_forward_check_game},
|
||||
/* 6x9E */ {NONE, NONE, 0x9E, forward_subcommand_m},
|
||||
/* 6x9F */ {NONE, NONE, 0x9F, on_forward_check_game},
|
||||
/* 6xA0 */ {NONE, NONE, 0xA0, on_forward_check_game},
|
||||
/* 6xA1 */ {NONE, NONE, 0xA1, on_forward_check_game},
|
||||
/* 6xA2 */ {NONE, NONE, 0xA2, on_entity_drop_item_request},
|
||||
/* 6xA3 */ {NONE, NONE, 0xA3, on_forward_check_game},
|
||||
/* 6xA4 */ {NONE, NONE, 0xA4, on_forward_check_game},
|
||||
/* 6xA5 */ {NONE, NONE, 0xA5, on_forward_check_game},
|
||||
/* 6xA6 */ {NONE, NONE, 0xA6, on_forward_check_game},
|
||||
/* 6xA7 */ {NONE, NONE, 0xA7, forward_subcommand_m},
|
||||
/* 6xA8 */ {NONE, NONE, 0xA8, on_gol_dragon_actions},
|
||||
/* 6xA9 */ {NONE, NONE, 0xA9, on_forward_check_game},
|
||||
/* 6xAA */ {NONE, NONE, 0xAA, on_forward_check_game},
|
||||
/* 6xAB */ {NONE, NONE, 0xAB, on_gc_nte_exclusive},
|
||||
/* 6xAC */ {NONE, NONE, 0xAC, on_gc_nte_exclusive},
|
||||
/* 6xAD */ {NONE, NONE, 0xAD, on_forward_check_game},
|
||||
/* 6xAE */ {NONE, NONE, 0xAE, on_forward_check_client},
|
||||
/* 6xAF */ {NONE, NONE, 0xAF, on_forward_check_lobby_client},
|
||||
/* 6xB0 */ {NONE, NONE, 0xB0, on_forward_check_lobby_client},
|
||||
/* 6xB1 */ {NONE, NONE, 0xB1, forward_subcommand_m},
|
||||
/* 6xB2 */ {NONE, NONE, 0xB2, on_play_sound_from_player},
|
||||
/* 6xB3 */ {NONE, NONE, 0xB3, on_xbox_voice_chat_control}, // Ep3 6xBx commands are handled via on_CA_Ep3 instead
|
||||
/* 6xB4 */ {NONE, NONE, 0xB4, on_xbox_voice_chat_control},
|
||||
/* 6xB5 */ {NONE, NONE, 0xB5, on_open_shop_bb_or_ep3_battle_subs},
|
||||
/* 6xB6 */ {NONE, NONE, 0xB6, on_invalid},
|
||||
/* 6xB7 */ {NONE, NONE, 0xB7, on_buy_shop_item_bb},
|
||||
/* 6xB8 */ {NONE, NONE, 0xB8, on_identify_item_bb},
|
||||
/* 6xB9 */ {NONE, NONE, 0xB9, on_invalid},
|
||||
/* 6xBA */ {NONE, NONE, 0xBA, on_accept_identify_item_bb},
|
||||
/* 6xBB */ {NONE, NONE, 0xBB, on_open_bank_bb_or_card_trade_counter_ep3},
|
||||
/* 6xBC */ {NONE, NONE, 0xBC, on_forward_check_ep3_game},
|
||||
/* 6xBD */ {NONE, NONE, 0xBD, on_ep3_private_word_select_bb_bank_action, SDF::ALWAYS_FORWARD_TO_WATCHERS},
|
||||
/* 6xBE */ {NONE, NONE, 0xBE, forward_subcommand_m, SDF::ALWAYS_FORWARD_TO_WATCHERS | SDF::ALLOW_FORWARD_TO_WATCHED_LOBBY},
|
||||
/* 6xBF */ {NONE, NONE, 0xBF, on_forward_check_ep3_lobby},
|
||||
/* 6xC0 */ {NONE, NONE, 0xC0, on_sell_item_at_shop_bb},
|
||||
/* 6xC1 */ {NONE, NONE, 0xC1, forward_subcommand_m},
|
||||
/* 6xC2 */ {NONE, NONE, 0xC2, forward_subcommand_m},
|
||||
/* 6xC3 */ {NONE, NONE, 0xC3, on_drop_partial_stack_bb},
|
||||
/* 6xC4 */ {NONE, NONE, 0xC4, on_sort_inventory_bb},
|
||||
/* 6xC5 */ {NONE, NONE, 0xC5, on_medical_center_bb},
|
||||
/* 6xC6 */ {NONE, NONE, 0xC6, on_steal_exp_bb},
|
||||
/* 6xC7 */ {NONE, NONE, 0xC7, on_charge_attack_bb},
|
||||
/* 6xC8 */ {NONE, NONE, 0xC8, on_enemy_exp_request_bb},
|
||||
/* 6xC9 */ {NONE, NONE, 0xC9, on_adjust_player_meseta_bb},
|
||||
/* 6xCA */ {NONE, NONE, 0xCA, on_item_reward_request_bb},
|
||||
/* 6xCB */ {NONE, NONE, 0xCB, on_transfer_item_via_mail_message_bb},
|
||||
/* 6xCC */ {NONE, NONE, 0xCC, on_exchange_item_for_team_points_bb},
|
||||
/* 6xCD */ {NONE, NONE, 0xCD, forward_subcommand_m},
|
||||
/* 6xCE */ {NONE, NONE, 0xCE, forward_subcommand_m},
|
||||
/* 6xCF */ {NONE, NONE, 0xCF, on_battle_restart_bb},
|
||||
/* 6xD0 */ {NONE, NONE, 0xD0, on_battle_level_up_bb},
|
||||
/* 6xD1 */ {NONE, NONE, 0xD1, on_request_challenge_grave_recovery_item_bb},
|
||||
/* 6xD2 */ {NONE, NONE, 0xD2, on_write_quest_counter_bb},
|
||||
/* 6xD3 */ {NONE, NONE, 0xD3, on_invalid},
|
||||
/* 6xD4 */ {NONE, NONE, 0xD4, on_forward_check_game},
|
||||
/* 6xD5 */ {NONE, NONE, 0xD5, on_quest_exchange_item_bb},
|
||||
/* 6xD6 */ {NONE, NONE, 0xD6, on_wrap_item_bb},
|
||||
/* 6xD7 */ {NONE, NONE, 0xD7, on_photon_drop_exchange_for_item_bb},
|
||||
/* 6xD8 */ {NONE, NONE, 0xD8, on_photon_drop_exchange_for_s_rank_special_bb},
|
||||
/* 6xD9 */ {NONE, NONE, 0xD9, on_momoka_item_exchange_bb},
|
||||
/* 6xDA */ {NONE, NONE, 0xDA, on_upgrade_weapon_attribute_bb},
|
||||
/* 6xDB */ {NONE, NONE, 0xDB, on_invalid},
|
||||
/* 6xDC */ {NONE, NONE, 0xDC, on_forward_check_game},
|
||||
/* 6xDD */ {NONE, NONE, 0xDD, on_invalid},
|
||||
/* 6xDE */ {NONE, NONE, 0xDE, on_secret_lottery_ticket_exchange_bb},
|
||||
/* 6xDF */ {NONE, NONE, 0xDF, on_photon_crystal_exchange_bb},
|
||||
/* 6xE0 */ {NONE, NONE, 0xE0, on_quest_F95E_result_bb},
|
||||
/* 6xE1 */ {NONE, NONE, 0xE1, on_quest_F95F_result_bb},
|
||||
/* 6xE2 */ {NONE, NONE, 0xE2, on_quest_F960_result_bb},
|
||||
/* 6xE3 */ {NONE, NONE, 0xE3, on_invalid},
|
||||
/* 6xE4 */ {NONE, NONE, 0xE4, on_invalid},
|
||||
/* 6xE5 */ {NONE, NONE, 0xE5, on_invalid},
|
||||
/* 6xE6 */ {NONE, NONE, 0xE6, on_invalid},
|
||||
/* 6xE7 */ {NONE, NONE, 0xE7, on_invalid},
|
||||
/* 6xE8 */ {NONE, NONE, 0xE8, on_invalid},
|
||||
/* 6xE9 */ {NONE, NONE, 0xE9, on_invalid},
|
||||
/* 6xEA */ {NONE, NONE, 0xEA, on_invalid},
|
||||
/* 6xEB */ {NONE, NONE, 0xEB, on_invalid},
|
||||
/* 6xEC */ {NONE, NONE, 0xEC, on_invalid},
|
||||
/* 6xED */ {NONE, NONE, 0xED, on_invalid},
|
||||
/* 6xEE */ {NONE, NONE, 0xEE, on_invalid},
|
||||
/* 6xEF */ {NONE, NONE, 0xEF, on_invalid},
|
||||
/* 6xF0 */ {NONE, NONE, 0xF0, on_invalid},
|
||||
/* 6xF1 */ {NONE, NONE, 0xF1, on_invalid},
|
||||
/* 6xF2 */ {NONE, NONE, 0xF2, on_invalid},
|
||||
/* 6xF3 */ {NONE, NONE, 0xF3, on_invalid},
|
||||
/* 6xF4 */ {NONE, NONE, 0xF4, on_invalid},
|
||||
/* 6xF5 */ {NONE, NONE, 0xF5, on_invalid},
|
||||
/* 6xF6 */ {NONE, NONE, 0xF6, on_invalid},
|
||||
/* 6xF7 */ {NONE, NONE, 0xF7, on_invalid},
|
||||
/* 6xF8 */ {NONE, NONE, 0xF8, on_invalid},
|
||||
/* 6xF9 */ {NONE, NONE, 0xF9, on_invalid},
|
||||
/* 6xFA */ {NONE, NONE, 0xFA, on_invalid},
|
||||
/* 6xFB */ {NONE, NONE, 0xFB, on_invalid},
|
||||
/* 6xFC */ {NONE, NONE, 0xFC, on_invalid},
|
||||
/* 6xFD */ {NONE, NONE, 0xFD, on_invalid},
|
||||
/* 6xFE */ {NONE, NONE, 0xFE, on_invalid},
|
||||
/* 6xFF */ {NONE, NONE, 0xFF, on_invalid},
|
||||
};
|
||||
|
||||
void on_subcommand_multi(shared_ptr<Client> c, uint8_t command, uint8_t flag, string& data) {
|
||||
|
||||
Reference in New Issue
Block a user