Bans the use of icons and icon_state strings as overlay items; Adds a note about abusing associated lists. (#58383)
Bans the use of icons and icon_state strings as overlay items; Adds a note about abusing associated lists. (#58383)

Bans the use of icons and icon_state strings as overlay items.

Adds a note about using associated lists to cache things
Why:

Overlays get converted to appearances by byond on insert, so if we want to be able to do list math on the overlay lists, we have to do this conversion ourselves as well, otherwise -= "blah" wouldn't work as it won't be a string anymore.

This requires creating a new appearance every time an overlay operation happens for these use case, or search for cached versions of them in an associated list. images, appearances and mutable appearances can be converted into an appearance for free because they already are appearances

Associated lists have a lot of hidden overhead, leading to them to get abused for caching details that doesn't need to be cached. they are faster to search then normal lists, but slower then global, static, and proc vars, and very likely the same as datum vars, if not slower.

They have a higher per item memory usage then global vars (8b), proc vars (8b), datum vars (16b), or flat lists (8b) because they have to store the key twice, once in the flat array for for loops, and again in the tree structure along with the value.
Razharas/-tg-station,MrStonedOne/tgstation,coiax/-tg-station,tgstation/tgstation,Cruix/-tg-station,MicroWorldwide/SS13-TG-station,tgstation/tgstation,tgstation/-tg-station,tgstation/-tg-station,TalkingCactus/tgstation,Razharas/-tg-station,Jordie0608/tgstation,MicroWorldwide/SS13-TG-station,GunHog/-tg-station,coiax/-tg-station,Bawhoppen/-tg-station,coiax/-tg-station,ShizCalev/tgstation,tgstation/tgstation,TalkingCactus/tgstation,WJohn/-tg-station,MicroWorldwide/SS13-TG-station,Razharas/-tg-station,infinitystation/-tg-station,coiax/-tg-station,Bawhoppen/-tg-station,coiax/-tg-station,ShizCalev/tgstation,tgstation/tgstation,Cruix/-tg-station,Razharas/-tg-station,tgstation/-tg-station,MrStonedOne/tgstation,CPTANT/-tg-station,Razharas/-tg-station,MicroWorldwide/SS13-TG-station,WJohn/-tg-station,MrStonedOne/tgstation,MicroWorldwide/SS13-TG-station,infinitystation/-tg-station,infinitystation/-tg-station,infinitystation/-tg-station,MicroWorldwide/SS13-TG-station,CPTANT/-tg-station,GunHog/-tg-station,Jordie0608/tgstation,tgstation/tgstation,ShizCalev/tgstation,Bawhoppen/-tg-station,GunHog/-tg-station,Cruix/-tg-station,ShizCalev/tgstation,optimumtact/-tg-station,Cruix/-tg-station,tgstation/-tg-station,WJohn/-tg-station,ShizCalev/tgstation,WJohn/-tg-station,Razharas/-tg-station,Jordie0608/tgstation,MicroWorldwide/SS13-TG-station,CPTANT/-tg-station,GunHog/-tg-station,infinitystation/-tg-station,CPTANT/-tg-station,Bawhoppen/-tg-station,infinitystation/-tg-station,MrStonedOne/tgstation,Jordie0608/tgstation,ShizCalev/tgstation,TalkingCactus/tgstation,coiax/-tg-station,Bawhoppen/-tg-station,CPTANT/-tg-station,Jordie0608/tgstation,CPTANT/-tg-station,MrStonedOne/tgstation,MicroWorldwide/SS13-TG-station,tgstation/tgstation,ShizCalev/tgstation,GunHog/-tg-station,TalkingCactus/tgstation,GunHog/-tg-station,infinitystation/-tg-station,infinitystation/-tg-station,Razharas/-tg-station,coiax/-tg-station,MrStonedOne/tgstation,Cruix/-tg-station,WJohn/-tg-station,GunHog/-tg-station,Bawhoppen/-tg-station,optimumtact/-tg-station,MrStonedOne/tgstation,Bawhoppen/-tg-station,Cruix/-tg-station,MrStonedOne/tgstation,Jordie0608/tgstation,CPTANT/-tg-station,tgstation/tgstation,optimumtact/-tg-station,WJohn/-tg-station,optimumtact/-tg-station,Jordie0608/tgstation,ShizCalev/tgstation,CPTANT/-tg-station,Razharas/-tg-station,WJohn/-tg-station,Cruix/-tg-station,Jordie0608/tgstation,Bawhoppen/-tg-station,optimumtact/-tg-station,Cruix/-tg-station,tgstation/tgstation,optimumtact/-tg-station,optimumtact/-tg-station