ID:1461203
 
(See the best response by Multiverse7.)
Code:
                var/turf/TrapTurf = get_step(usr, usr.dir)
var/Picked = pick(Traps)
var/Skills/Earth_Spike/Trap = new Picked
var/list/Chest = list()
while(!Trap.Move(TrapTurf))
Chest += Picked ; Traps -= Picked
if(length(Traps))
Picked = pick(Traps)
Trap = new Picked
else break
Traps += Chest
while(bounds_dist(usr, Picked ) > 3)
if(step_towards(Picked, usr)) continue
else break


Aaaaand Traps is
                Traps = list( /Skills/Earth_Spike/Spike1, /Skills/Earth_Spike/Spike2, /Skills/Earth_Spike/Spike3, /Skills/Earth_Spike/Spike4)


Problem description:
I don't know why it thinks I'm inserting an object in for picked or what, but I keep getting the error even though I'm pretty sure Picked should be a path.
Best response
Are you familiar with the ispath() proc? You can use it to check if something is a valid type path.

So in your case, you could do:
var/pathcount
for(var/path in Traps)
if(ispath(path))
pathcount++
if(pathcount == length(Traps))
world << "All items are valid paths."
else
world << "One or more items are not valid paths."
Turns out NONE of them were paths. So I changed them to instances for the time being. I might turn them into strings and use text2path() to save on data. But it's not a big issue atm.