There's two ways this could be achieved: Line-Line intersection . When you create an event that fires on a token being moved, some of the data you get is the token's current position and the token's previous position. From that, you can create a line. You're also going to need all of the lines on the map that cannot be crossed -- this could be hardcoded, created from the locations of specific tokens on the GM layer, or created from the _path property of a Path object*. Check for intersections between the line created by the token's movement and the "no cross" lines on the map. If there are any intersections, check if the location of the intersection is within the line segment created by the token's movement and within the line segment closing off an area of the map. If an intersection meets those criteria, the token has tried to cross into a forbidden area (or perhaps just pass through a wall), so adjust the token's final position accordingly; likely you'll want to leave it at the start position, or move the token as far along its line as permitted by the walls. Drop special tokens in each square of the forbidden areas on the map. If the final location of the moved token is the same as one of the forbidden tokens**, leave the moved token at its starting position. If you leave the moving token in its start position, it's probably best to whisper an error message to the player, so they know why the token didn't move. Both methods could be slow, depending on how much "forbidden area" is on the map. * I have not studied the Path object much, so I'm not certain how to interpret the _path property. This would require some testing. ** If you're not using the grid or you're worried about the players using Alt+Drag or Shift+Arrow key, you'll want to compare the distance between the "forbidden" tokens and the player's token, rather than just checking whether the location is equal. Edit: Hmm... now I'm interested in writing the first variant of this script. We'll see if I'm still interested once I have time to sit down and work on it, though. Not gonna happen tonight, certainly.