Start() // Start the game
if(length(Players) >= 1) // At least 2 to start a game
world << "A new battle has begun!"
while(length(Players) > 0) // While the Players list still has people in it
var/mob/A = pick(Players)
for(var/mob/M in world)
if(M == A)
Players -= A
M.loc = locate(13,13,2) // Move Player to map (Later 13,13,GameStage)
var/list/L = list()
for(var/turf/T in locate(/area/Spawn) in view(M))
L += T
M.icon = 'Boats.dmi'
Turn = 1 // Set the Turn = 1
else // If there are not enough people to start a game
src << "There must be at least 2 People to start!"

Problem description:

For some reason, the M.Move(locate(pick(L))) doesn't work. I think I may have coded the list or adding things to the list wrong, but I can't see the error.
It helps immensely if you tell us "how" something isn't working. Is it throwing an error? Is it doing nothing? Is it doing something, but not what you expected?

If you're storing the mob references into the list directly, you don't need the for() loop anymore. You can just act on 'A' (although you might want to check it's not null, in case someone logs out. Just make sure to remove it from the list either way to avoid infinite loops).

Also, you want to move the player to one of the turfs in L, so you don't need to run locate() on the turf returned by pick().
In response to DarkCampainger (#1)
I'm sorry that I didn't explain myself clearly.

Yes, the mob is not moving to the picked turf. I know the turfs are being put into the list. I just can't seem to get the pick to work the way I intend for it to.

I'll try removing the locate and see what happens. Thanks for the tip on the for()