ID:262399
 
Code:
var/list/darkicons[0]
atom
var
darkness=0
New()
..()
var/checker=0
if(!icon)checker=1
for(var/i=1 to 3)
if("[name][i]" in darkicons)checker=1
if(!checker)
var/icon/i=icon(icon,icon_state)
for(var/t=0 to 3)
darkicons["[name][t]"]=i.icon
i.icon-=rgb(25,25,25)
del(i)
dark()
proc
dark()
if(darkness>3)darkness=3
if(darkness<0)darkness=0
icon=darkicons["[name][darkness]"]

turf
Entered(mob/m)
m.darkness=darkness
m.dark()


Problem description:

The mob's icon isn't getting added to the list, so whenever you enter a turf, your icon goes blank.
I don't get how to fix this. :'(
Hell Ramen wrote:
> var/list/darkicons[0]
> atom
> var
> darkness=0
> New()
> ..()
> var/checker=0
> if(!icon)checker=1
> for(var/i=1 to 3)
> if("[name][i]" in darkicons)checker=1
> if(!checker)
> var/icon/i=icon(icon,icon_state)
> for(var/t=0 to 3)
> darkicons["[name][t]"]=i.icon
> i.icon-=rgb(25,25,25)
> del(i) //When you assign an icon to I.icon, it doesnt make a copy, its a reference to the same icon. When you delete I, it removes it, from ALL lists, its gone.
> dark()
> proc
> dark()
> if(darkness>3)darkness=3
> if(darkness<0)darkness=0
> icon=darkicons["[name][darkness]"]
>
> turf
> Entered(mob/m)
> m.darkness=darkness
> m.dark()
>
In response to FranquiBoy
var
list/darkicons[0]
dark=6
proc
darkness()
dark=min(0,6)
for(var/atom/a in world)
a.darkness=dark
a.dark()
atom
var
darkness=0
New()
..()
var/checker=0
if(!icon)checker=1
for(var/i=1 to 6)
if("[ismob(src)?"[type]":"[name]"][i]" in darkicons)checker=1
if(!checker)
var/icon/i=icon(icon,icon_state)
for(var/t=0 to 6)
darkicons["[ismob(src)?"[type]":"[name]"][t]"]=i.icon
i.icon-=rgb(25,25,25)
dark()
proc
dark()
darkness=min(0,6)
icon=darkicons["[ismob(src)?"[type]":"[name]"][darkness]"]


turf
Entered(atom/movable/m)
m.darkness=darkness
m.dark()


Okay, I attempted to fix it, now the mob's icon won't disappear. BUT, it also won't change when entering a new turf.
In response to Hell Ramen
> var
> list/darkicons[0]
> dark=6
> proc
> darkness()
> dark=min(0,6)
> for(var/atom/a in world)
> a.darkness=dark
> a.dark()
> atom
> var
> darkness=0
> New()
> ..()
> var/checker=0
> if(!icon)checker=1
> for(var/i=1 to 6)
> if("[ismob(src)?"[type]":"[name]"][i]" in darkicons)checker=1
> if(!checker)
> var/icon/i=icon(icon,icon_state)
> for(var/t=0 to 6)
> darkicons["[ismob(src)?"[type]":"[name]"][t]"]=i.icon
> i.icon-=rgb(25,25,25)
> dark()
> proc
> dark()
> darkness=min(0,6) <-- This line ALLWAYS sets darkness to 0 because its the lowest
> icon=darkicons["[ismob(src)?"[type]":"[name]"][darkness]"]
>
>
> turf
> Entered(atom/movable/m)
> m.darkness=darkness
> m.dark()
In response to FranquiBoy
Dur, I've been so stupid lately! Thanks, it worked.