/* Compatibility: Age of Empires II: Definitive Edition */ /* Cloud Kingdom AoE v0.2.0 The Garrison 2026 map competition prototype. Spatial adaptation: - Inspired by Cloud Kingdom LE, created by SUPEROUMAN for StarCraft II. - Cloud Kingdom LE won the first Team Liquid Map Contest and Blizzard's 2014 community vote for returning ladder maps. - This script is an independent AoE2 adaptation and is not affiliated with or endorsed by the original creator or Blizzard Entertainment. Designed for: - 1v1 Random Map - Tiny map (the normal two-player size) - Standard resources - 9-villager tournament quick start Translation into AoE2: - Opposing diagonal home plateaus preserve the original spawn geometry. - Natural, safe-third, side, and forward shelves turn SC2 expansion choices into an alternative AoE2 resource layout. - Two raised signal hills translate the Xel'Naga watchtower positions. - Wood-and-stone seals translate destructible rock shortcuts using only ordinary harvestable resources. - A direct center and two long flank networks preserve the map's many attack angles and counterattack routes. - Native snow-cliff objects close selected platform edges while fixed gaps preserve the authored ramp network. - Layered snow banks around the map frame evoke the original cloud sea without adding naval terrain or changing land-unit behavior. Competitive integrity: - Player geometry, elevations, routes, and resources use 180-degree rotational symmetry. - Player colors swap diagonal ends independently of the geometry. - No unit or building attributes are changed. - No triggers, XS, custom includes, scripted income, capturable buildings, guardians, or object-attribute changes are used. - The only fixed blockers are ordinary native map cliffs. */ /* Terrain aliases: reliable built-in DE terrain IDs only. */ #const BASE_GROUND 70 #const HOME_GROUND 76 #const NATURAL_GROUND 42 #const SIDE_GROUND 11 #const SAFE_GROUND 100 #const FORWARD_GROUND 41 #const SIGNAL_GROUND 0 #const CENTER_GROUND 78 #const ROUTE_GROUND 24 #const ROUTE_DETAIL 25 #const ROCK_GROUND 40 #const PINE_FOREST 19 #const DEAD_FOREST 106 #const CLOUD_SHADOW 32 #const CLOUD_LIGHT 73 #const CLOUD_BRIGHT 74 /* Object aliases. */ #const START_HERDABLE 594 #const START_LUREABLE 48 #const START_HUNTABLE 65 #const START_TREE 349 #const DECORATIVE_ROCK 623 #const FLAG_A_OBJECT 600 #const FLAG_B_OBJECT 601 #const ANCIENT_RUIN 856 #const CLIFF_SNOW_1 1858 /* Gameplay land identifiers. */ #const SW_MAIN_ID 101 #const SW_NATURAL_ID 102 #const SW_SIDE_ID 103 #const SW_SAFE_ID 104 #const SW_FORWARD_ID 105 #const NE_MAIN_ID 201 #const NE_NATURAL_ID 202 #const NE_SIDE_ID 203 #const NE_SAFE_ID 204 #const NE_FORWARD_ID 205 #const WEST_SIGNAL_ID 301 #const EAST_SIGNAL_ID 302 #const CENTER_ID 303 #const WEST_FLANK_ID 401 #const NW_JUNCTION_ID 402 #const NORTH_FLANK_ID 403 #const EAST_FLANK_ID 404 #const SE_JUNCTION_ID 405 #const SOUTH_FLANK_ID 406 #const NORTH_GATE_ID 501 #const SOUTH_GATE_ID 502 /* Unique connection zones. */ #const SW_MAIN_ZONE 10 #const SW_NATURAL_ZONE 11 #const SW_SIDE_ZONE 12 #const SW_SAFE_ZONE 13 #const SW_FORWARD_ZONE 14 #const NE_MAIN_ZONE 20 #const NE_NATURAL_ZONE 21 #const NE_SIDE_ZONE 22 #const NE_SAFE_ZONE 23 #const NE_FORWARD_ZONE 24 #const CENTER_ZONE 30 #const WEST_SIGNAL_ZONE 31 #const EAST_SIGNAL_ZONE 32 #const WEST_FLANK_ZONE 40 #const NW_JUNCTION_ZONE 41 #const NORTH_FLANK_ZONE 42 #const EAST_FLANK_ZONE 43 #const SE_JUNCTION_ZONE 44 #const SOUTH_FLANK_ZONE 45 #const NORTH_GATE_ZONE 50 #const SOUTH_GATE_ZONE 51 #const FRAME_FOREST_ZONE 60 #const ROCK_SHOULDER_ZONE 61 /* Per-player actor areas. */ #const TC_AREA 1000 #const VILLAGER_AREA 1010 #const NATURAL_ANCHOR_AREA 1100 #const NATURAL_RESOURCE_AREA 1101 #const SAFE_ANCHOR_AREA 1200 #const SAFE_RESOURCE_AREA 1201 #const FORWARD_ANCHOR_AREA 1300 #const FORWARD_RESOURCE_AREA 1301 /* Fixed cliff-piece anchor areas. Tiny maps are 120 x 120 tiles. */ #const HORIZONTAL_CLIFF_AREA 9000 #const VERTICAL_CLIFF_AREA 9001 /* Player color never determines the diagonal end. */ start_random percent_chance 50 #define PLAYER_ONE_SOUTHWEST percent_chance 50 #define PLAYER_TWO_SOUTHWEST end_random direct_placement behavior_version 2 override_map_size 120 ai_info_map_type ARABIA 0 0 0 /* Established Garrison-style adjustment for the 9-villager quick start. */ effect_amount MOD_RESOURCE AMOUNT_STARTING_WOOD ATTR_ADD -30 effect_amount MOD_RESOURCE AMOUNT_STARTING_FOOD ATTR_ADD -100 base_terrain BASE_GROUND /* Southwest home plateau. */ create_land { terrain_type HOME_GROUND land_percent 100 base_size 8 land_position 16 84 left_border 4 right_border 70 top_border 70 bottom_border 4 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 2 zone SW_MAIN_ZONE land_id SW_MAIN_ID if PLAYER_ONE_SOUTHWEST assign_to_player 1 else assign_to_player 2 endif } /* Northeast home plateau, rotated exactly 180 degrees. */ create_land { terrain_type HOME_GROUND land_percent 100 base_size 8 land_position 84 16 left_border 70 right_border 4 top_border 4 bottom_border 70 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 2 zone NE_MAIN_ZONE land_id NE_MAIN_ID if PLAYER_ONE_SOUTHWEST assign_to_player 2 else assign_to_player 1 endif } /* The two natural expansion shelves. */ create_land { terrain_type NATURAL_GROUND land_percent 100 base_size 5 land_position 30 70 left_border 24 right_border 63 top_border 63 bottom_border 23 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone SW_NATURAL_ZONE land_id SW_NATURAL_ID } create_land { terrain_type NATURAL_GROUND land_percent 100 base_size 5 land_position 70 30 left_border 63 right_border 24 top_border 23 bottom_border 63 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone NE_NATURAL_ZONE land_id NE_NATURAL_ID } /* Side expansions anchor the long west/east counterattack routes. */ create_land { terrain_type SIDE_GROUND land_percent 100 base_size 4 land_position 14 57 left_border 7 right_border 78 top_border 50 bottom_border 36 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone SW_SIDE_ZONE land_id SW_SIDE_ID } create_land { terrain_type SIDE_GROUND land_percent 100 base_size 4 land_position 86 43 left_border 78 right_border 7 top_border 36 bottom_border 50 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone NE_SIDE_ZONE land_id NE_SIDE_ID } /* Safe thirds sit along the outside edge of each home plateau. */ create_land { terrain_type SAFE_GROUND land_percent 100 base_size 4 land_position 42 84 left_border 35 right_border 51 top_border 76 bottom_border 8 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone SW_SAFE_ZONE land_id SW_SAFE_ID } create_land { terrain_type SAFE_GROUND land_percent 100 base_size 4 land_position 58 16 left_border 51 right_border 35 top_border 8 bottom_border 76 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone NE_SAFE_ZONE land_id NE_SAFE_ID } /* Forward shelves make the last home gold a territorial commitment. */ create_land { terrain_type FORWARD_GROUND land_percent 100 base_size 4 land_position 43 62 left_border 37 right_border 51 top_border 56 bottom_border 32 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone SW_FORWARD_ZONE land_id SW_FORWARD_ID } create_land { terrain_type FORWARD_GROUND land_percent 100 base_size 4 land_position 57 38 left_border 51 right_border 37 top_border 32 bottom_border 56 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone NE_FORWARD_ZONE land_id NE_FORWARD_ID } /* The two Xel'Naga positions become build-your-own signal hills. */ create_land { terrain_type SIGNAL_GROUND land_percent 100 base_size 3 land_position 40 47 left_border 36 right_border 56 top_border 43 bottom_border 49 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 2 zone WEST_SIGNAL_ZONE land_id WEST_SIGNAL_ID } create_land { terrain_type SIGNAL_GROUND land_percent 100 base_size 3 land_position 60 53 left_border 56 right_border 36 top_border 49 bottom_border 43 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 2 zone EAST_SIGNAL_ZONE land_id EAST_SIGNAL_ID } /* A compact central platform links the two signal hills. */ create_land { terrain_type CENTER_GROUND land_percent 100 base_size 3 land_position 50 50 left_border 46 right_border 46 top_border 46 bottom_border 46 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone CENTER_ZONE land_id CENTER_ID } /* Northwest long-flank chain. */ create_land { terrain_type CENTER_GROUND land_percent 100 base_size 3 land_position 12 39 left_border 7 right_border 83 top_border 34 bottom_border 56 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 zone WEST_FLANK_ZONE land_id WEST_FLANK_ID } create_land { terrain_type CENTER_GROUND land_percent 100 base_size 3 land_position 30 29 left_border 25 right_border 65 top_border 24 bottom_border 66 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone NW_JUNCTION_ZONE land_id NW_JUNCTION_ID } create_land { terrain_type CENTER_GROUND land_percent 100 base_size 3 land_position 39 11 left_border 34 right_border 56 top_border 6 bottom_border 84 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 zone NORTH_FLANK_ZONE land_id NORTH_FLANK_ID } /* Southeast long-flank chain, rotated exactly 180 degrees. */ create_land { terrain_type CENTER_GROUND land_percent 100 base_size 3 land_position 88 61 left_border 83 right_border 7 top_border 56 bottom_border 34 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 zone EAST_FLANK_ZONE land_id EAST_FLANK_ID } create_land { terrain_type CENTER_GROUND land_percent 100 base_size 3 land_position 70 71 left_border 65 right_border 25 top_border 66 bottom_border 24 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 base_elevation 1 zone SE_JUNCTION_ZONE land_id SE_JUNCTION_ID } create_land { terrain_type CENTER_GROUND land_percent 100 base_size 3 land_position 61 89 left_border 56 right_border 34 top_border 84 bottom_border 6 border_fuzziness 100 clumping_factor 100 other_zone_avoidance_distance 0 zone SOUTH_FLANK_ZONE land_id SOUTH_FLANK_ID } /* Harvestable woodland seals stand in for the original destructible rocks. */ create_land { terrain_type PINE_FOREST number_of_tiles 48 base_size 2 land_position 48 42 left_border 44 right_border 48 top_border 37 bottom_border 53 border_fuzziness 100 clumping_factor 30 other_zone_avoidance_distance 0 zone NORTH_GATE_ZONE land_id NORTH_GATE_ID } create_land { terrain_type PINE_FOREST number_of_tiles 48 base_size 2 land_position 52 58 left_border 48 right_border 44 top_border 53 bottom_border 37 border_fuzziness 100 clumping_factor 30 other_zone_avoidance_distance 0 zone SOUTH_GATE_ZONE land_id SOUTH_GATE_ID } /* Four rocky shoulders reproduce the dark central cliff clusters. */ create_land { terrain_type ROCK_GROUND number_of_tiles 34 base_size 2 land_position 32 45 left_border 28 right_border 64 top_border 41 bottom_border 51 border_fuzziness 100 clumping_factor 30 other_zone_avoidance_distance 0 zone ROCK_SHOULDER_ZONE } create_land { terrain_type ROCK_GROUND number_of_tiles 34 base_size 2 land_position 68 55 left_border 64 right_border 28 top_border 51 bottom_border 41 border_fuzziness 100 clumping_factor 30 other_zone_avoidance_distance 0 zone ROCK_SHOULDER_ZONE } create_land { terrain_type ROCK_GROUND number_of_tiles 34 base_size 2 land_position 45 32 left_border 41 right_border 51 top_border 28 bottom_border 64 border_fuzziness 100 clumping_factor 30 other_zone_avoidance_distance 0 zone ROCK_SHOULDER_ZONE } create_land { terrain_type ROCK_GROUND number_of_tiles 34 base_size 2 land_position 55 68 left_border 51 right_border 41 top_border 64 bottom_border 28 border_fuzziness 100 clumping_factor 30 other_zone_avoidance_distance 0 zone ROCK_SHOULDER_ZONE } /* Layered snow banks evoke the cloud sea beyond the playable platforms. */ create_land { terrain_type CLOUD_SHADOW number_of_tiles 96 base_size 3 land_position 6 22 left_border 2 right_border 89 top_border 16 bottom_border 72 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_SHADOW number_of_tiles 96 base_size 3 land_position 94 78 left_border 89 right_border 2 top_border 72 bottom_border 16 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_LIGHT number_of_tiles 96 base_size 3 land_position 20 6 left_border 14 right_border 74 top_border 2 bottom_border 89 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_LIGHT number_of_tiles 96 base_size 3 land_position 80 94 left_border 74 right_border 14 top_border 89 bottom_border 2 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_BRIGHT number_of_tiles 96 base_size 3 land_position 50 6 left_border 44 right_border 44 top_border 2 bottom_border 89 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_BRIGHT number_of_tiles 96 base_size 3 land_position 50 94 left_border 44 right_border 44 top_border 89 bottom_border 2 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_SHADOW number_of_tiles 96 base_size 3 land_position 94 22 left_border 89 right_border 2 top_border 16 bottom_border 72 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_SHADOW number_of_tiles 96 base_size 3 land_position 6 78 left_border 2 right_border 89 top_border 72 bottom_border 16 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_LIGHT number_of_tiles 96 base_size 3 land_position 94 50 left_border 89 right_border 2 top_border 44 bottom_border 44 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } create_land { terrain_type CLOUD_LIGHT number_of_tiles 96 base_size 3 land_position 6 50 left_border 2 right_border 89 top_border 44 bottom_border 44 border_fuzziness 100 clumping_factor 20 other_zone_avoidance_distance 0 zone FRAME_FOREST_ZONE } /* Required because authored lands use base_elevation. */ /* Broken paving gives the expansion shelves an engineered SC2-like texture. */ create_terrain ROUTE_DETAIL { base_terrain NATURAL_GROUND land_percent 18 number_of_clumps 12 clumping_factor 8 spacing_to_other_terrain_types 1 terrain_mask 1 } create_terrain ROUTE_DETAIL { base_terrain SAFE_GROUND land_percent 18 number_of_clumps 12 clumping_factor 8 spacing_to_other_terrain_types 1 terrain_mask 1 } create_terrain ROUTE_DETAIL { base_terrain FORWARD_GROUND land_percent 18 number_of_clumps 12 clumping_factor 8 spacing_to_other_terrain_types 1 terrain_mask 1 } /* Two-stage snow layering gives the outer banks soft cloud-like variation. */ create_terrain CLOUD_LIGHT { base_terrain CLOUD_SHADOW land_percent 42 number_of_clumps 18 clumping_factor 7 terrain_mask 1 } create_terrain CLOUD_BRIGHT { base_terrain CLOUD_LIGHT land_percent 32 number_of_clumps 16 clumping_factor 6 terrain_mask 1 } /* Sparse additional dead groves vary the wasteland without sealing routes. */ create_terrain DEAD_FOREST { base_terrain BASE_GROUND land_percent 2 number_of_clumps 8 clumping_factor 16 spacing_to_other_terrain_types 6 set_avoid_player_start_areas 18 } /* Every authored connection draws a three-tile lane. Pine forest is expensive and is deliberately not replaced, preserving the two harvestable seals. */ /* Southwest base network. */ create_connect_land_zones SW_MAIN_ZONE SW_NATURAL_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones SW_MAIN_ZONE SW_SIDE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones SW_MAIN_ZONE SW_SAFE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones SW_NATURAL_ZONE SW_SIDE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones SW_NATURAL_ZONE SW_FORWARD_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones SW_SAFE_ZONE SW_FORWARD_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } /* Northeast base network. */ create_connect_land_zones NE_MAIN_ZONE NE_NATURAL_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones NE_MAIN_ZONE NE_SIDE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones NE_MAIN_ZONE NE_SAFE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones NE_NATURAL_ZONE NE_SIDE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones NE_NATURAL_ZONE NE_FORWARD_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones NE_SAFE_ZONE NE_FORWARD_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } /* Direct central attack line. */ create_connect_land_zones SW_FORWARD_ZONE WEST_SIGNAL_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones WEST_SIGNAL_ZONE CENTER_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones CENTER_ZONE EAST_SIGNAL_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones EAST_SIGNAL_ZONE NE_FORWARD_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } /* Northwest counterattack lane. */ create_connect_land_zones SW_SIDE_ZONE WEST_FLANK_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones WEST_FLANK_ZONE NW_JUNCTION_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones NW_JUNCTION_ZONE NORTH_FLANK_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones NORTH_FLANK_ZONE NE_SAFE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } /* Southeast counterattack lane. */ create_connect_land_zones NE_SIDE_ZONE EAST_FLANK_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones EAST_FLANK_ZONE SE_JUNCTION_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones SE_JUNCTION_ZONE SOUTH_FLANK_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones SOUTH_FLANK_ZONE SW_SAFE_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } /* Cross-links make the signal hills useful without creating a single choke. */ create_connect_land_zones NW_JUNCTION_ZONE WEST_SIGNAL_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } create_connect_land_zones EAST_SIGNAL_ZONE SE_JUNCTION_ZONE { replace_terrain BASE_GROUND ROUTE_GROUND replace_terrain ROCK_GROUND ROUTE_GROUND replace_terrain DEAD_FOREST ROUTE_GROUND replace_terrain CLOUD_SHADOW ROUTE_GROUND replace_terrain CLOUD_LIGHT ROUTE_GROUND replace_terrain CLOUD_BRIGHT ROUTE_GROUND terrain_cost BASE_GROUND 1 terrain_cost HOME_GROUND 1 terrain_cost NATURAL_GROUND 1 terrain_cost SIDE_GROUND 1 terrain_cost SAFE_GROUND 1 terrain_cost FORWARD_GROUND 1 terrain_cost SIGNAL_GROUND 1 terrain_cost CENTER_GROUND 1 terrain_cost ROUTE_GROUND 5 terrain_cost ROUTE_DETAIL 5 terrain_cost ROCK_GROUND 7 terrain_cost DEAD_FOREST 15 terrain_cost CLOUD_SHADOW 12 terrain_cost CLOUD_LIGHT 12 terrain_cost CLOUD_BRIGHT 12 terrain_cost PINE_FOREST 30 terrain_size ROUTE_GROUND 3 0 terrain_size BASE_GROUND 3 0 } /* Native DE snow cliffs form fixed platform rims. The three-tile spacing and facets are taken from the game's own cliff brush output. Missing runs are intentional ramp mouths aligned with the authored connection network. */ create_actor_area 10 112 HORIZONTAL_CLIFF_AREA 0 create_actor_area 13 112 HORIZONTAL_CLIFF_AREA 0 create_actor_area 16 112 HORIZONTAL_CLIFF_AREA 0 create_actor_area 19 112 HORIZONTAL_CLIFF_AREA 0 create_actor_area 22 112 HORIZONTAL_CLIFF_AREA 0 create_actor_area 25 112 HORIZONTAL_CLIFF_AREA 0 create_actor_area 28 112 HORIZONTAL_CLIFF_AREA 0 create_actor_area 9 88 HORIZONTAL_CLIFF_AREA 0 create_actor_area 12 88 HORIZONTAL_CLIFF_AREA 0 create_actor_area 22 88 HORIZONTAL_CLIFF_AREA 0 create_actor_area 25 88 HORIZONTAL_CLIFF_AREA 0 create_actor_area 36 90 HORIZONTAL_CLIFF_AREA 0 create_actor_area 39 90 HORIZONTAL_CLIFF_AREA 0 create_actor_area 42 90 HORIZONTAL_CLIFF_AREA 0 create_actor_area 48 107 HORIZONTAL_CLIFF_AREA 0 create_actor_area 51 107 HORIZONTAL_CLIFF_AREA 0 create_actor_area 54 107 HORIZONTAL_CLIFF_AREA 0 create_actor_area 109 7 HORIZONTAL_CLIFF_AREA 0 create_actor_area 106 7 HORIZONTAL_CLIFF_AREA 0 create_actor_area 103 7 HORIZONTAL_CLIFF_AREA 0 create_actor_area 100 7 HORIZONTAL_CLIFF_AREA 0 create_actor_area 97 7 HORIZONTAL_CLIFF_AREA 0 create_actor_area 94 7 HORIZONTAL_CLIFF_AREA 0 create_actor_area 91 7 HORIZONTAL_CLIFF_AREA 0 create_actor_area 110 31 HORIZONTAL_CLIFF_AREA 0 create_actor_area 107 31 HORIZONTAL_CLIFF_AREA 0 create_actor_area 97 31 HORIZONTAL_CLIFF_AREA 0 create_actor_area 94 31 HORIZONTAL_CLIFF_AREA 0 create_actor_area 83 29 HORIZONTAL_CLIFF_AREA 0 create_actor_area 80 29 HORIZONTAL_CLIFF_AREA 0 create_actor_area 77 29 HORIZONTAL_CLIFF_AREA 0 create_actor_area 71 12 HORIZONTAL_CLIFF_AREA 0 create_actor_area 68 12 HORIZONTAL_CLIFF_AREA 0 create_actor_area 65 12 HORIZONTAL_CLIFF_AREA 0 create_actor_area 7 91 VERTICAL_CLIFF_AREA 0 create_actor_area 7 94 VERTICAL_CLIFF_AREA 0 create_actor_area 7 97 VERTICAL_CLIFF_AREA 0 create_actor_area 7 100 VERTICAL_CLIFF_AREA 0 create_actor_area 7 103 VERTICAL_CLIFF_AREA 0 create_actor_area 7 106 VERTICAL_CLIFF_AREA 0 create_actor_area 7 109 VERTICAL_CLIFF_AREA 0 create_actor_area 31 106 VERTICAL_CLIFF_AREA 0 create_actor_area 31 109 VERTICAL_CLIFF_AREA 0 create_actor_area 10 66 VERTICAL_CLIFF_AREA 0 create_actor_area 10 69 VERTICAL_CLIFF_AREA 0 create_actor_area 10 72 VERTICAL_CLIFF_AREA 0 create_actor_area 43 86 VERTICAL_CLIFF_AREA 0 create_actor_area 43 89 VERTICAL_CLIFF_AREA 0 create_actor_area 57 101 VERTICAL_CLIFF_AREA 0 create_actor_area 57 104 VERTICAL_CLIFF_AREA 0 create_actor_area 57 71 VERTICAL_CLIFF_AREA 0 create_actor_area 57 74 VERTICAL_CLIFF_AREA 0 create_actor_area 57 77 VERTICAL_CLIFF_AREA 0 create_actor_area 43 57 VERTICAL_CLIFF_AREA 0 create_actor_area 43 60 VERTICAL_CLIFF_AREA 0 create_actor_area 112 28 VERTICAL_CLIFF_AREA 0 create_actor_area 112 25 VERTICAL_CLIFF_AREA 0 create_actor_area 112 22 VERTICAL_CLIFF_AREA 0 create_actor_area 112 19 VERTICAL_CLIFF_AREA 0 create_actor_area 112 16 VERTICAL_CLIFF_AREA 0 create_actor_area 112 13 VERTICAL_CLIFF_AREA 0 create_actor_area 112 10 VERTICAL_CLIFF_AREA 0 create_actor_area 88 13 VERTICAL_CLIFF_AREA 0 create_actor_area 88 10 VERTICAL_CLIFF_AREA 0 create_actor_area 109 53 VERTICAL_CLIFF_AREA 0 create_actor_area 109 50 VERTICAL_CLIFF_AREA 0 create_actor_area 109 47 VERTICAL_CLIFF_AREA 0 create_actor_area 76 33 VERTICAL_CLIFF_AREA 0 create_actor_area 76 30 VERTICAL_CLIFF_AREA 0 create_actor_area 62 18 VERTICAL_CLIFF_AREA 0 create_actor_area 62 15 VERTICAL_CLIFF_AREA 0 create_actor_area 62 48 VERTICAL_CLIFF_AREA 0 create_actor_area 62 45 VERTICAL_CLIFF_AREA 0 create_actor_area 62 42 VERTICAL_CLIFF_AREA 0 create_actor_area 76 62 VERTICAL_CLIFF_AREA 0 create_actor_area 76 59 VERTICAL_CLIFF_AREA 0 create_object CLIFF_SNOW_1 { number_of_objects 1 number_of_groups 34 group_placement_radius 0 set_tight_grouping set_gaia_object_only actor_area_to_place_in HORIZONTAL_CLIFF_AREA temp_min_distance_group_placement 1 ignore_terrain_restrictions force_placement set_facet 5 } create_object CLIFF_SNOW_1 { number_of_objects 1 number_of_groups 42 group_placement_radius 0 set_tight_grouping set_gaia_object_only actor_area_to_place_in VERTICAL_CLIFF_AREA temp_min_distance_group_placement 1 ignore_terrain_restrictions force_placement set_facet 2 } /* Mandatory 9-villager quick start. */ create_object TOWN_CENTER { set_place_for_every_player min_distance_to_players 0 max_distance_to_players 0 force_placement actor_area TC_AREA actor_area_radius 7 } create_object START_TREE { number_of_objects 1 set_gaia_object_only set_place_for_every_player min_distance_to_players 5 max_distance_to_players 6 find_closest force_placement terrain_to_place_on HOME_GROUND actor_area VILLAGER_AREA actor_area_radius 2 } create_object VILLAGER { number_of_objects 9 set_place_for_every_player actor_area_to_place_in VILLAGER_AREA force_placement } create_object HOUSE { number_of_objects 2 set_place_for_every_player min_distance_to_players 7 max_distance_to_players 10 find_closest force_placement terrain_to_place_on HOME_GROUND avoid_actor_area TC_AREA temp_min_distance_group_placement 4 } create_object SCOUT { number_of_objects 1 set_place_for_every_player min_distance_to_players 7 max_distance_to_players 10 force_placement terrain_to_place_on HOME_GROUND } /* Home food supports a stable competitive opening. */ create_object START_HERDABLE { number_of_objects 4 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 4 max_distance_to_players 7 find_closest force_placement terrain_to_place_on HOME_GROUND } create_object START_HERDABLE { number_of_objects 4 number_of_groups 1 group_placement_radius 3 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 9 max_distance_to_players 12 force_placement terrain_to_place_on HOME_GROUND temp_min_distance_group_placement 4 } create_object FORAGE { number_of_objects 6 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 9 max_distance_to_players 14 find_closest force_placement terrain_to_place_on HOME_GROUND avoid_actor_area TC_AREA } create_object START_LUREABLE { number_of_objects 1 set_gaia_object_only set_place_for_every_player min_distance_to_players 12 max_distance_to_players 17 force_placement terrain_to_place_on HOME_GROUND temp_min_distance_group_placement 4 } create_object START_LUREABLE { number_of_objects 1 set_gaia_object_only set_place_for_every_player min_distance_to_players 15 max_distance_to_players 19 force_placement terrain_to_place_on HOME_GROUND temp_min_distance_group_placement 6 } create_object START_HUNTABLE { number_of_objects 4 number_of_groups 1 group_placement_radius 4 set_loose_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 12 max_distance_to_players 18 force_placement terrain_to_place_on HOME_GROUND } /* The only home mines are the primary seven gold and five stone. */ create_object GOLD { number_of_objects 7 number_of_groups 1 group_placement_radius 3 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 9 max_distance_to_players 14 find_closest force_placement terrain_to_place_on HOME_GROUND avoid_actor_area TC_AREA } create_object STONE { number_of_objects 5 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 11 max_distance_to_players 16 force_placement terrain_to_place_on HOME_GROUND avoid_actor_area TC_AREA } /* Six emergency stragglers and two substantial home woodlines. */ create_object START_TREE { number_of_objects 6 set_gaia_object_only set_place_for_every_player min_distance_to_players 5 max_distance_to_players 8 force_placement terrain_to_place_on HOME_GROUND avoid_actor_area TC_AREA temp_min_distance_group_placement 1 } create_object START_TREE { number_of_objects 70 number_of_groups 1 group_placement_radius 8 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 15 max_distance_to_players 28 find_closest_to_map_edge min_distance_to_map_edge 2 force_placement terrain_to_place_on BASE_GROUND } create_object START_TREE { number_of_objects 70 number_of_groups 1 group_placement_radius 8 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 15 max_distance_to_players 38 find_closest_to_map_center force_placement terrain_to_place_on BASE_GROUND } /* Natural expansion: the secondary four-tile gold. */ create_object START_TREE { number_of_objects 1 set_gaia_object_only set_place_for_every_player min_distance_to_players 17 max_distance_to_players 27 find_closest force_placement terrain_to_place_on NATURAL_GROUND actor_area NATURAL_ANCHOR_AREA actor_area_radius 3 } create_object START_TREE { number_of_objects 1 set_gaia_object_only set_place_for_every_player actor_area_to_place_in NATURAL_ANCHOR_AREA force_placement actor_area NATURAL_RESOURCE_AREA actor_area_radius 8 } create_object GOLD { number_of_objects 4 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player actor_area_to_place_in NATURAL_RESOURCE_AREA avoid_actor_area NATURAL_ANCHOR_AREA force_placement } /* Safe third: extra food and the secondary four-tile stone. */ create_object START_HERDABLE { number_of_objects 2 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 25 max_distance_to_players 40 find_closest_to_map_edge force_placement terrain_to_place_on SAFE_GROUND actor_area SAFE_ANCHOR_AREA actor_area_radius 3 } create_object START_TREE { number_of_objects 1 set_gaia_object_only set_place_for_every_player actor_area_to_place_in SAFE_ANCHOR_AREA force_placement actor_area SAFE_RESOURCE_AREA actor_area_radius 8 } create_object STONE { number_of_objects 4 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player actor_area_to_place_in SAFE_RESOURCE_AREA avoid_actor_area SAFE_ANCHOR_AREA force_placement } create_object START_HUNTABLE { number_of_objects 4 number_of_groups 1 group_placement_radius 4 set_loose_grouping set_gaia_object_only set_place_for_every_player actor_area_to_place_in SAFE_RESOURCE_AREA avoid_actor_area SAFE_ANCHOR_AREA force_placement } /* Forward shelf: the tertiary four-tile gold and exposed food. */ create_object START_HERDABLE { number_of_objects 2 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player min_distance_to_players 34 max_distance_to_players 50 find_closest_to_map_center force_placement terrain_to_place_on FORWARD_GROUND actor_area FORWARD_ANCHOR_AREA actor_area_radius 3 } create_object START_TREE { number_of_objects 1 set_gaia_object_only set_place_for_every_player actor_area_to_place_in FORWARD_ANCHOR_AREA force_placement actor_area FORWARD_RESOURCE_AREA actor_area_radius 8 } create_object GOLD { number_of_objects 4 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player actor_area_to_place_in FORWARD_RESOURCE_AREA avoid_actor_area FORWARD_ANCHOR_AREA force_placement } create_object FORAGE { number_of_objects 4 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only set_place_for_every_player actor_area_to_place_in FORWARD_RESOURCE_AREA avoid_actor_area FORWARD_ANCHOR_AREA force_placement } /* Side expansions are equal neutral high-yield objectives. */ create_object GOLD { number_of_objects 3 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only place_on_specific_land_id SW_SIDE_ID force_placement } create_object GOLD { number_of_objects 3 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only place_on_specific_land_id NE_SIDE_ID force_placement } create_object START_HUNTABLE { number_of_objects 4 number_of_groups 1 group_placement_radius 4 set_loose_grouping set_gaia_object_only place_on_specific_land_id SW_SIDE_ID force_placement } create_object START_HUNTABLE { number_of_objects 4 number_of_groups 1 group_placement_radius 4 set_loose_grouping set_gaia_object_only place_on_specific_land_id NE_SIDE_ID force_placement } /* Five relics: two on each signal hill and one at dead center. */ create_object RELIC { number_of_objects 2 set_gaia_object_only place_on_specific_land_id WEST_SIGNAL_ID temp_min_distance_group_placement 4 force_placement } create_object RELIC { number_of_objects 2 set_gaia_object_only place_on_specific_land_id EAST_SIGNAL_ID temp_min_distance_group_placement 4 force_placement } create_object RELIC { number_of_objects 1 set_gaia_object_only place_on_specific_land_id CENTER_ID find_closest_to_map_center force_placement } /* Mineable stone embedded in each forest seal evokes destructible rocks. */ create_object STONE { number_of_objects 3 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only place_on_specific_land_id NORTH_GATE_ID ignore_terrain_restrictions force_placement } create_object STONE { number_of_objects 3 number_of_groups 1 group_placement_radius 2 set_tight_grouping set_gaia_object_only place_on_specific_land_id SOUTH_GATE_ID ignore_terrain_restrictions force_placement } /* Signal flags mark the two build-your-own watchtower positions. */ create_object FLAG_A_OBJECT { number_of_objects 2 set_gaia_object_only place_on_specific_land_id WEST_SIGNAL_ID ignore_terrain_restrictions force_placement } create_object FLAG_B_OBJECT { number_of_objects 2 set_gaia_object_only place_on_specific_land_id EAST_SIGNAL_ID ignore_terrain_restrictions force_placement } /* Rotationally matched ruins identify the two outer junctions. */ create_object ANCIENT_RUIN { number_of_objects 1 set_gaia_object_only place_on_specific_land_id NW_JUNCTION_ID ignore_terrain_restrictions force_placement } create_object ANCIENT_RUIN { number_of_objects 1 set_gaia_object_only place_on_specific_land_id SE_JUNCTION_ID ignore_terrain_restrictions force_placement } /* Scattered boulders add close-camera detail only on authored rock ground. */ create_object DECORATIVE_ROCK { number_of_objects 28 set_gaia_object_only terrain_to_place_on ROCK_GROUND temp_min_distance_group_placement 2 }