Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
e0c34fe700
|
|||
|
cbe9747fd4
|
|||
|
de0104eec8
|
|||
|
c454068715
|
|||
|
d98e1f7478
|
|||
|
c497f64376
|
|||
|
90a1f0f938
|
|||
|
71fc272133
|
|||
|
e94fcf035e
|
|||
|
0abdb50eca
|
@@ -83,6 +83,7 @@ public:
|
||||
ITEM_DROP_NOTIFICATIONS_1 = 0x0000000400000000,
|
||||
ITEM_DROP_NOTIFICATIONS_2 = 0x0000000800000000,
|
||||
HAS_ENEMY_DAMAGE_SYNC_PATCH = 0x0000001000000000, // Must be same as in EnemyDamageSync*.s
|
||||
HAS_PSO_PEEPS_XP_PATCH = 0x0000200000000000, // Must be same as in PSO Peeps XP patches
|
||||
|
||||
// Proxy option flags
|
||||
PROXY_SAVE_FILES = 0x0000002000000000,
|
||||
|
||||
@@ -68,7 +68,7 @@ struct RootV2V3V4 {
|
||||
/* 08 / 0498 / 0498 / 0608 / 03CE / 04AE */ U32T<BE> unknown_a3; // -> UnknownA3Entry[max(unknown_a2) + 1]
|
||||
/* 0C / 0510 / 0520 / 06B0 / 0476 / 0556 */ U32T<BE> unknown_a4; // -> uint8_t[NumMags]
|
||||
/* 10 / 053C / 054C / 06EC / 04BC / 05AC */ U32T<BE> color_table; // -> ColorEntry[NumColors]
|
||||
/* 14 / / / 077C / 05DC / 06CC */ U32T<BE> evolution_number; // -> uint8_t[NumMags]
|
||||
/* 14 / / / 077C / 05DC / 06CC */ U32T<BE> evolution_number_table; // -> uint8_t[NumMags]
|
||||
} __packed_ws_be__(RootV2V3V4, 0x18);
|
||||
|
||||
struct RootV1 {
|
||||
|
||||
@@ -74,7 +74,14 @@ static asio::awaitable<HandlerResult> C_1D(shared_ptr<Client> c, Channel::Messag
|
||||
c->ping_start_time = 0;
|
||||
double ping_ms = static_cast<double>(ping_usecs) / 1000.0;
|
||||
send_text_message_fmt(c->channel, "To proxy: {:g}ms", ping_ms);
|
||||
co_return HandlerResult::SUPPRESS;
|
||||
}
|
||||
|
||||
if (c->proxy_session->is_in_game) {
|
||||
c->log.info_f("Forwarding in-game command 1D through proxy");
|
||||
co_return HandlerResult::FORWARD;
|
||||
}
|
||||
|
||||
co_return HandlerResult::SUPPRESS;
|
||||
}
|
||||
|
||||
|
||||
+20
-5
@@ -3112,11 +3112,26 @@ static asio::awaitable<void> on_10_proxy_destinations(shared_ptr<Client> c, uint
|
||||
send_message_box(c, "$C6No such destination exists.");
|
||||
c->channel->disconnect();
|
||||
} else {
|
||||
// PSO Peeps: boosted GC discs enter through separate frontdoor ports after
|
||||
// pc_console_detect. Do not allow x5/x10 GC discs into Vanilla.
|
||||
if ((c->listener_port == 9105 || c->listener_port == 9110 ||
|
||||
c->listener_port == 9201 || c->listener_port == 9202) && dest->second == 19203) {
|
||||
send_message_box(c, "$C6Vanilla Ship is not available from boosted discs.\n\n$C7Use the normal disc for Vanilla.");
|
||||
// PSO Peeps: boosted clients may not enter Vanilla/Hardcore.
|
||||
// PC v2 receives boosted BattleParams via the patch server. DC/GC can be
|
||||
// boosted either by old boosted-disc listener ports or by the PSO Peeps XP
|
||||
// client-function patch, which sets HAS_PSO_PEEPS_XP_PATCH.
|
||||
const bool is_vanilla_or_hardcore_dest =
|
||||
(dest->second == 19203 || dest->second == 19230 || dest->second == 19530);
|
||||
const bool is_boosted_disc =
|
||||
(c->listener_port == 9105 || c->listener_port == 9110 ||
|
||||
c->listener_port == 9201 || c->listener_port == 9202 ||
|
||||
c->listener_port == 19105 || c->listener_port == 19110);
|
||||
const bool is_pc_v2_boosted = (c->version() == Version::PC_V2);
|
||||
const bool has_psopeeps_xp_patch =
|
||||
c->check_flag(Client::Flag::HAS_PSO_PEEPS_XP_PATCH);
|
||||
|
||||
if (is_vanilla_or_hardcore_dest &&
|
||||
(is_boosted_disc || is_pc_v2_boosted || has_psopeeps_xp_patch)) {
|
||||
send_message_box(c,
|
||||
"$C6Vanilla and Hardcore are not available\n"
|
||||
"while boosted XP is active.\n\n"
|
||||
"$C7Use Live, Test, or Dev.");
|
||||
co_return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user