Putting this at the end of the Cleanup() function should do the trick: Spoiler : Code: for k = 1, #landTab do local i = landTab[k] local plot = Map.GetPlotByIndex(i) if plot:GetFeatureType() == featureForest then local roll = PWRandInt(1,100) if roll > 25 then plot:SetTerrainType(terrainPlains,true,true) table.insert(plainsTab,i) table.remove(grassTab,k) end end end That's a 1 in 4 chance of forcing Plains under Forest. You could substitute in different logic. Also, it may or may not require more robust code to guarantee that the plot underneath is grass for the purposes of tracking. I'm not even sure where all I'm using those tables anymore but I do know they sped things up substantially so keeping them accurate is probably ideal. I'm 100% sure that both the Lua compiler built-in to Civ V and the Lua-JIT compiler available here on CivFanatics both treat "1/2" (or any fraction containing integers or even constants) as a single entity. It creates a token for it (read makes it a secret variable/constant) and passes it to the C compiler running underneath Lua as a single floating point value. You can even test it with the string.format printout if you've got the Firetuner Lua console installed from the dev kit.