ID:140207
 
Code:
mob/proc/tsmooth()              //Proc that Father Time calls to smooth terrain.
if(step(src,EAST))
else
Move(locate(1,y+1,1))
if(usr.loc==/turf/walls/sandwall)
if(/turf/water in view(1))
else if(/turf/sand in view(1))
new /turf/sand(src.loc)
else
new /turf/walls/grass(src.loc)
if(usr.loc==/turf/sand)
if(/turf/water in view(1))
else if(/turf/sand in view(1))
new /turf/water(src.loc)
else
new /turf/walls/grass(src.loc)
else if(usr.loc==/turf/stone)
if(/turf/walls/stonewall in view(1))
else
new/turf/walls/grass(src.loc)
else if(usr.loc==/turf/walls/stonewall)
if(/turf/walls/stonewall in view(1))
else if(/turf/stone in view(1))
new /turf/stone(src.loc)
else
new /turf/walls/grass(src.loc)
else if(usr.loc==/turf/dirt)
new /turf/walls/grass(src.loc)
else if(usr.loc==/turf/walls/dirtwall)
if(/turf/walls/grass in view(1))
else if(/turf/dirt||/turf/walls/dirtwall in view(1))
else
new /turf/walls/grass(src.loc)
sleep 1
tsmooth()


Problem description: I'm trying to make a terrain smoothing mob to go along with my terrain generating mob, so as to make the terrain fall in line and make sense. However, he just doesn't want to do his job. He'll go across the map row-by-row, but he won't smooth any terrain out. I can't figure out what I did wrong here, and could use some help.

Also forgive my atrocious mess of code, I'm quite new to this if that wasn't obvious.


Fixed it myself, missing locate() procs were the culprit.
Thought replacing view() with range() would do any good.

It didn't. Father Time still completely ignores turf and the changes he's supposed to make. What am I doing wrong here?
You should not use usr in procs.

Additionally, your issue is that you are confusing type paths with actual instances of objects. If you need to check if loc is a specific type, you need:

if(istype(loc, /turf/walls/sandwall))


if you need to locate a turf of a specific type in a list:

if(locate(/turf/water) in view(src,1))