client
proc
fast_fade_in()
for(var/obj/O in screen) if(O.tag == "fast_fade_out")
screen -= O
del O
var/obj/O = new
O.layer = MOB_LAYER+12
O.screen_loc = "1,1 to 17,17"
screen += O
O.icon = 'fade.dmi'
flick("in_fast", O)
spawn()
sleep(10)
screen -= O
del O
fast_fade_out()
var/obj/O = new
O.tag = "fast_fade_out"
O.layer = MOB_LAYER+12
O.screen_loc = "1,1 to 17,17"
screen += O
O.icon = 'fade.dmi'
flick("out_fast", O)
I would be very happy if anyone could explain why these recent BYOND updates broke these procs which have worked fine before, and how it can be fixed without using a mix of BYOND versions?
The second bug is probably related to the new garbage-collection of client appearance data (introduced in 447). This was made to allow new instances of objects that had been recently deleted on the map to properly re-initialize instead of inheriting the properties of the old deleted objects (mostly evident in new objects set to "animate once" not doing so). Your code looks to be performing this exact task, so a change in behavior isn't shocking. I haven't investigated in depth to see if there is an issue with your code, but at a glance it looks like it should be working and we indeed have a bug here.
Lummox JR implemented both of these features so I'm sure he'll weigh in and investigate the situation.