Presistent clients now actually properly track clients between reloads (#91440)

This commit is contained in:
LemonInTheDark
2025-06-06 20:17:34 -07:00
committed by Roxy
parent 7d5c336549
commit f722a840f0
3 changed files with 21 additions and 15 deletions
+2 -5
View File
@@ -269,12 +269,9 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
if(GLOB.persistent_clients_by_ckey[ckey])
reconnecting = TRUE
persistent_client = GLOB.persistent_clients_by_ckey[ckey]
persistent_client.byond_build = byond_build
persistent_client.byond_version = byond_version
else
persistent_client = new(ckey)
persistent_client.byond_build = byond_build
persistent_client.byond_version = byond_version
persistent_client.set_client(src)
if(byond_version >= 516)
winset(src, null, list("browser-options" = "find,refresh,byondstorage"))
@@ -609,7 +606,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
GLOB.clients -= src
GLOB.directory -= ckey
persistent_client.client = null
persistent_client.set_client(null)
log_access("Logout: [key_name(src)]")
GLOB.ahelp_tickets.ClientLogout(src)
+16 -4
View File
@@ -11,9 +11,9 @@ GLOBAL_LIST_EMPTY_TYPED(persistent_clients, /datum/persistent_client)
/// The mob this persistent client is currently bound to.
var/mob/mob
/// Major version of BYOND this client is using.
/// Major version of BYOND this client was last using.
var/byond_version
/// Build number of BYOND this client is using.
/// Build number of BYOND this client was last using.
var/byond_build
/// Action datums assigned to this player
@@ -39,8 +39,7 @@ GLOBAL_LIST_EMPTY_TYPED(persistent_clients, /datum/persistent_client)
/// World.time this player last died
var/time_of_death = 0
/datum/persistent_client/New(ckey, client)
src.client = client
/datum/persistent_client/New(ckey)
achievements = new(ckey)
GLOB.persistent_clients_by_ckey[ckey] = src
GLOB.persistent_clients += src
@@ -50,6 +49,19 @@ GLOBAL_LIST_EMPTY_TYPED(persistent_clients, /datum/persistent_client)
. = QDEL_HINT_LETMELIVE
CRASH("Who the FUCK tried to delete a persistent client? Get your head checked you leadskull.")
/// Setter for the client var, updates any vars we have that might be dependent on client state
/datum/persistent_client/proc/set_client(client/new_client)
if(client == new_client)
return
if(client)
client.persistent_client = null
client = new_client
if(client)
client.persistent_client = src
byond_build = client.byond_build
byond_version = client.byond_version
/// Setter for the mob var, handles both references.
/datum/persistent_client/proc/set_mob(mob/new_mob)
if(mob == new_mob)