diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index 407c6c2846..7b236ea56f 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -180,21 +180,24 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic /proc/bicon(thing) if (!thing) return - + var/static/list/bicon_cache = list() if (isicon(thing)) - //Icons get pooled constantly, references are no good here. - /*if (!bicon_cache["\ref[obj]"]) // Doesn't exist yet, make it. - bicon_cache["\ref[obj]"] = icon2base64(obj) - return ""*/ - return "" + var/icon/I = thing + var/icon_md5 = md5(I) + if (!bicon_cache[icon_md5]) // Doesn't exist yet, make it. + I = icon(I) //copy it + I.Scale(16,16) //scale it + bicon_cache[icon_md5] = icon2base64(thing) //base64 it + return "" // Either an atom or somebody fucked up and is gonna get a runtime, which I'm fine with. var/atom/A = thing var/key = "[istype(A.icon, /icon) ? "\ref[A.icon]" : A.icon]:[A.icon_state]" - var/static/list/bicon_cache = list() + if (!bicon_cache[key]) // Doesn't exist, make it. var/icon/I = icon(A.icon, A.icon_state, SOUTH, 1) + I.Scale(16,16) if (ishuman(thing)) // Shitty workaround for a BYOND issue. var/icon/temp = I I = icon()