obj/SectionBraket
icon='SectionBraket.dmi'
layer=MOB_LAYER+4
New(client/C)C.screen+=src
obj/TOSC
icon='text.dmi'
layer=MOB_LAYER+5
New(client/C)C.screen+=src
mob/var/TOSC1
mob/proc
close_menu(/**/){for(var/obj/TOSC/O in client.screen)del O;for(var/obj/SectionBraket/O in client.screen)del O}
TOSP(var/TOS){TOSC1=list(/**/);for(var/a=1,a<=length(TOS),a++){TOSC1+=copytext(TOS,a,a+1)}}
TOSSectionBraket(var/XC1,YC1,XC2,YC2)
for(var/XC=XC1,XC<=XC2,XC++)
for(var/YC=YC1,YC<=YC2,YC++){var/obj/SectionBraket/b=new(client);
if(XC==XC1)b.icon_state="l";if(XC==XC2)b.icon_state="r";if(YC==YC1)b.icon_state="b";
if(YC==YC2)b.icon_state="t";if(XC==XC1&&YC==YC1)b.icon_state="ll";
if(XC==XC2&&YC==YC2)b.icon_state="ur";if(XC==XC1&&YC==YC2)b.icon_state="ul";
if(XC==XC2&&YC==YC1)b.icon_state="lr";b.screen_loc="[XC],[YC]"}
TOSTOSC(var/XC1,XC2,YC1,YC2,T)
var{XC=XC1;YC=YC1}TOSP(T)
for(var/Y in TOSC1){var/obj/TOSC/C=new(client);
if(XC==round(XC)&&YC==round(YC)) C.screen_loc="[XC],[YC]";else if(XC!=round(XC)&&YC==round(YC))C.screen_loc="[XC-0.5]:16,[YC]";else if(XC==round(XC)&&YC!=round(YC))C.screen_loc="[XC],[YC-0.5]:+16";
else if(XC!=round(XC)&&YC!=round(YC))C.screen_loc="[XC-0.5]:16,[YC-0.5]:+16";C.icon_state="[Y]";
sleep(1)
XC+=0.5
if(XC==XC2)
XC=XC1;YC-=0.5
if(YC==YC2-0.5)break}
TOSSectionBraket(5,1,16,4)
TOSTOSC(6,15,4,6,"Hello, there [usr]!")
Problem description:
Is there a better way to get the same effect