Index: binaries/data/mods/public/maps/random/wild_lake.js =================================================================== --- binaries/data/mods/public/maps/random/wild_lake.js +++ binaries/data/mods/public/maps/random/wild_lake.js @@ -3,7 +3,7 @@ Engine.LoadLibrary("rmbiome"); Engine.LoadLibrary("heightmap"); -var g_Map = new RandomMap(0, "whiteness"); +var g_Map = new RandomMap(0, g_Terrains.mainTerrain); /** * getArray - To ensure a terrain texture is contained within an array @@ -17,6 +17,10 @@ setSelectedBiome(); +let biomeSpecifics = Engine.ReadJSONFile("maps/random/wild_lake_biome_specifics.json"); +let supportedBiomes = Object.keys(biomeSpecifics); +let biomeSpecific = supportedBiomes.indexOf(currentBiome()) != -1 ? biomeSpecifics[currentBiome()] : biomeSpecifics[pickRandom(supportedBiomes)]; + // Terrain, entities and actors let wildLakeBiome = [ // 0 Deep water @@ -141,65 +145,6 @@ } ]; -var mercenaryCampGuards = { - "generic/temperate": [ - { "Template" : "structures/merc_camp_egyptian" }, - { "Template" : "units/mace_infantry_javelinist_b", "Count" : 4 }, - { "Template" : "units/mace_cavalry_spearman_e", "Count" : 3 }, - { "Template" : "units/mace_infantry_archer_a", "Count" : 4 }, - { "Template" : "units/mace_champion_infantry_a", "Count" : 3 } - ], - "generic/snowy": [ - { "Template" : "structures/ptol_mercenary_camp" }, - { "Template" : "units/brit_infantry_javelinist_b", "Count" : 4 }, - { "Template" : "units/brit_cavalry_swordsman_e", "Count" : 3 }, - { "Template" : "units/brit_infantry_slinger_a", "Count" : 4 }, - { "Template" : "units/brit_champion_infantry", "Count" : 3 } - ], - "generic/desert": [ - { "Template" : "structures/ptol_mercenary_camp" }, - { "Template" : "units/pers_infantry_javelinist_b", "Count" : 4 }, - { "Template" : "units/pers_cavalry_swordsman_e", "Count" : 3 }, - { "Template" : "units/pers_infantry_archer_a", "Count" : 4 }, - { "Template" : "units/pers_champion_infantry", "Count" : 3 } - ], - "generic/alpine": [ - { "Template" : "structures/ptol_mercenary_camp" }, - { "Template" : "units/rome_infantry_swordsman_b", "Count" : 4 }, - { "Template" : "units/rome_cavalry_spearman_e", "Count" : 3 }, - { "Template" : "units/rome_infantry_javelinist_a", "Count" : 4 }, - { "Template" : "units/rome_champion_infantry", "Count" : 3 } - ], - "generic/mediterranean": [ - { "Template" : "structures/merc_camp_egyptian" }, - { "Template" : "units/iber_infantry_javelinist_b", "Count" : 4 }, - { "Template" : "units/iber_cavalry_spearman_e", "Count" : 3 }, - { "Template" : "units/iber_infantry_slinger_a", "Count" : 4 }, - { "Template" : "units/iber_champion_infantry", "Count" : 3 } - ], - "generic/savanna": [ - { "Template" : "structures/merc_camp_egyptian" }, - { "Template" : "units/sele_infantry_javelinist_b", "Count" : 4 }, - { "Template" : "units/sele_cavalry_spearman_merc_e", "Count" : 3 }, - { "Template" : "units/sele_infantry_spearman_a", "Count" : 4 }, - { "Template" : "units/sele_champion_infantry_swordsman", "Count" : 3 } - ], - "generic/tropic": [ - { "Template" : "structures/merc_camp_egyptian" }, - { "Template" : "units/ptol_infantry_javelinist_b", "Count" : 4 }, - { "Template" : "units/ptol_cavalry_archer_e", "Count" : 3 }, - { "Template" : "units/ptol_infantry_slinger_a", "Count" : 4 }, - { "Template" : "units/ptol_champion_infantry_pikeman", "Count" : 3 } - ], - "generic/autumn": [ - { "Template" : "structures/ptol_mercenary_camp" }, - { "Template" : "units/gaul_infantry_javelinist_b", "Count" : 4 }, - { "Template" : "units/gaul_cavalry_swordsman_e", "Count" : 3 }, - { "Template" : "units/gaul_infantry_slinger_a", "Count" : 4 }, - { "Template" : "units/gaul_champion_infantry", "Count" : 3 } - ] -}; - /** * Resource spots and other points of interest */ @@ -241,7 +186,8 @@ ) { let position = new Vector2D(point.x, point.y); - g_Map.placeEntityPassable(pickRandom(["structures/gaul_outpost", "gaia/flora_tree_oak_new"]), 0, position, randomAngle()); + let civ = biomeSpecific.farmEntities.building.slice(11, 15); // get the civ from the farmstead + g_Map.placeEntityPassable(pickRandom(["structures/" + civ + "_outpost", "gaia/flora_tree_oak_new"]), 0, position, randomAngle()); let quantity = randIntInclusive(20, 30); let dAngle = 2 * Math.PI / quantity; @@ -266,25 +212,14 @@ } } -var farmEntities = { - "generic/temperate": { "building": "structures/mace_farmstead", "animal": "gaia/fauna_pig" }, - "generic/snowy": { "building": "structures/brit_farmstead", "animal": "gaia/fauna_sheep" }, - "generic/desert": { "building": "structures/pers_farmstead", "animal": "gaia/fauna_camel" }, - "generic/alpine": { "building": "structures/rome_farmstead", "animal": "gaia/fauna_sheep" }, - "generic/mediterranean": { "building": "structures/iber_farmstead", "animal": "gaia/fauna_pig" }, - "generic/savanna": { "building": "structures/sele_farmstead", "animal": "gaia/fauna_horse" }, - "generic/tropic": { "building": "structures/ptol_farmstead", "animal": "gaia/fauna_camel" }, - "generic/autumn": { "building": "structures/gaul_farmstead", "animal": "gaia/fauna_horse" } -}; - g_WallStyles.other = { "overlap": 0, "fence": readyWallElement("other/fence_long", "gaia"), "fence_short": readyWallElement("other/fence_short", "gaia"), "bench": { "angle": Math.PI / 2, "length": 1.5, "indent": 0, "bend": 0, "templateName": "other/bench" }, "foodBin": { "angle": Math.PI / 2, "length": 1.5, "indent": 0, "bend": 0, "templateName": "gaia/treasure/food_bin" }, - "animal": { "angle": 0, "length": 0, "indent": 0.75, "bend": 0, "templateName": farmEntities[currentBiome()].animal }, - "farmstead": { "angle": Math.PI, "length": 0, "indent": -3, "bend": 0, "templateName": farmEntities[currentBiome()].building } + "animal": { "angle": 0, "length": 0, "indent": 0.75, "bend": 0, "templateName": biomeSpecific.farmEntities.animal }, + "farmstead": { "angle": Math.PI, "length": 0, "indent": -3, "bend": 0, "templateName": biomeSpecific.farmEntities.building } }; let fences = [ @@ -327,9 +262,8 @@ function placeCamp(position, centerEntity = "actor|props/special/eyecandy/campfire.xml", otherEntities = ["gaia/treasure/metal", "gaia/treasure/standing_stone", - "units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic", "actor|props/special/common/waypoint_flag.xml", "actor|props/special/eyecandy/barrel_a.xml", "actor|props/special/eyecandy/basket_celt_a.xml", "actor|props/special/eyecandy/crate_a.xml", "actor|props/special/eyecandy/dummy_a.xml", "actor|props/special/eyecandy/handcart_1.xml", "actor|props/special/eyecandy/handcart_1_broken.xml", "actor|props/special/eyecandy/sack_1.xml", "actor|props/special/eyecandy/sack_1_rough.xml" - ] + ].concat(biomeSpecific.campEntities) ) { g_Map.placeEntityPassable(centerEntity, 0, position, randomAngle()); @@ -608,22 +542,25 @@ { let radius; let choice = i % (isNomad() ? 4 : 5); - if (choice == 0) + + switch(choice) + { + case 0: placeMine(resourceSpots[i], g_Gaia.stoneLarge); - if (choice == 1) + break; + case 1: placeMine(resourceSpots[i], g_Gaia.metalLarge); - if (choice == 2) + break; + case 2: placeGrove(resourceSpots[i]); - if (choice == 3) - { + case 3: placeCamp(resourceSpots[i]); radius = 5; - } - if (choice == 4) - { + break; + case 4: if (mercenaryCamps) { - placeStartingEntities(resourceSpots[i], 0, mercenaryCampGuards[currentBiome()]); + placeStartingEntities(resourceSpots[i], 0, biomeSpecific.mercenaryCampEntities); radius = 15; --mercenaryCamps; } Index: binaries/data/mods/public/maps/random/wild_lake_biome_specifics.json =================================================================== --- /dev/null +++ binaries/data/mods/public/maps/random/wild_lake_biome_specifics.json @@ -0,0 +1,90 @@ +{ + "generic/temperate": { + "mercenaryCampEntities": [ + {"template": "structures/merc_camp_egyptian"}, + {"Template": "units/mace_cavalry_spearman_e", "Count": 3}, + {"Template": "units/mace_infantry_javelinist_b", "Count": 4}, + {"Template": "units/mace_infantry_archer_a", "Count": 4}, + {"Template": "units/mace_champion_infantry_a", "Count": 3} + ], + "farmEntities": {"building": "structures/mace_farmstead", "animal": "gaia/fauna_pig"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + }, + "generic/snowy": { + "mercenaryCampEntities": [ + {"Template": "structures/ptol_mercenary_camp"}, + {"Template": "units/brit_infantry_javelinist_b", "Count": 4}, + {"Template": "units/brit_cavalry_swordsman_e", "Count": 3}, + {"Template": "units/brit_infantry_slinger_a", "Count": 4}, + {"Template": "units/brit_champion_infantry", "Count": 3} + ], + "farmEntities": {"building": "structures/brit_farmstead", "animal": "gaia/fauna_sheep"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + }, + "generic/desert": { + "mercenaryCampEntities": [ + {"Template": "structures/ptol_mercenary_camp"}, + {"Template": "units/pers_infantry_javelinist_b", "Count": 4}, + {"Template": "units/pers_cavalry_swordsman_e", "Count": 3}, + {"Template": "units/pers_infantry_archer_a", "Count": 4}, + {"Template": "units/pers_champion_infantry", "Count": 3} + ], + "farmEntities": {"building": "structures/pers_farmstead", "animal": "gaia/fauna_camel"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + }, + "generic/alpine": { + "mercenaryCampEntities": [ + {"Template": "structures/ptol_mercenary_camp"}, + {"Template": "units/rome_infantry_swordsman_b", "Count": 4}, + {"Template": "units/rome_cavalry_spearman_e", "Count": 3}, + {"Template": "units/rome_infantry_javelinist_a", "Count": 4}, + {"Template": "units/rome_champion_infantry", "Count": 3} + ], + "farmEntities": {"building": "structures/rome_farmstead", "animal": "gaia/fauna_sheep"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + }, + "generic/mediterranean": { + "mercenaryCampEntities": [ + {"Template": "structures/merc_camp_egyptian"}, + {"Template": "units/iber_infantry_javelinist_b", "Count": 4}, + {"Template": "units/iber_cavalry_spearman_e", "Count": 3}, + {"Template": "units/iber_infantry_slinger_a", "Count": 4}, + {"Template": "units/iber_champion_infantry", "Count": 3} + ], + "farmEntities": {"building": "structures/iber_farmstead", "animal": "gaia/fauna_pig"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + }, + "generic/savanna": { + "mercenaryCampEntities": [ + {"Template": "structures/merc_camp_egyptian"}, + {"Template": "units/sele_infantry_javelinist_b", "Count": 4}, + {"Template": "units/sele_cavalry_spearman_merc_e", "Count": 3}, + {"Template": "units/sele_infantry_spearman_a", "Count": 4}, + {"Template": "units/sele_champion_infantry_swordsman", "Count": 3} + ], + "farmEntities": {"building": "structures/sele_farmstead", "animal": "gaia/fauna_horse"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + }, + "generic/tropic": { + "mercenaryCampEntities": [ + {"Template": "structures/merc_camp_egyptian"}, + {"Template": "units/ptol_infantry_javelinist_b", "Count": 4}, + {"Template": "units/ptol_cavalry_archer_e", "Count": 3}, + {"Template": "units/ptol_infantry_slinger_a", "Count": 4}, + {"Template": "units/ptol_champion_infantry_pikeman", "Count": 3} + ], + "farmEntities": {"building": "structures/ptol_farmstead", "animal": "gaia/fauna_camel"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + }, + "generic/autumn": { + "mercenaryCampEntities": [ + {"Template": "structures/ptol_mercenary_camp"}, + {"Template": "units/gaul_infantry_javelinist_b", "Count": 4}, + {"Template": "units/gaul_cavalry_swordsman_e", "Count": 3}, + {"Template": "units/gaul_infantry_slinger_a", "Count": 4}, + {"Template": "units/gaul_champion_infantry", "Count": 3} + ], + "farmEntities": {"building": "structures/gaul_farmstead", "animal": "gaia/fauna_horse"}, + "campEntities": ["units/brit_infantry_slinger_b", "units/brit_infantry_javelinist_b", "units/gaul_infantry_slinger_b", "units/gaul_infantry_javelinist_b", "units/gaul_champion_fanatic"] + } +}