ID:138986
 
Code:
// Mob // 
Start()
set hidden = 1
if(Black)
for(var/mob/M in world)
if(Black == M)
M.icon_state = "b[M.Piece]"
M.Create_Trackers()

Create_Trackers()
switch(src.Piece)
if("Rook")
var/X = 4
var/Y = NORTH
while(X > 0)
var/turf/T = get_step(src,Y)
if(T.density == 1)
return
else
var/obj/Tracker/A = new (T, src)
walk(A,Y,0)
X --
Y = turn(Y, -90)

// Object //
New(loc,mob/M)
..()
if(M)
src.OwnerPiece = M.Piece

// Turf //

Entered(obj/O)
if(istype(O,/obj/Tracker))
var/obj/P = O.type
new P (src.loc)


Problem description:
Somewhere in my code, this just went wrong. Now when a person creates trackers, they're created in the wrong location. They're always made in the lower left. Results do not change no matter where I create the trackers from. I feel like the walk proc is being re-routed, but that's my best guess.
Not entirely sure what you're trying to do, but I imagine your problem is that you're setting the new tracker obj's location to an /area.

        Entered(obj/O)
if(istype(O,/obj/Tracker))
var/obj/P = O.type
new P (src.loc) //<<
In response to Murrawhip
Dahhhhhh. Why did I not notice that I had put loc instead of src! Thanks for picking that out.