So, assuming you're doing DnD 5e, there would be: Cover: None 1/2 3/4 Full Terrain: Normal Difficult Impassible Terrain would be a function of the square you are in or trying to move across, so you'd need to detect the position of the token, or the route it's attempting to follow. Look at "It's a Trap" for some similar operations. You'd then adjust the available movement, or the position of the token based on how far they did move vs could move, etc. For Cover, it's more difficult. Cover is really a function of the path between the attacker and the target. You'd need a way to mark those things and a way to check them. The easiest marking is probably drawing lines on the GM layer. Let the color denote the type of cover. When you need to calculate cover, use a ray-casting method to find all the lines that are intersected by a line drawn between the source and destination, then consult their colors for the types of cover. Then you have to decide on rules for combining them. The simplest would be to just take the highest cover encountered, but you might like to have multiple layers of 1/2 cover add up to 3/4 cover, and multiple layers of 3/4 cover add up to full cover. The REALLY hard part is that you need that information to be available before an attack is considered. Probably the way you'd do this in Roll20 is by calculating it for all tokens that are in the turn order from the token at the top of the turn order, then add it as a bonus to the AC of each of those tokens until the turn order changes. If you're in control of all the macros and character sheets, you could add it as an additional attribute that gets added into the token, and you could do some caching based on location so you don't have to recalculate between two tokens that haven't moved. Hope that helps.