public static IEnumerable <(StatDef moveStat, StatDef costStat)> TerrainMovementStatDefs(this TerrainDef terrain, bool defaultMovementAllowed = true, LocomotionUrgency urgency = LocomotionUrgency.None) { foreach (var pair in terrain.AnyTerrainMovementStatDefs(defaultMovementAllowed, urgency)) { yield return(pair); } if (terrain.modExtensions != null) { foreach (DefModExtension ext in terrain.modExtensions) { TerrainMovementStatDef moveStatDef = terrain.LoadTerrainMovementStatDefExtension(ext); var pair = terrain.TerrainMovementStatDefPair(moveStatDef, defaultMovementAllowed, urgency); if (!(pair.moveStat == null && pair.costStat == null)) { yield return(pair); } } } }