diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm
index ff2d7d229fba..5c82241c47de 100644
--- a/code/game/jobs/job/civilians/other/survivors.dm
+++ b/code/game/jobs/job/civilians/other/survivors.dm
@@ -15,9 +15,21 @@
spawn_positions = Clamp((round(count * SURVIVOR_TO_TOTAL_SPAWN_RATIO)), 2, 8)
total_positions = spawn_positions
-/datum/job/civilian/survivor/equip_job(mob/living/M)
+/datum/job/civilian/survivor/equip_job(mob/living/survivor)
+ var/generated_account = generate_money_account(survivor)
+ addtimer(CALLBACK(src, PROC_REF(announce_entry_message), survivor, generated_account), 2 SECONDS)
return
+/datum/job/civilian/survivor/announce_entry_message(mob/living/carbon/human/survivor, datum/money_account/account, whitelist_status) //The actual message that is displayed to the mob when they enter the game as a new player.
+ if(survivor?.loc && survivor.client)
+ //Document syntax cannot have tabs for proper formatting.
+ var/entrydisplay = " \
+ [SPAN_ROLE_BODY("|______________________|")] \n\
+ [SPAN_ROLE_BODY("[generate_entry_message(survivor)]
[account ? "Your account number is: [account.account_number]. Your account pin is: [account.remote_access_pin]." : "You do not have a bank account."]")] \n\
+ [SPAN_ROLE_BODY("|______________________|")] \
+ "
+ to_chat_spaced(survivor, html = entrydisplay)
+
/datum/job/civilian/survivor/spawn_in_player(mob/new_player/NP)
. = ..()
var/mob/living/carbon/human/H = .