ID:2759448
 
Running a frankenshit mostly-obsolete bay12 derived codebase.

A newly joined client doesn't load the title screen upon entering the game. This started after precisely version .1570 . The title screen still loads and displays when you respawn after ghosting.

I don't know what is exactly causing it, but its not a fault of the code itself as the game can still *load* the title, just not when a new client joins the game. I tried some remedies like putting "client.screen += lobby_image" on certain joining procs to no avail. This is so damn confusing and I hope its a bug.
Moved to Developer Help, since 514 is out of beta.

If you post the relevant parts of the code, that might help. I have a strong suspicion the issue you're having is that the title screen's screen_loc is broken and newer builds might be having an issue with it.
In response to Lummox JR
This handles the lobby image loading upon login & respawning (latter works fine)

/var/obj/effect/lobby_image = new/obj/effect/lobby_image()

/obj/effect/lobby_image
name = "Baystation 12"
desc = "This shouldn't be read."
screen_loc = "WEST,SOUTH"

/obj/effect/lobby_image/Initialize()
icon = GLOB.using_map.lobby_icon
var/known_icon_states = icon_states(icon)
for(var/lobby_screen in GLOB.using_map.lobby_screens)
if(!(lobby_screen in known_icon_states))
error("Lobby screen '[lobby_screen]' did not exist in the icon set [icon].")
GLOB.using_map.lobby_screens -= lobby_screen

if(GLOB.using_map.lobby_screens.len)
icon_state = pick(GLOB.using_map.lobby_screens)
else
icon_state = known_icon_states[1]

. = ..()

/mob/new_player/Login()
update_Login_details() //handles setting lastKnownIP and computer_id for use by the ban systems as well as checking for multikeying
if(join_motd)
to_chat(src, "<div class=\"motd\">[join_motd]</div>")
to_chat(src, "<div class='info'>Game ID: <div class='danger'>[game_id]</div></div>")

if(!mind)
mind = new /datum/mind(key)
mind.active = 1
mind.current = src

loc = null
client.screen += lobby_image
my_client = client
set_sight(sight|SEE_TURFS)
GLOB.player_list |= src

new_player_panel()
spawn(40)
if(client)
handle_privacy_poll()
client.playtitlemusic()
maybe_send_staffwarns("connected as new player")


This handles deleting the screen upon logout

/mob/new_player/Logout()
ready = 0

if(chosenSlot)
chosenSlot.remove_mob(fireteam_picked, team_picked, src)

// see login.dm
if(my_client)
my_client.screen -= lobby_image
my_client = null

..()
if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to.
key = null//We null their key before deleting the mob, so they are properly kicked out.
qdel(src)
return


It works dandy with respawning but the lobby_image effect is not present on the screen, at all, when you log in. There are no warnings that the lobby screen couldn't be found (because it does find it and apply it). Doubt its a code thing. What exactly could have broken this on that version anyways?
I'd add some debugging to print out what's in your client.screen at various points. Maybe something is clearing client.screen that you don't expect. Maybe there's a lighting plane that's interfering with the lobby image and that needs to be on a higher plane.