diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 21182a0e58198..d9325cebe5ffd 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -556,8 +556,8 @@ GLOBAL_LIST(external_rsc_urls)
log_access("Failed Login: [key] [computer_id] [address] - CID randomizer check")
var/url = winget(src, null, "url")
//special javascript to make them reconnect under a new window.
- src << browse("byond://[url]?token=[token]", "border=0;titlebar=0;size=1x1")
- src << browse("You will be automatically taken to the game, if not, click here to be taken manually", "window=browseroutput")
+ src << browse({"byond://[url]?token=[token]"}, "border=0;titlebar=0;size=1x1;window=redirect")
+ to_chat(src, {"You will be automatically taken to the game, if not, click here to be taken manually"})
/client/proc/note_randomizer_user()
var/const/adminckey = "CID-Error"
diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm
index f43696e51e801..7ab7950f2cb2e 100644
--- a/code/modules/goonchat/browserOutput.dm
+++ b/code/modules/goonchat/browserOutput.dm
@@ -32,7 +32,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
alert(owner.mob, "Updated chat window does not exist. If you are using a custom skin file please allow the game to update.")
return
- if(winget(owner, "browseroutput", "is-disabled") == "false") //Already setup
+ if(winget(owner, "browseroutput", "is-visible") == "true") //Already setup
doneLoading()
else //Not setup
@@ -90,7 +90,10 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
testing("Chat loaded for [owner.ckey]")
loaded = TRUE
- winset(owner, "browseroutput", "is-disabled=false")
+ winset(owner, "output", "is-disabled=true;is-visible=false")
+ winset(owner, "browseroutput", "is-disabled=false;is-visible=true")
+
+
for(var/message in messageQueue)
to_chat(owner, message)
@@ -228,7 +231,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
targets = target
if(!targets.len)
return
-
+ var/original_message = message
//Some macros remain in the string even after parsing and fuck up the eventual output
message = replacetext(message, "\improper", "")
message = replacetext(message, "\proper", "")
@@ -241,14 +244,16 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
if (!C)
continue
-
+
if(!C.chatOutput || C.chatOutput.broken) // A player who hasn't updated his skin file.
- C << message
+ C << original_message
return TRUE
-
+
if(!C.chatOutput.loaded)
//Client sucks at loading things, put their messages in a queue
C.chatOutput.messageQueue += message
+ //But also send it to their output window since that shows until goonchat loads
+ C << original_message
return
// url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript.
diff --git a/interface/skin.dmf b/interface/skin.dmf
index 20cc91bb0c8d5..d30261f6b3c02 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -1593,7 +1593,7 @@ window "outputwindow"
font-style = ""
text-color = #000000
background-color = #ffffff
- is-visible = true
+ is-visible = false
is-disabled = true
is-transparent = false
is-default = false
@@ -1608,6 +1608,32 @@ window "outputwindow"
use-title = false
on_show = ""
on_hide = ""
+ elem "output"
+ type = OUTPUT
+ pos = 0,0
+ size = 640x480
+ anchor1 = 0,0
+ anchor2 = 100,100
+ font-family = ""
+ font-size = 0
+ font-style = ""
+ text-color = #000000
+ background-color = #ffffff
+ is-visible = true
+ is-disabled = false
+ is-transparent = false
+ is-default = true
+ border = none
+ drop-zone = false
+ right-click = false
+ saved-params = ""
+ on-size = ""
+ show-history = false
+ show-url = false
+ auto-format = false
+ use-title = false
+ on_show = ""
+ on_hide = ""
window "statwindow"
elem "statwindow"