diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index f9bf45090..864472504 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -41,11 +41,16 @@ switch(ready) if(PLAYER_NOT_READY) output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "notready")]Not Ready

" + if(PLAYER_READY_TO_OBSERVE) + output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "notready")]Not Ready

" if(PLAYER_READY_TO_PLAY) output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "ready")]Ready

" - if(PLAYER_READY_TO_OBSERVE) - output += "

\[ [LINKIFY_READY("Ready", PLAYER_READY_TO_PLAY)] | [LINKIFY_READY("Not Ready", PLAYER_NOT_READY)] | Observe \]

" output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "settings")]Setup Character

" + if(ready == PLAYER_READY_TO_OBSERVE) + output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "ghost")]Observe

" + else + output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "ghost")]Observe

" + else //make menu preview var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_ROLEPLAY) @@ -67,7 +72,7 @@ output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "manifest")]View the Crew Manifest

" output += "

[icon2html('hyperstation/icons/menu/menu.dmi', world, "ghost")]Observe

" - if(!IsGuestKey(src.key)) + if(!IsGuestKey(src.key) && SSticker.current_state >= GAME_STATE_PREGAME) if (SSdbcore.Connect()) var/isadmin = 0 if(src.client && src.client.holder) @@ -120,6 +125,15 @@ client.prefs.ShowChoices(src) return 1 + if(href_list["observe"]) + if(!SSticker.current_state > GAME_STATE_PREGAME) + make_me_an_observer() + return + else + to_chat(usr, "The game is still loading...") + return + + if(href_list["ready"]) var/tready = text2num(href_list["ready"]) //Avoid updating ready if we're after PREGAME (they should use latejoin instead) @@ -127,6 +141,10 @@ //no longer is required if(SSticker.current_state <= GAME_STATE_PREGAME) ready = tready + + if (tready == PLAYER_READY_TO_OBSERVE && ready == PLAYER_READY_TO_OBSERVE) + ready = PLAYER_NOT_READY + return //if it's post initialisation and they're trying to observe we do the needful if(!SSticker.current_state < GAME_STATE_PREGAME && tready == PLAYER_READY_TO_OBSERVE) ready = tready