1
0
forked from 0ad/0ad

Adds the path placer library by historic_brunno to rmgen. Fixes #892.

Also takes all the duplicated parts of random maps including the new
player start entities and random biome system into rmgen libraries.
Tweaks nile river and snowflake random maps.

This was SVN commit r11152.
This commit is contained in:
O.Davoodi 2012-02-25 15:53:43 +00:00
parent ce82f83798
commit bc805bd357
22 changed files with 470 additions and 2003 deletions

View File

@ -1,48 +1,6 @@
RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmgen");
//TILE_CENTERED_HEIGHT_MAP = true; //TILE_CENTERED_HEIGHT_MAP = true;
function rndRiver(f, seed)
{
var rndRq = seed;
var rndRw = rndRq;
var rndRe = 0;
var rndRr = f-floor(f);
var rndRa = 0;
for (var rndRx=0; rndRx<=floor(f); rndRx++)
{
rndRw = 10*(rndRw-floor(rndRw));
}
if (rndRx%2==0)
{
var rndRs = -1;
}
else
{
var rndRs = 1;
}
rndRe = (floor(rndRw))%5;
if (rndRe==0)
{
rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5);
}
else if (rndRe==1)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7);
}
else if (rndRe==2)
{
rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8);
}
else if (rndRe==3)
{
rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8);
}
else if (rndRe==4)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7);
}
return rndRa;
}
const tCity = "medit_city_pavement"; const tCity = "medit_city_pavement";
const tCityPlaza = "medit_city_pavement"; const tCityPlaza = "medit_city_pavement";
@ -173,27 +131,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -202,7 +141,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

File diff suppressed because one or more lines are too long

View File

