PSO Peeps: block boosted clients from Vanilla and Hardcore

Add HAS_PSO_PEEPS_XP_PATCH for future V2/GC client-function XP patches.

Unify boosted-client proxy blocking so Vanilla/Hardcore reject:
- PC v2 clients using boosted BattleParams
- legacy boosted-disc listener ports
- future clients with the PSO Peeps XP patch flag

Normal unpatched V2/GC clients remain allowed.
This commit is contained in:
2026-05-05 03:32:48 -04:00
parent cbe9747fd4
commit e0c34fe700
2 changed files with 21 additions and 19 deletions
+1
View File
@@ -83,6 +83,7 @@ public:
ITEM_DROP_NOTIFICATIONS_1 = 0x0000000400000000, ITEM_DROP_NOTIFICATIONS_1 = 0x0000000400000000,
ITEM_DROP_NOTIFICATIONS_2 = 0x0000000800000000, ITEM_DROP_NOTIFICATIONS_2 = 0x0000000800000000,
HAS_ENEMY_DAMAGE_SYNC_PATCH = 0x0000001000000000, // Must be same as in EnemyDamageSync*.s 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 option flags
PROXY_SAVE_FILES = 0x0000002000000000, PROXY_SAVE_FILES = 0x0000002000000000,
+20 -19
View File
@@ -3112,25 +3112,26 @@ static asio::awaitable<void> on_10_proxy_destinations(shared_ptr<Client> c, uint
send_message_box(c, "$C6No such destination exists."); send_message_box(c, "$C6No such destination exists.");
c->channel->disconnect(); c->channel->disconnect();
} else { } else {
// PSO Peeps: boosted GC discs enter through separate frontdoor ports after // PSO Peeps: boosted clients may not enter Vanilla/Hardcore.
// pc_console_detect. Do not allow x5/x10 GC discs into Vanilla. // PC v2 receives boosted BattleParams via the patch server. DC/GC can be
if ((c->listener_port == 9105 || c->listener_port == 9110 || // boosted either by old boosted-disc listener ports or by the PSO Peeps XP
c->listener_port == 9201 || c->listener_port == 9202) && dest->second == 19203) { // client-function patch, which sets HAS_PSO_PEEPS_XP_PATCH.
send_message_box(c, "$C6Vanilla Ship is not available from boosted discs.\n\n$C7Use the normal disc for Vanilla."); const bool is_vanilla_or_hardcore_dest =
co_return; (dest->second == 19203 || dest->second == 19230 || dest->second == 19530);
} const bool is_boosted_disc =
// PSO Peeps: boosted GC discs enter through separate frontdoor ports after (c->listener_port == 9105 || c->listener_port == 9110 ||
// pc_console_detect. Do not allow x5/x10 GC discs into Vanilla. c->listener_port == 9201 || c->listener_port == 9202 ||
if ((c->listener_port == 9105 || c->listener_port == 9110 || c->listener_port == 19105 || c->listener_port == 19110);
c->listener_port == 9201 || c->listener_port == 9202) && dest->second == 19203) { const bool is_pc_v2_boosted = (c->version() == Version::PC_V2);
send_message_box(c, "$C6Vanilla Ship is not available from boosted discs.\n\n$C7Use the normal disc for Vanilla."); const bool has_psopeeps_xp_patch =
co_return; c->check_flag(Client::Flag::HAS_PSO_PEEPS_XP_PATCH);
}
// PSO Peeps: PC v2 clients receive boosted BattleParams via the patch if (is_vanilla_or_hardcore_dest &&
// server. Vanilla and Hardcore run base XP rates and are incompatible. (is_boosted_disc || is_pc_v2_boosted || has_psopeeps_xp_patch)) {
if (c->version() == Version::PC_V2 && send_message_box(c,
(dest->second == 19230 || dest->second == 19530)) { "$C6Vanilla and Hardcore are not available\n"
send_message_box(c, "$C6This ship is not available\nfor PSO PC.\n\n$C7Vanilla and Hardcore run\nbase XP rates."); "while boosted XP is active.\n\n"
"$C7Use Live, Test, or Dev.");
co_return; co_return;
} }