Refactoring and runtime fixes for junkie and smoker (#45394)
Refactoring and runtime fixes for junkie and smoker (#45394)

* Revert "Revert "refactors + fixes""

This reverts commit b87884f4a34943ac2d1da4dc3bf926e2be5f9970.

* small fixes

JStheguy/tgstation,Profakos/tgstation,kingofkosmos/-tg-station,Mark9013100/tgstation-m9,infinitystation/-tg-station,Poojawa/tgstation-fork,PKPenguin321/-tg-station,tgstation/-tg-station,WJohn/-tg-station,CPTANT/-tg-station,HippieStation/HippieStation,Thunder12345/-tg-station,TalkingCactus/tgstation,HippieStation/HippieStation,TheVekter/-tg-station,coiax/-tg-station,AnturK/-tg-station,Cyberboss/tgstation,coiax/-tg-station,HippieStation/HippieStation,Mark9013100/tgstation-m9,HippieStation/HippieStation,JStheguy/tgstation,WJohn/-tg-station,kingofkosmos/-tg-station,nicbn/tgstation,Profakos/tgstation,QualityVan/tgstation,Arianya/tgstation,GunHog/-tg-station,Cyberboss/tgstation,ShizCalev/tgstation,MrStonedOne/tgstation,MicroWorldwide/SS13-TG-station,SamuelRowe/-tg-station,MrStonedOne/tgstation,Niknakflak/-tg-station,tgstation/tgstation,Razharas/-tg-station,optimumtact/-tg-station,CPTANT/-tg-station,MrStonedOne/tgstation,Arianya/tgstation,ShizCalev/tgstation,Fox-McCloud/-tg-station,TheVekter/-tg-station,Cyberboss/tgstation,nicbn/tgstation,Arianya/tgstation,GunHog/-tg-station,QualityVan/tgstation,Cyberboss/tgstation,Jordie0608/tgstation,Thunder12345/-tg-station,JJRcop/tgstation,ShizCalev/tgstation,anconfuzedrock/tgstation,Thunder12345/-tg-station,AnturK/-tg-station,QualityVan/tgstation,JJRcop/tgstation,MicroWorldwide/SS13-TG-station,Bawhoppen/-tg-station,JStheguy/tgstation,Bawhoppen/-tg-station,ShizCalev/tgstation,PKPenguin321/-tg-station,nicbn/tgstation,Fox-McCloud/-tg-station,CPTANT/-tg-station,infinitystation/-tg-station,PKPenguin321/-tg-station,PKPenguin321/-tg-station,XDTM/tgstation,ShizCalev/tgstation,MicroWorldwide/SS13-TG-station,infinitystation/-tg-station,SamuelRowe/-tg-station,Razharas/-tg-station,JStheguy/tgstation,Mark9013100/tgstation-m9,TalkingCactus/tgstation,nicbn/tgstation,kingofkosmos/-tg-station,MrStonedOne/tgstation,Thunder12345/-tg-station,Jordie0608/tgstation,anconfuzedrock/tgstation,Fox-McCloud/-tg-station,CPTANT/-tg-station,GunHog/-tg-station,Poojawa/tgstation-fork,Cruix/-tg-station,MicroWorldwide/SS13-TG-station,JJRcop/tgstation,Arianya/tgstation,QualityVan/tgstation,Poojawa/tgstation-fork,XDTM/tgstation,MrStonedOne/tgstation,optimumtact/-tg-station,Mark9013100/tgstation-m9,infinitystation/-tg-station,tgstation/tgstation,JStheguy/tgstation,TheVekter/-tg-station,MrStonedOne/tgstation,anconfuzedrock/tgstation,GunHog/-tg-station,tgstation/-tg-station,anconfuzedrock/tgstation,infinitystation/-tg-station,Bawhoppen/-tg-station,anconfuzedrock/tgstation,TheVekter/-tg-station,Razharas/-tg-station,Niknakflak/-tg-station,HippieStation/HippieStation,GunHog/-tg-station,XDTM/tgstation,Poojawa/tgstation-fork,WJohn/-tg-station,anconfuzedrock/tgstation,optimumtact/-tg-station,tgstation/tgstation,Jordie0608/tgstation,AnturK/-tg-station,JJRcop/tgstation,Cyberboss/tgstation,WJohn/-tg-station,MrStonedOne/tgstation,nicbn/tgstation,infinitystation/-tg-station,Thunder12345/-tg-station,nicbn/tgstation,CPTANT/-tg-station,Fox-McCloud/-tg-station,Bawhoppen/-tg-station,Thunder12345/-tg-station,Jordie0608/tgstation,PKPenguin321/-tg-station,PKPenguin321/-tg-station,GunHog/-tg-station,Jordie0608/tgstation,Jordie0608/tgstation,Fox-McCloud/-tg-station,SamuelRowe/-tg-station,XDTM/tgstation,MicroWorldwide/SS13-TG-station,Cruix/-tg-station,infinitystation/-tg-station,erwgd/-tg-station,MicroWorldwide/SS13-TG-station,TheVekter/-tg-station,AnturK/-tg-station,Cruix/-tg-station,WJohn/-tg-station,AnturK/-tg-station,tgstation/tgstation,Mark9013100/tgstation-m9,Profakos/tgstation,tgstation/-tg-station,kingofkosmos/-tg-station,Cruix/-tg-station,XDTM/tgstation,HippieStation/HippieStation,Cruix/-tg-station,QualityVan/tgstation,optimumtact/-tg-station,tgstation/tgstation,Arianya/tgstation,SamuelRowe/-tg-station,ShizCalev/tgstation,CPTANT/-tg-station,Cruix/-tg-station,tgstation/tgstation,XDTM/tgstation,PKPenguin321/-tg-station,infinitystation/-tg-station,TalkingCactus/tgstation,coiax/-tg-station,Bawhoppen/-tg-station,tgstation/tgstation,MicroWorldwide/SS13-TG-station,Fox-McCloud/-tg-station,Mark9013100/tgstation-m9,Razharas/-tg-station,Arianya/tgstation,Bawhoppen/-tg-station,nicbn/tgstation,Bawhoppen/-tg-station,Niknakflak/-tg-station,MrStonedOne/tgstation,coiax/-tg-station,ShizCalev/tgstation,JJRcop/tgstation,optimumtact/-tg-station,MicroWorldwide/SS13-TG-station,Cyberboss/tgstation,CPTANT/-tg-station,JJRcop/tgstation,Jordie0608/tgstation,JJRcop/tgstation,Poojawa/tgstation-fork,Cruix/-tg-station,Profakos/tgstation,Cyberboss/tgstation,Jordie0608/tgstation,PKPenguin321/-tg-station,Razharas/-tg-station,kingofkosmos/-tg-station,coiax/-tg-station,ShizCalev/tgstation,JStheguy/tgstation,TheVekter/-tg-station,HippieStation/HippieStation,Fox-McCloud/-tg-station,kingofkosmos/-tg-station,kingofkosmos/-tg-station,optimumtact/-tg-station,tgstation/-tg-station,CPTANT/-tg-station,AnturK/-tg-station,Razharas/-tg-station,Niknakflak/-tg-station,anconfuzedrock/tgstation,tgstation/tgstation,JStheguy/tgstation,erwgd/-tg-station,Poojawa/tgstation-fork,GunHog/-tg-station,Mark9013100/tgstation-m9,WJohn/-tg-station,Niknakflak/-tg-station,Niknakflak/-tg-station,Poojawa/tgstation-fork,Razharas/-tg-station,Razharas/-tg-station,coiax/-tg-station,optimumtact/-tg-station,erwgd/-tg-station,Profakos/tgstation,Arianya/tgstation,QualityVan/tgstation,Cruix/-tg-station,XDTM/tgstation,Profakos/tgstation,Thunder12345/-tg-station,Profakos/tgstation,WJohn/-tg-station,coiax/-tg-station,TalkingCactus/tgstation,TheVekter/-tg-station,AnturK/-tg-station,Niknakflak/-tg-station,QualityVan/tgstation,Bawhoppen/-tg-station