@ -123,27 +123,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -152,7 +133,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -146,27 +146,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -175,7 +156,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -1,338 +1,48 @@
RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmgen");
//random terrain textures //random terrain textures
var rt = randInt(1,7); var rt = randomizeBiome();
//temperate
if (rt == 1){ var tGrass = rBiomeT1();
var tGrass = ["temp_grass_long_b"]; var tGrassPForest = rBiomeT2();
var tGrassPForest = "temp_forestfloor_pine"; var tGrassDForest = rBiomeT3();
var tGrassDForest = "temp_plants_bog"; var tCliff = rBiomeT4();
var tCliff = ["temp_cliff_a", "temp_cliff_b"]; var tGrassA = rBiomeT5();
var tGrassA = "temp_grass_d"; var tGrassB = rBiomeT6();
var tGrassB = "temp_grass_c"; var tGrassC = rBiomeT7();
var tGrassC = "temp_grass_clovers_2"; var tHill = rBiomeT8();
var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tDirt = rBiomeT9();
var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tRoad = rBiomeT10();
var tRoad = "temp_road"; var tRoadWild = rBiomeT11();
var tRoadWild = "temp_road_overgrown"; var tGrassPatch = rBiomeT12();
var tGrassPatch = "temp_grass_plants"; var tShoreBlend = rBiomeT13();
var tShoreBlend = "temp_mud_plants"; var tShore = rBiomeT14();
var tShore = "sand_grass_25"; var tWater = rBiomeT15();
var tWater = "medit_sand_wet";
// gaia entities // gaia entities
var oOak = "gaia/flora_tree_oak"; var oOak = rBiomeE1();
var oOakLarge = "gaia/flora_tree_oak_large"; var oOakLarge = rBiomeE2();
var oApple = "gaia/flora_tree_apple"; var oApple = rBiomeE3();
var oPine = "gaia/flora_tree_pine"; var oPine = rBiomeE4();
var oAleppoPine = "gaia/flora_tree_aleppo_pine"; var oAleppoPine = rBiomeE5();
var oBerryBush = "gaia/flora_bush_berry"; var oBerryBush = rBiomeE6();
var oChicken = "gaia/fauna_chicken"; var oChicken = rBiomeE7();
var oDeer = "gaia/fauna_deer"; var oDeer = rBiomeE8();
var oFish = "gaia/fauna_fish"; var oFish = rBiomeE9();
var oSheep = "gaia/fauna_sheep"; var oSheep = rBiomeE10();
var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneLarge = rBiomeE11();
var oStoneSmall = "gaia/geology_stone_mediterranean"; var oStoneSmall = rBiomeE12();
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; var oMetalLarge = rBiomeE13();
// decorative props // decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; var aGrass = rBiomeA1();
var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aGrassShort = rBiomeA2();
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; var aReeds = rBiomeA3();
var aLillies = "actor|props/flora/pond_lillies_large.xml"; var aLillies = rBiomeA4();
var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockLarge = rBiomeA5();
var aRockMedium = "actor|geology/stone_granite_med.xml"; var aRockMedium = rBiomeA6();
var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushMedium = rBiomeA7();
var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; var aBushSmall = rBiomeA8();
// terrain + entity (for painting)
}
//snowy
else if (rt == 2)
{
setSunColour(0.550, 0.601, 0.644); // a little darker
var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"];
var tGrassPForest = "polar_tundra_snow";
var tGrassDForest = "polar_tundra_snow";
var tCliff = ["polar_cliff_a", "polar_cliff_b"];
var tGrassA = "snow grass 2";
var tGrassB = "polar_snow_a";
var tGrassC = "polar_ice_snow";
var tHill = ["polar_snow_rocks", "polar_cliff_snow"];
var tDirt = ["polar_ice_b", "polar_ice_c"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "polar_ice_cracked";
var tGrassPatch = "snow grass 2";
var tShoreBlend = "polar_ice";
var tShore = "snow_glacial_01";
var tWater = "polar_ice_c";
// gaia entities
var oOak = "gaia/flora_tree_pine_w";
var oOakLarge = "gaia/flora_tree_pine_w";
var oApple = "gaia/flora_tree_pine_w";
var oPine = "gaia/flora_tree_pine_w";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_muskox";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_walrus";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//desert
else if (rt == 3)
{
setSunColour(0.733, 0.746, 0.574);
var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"];
var tGrassPForest = "forestfloor_dirty";
var tGrassDForest = "desert_forestfloor_palms";
var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"];
var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"];
var tGrassB = "dirta";
var tGrassC = "medit_dirt_dry";
var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"];
var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"];
var tRoad = "desert_city_tile";
var tRoadWild = "desert_city_tile";
var tGrassPatch = "desert_dirt_rough";
var tShoreBlend = "desert_shore_stones";
var tShore = "dirta";
var tWater = "desert_sand_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall";
var oApple = "gaia/flora_tree_fig";
var oPine = "gaia/flora_tree_dead";
var oAleppoPine = "gaia/flora_tree_date_palm";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_camel";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_desert_small";
var oMetalLarge = "gaia/geology_metal_desert_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_desert_med.xml";
var aRockMedium = "actor|geology/stone_desert_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//alpine
else if (rt == 4)
{
var tGrass = ["alpine_dirt_grass_50"];
var tGrassPForest = "alpine_forrestfloor";
var tGrassDForest = "alpine_forrestfloor";
var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"];
var tGrassA = "alpine_grass_rocky";
var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"];
var tGrassC = ["alpine_snow_a", "alpine_snow_b"];
var tHill = "alpine_cliff_snow";
var tDirt = ["alpine_dirt", "alpine_grass_d"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "new_alpine_citytile";
var tGrassPatch = "new_alpine_grass_a";
var tShoreBlend = "alpine_shore_rocks";
var tShore = "alpine_shore_rocks_grass_50";
var tWater = "alpine_shore_rocks";
// gaia entities
var oOak = "gaia/flora_tree_pine";
var oOakLarge = "gaia/flora_tree_pine";
var oApple = "gaia/flora_tree_pine";
var oPine = "gaia/flora_tree_pine";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_goat";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_deer";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//medit
else if (rt == 5){
var tGrass = ["medit_grass_field_a", "medit_grass_field_b"];
var tGrassPForest = "medit_plants_dirt";
var tGrassDForest = "medit_grass_shrubs";
var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"];
var tGrassA = "medit_grass_field_b";
var tGrassB = "medit_grass_field_brown";
var tGrassC = "medit_grass_field_dry";
var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
var tDirt = ["medit_dirt", "medit_dirt_b"];
var tRoad = "medit_city_tile";
var tRoadWild = "medit_city_tile";
var tGrassPatch = "medit_grass_wild";
var tShoreBlend = "medit_sand";
var tShore = "sand_grass_25";
var tWater = "medit_sand_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_medit_fan_palm";
var oApple = "gaia/flora_tree_apple";
var oPine = "gaia/flora_tree_cypress";
var oAleppoPine = "gaia/flora_tree_aleppo_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_sheep";
var oStoneLarge = "gaia/geology_stonemine_medit_quarry";
var oStoneSmall = "gaia/geology_stone_mediterranean";
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_large.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
var aLillies = "actor|props/flora/pond_lillies_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_medit_me.xml";
var aBushSmall = "actor|props/flora/bush_medit_sm.xml";
// terrain + entity (for painting)
}
//savanah
else if (rt == 6)
{
var tGrass = ["savanna_grass_a", "savanna_grass_b"];
var tGrassPForest = "savanna_forestfloor_a";
var tGrassDForest = "savanna_forestfloor_b";
var tCliff = ["savanna_cliff_a", "savanna_cliff_b"];
var tGrassA = "savanna_shrubs_a";
var tGrassB = "savanna_dirt_rocks_b";
var tGrassC = "dirt_brown_e";
var tHill = ["savanna_grass_a", "savanna_grass_b"];
var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"];
var tRoad = "savanna_tile_a";
var tRoadWild = "savanna_tile_a";
var tGrassPatch = "savanna_grass_a";
var tShoreBlend = "savanna_riparian";
var tShore = "savanna_riparian_bank";
var tWater = "savanna_riparian_wet";
// gaia entities
var oOak = "gaia/flora_tree_baobab";
var oOakLarge = "gaia/flora_tree_baobab";
var oApple = "gaia/flora_tree_baobab";
var oPine = "gaia/flora_tree_baobab";
var oAleppoPine = "gaia/flora_tree_baobab";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var rts = randInt(1,4);
if (rts==1){
var oDeer = "gaia/fauna_wildebeest";
}
else if (rts==2)
{
var oDeer = "gaia/fauna_zebra";
}
else if (rts==3)
{
var oDeer = "gaia/fauna_giraffe";
}
else if (rts==4)
{
var oDeer = "gaia/fauna_elephant_african_bush";
}
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_savanna_small";
var oMetalLarge = "gaia/geology_metal_savanna_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_savanna.xml";
var aGrassShort = "actor|props/flora/grass_medit_field.xml";
var aRockLarge = "actor|geology/stone_savanna_med.xml";
var aRockMedium = "actor|geology/stone_savanna_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_dry_a.xml";
// terrain + entity (for painting)
}
else if (rt == 7){
var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"];
var tGrassPForest = "tropic_plants_c";
var tGrassDForest = "tropic_plants_c";
var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"];
var tGrassA = "tropic_grass_c";
var tGrassB = "tropic_grass_plants";
var tGrassC = "tropic_plants";
var tHill = ["tropic_cliff_grass"];
var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"];
var tRoad = "tropic_citytile_a";
var tRoadWild = "tropic_citytile_plants";
var tGrassPatch = "tropic_plants_b";
var tShoreBlend = "temp_mud_plants";
var tShore = "tropic_beach_dry";
var tWater = "tropic_beach_wet";
// gaia entities
var oOak = "gaia/flora_tree_poplar";
var oOakLarge = "gaia/flora_tree_poplar";
var oApple = "gaia/flora_tree_poplar";
var oPine = "gaia/flora_tree_cretan_date_palm_short";
var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_tiger";
var oStoneLarge = "gaia/geology_stonemine_tropic_quarry";
var oStoneSmall = "gaia/geology_stone_tropic_a";
var oMetalLarge = "gaia/geology_metal_tropic_slabs";
// decorative props
var aGrass = "actor|props/flora/plant_tropic_a.xml";
var aGrassShort = "actor|props/flora/plant_lg.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_b.xml";
var aLillies = "actor|props/flora/water_lillies.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/plant_tropic_large.xml";
var aBushSmall = "actor|props/flora/plant_tropic_large.xml";
// terrain + entity (for painting)
}
var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest];
var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
@ -443,28 +153,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
// create starting units createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uDist = 6;
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -473,7 +163,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -1,48 +1,5 @@
RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmgen");
function rndRiver(f, seed)
{
var rndRq = seed;
var rndRw = rndRq;
var rndRe = 0;
var rndRr = f-floor(f);
var rndRa = 0;
for (var rndRx=0; rndRx<=floor(f); rndRx++)
{
rndRw = 10*(rndRw-floor(rndRw));
}
if (rndRx%2==0)
{
var rndRs = -1;
}
else
{
var rndRs = 1;
}
rndRe = (floor(rndRw))%5;
if (rndRe==0)
{
rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5);
}
else if (rndRe==1)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7);
}
else if (rndRe==2)
{
rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8);
}
else if (rndRe==3)
{
rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8);
}
else if (rndRe==4)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7);
}
return rndRa;
}
var tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; var tGrass = ["medit_grass_field_a", "medit_grass_field_b"];
var tGrassPForest = "medit_plants_dirt"; var tGrassPForest = "medit_plants_dirt";
var tGrassDForest = "medit_grass_shrubs"; var tGrassDForest = "medit_grass_shrubs";
@ -187,36 +144,17 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
{ {
var aAngle = randFloat(0, TWO_PI); var aAngle = randFloat(0, TWO_PI);
var aDist = 7; var aDist = 6;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );
@ -225,7 +163,7 @@ for (var i = 0; i < numPlayers; i++)
// create berry bushes // create berry bushes
var bbAngle = randFloat(0, TWO_PI); var bbAngle = randFloat(0, TWO_PI);
var bbDist = 12; var bbDist = 8;
var bbX = round(fx + bbDist * cos(bbAngle)); var bbX = round(fx + bbDist * cos(bbAngle));
var bbZ = round(fz + bbDist * sin(bbAngle)); var bbZ = round(fz + bbDist * sin(bbAngle));
group = new SimpleGroup( group = new SimpleGroup(
@ -240,7 +178,7 @@ for (var i = 0; i < numPlayers; i++)
{ {
mAngle = randFloat(0, TWO_PI); mAngle = randFloat(0, TWO_PI);
} }
var mDist = radius - 4; var mDist = radius - 7;
var mX = round(fx + mDist * cos(mAngle)); var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle)); var mZ = round(fz + mDist * sin(mAngle));
group = new SimpleGroup( group = new SimpleGroup(

View File

@ -1,47 +1,5 @@
RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmgen");
function rndRiver(f, seed)
{
var rndRq = sqrt(seed);
var rndRw = rndRq;
var rndRe = 0;
var rndRr = f-floor(f);
var rndRa = 0;
for (var rndRx=0; rndRx<=floor(f); rndRx++)
{
rndRw = 10*(rndRw-floor(rndRw));
}
if (rndRx%2==0)
{
var rndRs = -1;
}
else
{
var rndRs = 1;
}
rndRe = (floor(rndRw))%5;
if (rndRe==0)
{
rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5);
}
else if (rndRe==1)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7);
}
else if (rndRe==2)
{
rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8);
}
else if (rndRe==3)
{
rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8);
}
else if (rndRe==4)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7);
}
return rndRa;
}
// terrain textures // terrain textures
const tGrass = ["temp_grass_clovers"]; const tGrass = ["temp_grass_clovers"];
@ -172,36 +130,17 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create chickens // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
{ {
var aAngle = randFloat(0, TWO_PI); var aAngle = randFloat(0, TWO_PI);
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -282,27 +282,9 @@ if((numPlayers>=6)||(i==startingPlaces[numPlayers-1][nPlayer])){
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
nPlayer++; nPlayer++;
} }

View File

@ -2,339 +2,48 @@ RMS.LoadLibrary("rmgen");
//random terrain textures //random terrain textures
var rt = randInt(1,7); var rt = randomizeBiome();
//temperate
if (rt == 1){ var tGrass = rBiomeT1();
var tGrass = ["temp_grass_long_b"]; var tGrassPForest = rBiomeT2();
var tGrassPForest = "temp_forestfloor_pine"; var tGrassDForest = rBiomeT3();
var tGrassDForest = "temp_plants_bog"; var tCliff = rBiomeT4();
var tCliff = ["temp_cliff_a", "temp_cliff_b"]; var tGrassA = rBiomeT5();
var tGrassA = "temp_grass_d"; var tGrassB = rBiomeT6();
var tGrassB = "temp_grass_c"; var tGrassC = rBiomeT7();
var tGrassC = "temp_grass_clovers_2"; var tHill = rBiomeT8();
var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tDirt = rBiomeT9();
var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tRoad = rBiomeT10();
var tRoad = "temp_road"; var tRoadWild = rBiomeT11();
var tRoadWild = "temp_road_overgrown"; var tGrassPatch = rBiomeT12();
var tGrassPatch = "temp_grass_plants"; var tShoreBlend = rBiomeT13();
var tShoreBlend = "temp_mud_plants"; var tShore = rBiomeT14();
var tShore = "sand_grass_25"; var tWater = rBiomeT15();
var tWater = "medit_sand_wet";
// gaia entities // gaia entities
var oOak = "gaia/flora_tree_oak"; var oOak = rBiomeE1();
var oOakLarge = "gaia/flora_tree_oak_large"; var oOakLarge = rBiomeE2();
var oApple = "gaia/flora_tree_apple"; var oApple = rBiomeE3();
var oPine = "gaia/flora_tree_pine"; var oPine = rBiomeE4();
var oAleppoPine = "gaia/flora_tree_aleppo_pine"; var oAleppoPine = rBiomeE5();
var oBerryBush = "gaia/flora_bush_berry"; var oBerryBush = rBiomeE6();
var oChicken = "gaia/fauna_chicken"; var oChicken = rBiomeE7();
var oDeer = "gaia/fauna_deer"; var oDeer = rBiomeE8();
var oFish = "gaia/fauna_fish"; var oFish = rBiomeE9();
var oSheep = "gaia/fauna_sheep"; var oSheep = rBiomeE10();
var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneLarge = rBiomeE11();
var oStoneSmall = "gaia/geology_stone_mediterranean"; var oStoneSmall = rBiomeE12();
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; var oMetalLarge = rBiomeE13();
// decorative props // decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; var aGrass = rBiomeA1();
var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aGrassShort = rBiomeA2();
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; var aReeds = rBiomeA3();
var aLillies = "actor|props/flora/pond_lillies_large.xml"; var aLillies = rBiomeA4();
var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockLarge = rBiomeA5();
var aRockMedium = "actor|geology/stone_granite_med.xml"; var aRockMedium = rBiomeA6();
var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushMedium = rBiomeA7();
var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; var aBushSmall = rBiomeA8();
// terrain + entity (for painting)
}
//snowy
else if (rt == 2)
{
setSunColour(0.550, 0.601, 0.644); // a little darker
var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"];
var tGrassPForest = "polar_tundra_snow";
var tGrassDForest = "polar_tundra_snow";
var tCliff = ["polar_cliff_a", "polar_cliff_b"];
var tGrassA = "snow grass 2";
var tGrassB = "polar_snow_a";
var tGrassC = "polar_ice_snow";
var tHill = ["polar_snow_rocks", "polar_cliff_snow"];
var tDirt = ["polar_ice_b", "polar_ice_c"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "polar_ice_cracked";
var tGrassPatch = "snow grass 2";
var tShoreBlend = "polar_ice";
var tShore = "snow_glacial_01";
var tWater = "polar_ice_c";
// gaia entities
var oOak = "gaia/flora_tree_pine_w";
var oOakLarge = "gaia/flora_tree_pine_w";
var oApple = "gaia/flora_tree_pine_w";
var oPine = "gaia/flora_tree_pine_w";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_muskox";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_walrus";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//desert
else if (rt == 3)
{
setSunColour(0.733, 0.746, 0.574);
var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"];
var tGrassPForest = "forestfloor_dirty";
var tGrassDForest = "desert_forestfloor_palms";
var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"];
var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"];
var tGrassB = "dirta";
var tGrassC = "medit_dirt_dry";
var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"];
var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"];
var tRoad = "desert_city_tile";
var tRoadWild = "desert_city_tile";
var tGrassPatch = "desert_dirt_rough";
var tShoreBlend = "desert_shore_stones";
var tShore = "dirta";
var tWater = "desert_sand_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall";
var oApple = "gaia/flora_tree_fig";
var oPine = "gaia/flora_tree_dead";
var oAleppoPine = "gaia/flora_tree_date_palm";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_camel";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_desert_small";
var oMetalLarge = "gaia/geology_metal_desert_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_desert_med.xml";
var aRockMedium = "actor|geology/stone_desert_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//alpine
else if (rt == 4)
{
var tGrass = ["alpine_dirt_grass_50"];
var tGrassPForest = "alpine_forrestfloor";
var tGrassDForest = "alpine_forrestfloor";
var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"];
var tGrassA = "alpine_grass_rocky";
var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"];
var tGrassC = ["alpine_snow_a", "alpine_snow_b"];
var tHill = "alpine_cliff_snow";
var tDirt = ["alpine_dirt", "alpine_grass_d"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "new_alpine_citytile";
var tGrassPatch = "new_alpine_grass_a";
var tShoreBlend = "alpine_shore_rocks";
var tShore = "alpine_shore_rocks_grass_50";
var tWater = "alpine_shore_rocks";
// gaia entities
var oOak = "gaia/flora_tree_pine";
var oOakLarge = "gaia/flora_tree_pine";
var oApple = "gaia/flora_tree_pine";
var oPine = "gaia/flora_tree_pine";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_goat";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_deer";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//medit
else if (rt == 5){
var tGrass = ["medit_grass_field_a", "medit_grass_field_b"];
var tGrassPForest = "medit_plants_dirt";
var tGrassDForest = "medit_grass_shrubs";
var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"];
var tGrassA = "medit_grass_field_b";
var tGrassB = "medit_grass_field_brown";
var tGrassC = "medit_grass_field_dry";
var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
var tDirt = ["medit_dirt", "medit_dirt_b"];
var tRoad = "medit_city_tile";
var tRoadWild = "medit_city_tile";
var tGrassPatch = "medit_grass_wild";
var tShoreBlend = "medit_sand";
var tShore = "sand_grass_25";
var tWater = "medit_sand_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_medit_fan_palm";
var oApple = "gaia/flora_tree_apple";
var oPine = "gaia/flora_tree_cypress";
var oAleppoPine = "gaia/flora_tree_aleppo_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_sheep";
var oStoneLarge = "gaia/geology_stonemine_medit_quarry";
var oStoneSmall = "gaia/geology_stone_mediterranean";
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_large.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
var aLillies = "actor|props/flora/pond_lillies_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_medit_me.xml";
var aBushSmall = "actor|props/flora/bush_medit_sm.xml";
// terrain + entity (for painting)
}
//savanah
else if (rt == 6)
{
var tGrass = ["savanna_grass_a", "savanna_grass_b"];
var tGrassPForest = "savanna_forestfloor_a";
var tGrassDForest = "savanna_forestfloor_b";
var tCliff = ["savanna_cliff_a", "savanna_cliff_b"];
var tGrassA = "savanna_shrubs_a";
var tGrassB = "savanna_dirt_rocks_b";
var tGrassC = "dirt_brown_e";
var tHill = ["savanna_grass_a", "savanna_grass_b"];
var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"];
var tRoad = "savanna_tile_a";
var tRoadWild = "savanna_tile_a";
var tGrassPatch = "savanna_grass_a";
var tShoreBlend = "savanna_riparian";
var tShore = "savanna_riparian_bank";
var tWater = "savanna_riparian_wet";
// gaia entities
var oOak = "gaia/flora_tree_baobab";
var oOakLarge = "gaia/flora_tree_baobab";
var oApple = "gaia/flora_tree_baobab";
var oPine = "gaia/flora_tree_baobab";
var oAleppoPine = "gaia/flora_tree_baobab";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var rts = randInt(1,4);
if (rts==1){
var oDeer = "gaia/fauna_wildebeest";
}
else if (rts==2)
{
var oDeer = "gaia/fauna_zebra";
}
else if (rts==3)
{
var oDeer = "gaia/fauna_giraffe";
}
else if (rts==4)
{
var oDeer = "gaia/fauna_elephant_african_bush";
}
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_savanna_small";
var oMetalLarge = "gaia/geology_metal_savanna_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_savanna.xml";
var aGrassShort = "actor|props/flora/grass_medit_field.xml";
var aRockLarge = "actor|geology/stone_savanna_med.xml";
var aRockMedium = "actor|geology/stone_savanna_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_dry_a.xml";
// terrain + entity (for painting)
}
//tropic
else if (rt == 7){
var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"];
var tGrassPForest = "tropic_plants_c";
var tGrassDForest = "tropic_plants_c";
var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"];
var tGrassA = "tropic_grass_c";
var tGrassB = "tropic_grass_plants";
var tGrassC = "tropic_plants";
var tHill = ["tropic_cliff_grass"];
var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"];
var tRoad = "tropic_citytile_a";
var tRoadWild = "tropic_citytile_plants";
var tGrassPatch = "tropic_plants_b";
var tShoreBlend = "temp_mud_plants";
var tShore = "tropic_beach_dry";
var tWater = "tropic_beach_wet";
// gaia entities
var oOak = "gaia/flora_tree_poplar";
var oOakLarge = "gaia/flora_tree_poplar";
var oApple = "gaia/flora_tree_poplar";
var oPine = "gaia/flora_tree_cretan_date_palm_short";
var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_tiger";
var oStoneLarge = "gaia/geology_stonemine_tropic_quarry";
var oStoneSmall = "gaia/geology_stone_tropic_a";
var oMetalLarge = "gaia/geology_metal_tropic_slabs";
// decorative props
var aGrass = "actor|props/flora/plant_tropic_a.xml";
var aGrassShort = "actor|props/flora/plant_lg.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_b.xml";
var aLillies = "actor|props/flora/water_lillies.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/plant_tropic_large.xml";
var aBushSmall = "actor|props/flora/plant_tropic_large.xml";
// terrain + entity (for painting)
}
var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest];
var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
@ -444,27 +153,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -473,7 +163,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -433,27 +433,8 @@ for (var i = 1; i <= numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -462,7 +443,7 @@ for (var i = 1; i <= numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -2,338 +2,48 @@ RMS.LoadLibrary("rmgen");
//random terrain textures //random terrain textures
var rt = randInt(1,7); var rt = randomizeBiome();
//temperate
if (rt == 1){ var tGrass = rBiomeT1();
var tGrass = ["temp_grass_long_b"]; var tGrassPForest = rBiomeT2();
var tGrassPForest = "temp_forestfloor_pine"; var tGrassDForest = rBiomeT3();
var tGrassDForest = "temp_plants_bog"; var tCliff = rBiomeT4();
var tCliff = ["temp_cliff_a", "temp_cliff_b"]; var tGrassA = rBiomeT5();
var tGrassA = "temp_grass_d"; var tGrassB = rBiomeT6();
var tGrassB = "temp_grass_c"; var tGrassC = rBiomeT7();
var tGrassC = "temp_grass_clovers_2"; var tHill = rBiomeT8();
var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tDirt = rBiomeT9();
var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tRoad = rBiomeT10();
var tRoad = "temp_road"; var tRoadWild = rBiomeT11();
var tRoadWild = "temp_road_overgrown"; var tGrassPatch = rBiomeT12();
var tGrassPatch = "temp_grass_plants"; var tShoreBlend = rBiomeT13();
var tShoreBlend = "temp_mud_plants"; var tShore = rBiomeT14();
var tShore = "sand_grass_25"; var tWater = rBiomeT15();
var tWater = "medit_sand_wet";
// gaia entities // gaia entities
var oOak = "gaia/flora_tree_oak"; var oOak = rBiomeE1();
var oOakLarge = "gaia/flora_tree_oak_large"; var oOakLarge = rBiomeE2();
var oApple = "gaia/flora_tree_apple"; var oApple = rBiomeE3();
var oPine = "gaia/flora_tree_pine"; var oPine = rBiomeE4();
var oAleppoPine = "gaia/flora_tree_aleppo_pine"; var oAleppoPine = rBiomeE5();
var oBerryBush = "gaia/flora_bush_berry"; var oBerryBush = rBiomeE6();
var oChicken = "gaia/fauna_chicken"; var oChicken = rBiomeE7();
var oDeer = "gaia/fauna_deer"; var oDeer = rBiomeE8();
var oFish = "gaia/fauna_fish"; var oFish = rBiomeE9();
var oSheep = "gaia/fauna_sheep"; var oSheep = rBiomeE10();
var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneLarge = rBiomeE11();
var oStoneSmall = "gaia/geology_stone_mediterranean"; var oStoneSmall = rBiomeE12();
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; var oMetalLarge = rBiomeE13();
// decorative props // decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; var aGrass = rBiomeA1();
var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aGrassShort = rBiomeA2();
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; var aReeds = rBiomeA3();
var aLillies = "actor|props/flora/pond_lillies_large.xml"; var aLillies = rBiomeA4();
var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockLarge = rBiomeA5();
var aRockMedium = "actor|geology/stone_granite_med.xml"; var aRockMedium = rBiomeA6();
var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushMedium = rBiomeA7();
var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; var aBushSmall = rBiomeA8();
// terrain + entity (for painting)
}
//snowy
else if (rt == 2)
{
setSunColour(0.550, 0.601, 0.644); // a little darker
var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"];
var tGrassPForest = "polar_tundra_snow";
var tGrassDForest = "polar_tundra_snow";
var tCliff = ["polar_cliff_a", "polar_cliff_b"];
var tGrassA = "snow grass 2";
var tGrassB = "polar_snow_a";
var tGrassC = "polar_ice_snow";
var tHill = ["polar_snow_rocks", "polar_cliff_snow"];
var tDirt = ["polar_ice_b", "polar_ice_c"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "polar_ice_cracked";
var tGrassPatch = "snow grass 2";
var tShoreBlend = "polar_ice";
var tShore = "snow_glacial_01";
var tWater = "polar_ice_c";
// gaia entities
var oOak = "gaia/flora_tree_pine_w";
var oOakLarge = "gaia/flora_tree_pine_w";
var oApple = "gaia/flora_tree_pine_w";
var oPine = "gaia/flora_tree_pine_w";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_muskox";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_walrus";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//desert
else if (rt == 3)
{
setSunColour(0.733, 0.746, 0.574);
var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"];
var tGrassPForest = "forestfloor_dirty";
var tGrassDForest = "desert_forestfloor_palms";
var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"];
var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"];
var tGrassB = "dirta";
var tGrassC = "medit_dirt_dry";
var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"];
var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"];
var tRoad = "desert_city_tile";
var tRoadWild = "desert_city_tile";
var tGrassPatch = "desert_dirt_rough";
var tShoreBlend = "desert_shore_stones";
var tShore = "dirta";
var tWater = "desert_sand_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall";
var oApple = "gaia/flora_tree_fig";
var oPine = "gaia/flora_tree_dead";
var oAleppoPine = "gaia/flora_tree_date_palm";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_camel";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_desert_small";
var oMetalLarge = "gaia/geology_metal_desert_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_desert_med.xml";
var aRockMedium = "actor|geology/stone_desert_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//alpine
else if (rt == 4)
{
var tGrass = ["alpine_dirt_grass_50"];
var tGrassPForest = "alpine_forrestfloor";
var tGrassDForest = "alpine_forrestfloor";
var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"];
var tGrassA = "alpine_grass_rocky";
var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"];
var tGrassC = ["alpine_snow_a", "alpine_snow_b"];
var tHill = "alpine_cliff_snow";
var tDirt = ["alpine_dirt", "alpine_grass_d"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "new_alpine_citytile";
var tGrassPatch = "new_alpine_grass_a";
var tShoreBlend = "alpine_shore_rocks";
var tShore = "alpine_shore_rocks_grass_50";
var tWater = "alpine_shore_rocks";
// gaia entities
var oOak = "gaia/flora_tree_pine";
var oOakLarge = "gaia/flora_tree_pine";
var oApple = "gaia/flora_tree_pine";
var oPine = "gaia/flora_tree_pine";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_goat";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_deer";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//medit
else if (rt == 5){
var tGrass = ["medit_grass_field_a", "medit_grass_field_b"];
var tGrassPForest = "medit_plants_dirt";
var tGrassDForest = "medit_grass_shrubs";
var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"];
var tGrassA = "medit_grass_field_b";
var tGrassB = "medit_grass_field_brown";
var tGrassC = "medit_grass_field_dry";
var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
var tDirt = ["medit_dirt", "medit_dirt_b"];
var tRoad = "medit_city_tile";
var tRoadWild = "medit_city_tile";
var tGrassPatch = "medit_grass_wild";
var tShoreBlend = "medit_sand";
var tShore = "sand_grass_25";
var tWater = "medit_sand_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_medit_fan_palm";
var oApple = "gaia/flora_tree_apple";
var oPine = "gaia/flora_tree_cypress";
var oAleppoPine = "gaia/flora_tree_aleppo_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_sheep";
var oStoneLarge = "gaia/geology_stonemine_medit_quarry";
var oStoneSmall = "gaia/geology_stone_mediterranean";
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_large.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
var aLillies = "actor|props/flora/pond_lillies_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_medit_me.xml";
var aBushSmall = "actor|props/flora/bush_medit_sm.xml";
// terrain + entity (for painting)
}
//savanah
else if (rt == 6)
{
var tGrass = ["savanna_grass_a", "savanna_grass_b"];
var tGrassPForest = "savanna_forestfloor_a";
var tGrassDForest = "savanna_forestfloor_b";
var tCliff = ["savanna_cliff_a", "savanna_cliff_b"];
var tGrassA = "savanna_shrubs_a";
var tGrassB = "savanna_dirt_rocks_b";
var tGrassC = "dirt_brown_e";
var tHill = ["savanna_grass_a", "savanna_grass_b"];
var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"];
var tRoad = "savanna_tile_a";
var tRoadWild = "savanna_tile_a";
var tGrassPatch = "savanna_grass_a";
var tShoreBlend = "savanna_riparian";
var tShore = "savanna_riparian_bank";
var tWater = "savanna_riparian_wet";
// gaia entities
var oOak = "gaia/flora_tree_baobab";
var oOakLarge = "gaia/flora_tree_baobab";
var oApple = "gaia/flora_tree_baobab";
var oPine = "gaia/flora_tree_baobab";
var oAleppoPine = "gaia/flora_tree_baobab";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var rts = randInt(1,4);
if (rts==1){
var oDeer = "gaia/fauna_wildebeest";
}
else if (rts==2)
{
var oDeer = "gaia/fauna_zebra";
}
else if (rts==3)
{
var oDeer = "gaia/fauna_giraffe";
}
else if (rts==4)
{
var oDeer = "gaia/fauna_elephant_african_bush";
}
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_savanna_small";
var oMetalLarge = "gaia/geology_metal_savanna_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_savanna.xml";
var aGrassShort = "actor|props/flora/grass_medit_field.xml";
var aRockLarge = "actor|geology/stone_savanna_med.xml";
var aRockMedium = "actor|geology/stone_savanna_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_dry_a.xml";
// terrain + entity (for painting)
}
else if (rt == 7){
var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"];
var tGrassPForest = "tropic_plants_c";
var tGrassDForest = "tropic_plants_c";
var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"];
var tGrassA = "tropic_grass_c";
var tGrassB = "tropic_grass_plants";
var tGrassC = "tropic_plants";
var tHill = ["tropic_cliff_grass"];
var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"];
var tRoad = "tropic_citytile_a";
var tRoadWild = "tropic_citytile_plants";
var tGrassPatch = "tropic_plants_b";
var tShoreBlend = "temp_mud_plants";
var tShore = "tropic_beach_dry";
var tWater = "tropic_beach_wet";
// gaia entities
var oOak = "gaia/flora_tree_poplar";
var oOakLarge = "gaia/flora_tree_poplar";
var oApple = "gaia/flora_tree_poplar";
var oPine = "gaia/flora_tree_cretan_date_palm_short";
var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_tiger";
var oStoneLarge = "gaia/geology_stonemine_tropic_quarry";
var oStoneSmall = "gaia/geology_stone_tropic_a";
var oMetalLarge = "gaia/geology_metal_tropic_slabs";
// decorative props
var aGrass = "actor|props/flora/plant_tropic_a.xml";
var aGrassShort = "actor|props/flora/plant_lg.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_b.xml";
var aLillies = "actor|props/flora/water_lillies.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/plant_tropic_large.xml";
var aBushSmall = "actor|props/flora/plant_tropic_large.xml";
// terrain + entity (for painting)
}
var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest];
var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
@ -444,27 +154,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -473,7 +164,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -58,28 +58,12 @@ for (var i=0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
} }
// Export map data // Export map data
ExportMap(); ExportMap();

View File

@ -113,27 +113,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -142,7 +123,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -1,48 +1,7 @@
RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmgen");
//TILE_CENTERED_HEIGHT_MAP = true; //TILE_CENTERED_HEIGHT_MAP = true;
function rndRiver(f, seed)
{
var rndRq = seed;
var rndRw = rndRq;
var rndRe = 0;
var rndRr = f-floor(f);
var rndRa = 0;
for (var rndRx=0; rndRx<=floor(f); rndRx++)
{
rndRw = 10*(rndRw-floor(rndRw));
}
if (rndRx%2==0)
{
var rndRs = -1;
}
else
{
var rndRs = 1;
}
rndRe = (floor(rndRw))%5;
if (rndRe==0)
{
rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5);
}
else if (rndRe==1)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7);
}
else if (rndRe==2)
{
rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8);
}
else if (rndRe==3)
{
rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8);
}
else if (rndRe==4)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7);
}
return rndRa;
}
const tCity = "medit_city_pavement"; const tCity = "medit_city_pavement";
const tCityPlaza = "medit_city_pavement"; const tCityPlaza = "medit_city_pavement";
@ -158,27 +117,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -187,7 +127,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -1,395 +1,49 @@
RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmgen");
//very important. DO NOT CHANGE ANYTHING. this is
//rndRiver is a fuction that creates random values useful for making the river jagged.
//it works the same as sin or cos function. the only difference is that it's period is 1 instead of 2*pi
//it needs the "seed" parameter to use it to make random curves that don't get broken.
//seed must be created using randFloat(). or else it won't work
function rndRiver(f, seed)
{
var rndRq = sqrt(seed);
var rndRw = rndRq;
var rndRe = 0;
var rndRr = f-floor(f);
var rndRa = 0;
for (var rndRx=0; rndRx<=floor(f); rndRx++)
{
rndRw = 10*(rndRw-floor(rndRw));
}
if (rndRx%2==0)
{
var rndRs = -1;
}
else
{
var rndRs = 1;
}
rndRe = (floor(rndRw))%5;
if (rndRe==0)
{
rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5);
}
else if (rndRe==1)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7);
}
else if (rndRe==2)
{
rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8);
}
else if (rndRe==3)
{
rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8);
}
else if (rndRe==4)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7);
}
return rndRa;
}
//random terrain textures //random terrain textures
var rt = randInt(1,7); var rt = randomizeBiome();
//temperate
if (rt == 1){ var tGrass = rBiomeT1();
var tGrass = ["temp_grass_long_b"]; var tGrassPForest = rBiomeT2();
var tGrassPForest = "temp_forestfloor_pine"; var tGrassDForest = rBiomeT3();
var tGrassDForest = "temp_plants_bog"; var tCliff = rBiomeT4();
var tCliff = ["temp_cliff_a", "temp_cliff_b"]; var tGrassA = rBiomeT5();
var tGrassA = "temp_grass_d"; var tGrassB = rBiomeT6();
var tGrassB = "temp_grass_c"; var tGrassC = rBiomeT7();
var tGrassC = "temp_grass_clovers_2"; var tHill = rBiomeT8();
var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tDirt = rBiomeT9();
var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tRoad = rBiomeT10();
var tRoad = "temp_road"; var tRoadWild = rBiomeT11();
var tRoadWild = "temp_road_overgrown"; var tGrassPatch = rBiomeT12();
var tGrassPatch = "temp_grass_plants"; var tShoreBlend = rBiomeT13();
var tShoreBlend = "temp_mud_plants"; var tShore = rBiomeT14();
var tShore = "sand_grass_25"; var tWater = rBiomeT15();
var tWater = "medit_sand_wet";
// gaia entities // gaia entities
var oOak = "gaia/flora_tree_oak"; var oOak = rBiomeE1();
var oOakLarge = "gaia/flora_tree_oak_large"; var oOakLarge = rBiomeE2();
var oApple = "gaia/flora_tree_apple"; var oApple = rBiomeE3();
var oPine = "gaia/flora_tree_pine"; var oPine = rBiomeE4();
var oAleppoPine = "gaia/flora_tree_aleppo_pine"; var oAleppoPine = rBiomeE5();
var oBerryBush = "gaia/flora_bush_berry"; var oBerryBush = rBiomeE6();
var oChicken = "gaia/fauna_chicken"; var oChicken = rBiomeE7();
var oDeer = "gaia/fauna_deer"; var oDeer = rBiomeE8();
var oFish = "gaia/fauna_fish"; var oFish = rBiomeE9();
var oSheep = "gaia/fauna_sheep"; var oSheep = rBiomeE10();
var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneLarge = rBiomeE11();
var oStoneSmall = "gaia/geology_stone_mediterranean"; var oStoneSmall = rBiomeE12();
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; var oMetalLarge = rBiomeE13();
// decorative props // decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; var aGrass = rBiomeA1();
var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aGrassShort = rBiomeA2();
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; var aReeds = rBiomeA3();
var aLillies = "actor|props/flora/water_lillies.xml"; var aLillies = rBiomeA4();
var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockLarge = rBiomeA5();
var aRockMedium = "actor|geology/stone_granite_med.xml"; var aRockMedium = rBiomeA6();
var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushMedium = rBiomeA7();
var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; var aBushSmall = rBiomeA8();
// terrain + entity (for painting)
}
//snowy
else if (rt == 2)
{
setSunColour(0.550, 0.601, 0.644); // a little darker
var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"];
var tGrassPForest = "polar_tundra_snow";
var tGrassDForest = "polar_tundra_snow";
var tCliff = ["polar_cliff_a", "polar_cliff_b"];
var tGrassA = "snow grass 2";
var tGrassB = "polar_snow_a";
var tGrassC = "polar_ice_snow";
var tHill = ["polar_snow_rocks", "polar_cliff_snow"];
var tDirt = ["polar_ice_b", "polar_ice_c"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "polar_ice_cracked";
var tGrassPatch = "snow grass 2";
var tShoreBlend = "polar_ice";
var tShore = "alpine_shore_rocks_icy";
var tWater = "alpine_shore_rocks";
// gaia entities
var oOak = "gaia/flora_tree_pine_w";
var oOakLarge = "gaia/flora_tree_pine_w";
var oApple = "gaia/flora_tree_pine_w";
var oPine = "gaia/flora_tree_pine_w";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_muskox";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_walrus";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aReeds = "actor|props/flora/reeds_pond_dry.xml";
var aLillies = "actor|geology/stone_granite_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//desert
else if (rt == 3)
{
setSunColour(0.733, 0.746, 0.574);
var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"];
var tGrassPForest = "forestfloor_dirty";
var tGrassDForest = "desert_forestfloor_palms";
var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"];
var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"];
var tGrassB = "dirta";
var tGrassC = "medit_dirt_dry";
var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"];
var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"];
var tRoad = "desert_city_tile";
var tRoadWild = "desert_city_tile";
var tGrassPatch = "desert_dirt_rough";
var tShoreBlend = "desert_shore_stones";
var tShore = "dirta";
var tWater = "desert_sand_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall";
var oApple = "gaia/flora_tree_fig";
var oPine = "gaia/flora_tree_dead";
var oAleppoPine = "gaia/flora_tree_date_palm";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_camel";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_desert_small";
var oMetalLarge = "gaia/geology_metal_desert_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
var aLillies = "actor|props/flora/reeds_pond_lush_b.xml";
var aRockLarge = "actor|geology/stone_desert_med.xml";
var aRockMedium = "actor|geology/stone_desert_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//alpine
else if (rt == 4)
{
var tGrass = ["alpine_dirt_grass_50"];
var tGrassPForest = "alpine_forrestfloor";
var tGrassDForest = "alpine_forrestfloor";
var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"];
var tGrassA = "alpine_grass_rocky";
var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"];
var tGrassC = ["alpine_snow_a", "alpine_snow_b"];
var tHill = "alpine_cliff_snow";
var tDirt = ["alpine_dirt", "alpine_grass_d"];
var tRoad = "new_alpine_citytile";
var tRoadWild = "new_alpine_citytile";
var tGrassPatch = "new_alpine_grass_a";
var tShoreBlend = "alpine_shore_rocks";
var tShore = "alpine_shore_rocks_grass_50";
var tWater = "alpine_shore_rocks";
// gaia entities
var oOak = "gaia/flora_tree_pine";
var oOakLarge = "gaia/flora_tree_pine";
var oApple = "gaia/flora_tree_pine";
var oPine = "gaia/flora_tree_pine";
var oAleppoPine = "gaia/flora_tree_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_goat";
var oFish = "gaia/fauna_fish_tuna";
var oSheep = "gaia/fauna_deer";
var oStoneLarge = "gaia/geology_stone_alpine_a";
var oStoneSmall = "gaia/geology_stone_alpine_a";
var oMetalLarge = "gaia/geology_metal_alpine";
// decorative props
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
var aReeds = "actor|props/flora/reeds_pond_dry.xml";
var aLillies = "actor|geology/stone_granite_large.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml";
// terrain + entity (for painting)
}
//medit
else if (rt == 5){
var tGrass = ["medit_grass_field_a", "medit_grass_field_b"];
var tGrassPForest = "medit_plants_dirt";
var tGrassDForest = "medit_grass_shrubs";
var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"];
var tGrassA = "medit_grass_field_b";
var tGrassB = "medit_grass_field_brown";
var tGrassC = "medit_grass_field_dry";
var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
var tDirt = ["medit_dirt", "medit_dirt_b"];
var tRoad = "medit_city_tile";
var tRoadWild = "medit_city_tile";
var tGrassPatch = "medit_grass_wild";
var tShoreBlend = "medit_sand";
var tShore = "medit_rocks";
var tWater = "medit_rocks_wet";
// gaia entities
var oOak = "gaia/flora_tree_cretan_date_palm_short";
var oOakLarge = "gaia/flora_tree_medit_fan_palm";
var oApple = "gaia/flora_tree_apple";
var oPine = "gaia/flora_tree_cypress";
var oAleppoPine = "gaia/flora_tree_aleppo_pine";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_sheep";
var oStoneLarge = "gaia/geology_stonemine_medit_quarry";
var oStoneSmall = "gaia/geology_stone_mediterranean";
var oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_soft_large_tall.xml";
var aGrassShort = "actor|props/flora/grass_soft_large.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_b.xml";
var aLillies = "actor|props/flora/water_lillies.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/bush_medit_me.xml";
var aBushSmall = "actor|props/flora/bush_medit_sm.xml";
// terrain + entity (for painting)
}
//savanah
else if (rt == 6)
{
var tGrass = ["savanna_grass_a", "savanna_grass_b"];
var tGrassPForest = "savanna_forestfloor_a";
var tGrassDForest = "savanna_forestfloor_b";
var tCliff = ["savanna_cliff_a", "savanna_cliff_b"];
var tGrassA = "savanna_shrubs_a";
var tGrassB = "savanna_dirt_rocks_b";
var tGrassC = "dirt_brown_e";
var tHill = ["savanna_grass_a", "savanna_grass_b"];
var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"];
var tRoad = "savanna_tile_a";
var tRoadWild = "savanna_tile_a";
var tGrassPatch = "savanna_grass_a";
var tShoreBlend = "savanna_riparian";
var tShore = "savanna_riparian_bank";
var tWater = "savanna_riparian_wet";
// gaia entities
var oOak = "gaia/flora_tree_baobab";
var oOakLarge = "gaia/flora_tree_baobab";
var oApple = "gaia/flora_tree_baobab";
var oPine = "gaia/flora_tree_baobab";
var oAleppoPine = "gaia/flora_tree_baobab";
var oBerryBush = "gaia/flora_bush_grapes";
var oChicken = "gaia/fauna_chicken";
var rts = randInt(1,4);
if (rts==1){
var oDeer = "gaia/fauna_wildebeest";
}
else if (rts==2)
{
var oDeer = "gaia/fauna_zebra";
}
else if (rts==3)
{
var oDeer = "gaia/fauna_giraffe";
}
else if (rts==4)
{
var oDeer = "gaia/fauna_elephant_african_bush";
}
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_gazelle";
var oStoneLarge = "gaia/geology_stonemine_desert_quarry";
var oStoneSmall = "gaia/geology_stone_savanna_small";
var oMetalLarge = "gaia/geology_metal_savanna_slabs";
// decorative props
var aGrass = "actor|props/flora/grass_savanna.xml";
var aGrassShort = "actor|props/flora/grass_medit_field.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
var aLillies = "actor|props/flora/reeds_pond_lush_b.xml";
var aRockLarge = "actor|geology/stone_savanna_med.xml";
var aRockMedium = "actor|geology/stone_savanna_med.xml";
var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml";
var aBushSmall = "actor|props/flora/bush_dry_a.xml";
// terrain + entity (for painting)
}
//tropic
else if (rt == 7){
var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"];
var tGrassPForest = "tropic_plants_c";
var tGrassDForest = "tropic_plants_c";
var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"];
var tGrassA = "tropic_grass_c";
var tGrassB = "tropic_grass_plants";
var tGrassC = "tropic_plants";
var tHill = ["tropic_cliff_grass"];
var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"];
var tRoad = "tropic_citytile_a";
var tRoadWild = "tropic_citytile_plants";
var tGrassPatch = "tropic_plants_b";
var tShoreBlend = "temp_mud_plants";
var tShore = "tropic_dirt_a_plants";
var tWater = "tropic_mud_a";
// gaia entities
var oOak = "gaia/flora_tree_poplar";
var oOakLarge = "gaia/flora_tree_poplar";
var oApple = "gaia/flora_tree_poplar";
var oPine = "gaia/flora_tree_cretan_date_palm_short";
var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall";
var oBerryBush = "gaia/flora_bush_berry";
var oChicken = "gaia/fauna_chicken";
var oDeer = "gaia/fauna_deer";
var oFish = "gaia/fauna_fish";
var oSheep = "gaia/fauna_tiger";
var oStoneLarge = "gaia/geology_stonemine_tropic_quarry";
var oStoneSmall = "gaia/geology_stone_tropic_a";
var oMetalLarge = "gaia/geology_metal_tropic_slabs";
// decorative props
var aGrass = "actor|props/flora/plant_tropic_a.xml";
var aGrassShort = "actor|props/flora/plant_lg.xml";
var aReeds = "actor|props/flora/reeds_pond_lush_b.xml";
var aLillies = "actor|props/flora/water_lillies.xml";
var aRockLarge = "actor|geology/stone_granite_large.xml";
var aRockMedium = "actor|geology/stone_granite_med.xml";
var aBushMedium = "actor|props/flora/plant_tropic_large.xml";
var aBushSmall = "actor|props/flora/plant_tropic_large.xml";
// terrain + entity (for painting)
}
var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest];
var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
@ -499,27 +153,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -528,7 +163,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );

View File

@ -31,16 +31,7 @@ function Map(size, baseHeight)
} }
// Create 2D array for heightmap // Create 2D array for heightmap
var mapSize; var mapSize = size+1;
if (TILE_CENTERED_HEIGHT_MAP)
{
mapSize = size;
}
else
{
mapSize = size+1;
}
this.height = new Array(mapSize); this.height = new Array(mapSize);
for (var i = 0; i < mapSize; i++) for (var i = 0; i < mapSize; i++)
{ {
@ -117,17 +108,10 @@ Map.prototype.validT = function(x, z)
} }
}; };
// Check bounds on height map if TILE_CENTERED_HEIGHT_MAP==false then this is (size + 1 by size + 1) otherwise (size, size) // Check bounds on height map (size + 1 by size + 1)
Map.prototype.validH = function(x, z) Map.prototype.validH = function(x, z)
{ {
if (TILE_CENTERED_HEIGHT_MAP) return x >= 0 && z >= 0 && x <= this.size && z <= this.size;
{
return x >= 0 && z >= 0 && x < this.size && z < this.size;
}
else
{
return x >= 0 && z >= 0 && x <= this.size && z <= this.size;
}
}; };
// Check bounds on tile class // Check bounds on tile class
@ -282,28 +266,6 @@ Map.prototype.getExactHeight = function(x, z)
return ( 1 - zf ) * ( ( 1 - xf ) * h00 + xf * h10 ) + zf * ( ( 1 - xf ) * h01 + xf * h11 ) ; return ( 1 - zf ) * ( ( 1 - xf ) * h00 + xf * h10 ) + zf * ( ( 1 - xf ) * h01 + xf * h11 ) ;
}; };
// Converts from the tile centered height map to the corner based height map, used when TILE_CENTERED_HEIGHT_MAP = true
Map.prototype.cornerHeight = function(x, z)
{
var count = 0;
var sumHeight = 0;
var dirs = [[-1,-1], [-1,0], [0,-1], [0,0]];
for each (var dir in dirs)
{
if (this.validH(x + dir[0], z + dir[1]))
{
count++;
sumHeight += this.height[x + dir[0]][z + dir[1]];
}
}
if (count == 0)
return 0;
return sumHeight / count;
};
Map.prototype.getMapData = function() Map.prototype.getMapData = function()
{ {
var data = {}; var data = {};
@ -343,15 +305,7 @@ Map.prototype.getMapData = function()
{ {
for (var z = 0; z < mapSize; z++) for (var z = 0; z < mapSize; z++)
{ {
var intHeight; var intHeight = Math.floor((this.height[x][z] + SEA_LEVEL) * HEIGHT_UNITS_PER_METRE);
if (TILE_CENTERED_HEIGHT_MAP)
{
intHeight = Math.floor((this.cornerHeight(x, z) + SEA_LEVEL) * HEIGHT_UNITS_PER_METRE);
}
else
{
intHeight = Math.floor((this.height[x][z] + SEA_LEVEL) * HEIGHT_UNITS_PER_METRE);
}
// Prevent under/overflow in terrain data // Prevent under/overflow in terrain data
if (intHeight > 0xFFFF) if (intHeight > 0xFFFF)

View File

@ -1,5 +1,3 @@
var TILE_CENTERED_HEIGHT_MAP = false;
var g_Map; var g_Map;
var g_Environment = { var g_Environment = {

View File

@ -0,0 +1 @@
///////////////////////////////////////////////////////////////////////////////////////// // passageMaker // // Function for creating shallow water between two given points by changing the heiight of all tiles in // the path with height less than or equal to "maxheight" to "height" // // x1,z1: Starting point of path // x2,z2: Ending point of path // width: Width of the shallow // maxheight: Maximum height that it changes // height: Height of the shallow // smooth: smooth elevation in borders // tileclass: (Optianal) - Adds those tiles to the class given // terrain: (Optional) - Changes the texture of the elevated land // ///////////////////////////////////////////////////////////////////////////////////////// function passageMaker(x1, z1, x2, z2, width, maxheight, height, smooth, tileclass, terrain) { var mapSize = g_Map.size; for (var ix = 0; ix < mapSize; ix++) { for (var iz = 0; iz < mapSize; iz++) { var a = z1-z2; var b = x2-x1; var c = (z1*(x1-x2))-(x1*(z1-z2)); var dis = abs(a*ix + b*iz + c)/sqrt(a*a + b*b); var k = (a*ix + b*iz + c)/(a*a + b*b); var my = iz-(b*k); var inline = 0; if (b == 0) { if ((iz <= Math.max(z1,z2))&&(Math.min(z1,z2))) { inline = 1; } } else { if ((my <= Math.max(z1,z2))&&(my >= Math.min(z1,z2))) { inline = 1; } } if ((dis <= width)&&(inline)) { if(g_Map.getHeight(ix, iz) <= maxheight) { if (dis >= width - smooth) { g_Map.setHeight(ix, iz, ((width - dis)*(height)+(g_Map.getHeight(ix, iz))*(dis + smooth - width))/(width - smooth)/2); } else { g_Map.setHeight(ix, iz, height); } if (tileclass !== null) { addToClass(ix, iz, tileclass); } if (terrain !== null) { placeTerrain(ix, iz, terrain); } } } } } } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //rndRiver is a fuction that creates random values useful for making a jagged river. // //it works the same as sin or cos function. the only difference is that it's period is 1 instead of 2*pi //it needs the "seed" parameter to use it to make random curves that don't get broken. //seed must be created using randFloat(). or else it won't work // // f: Input: Same as angle in a sine function // seed: Random Seed: Best to implement is to use randFloat() // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function rndRiver(f, seed) { var rndRq = seed; var rndRw = rndRq; var rndRe = 0; var rndRr = f-floor(f); var rndRa = 0; for (var rndRx=0; rndRx<=floor(f); rndRx++) { rndRw = 10*(rndRw-floor(rndRw)); } if (rndRx%2==0) { var rndRs = -1; } else { var rndRs = 1; } rndRe = (floor(rndRw))%5; if (rndRe==0) { rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5); } else if (rndRe==1) { rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7); } else if (rndRe==2) { rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8); } else if (rndRe==3) { rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8); } else if (rndRe==4) { rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7); } return rndRa; } ///////////////////////////////////////////////////////////////////////////////////////// // createStartingPlayerEntities // // Creates the starting player entities // fx&fz: position of player base // playerid: id of player // civEntities: use getStartingEntities(id-1) fo this one // BUILDING_ANGlE: angle of main base building // /////////////////////////////////////////////////////////////////////////////////////////// function createStartingPlayerEntities(fx, fz, playerid, civEntities, BUILDING_ANGlE) { var uDist = 6; var uSpace = 2; for (var j = 1; j < civEntities.length; ++j) { placeObject(fx, fz, civEntities[0].Template, playerid, BUILDING_ANGlE); var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); for (var numberofentities = 0; numberofentities < count; numberofentities++) { var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); placeObject(ux, uz, civEntities[j].Template, playerid, (j % 2 - 1) * PI + uAngle); } } }

View File

@ -0,0 +1,195 @@
/////////////////////////////////////////////////////////////////////////////////////////
// PathPlacer
//
// Class for creating a winding path between two points
//
// x1,z1: Starting point of path
// x2,z2: Ending point of path
// width: Width of the path
// a: Waviness - how wavy the path will be (higher is wavier, 0.0 is straight line)
// b: Smoothness - how smooth the path will be (higher is smoother)
// c: Offset - max amplitude of waves along the path (0.0 is straight line)
// taper: Tapering - how much the width of the path changes from start to end
// if positive, the width will decrease by that factor, if negative the width
// will increase by that factor
//
/////////////////////////////////////////////////////////////////////////////////////////
function PathPlacer(x1, z1, x2, z2, width, a, b, c, taper)
{
this.x1 = x1;
this.z1 = z1;
this.x2 = x2;
this.z2 = z2;
this.width = width;
this.a = a;
this.b = b;
this.c = c;
this.taper = taper;
}
PathPlacer.prototype.place = function(constraint)
{
// Preliminary bounds check
if (!g_Map.validT(this.x1, this.z1) || !constraint.allows(this.x1, this.z1) ||
!g_Map.validT(this.x2, this.z2) || !constraint.allows(this.x2, this.z2))
{
return undefined;
}
var dx = (this.x2 - this.x1);
var dz = (this.z2 - this.z1);
var dist = Math.sqrt(dx*dx + dz*dz);
dx /= dist;
dz /= dist;
var numSteps = 1 + Math.floor(dist/4 * this.a);
var numISteps = 1 + Math.floor(dist/4 * this.b);
var totalSteps = numSteps*numISteps;
var offset = 1 + Math.floor(dist/4 * this.c);
// Generate random offsets
var ctrlVals = new Float32Array(numSteps); //float32
for (var j = 1; j < (numSteps-1); ++j)
{
ctrlVals[j] = randFloat(-offset, offset);
}
// Interpolate for smoothed 1D noise
var noise = new Float32Array(totalSteps+1); //float32
for (var j = 0; j < numSteps; ++j)
{
// Cubic interpolation
var v0 = ctrlVals[(j+numSteps-1)%numSteps];
var v1 = ctrlVals[j];
var v2 = ctrlVals[(j+1)%numSteps];
var v3 = ctrlVals[(j+2)%numSteps];
var P = (v3 - v2) - (v0 - v1);
var Q = (v0 - v1) - P;
var R = v2 - v0;
var S = v1;
for (var k = 0; k < numISteps; ++k)
{
var t = k/numISteps;
noise[j*numISteps + k] = P*t*t*t + Q*t*t + R*t + S;
}
}
var halfWidth = 0.5 * this.width;
// Add smoothed noise to straight path
var segments1 = [];
var segments2 = [];
for (var j = 0; j < totalSteps; ++j)
{
// Interpolated points along straight path
var t = j/totalSteps;
var tx = this.x1 * (1.0 - t) + this.x2 * t;
var tz = this.z1 * (1.0 - t) + this.z2 * t;
var t2 = (j+1)/totalSteps;
var tx2 = this.x1 * (1.0 - t2) + this.x2 * t2;
var tz2 = this.z1 * (1.0 - t2) + this.z2 * t2;
// Find noise offset points
var nx = (tx - dz * noise[j]);
var nz = (tz + dx * noise[j]);
var nx2 = (tx2 - dz * noise[j+1]);
var nz2 = (tz2 + dx * noise[j+1]);
// Find slope of offset points
var ndx = (nx2 - nx);
var ndz = (nz2 - nz);
var dist = Math.sqrt(ndx*ndx + ndz*ndz);
ndx /= dist;
ndz /= dist;
var taperedWidth = (1.0 - t*this.taper) * halfWidth;
// Find slope of offset path
var px = Math.round(nx - ndz * -taperedWidth);
var pz = Math.round(nz + ndx * -taperedWidth);
segments1.push(new PointXZ(px, pz));
var px2 = Math.round(nx2 - ndz * taperedWidth);
var pz2 = Math.round(nz2 + ndx * taperedWidth);
segments2.push(new PointXZ(px2, pz2));
}
var retVec = [];
// Draw path segments
var num = segments1.length - 1;
for (var j = 0; j < num; ++j)
{
// Fill quad formed by these 4 points
// Note the code assumes these points have been rounded to integer values
var pt11 = segments1[j];
var pt12 = segments1[j+1];
var pt21 = segments2[j];
var pt22 = segments2[j+1];
var tris = [[pt12, pt11, pt21], [pt12, pt21, pt22]];
for (var t = 0; t < 2; ++t)
{
// Sort vertices by min z
var tri = tris[t].sort(
function(a, b)
{
return a.z - b.z;
}
);
// Fills in a line from (z, x1) to (z,x2)
var fillLine = function(z, x1, x2)
{
var left = Math.round(Math.min(x1, x2));
var right = Math.round(Math.max(x1, x2));
for (var x = left; x <= right; x++)
{
if (g_Map.validT(x, z) && constraint.allows(x, z))
{
retVec.push(new PointXZ(x, z));
}
}
}
var A = tri[0];
var B = tri[1];
var C = tri[2];
var dx1 = (B.z != A.z) ? ((B.x - A.x) / (B.z - A.z)) : 0;
var dx2 = (C.z != A.z) ? ((C.x - A.x) / (C.z - A.z)) : 0;
var dx3 = (C.z != B.z) ? ((C.x - B.x) / (C.z - B.z)) : 0;
if (A.z == B.z)
{
fillLine(A.z, A.x, B.x);
}
else
{
for (var z = A.z; z <= B.z; z++)
{
fillLine(z, A.x + dx1*(z - A.z), A.x + dx2*(z - A.z));
}
}
if (B.z == C.z)
{
fillLine(B.z, B.x, C.x);
}
else
{
for (var z = B.z + 1; z < C.z; z++)
{
fillLine(z, B.x + dx3*(z - B.z), A.x + dx2*(z - A.z));
}
}
}
}
return retVec;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,105 +1,71 @@
RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmgen");
function rndRiver(f, seed)
{
var rndRq = seed;
var rndRw = rndRq;
var rndRe = 0;
var rndRr = f-floor(f);
var rndRa = 0;
for (var rndRx=0; rndRx<=floor(f); rndRx++)
{
rndRw = 10*(rndRw-floor(rndRw));
}
if (rndRx%2==0)
{
var rndRs = -1;
}
else
{
var rndRs = 1;
}
rndRe = (floor(rndRw))%5;
if (rndRe==0)
{
rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5);
}
else if (rndRe==1)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7);
}
else if (rndRe==2)
{
rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8);
}
else if (rndRe==3)
{
rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8);
}
else if (rndRe==4)
{
rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7);
}
return rndRa;
}
const tCity = "desert_city_tile"; var tCity = "desert_city_tile";
const tCityPlaza = "desert_city_tile_plaza"; var tCityPlaza = "desert_city_tile_plaza";
const tSand = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; var tSand = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"];
const tDunes = "desert_sand_dunes_100"; var tDunes = "desert_sand_dunes_100";
const tFineSand = "desert_sand_smooth"; var tFineSand = "desert_sand_smooth";
const tCliff = ["desert_cliff_badlands", "desert_cliff_badlands_2"]; var tCliff = ["desert_cliff_badlands", "desert_cliff_badlands_2"];
const tForestFloor = "desert_forestfloor_palms"; var tForestFloor = "desert_forestfloor_palms";
const tGrass = "desert_dirt_rough_2"; var tGrass = "desert_dirt_rough_2";
const tGrassSand50 = "desert_sand_dunes_50"; var tGrassSand50 = "desert_sand_dunes_50";
const tGrassSand25 = "desert_dirt_rough"; var tGrassSand25 = "desert_dirt_rough";
const tDirt = "desert_dirt_rough"; var tDirt = "desert_dirt_rough";
const tDirtCracks = "desert_dirt_cracks"; var tDirtCracks = "desert_dirt_cracks";
const tShore = "desert_sand_wet"; var tShore = "desert_sand_wet";
const tLush = "desert_grass_a"; var tLush = "desert_grass_a";
const tSLush = "desert_grass_a_sand"; var tSLush = "desert_grass_a_sand";
const tSDry = "desert_plants_b"; var tSDry = "desert_plants_b";
// gaia entities // gaia entities
const oBerryBush = "gaia/flora_bush_berry"; var oBerryBush = "gaia/flora_bush_berry";
const oChicken = "gaia/fauna_chicken"; var oChicken = "gaia/fauna_chicken";
const oCamel = "gaia/fauna_camel"; var oCamel = "gaia/fauna_camel";
const oFish = "gaia/fauna_fish"; var oFish = "gaia/fauna_fish";
const oGazelle = "gaia/fauna_gazelle"; var oGazelle = "gaia/fauna_gazelle";
const oGiraffe = "gaia/fauna_giraffe"; var oGiraffe = "gaia/fauna_giraffe";
const oGoat = "gaia/fauna_goat"; var oGoat = "gaia/fauna_goat";
const oWildebeest = "gaia/fauna_wildebeest"; var oWildebeest = "gaia/fauna_wildebeest";
const oStoneLarge = "gaia/geology_stonemine_desert_badlands_quarry"; var oStoneLarge = "gaia/geology_stonemine_desert_badlands_quarry";
const oStoneSmall = "gaia/geology_stone_desert_small"; var oStoneSmall = "gaia/geology_stone_desert_small";
const oMetalLarge = "gaia/geology_metal_desert_slabs"; var oMetalLarge = "gaia/geology_metal_desert_slabs";
const oDatePalm = "gaia/flora_tree_date_palm"; var oDatePalm = "gaia/flora_tree_date_palm";
const oSDatePalm = "gaia/flora_tree_cretan_date_palm_short"; var oSDatePalm = "gaia/flora_tree_cretan_date_palm_short";
const eObelisk = "other/obelisk"; var eObelisk = "other/obelisk";
const ePyramid = "other/pyramid_minor"; var ePyramid = "other/pyramid_minor";
const oWood = "gaia/special_treasure_wood"; var oWood = "gaia/special_treasure_wood";
const oFood = "gaia/special_treasure_food_bin"; var oFood = "gaia/special_treasure_food_bin";
// decorative props // decorative props
const aBush1 = "actor|props/flora/bush_desert_a.xml"; var aBush1 = "actor|props/flora/bush_desert_a.xml";
const aBush2 = "actor|props/flora/bush_desert_dry_a.xml"; var aBush2 = "actor|props/flora/bush_desert_dry_a.xml";
const aBush3 = "actor|props/flora/bush_medit_sm_dry.xml"; var aBush3 = "actor|props/flora/bush_medit_sm_dry.xml";
const aBush4 = "actor|props/flora/plant_desert_a.xml"; var aBush4 = "actor|props/flora/plant_desert_a.xml";
const aBushes = [aBush1, aBush2, aBush3, aBush4]; var aBushes = [aBush1, aBush2, aBush3, aBush4];
const aDecorativeRock = "actor|geology/stone_desert_med.xml"; var aDecorativeRock = "actor|geology/stone_desert_med.xml";
const aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; var aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
const aLillies = "actor|props/flora/water_lillies.xml"; var aLillies = "actor|props/flora/water_lillies.xml";
// terrain + entity (for painting) // terrain + entity (for painting)
var pForest = [tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor]; var pForest = [tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor];
var pForestOasis = [tGrass + TERRAIN_SEPARATOR + oDatePalm, tGrass + TERRAIN_SEPARATOR + oSDatePalm, tGrass]; var pForestOasis = [tGrass + TERRAIN_SEPARATOR + oDatePalm, tGrass + TERRAIN_SEPARATOR + oSDatePalm, tGrass];
const BUILDING_ANGlE = 0.75*PI; var BUILDING_ANGlE = 0.75*PI;
log("Initializing map..."); log("Initializing map...");
InitMap(); InitMap();
var numPlayers = getNumPlayers();
var mapSize = getMapSize(); var mapSize = getMapSize();
if (mapSize < 256)
{
var aPlants = "actor|props/flora/grass_tropical.xml";
}
else
{
var aPlants = "actor|props/flora/grass_tropic_field_tall.xml";
}
var numPlayers = getNumPlayers();
var mapArea = mapSize*mapSize; var mapArea = mapSize*mapSize;
// create tile classes // create tile classes
@ -181,27 +147,8 @@ for (var i = 0; i < numPlayers; i++)
// get civ specific starting entities // get civ specific starting entities
var civEntities = getStartingEntities(id-1); var civEntities = getStartingEntities(id-1);
// create the TC
var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle)
[new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)],
true, null, ix, iz
);
createObjectGroup(group, id);
// create starting units // create starting units
var uDist = 6; createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE)
var uSpace = 2;
for (var j = 1; j < civEntities.length; ++j)
{
var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2;
var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1);
for (var numberofentities = 0; numberofentities < count; numberofentities++)
{
var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2));
var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2));
placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle);
}
}
// create animals // create animals
for (var j = 0; j < 2; ++j) for (var j = 0; j < 2; ++j)
@ -210,7 +157,7 @@ for (var i = 0; i < numPlayers; i++)
var aDist = 7; var aDist = 7;
var aX = round(fx + aDist * cos(aAngle)); var aX = round(fx + aDist * cos(aAngle));
var aZ = round(fz + aDist * sin(aAngle)); var aZ = round(fz + aDist * sin(aAngle));
group = new SimpleGroup( var group = new SimpleGroup(
[new SimpleObject(oChicken, 5,5, 0,3)], [new SimpleObject(oChicken, 5,5, 0,3)],
true, clBaseResource, aX, aZ true, clBaseResource, aX, aZ
); );
@ -292,6 +239,8 @@ var theta = randFloat(0, 1);
var seed = randFloat(2,3); var seed = randFloat(2,3);
var theta2 = randFloat(0, 1); var theta2 = randFloat(0, 1);
var seed2 = randFloat(2,3); var seed2 = randFloat(2,3);
var rifp = 0;
var rifp2 = 0;
for (ix = 0; ix < mapSize; ix++) for (ix = 0; ix < mapSize; ix++)
{ {
for (iz = 0; iz < mapSize; iz++) for (iz = 0; iz < mapSize; iz++)
@ -317,12 +266,29 @@ for (ix = 0; ix < mapSize; ix++)
{ {
if (xk < cu+((1.05-WATER_WIDTH)/2)) if (xk < cu+((1.05-WATER_WIDTH)/2))
{ {
h = -3 + 200.0* abs(cu+((1.05-WATER_WIDTH)/2-xk)); h = -3 + 200.0* abs(cu+((1.05-WATER_WIDTH)/2-xk));
if ((h < 0.1)&&(h>-0.2))
{
if (rifp%2 == 0)
{
rifp = 0;
placeObject(ix, iz, aPlants, 0, randFloat(0,TWO_PI));
}
++rifp;
}
} }
else if (xk > (cu+(0.95+WATER_WIDTH)/2)) else if (xk > (cu+(0.95+WATER_WIDTH)/2))
{ {
h = -3 + 200.0*(xk-(cu+((0.95+WATER_WIDTH)/2))); h = -3 + 200.0*(xk-(cu+((0.95+WATER_WIDTH)/2)));
if ((h < 0.1)&&(h>-0.2))
{
if (rifp2%2 == 0)
{
rifp2 = 0;
placeObject(ix, iz, aPlants, 0, randFloat(0,TWO_PI));
}
++rifp2;
}
} }
else else
{ {
@ -643,12 +609,12 @@ createObjectGroups(
// Set environment // Set environment
setSkySet("sunny"); setSkySet("sunny");
setSunColour(0.873, 0.846, 0.674); setSunColour(0.711, 0.746, 0.574);
setWaterColour(0.312, 0.562, 0.652); setWaterColour(0.292, 0.347, 0.691);
setWaterTint(0.412, 0.212, 0.212); setWaterTint(0.550, 0.543, 0.437);
setWaterReflectionTint(0.447, 0.202, 0.222); setWaterReflectionTint(0.562, 0.511, 0.425);
setWaterMurkiness(1.0); setWaterMurkiness(0.83);
setWaterReflectionTintStrength(0.677); setWaterReflectionTintStrength(0.377);
// Export map data // Export map data
ExportMap(); ExportMap();