PSO Peeps: align proxy boost gates with upstream cleanup

This commit is contained in:
2026-05-19 15:50:37 -04:00
parent f73dbf5a96
commit e7ea471ec5
14 changed files with 19 additions and 25 deletions
+3 -6
View File
@@ -3120,21 +3120,18 @@ static asio::awaitable<void> on_10_proxy_destinations(shared_ptr<Client> c, uint
c->channel->disconnect();
} else {
// 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.
// DC/GC can be boosted either by old boosted-disc listener ports or by
// PSO Peeps XP client-function patches, which set 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)) {
(is_boosted_disc || has_psopeeps_xp_patch)) {
send_message_box(c,
"$C6Vanilla and Hardcore are not available\n"
"while boosted XP is active.\n\n"
+4 -19
View File
@@ -2487,25 +2487,10 @@ static asio::awaitable<void> on_pick_up_item_generic(
// TODO: Figure out what the actual max range is; 30 is an overestimate
double dist2 = fi->pos.dist2(c->pos);
if (dist2 > 900.0) {
const bool allow_dcv2_falz_pickup_distance_recovery =
is_request &&
(c->version() == Version::DC_V2) &&
(l->episode == Episode::EP1) &&
(floor == 0x0E) &&
(fi->from_obj == nullptr) &&
(fi->from_ene == nullptr) &&
fi->visible_to_client(c->lobby_client_id);
if (allow_dcv2_falz_pickup_distance_recovery) {
l->log.warning_f(
"DC V2 Falz floor item pickup distance recovery: Player {} picking up {:08X}; dist2={} item_floor={} player_floor={}",
client_id, item_id, dist2, static_cast<uint64_t>(floor), static_cast<uint64_t>(c->floor));
} else {
l->log.warning_f("Player {} requests to pick up {:08X}, but it is too far away (dist2={})",
client_id, item_id, dist2);
l->add_item(floor, fi);
co_return;
}
l->log.warning_f("Player {} requests to pick up {:08X}, but it is too far away (dist2={})",
client_id, item_id, dist2);
l->add_item(floor, fi);
co_return;
}
try {