ID:261733
 
When I use this piece of coding...

mob
Bump(atom/A)
if(A.type == /obj/house/door)
if(A.dir == SOUTH)
if(src.dir == SOUTH)
step(src,src.dir)
else
A.density = 0
A.icon_state = ""
step(src,src.dir)
else
A.density = 0
A.icon_state = ""
step(src,src.dir)

I can bump doors and make them work, except of when I am facing south, I get runtime errors.

runtime error: Maximum recursion level reached (perhaps there is an infinite loop)
To avoid this safety check, set world.loop_checks=0.
proc name: Bump (/mob/Bump)
usr: Unknown Person (/mob)
src: Unknown Person (/mob)
call stack:
Unknown Person (/mob): Bump(the door (/obj/house/door))
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Bump(the door (/obj/house/door))
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Bump(the door (/obj/house/door))
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Bump(the door (/obj/house/door))
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Bump(the door (/obj/house/door))
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
...
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)
Unknown Person (/mob): Move(the woodfloor (4,17,2) (/turf/ground/woodfloor), 2)

Is somebody able to help me and fix this?
mob
Bump(atom/A)
if(A.type == /obj/house/door)
if(A.dir == SOUTH)
if(src.dir == SOUTH)
<FONT color = red>step(src,src.dir)</FONT>
else
A.density = 0
A.icon_state = ""
step(src,src.dir)
else
A.density = 0
A.icon_state = ""
step(src,src.dir)



Your telling it to step into the door over and over again without the door changing density. That is what is causing your run-time error.

Also you might want to use istype(A, /obj/house/door) instead of if(A.type == /obj/house/door) because type == sometimes isn't read correctly.