diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 0c3f7daeb69..37013ec3ee9 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -174,3 +174,6 @@ /// Last asset send job id. var/last_asset_job = 0 var/last_completed_asset_job = 0 + + /// rate limiting for the crew manifest + var/crew_manifest_delay diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index bc2ef1eb7df..3267c2cc40b 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -177,9 +177,6 @@ AttemptLateSpawn(href_list["SelectedJob"]) return - if(!ready && href_list["preference"]) - if(client) - client.prefs.process_link(src, href_list) else if(!href_list["late_join"]) new_player_panel() @@ -471,6 +468,12 @@ qdel(src) /mob/dead/new_player/proc/ViewManifest() + if(!client) + return + if(world.time < client.crew_manifest_delay) + return + client.crew_manifest_delay = world.time + (1 SECONDS) + var/dat = "" dat += "

Crew Manifest

" dat += GLOB.data_core.get_manifest_html() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 2d07aeee832..326a365c9bb 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -647,6 +647,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set name = "View Crew Manifest" set category = "Ghost" + if(!client) + return + if(world.time < client.crew_manifest_delay) + return + client.crew_manifest_delay = world.time + (1 SECONDS) + var/dat dat += "

Crew Manifest

" dat += GLOB.data_core.get_manifest_html() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 83a8eb3263a..4055defbefb 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -335,6 +335,12 @@ usr << browse(list, "window=laws") /mob/living/silicon/proc/ai_roster() + if(!client) + return + if(world.time < client.crew_manifest_delay) + return + client.crew_manifest_delay = world.time + (1 SECONDS) + var/datum/browser/popup = new(src, "airoster", "Crew Manifest", 387, 420) popup.set_content(GLOB.data_core.get_manifest_html()) popup.open()