include "mercenaries.xs"; include "ypAsianInclude.xs"; include "ypKOTHInclude.xs"; /*--------------------------------------------------------Define Global Variables--------------------------------------------*/ //civs string ottoman = "Ottomans"; string portugal = "Portuguese"; string spain = "Spanish"; string brittain = "British"; string dutch = "Dutch"; string russia = "Russians"; string germany = "Germans"; string france = "French"; string iroqs = "XPIroquois"; string aztec = "XPAztec"; string sioux = "XPSioux"; string japan = "Japanese"; string china = "Chinese"; string india = "Indians"; //buildings string paddy = "ypRicePaddy"; //units string settlerWagon = "SettlerWagon"; string nillaVill = "Settler"; string franceVill = "Coureur"; string twcVill = "SettlerNative"; string tadVill = "ypSettlerAsian"; //distance variables //...functions int getExpansionCulture(int playerID = 0) { if(rmGetPlayerCiv(playerID) == rmGetCivID(iroqs) || rmGetPlayerCiv(playerID) == rmGetCivID(aztec) || rmGetPlayerCiv(playerID) == rmGetCivID(sioux)) return (1); if(rmGetPlayerCiv(playerID) == rmGetCivID(japan) || rmGetPlayerCiv(playerID) == rmGetCivID(china) || rmGetPlayerCiv(playerID) == rmGetCivID(india)) return (2); return (0); } int calculateXP(int playerID = 0) { //paddyxp 80, villxp = 10, frenchvillxp = 12; //houseXp = 15, church = 20 market 20, consulate 50, village = 40 //firepit 20, sacredfield = 20; mill = 80, plant = 160; //capitol = 80, pen = 50, settlerWagon = 20;, bankXP = 70; //arsenal = 50, manor = 27; int amountPaddies = 0; int amountPlants = 0; int amountMills = 0; int amountHouses = 20; int amountVills = 0; int baseXP = 0; int amountXP = 0; int houseXP = 15; int villXP = 10; if((getExpansionCulture(playerID)) == 1) { baseXP = 20 + 20; if(rmGetPlayerCiv(playerID) == rmGetCivID(iroqs)) { //TODO } else if(rmGetPlayerCiv(playerID) == rmGetCivID(aztec)) { amountVills = 84; amountMills = 6; amountPlants = 4; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(sioux)) { amountVills = 93; amountHouses = 0; amountMills = 6; amountPlants = 5; } } else if((getExpansionCulture(playerID)) == 0) { amountHouses = 20; baseXP = 20 + 50 + 80 + 20; if(rmGetPlayerCiv(playerID) == rmGetCivID(germany)) { baseXP = baseXP + (10 * 20); // 10 spawned sws amountVills = 95; amountMills = 4; amountPlants = 12; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(france)) { villXP = 12; amountVills = 72; amountMills = 8; amountPlants = 3; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(brittain)) { houseXP = 27; amountVills = 94; amountMills = 3; amountPlants = 11; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(dutch)) { baseXP = baseXP + (10 * 110); amountVills = 55; amountMills = 6; amountPlants = 4; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(ottoman)) { amountVills = 0; amountMills = 7; amountPlants = 6; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(spain)) { amountVills = 83; amountMills = 7; amountPlants = 6; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(portugal)) { amountVills = 87; amountMills = 6; amountPlants = 6; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(russia)) { amountVills = 93; amountMills = 6; amountPlants = 6; } } else { baseXP = baseXP + 20 + 20 + 50; if(rmGetPlayerCiv(playerID) == rmGetCivID(india)) { baseXP = baseXP + 20 + 20; amountVills = 92; amountPaddies = 9; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(japan)) { houseXP = 25; amountVills = 69; amountPaddies = 7; } else if(rmGetPlayerCiv(playerID) == rmGetCivID(china)) { amountHouses = 6; houseXP = 40; amountVills = 83; amountPaddies = 9; } } amountXP = baseXP + (amountHouses * houseXP) + (amountVills * villXP) + (amountMills * 80) + (amountPlants * 160) + (amountPaddies * 80); return (amountXP); } void spawnLivestock(int amount = 0, int buildingID = 0, int playerID = 0, bool isSheep = false, bool left = false, bool isHouse = false) { int i = playerID; vector buildingV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(buildingID, playerID)); int zDifference = 5; int xDifference = 1; int xDistance = 4; int livestockID = -1; int xRow = 0; int zMult = 1; string extra = ""; if(rmXMetersToFraction(xsVectorGetX(buildingV)) > 0.5) { xDifference = xDifference * -1; xDistance = -1; } int amountX = amount / 2; int amountZ = amount - amountX; if(amount < 5) { amountZ = amount; amountX = 0; } string livestockS = ""; if(isSheep == true) livestockS = "Sheep"; else livestockS = "Cow"; if(isHouse == true) zDifference = 5; else zDifference = 9; if(left == false) { zDifference = zDifference * (-1); zMult = -1; extra = "right"; } else extra = "left"; for(j = 0; < amountX) { livestockID = rmCreateObjectDef("livestock"+ "" + buildingID + j + extra); rmAddObjectDefItem(livestockID, livestockS, 1, 0.0); rmPlaceObjectDefAtLoc(livestockID, i, rmXMetersToFraction(xsVectorGetX(buildingV) - (j * 2 * xDifference) + xDistance), rmZMetersToFraction(xsVectorGetZ(buildingV) + zDifference + (zMult * 2))); } //xDistance = 12; for(k = 0; < amountZ) { livestockID = rmCreateObjectDef(buildingID + "" + extra + "livestock"+ "" + k); rmAddObjectDefItem(livestockID, livestockS, 1, 0.0); rmPlaceObjectDefAtLoc(livestockID, i, rmXMetersToFraction(xsVectorGetX(buildingV) - (k * 2 * xDifference) + xDistance), rmZMetersToFraction(xsVectorGetZ(buildingV) + zDifference)); } } void spawnVills(int amount = 0, int buildingID = 0, int playerID = 0, int villType = 0, int buildingType = 0) { vector buildingV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(buildingID, playerID)); int xDifference = -8; int zDifference = 6; //nilla mill if(buildingType == 0) { xDifference = -6; zDifference = 6; } //nilla plant else if(buildingType == 1) { xDifference = -6; zDifference = 6; } //rice paddy else if(buildingType == 2) { xDifference = -6; zDifference = 6; } //twc farm else if(buildingType == 3) { xDifference = -8; zDifference = 6; } //twc plant else if(buildingType == 4) { xDifference = -8; zDifference = 6; } int row = 0; int xRow = 0; int zRow = 0; int xVills = amount / 2; int zVills = amount - xVills; string villT = ""; if(villType == 0) villT = nillaVill; else if(villType == 1) villT = twcVill; else if(villType == 2) villT = tadVill; else if(villType == 3) villT = franceVill; else if(villType == 4) villT = settlerWagon; if(rmGetPlayerCiv(playerID) == rmGetCivID(japan)) villT = "ypSettlerJapanese"; else if(rmGetPlayerCiv(playerID) == rmGetCivID(india)) villT = "ypSettlerIndian"; int villID = -1; //farm spawn if(villType == 1 && buildingType == 3) { zDifference = -6; xDifference = -6; if(rmXMetersToFraction(xsVectorGetX(buildingV)) > 0.5) xDifference = xDifference * -1; for(j = 0; < xVills) { villID = rmCreateObjectDef("villSpawningX" + buildingID + j); rmAddObjectDefItem(villID, villT, 1, 0.0); rmPlaceObjectDefAtLoc(villID, playerID, rmXMetersToFraction(xsVectorGetX(buildingV) + xDifference), rmZMetersToFraction(xsVectorGetZ(buildingV) + zDifference + (j * 2))); } xDifference = -8; if(rmXMetersToFraction(xsVectorGetX(buildingV)) > 0.5) xDifference = xDifference * -1; for(j = 0; < zVills) { villID = rmCreateObjectDef("villSpawningZ" + buildingID + j); rmAddObjectDefItem(villID, villT, 1, 0.0); rmPlaceObjectDefAtLoc(villID, playerID, rmXMetersToFraction(xsVectorGetX(buildingV) + xDifference), rmZMetersToFraction(xsVectorGetZ(buildingV) + zDifference + (j * 2))); } } else { //place vills along x-line for(j = 0; < xVills) { villID = rmCreateObjectDef("villSpawningX" + buildingID + j); rmAddObjectDefItem(villID, villT, 1, 0.0); xRow++; rmPlaceObjectDefAtLoc(villID, playerID, rmXMetersToFraction(xsVectorGetX(buildingV) + (xDifference + (xRow * 2))), rmZMetersToFraction(xsVectorGetZ(buildingV) + zDifference)); } //place vills along z-line for(k = 0; < zVills) { villID = rmCreateObjectDef("villSpawningZ" + buildingID + k); rmAddObjectDefItem(villID, villT, 1, 0.0); zRow--; rmPlaceObjectDefAtLoc(villID, playerID, rmXMetersToFraction(xsVectorGetX(buildingV) + xDifference), rmZMetersToFraction(xsVectorGetZ(buildingV) + zDifference + (zRow * 2))); } } } void generateBritCiv(int playerID = 0, int startID = 0, bool revert = false) { int i = playerID; vector TCLoc = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)); string placeholder1 = "Mill"; string placeholder2 = "Plantation"; int zDifference = 17; int xDifference = 16; int xRow = 1; int extraSpace = 0; int xMult = -1; int modulo = 4; int amountMills = 3; int amountPlants = 11; int villAmount = 94; int differenceAmount = villAmount; if(rmXMetersToFraction(xsVectorGetX(TCLoc)) > 0.5) { xMult = 1; xDifference = xDifference * -1; } if(revert == true) { //swap... int swap = amountMills; amountMills = amountPlants; amountPlants = swap; string placeholder3 = placeholder2; placeholder2 = placeholder1; placeholder1 = placeholder3; } int startResourceBuildingIDP = -1; for(k = 0; < amountPlants ) { startResourceBuildingIDP = rmCreateObjectDef("starting resource building plant" + i + " " + k); rmAddObjectDefItem(startResourceBuildingIDP, placeholder2, 1, 0.0); rmAddObjectDefToClass(startResourceBuildingIDP, rmClassID("classBuildings")); rmSetObjectDefMinDistance(startResourceBuildingIDP, 0.0); rmSetObjectDefMaxDistance(startResourceBuildingIDP, 0.0); if(k%modulo == 0) { zDifference = 16; } else if(k%modulo == 1 ) { if(k == 5) zDifference = -18; else zDifference = 0; } else if(k%modulo == 2) { zDifference = -18; } else if(k%modulo == 3) { zDifference = -34; } if(k == 4) { xRow++; } else if(k == 6) { xRow++; } else if(k == 7) { extraSpace = 0; // cows } else if(k == 9) { extraSpace = 5; //sheep } else extraSpace = 0; rmPlaceObjectDefAtLoc(startResourceBuildingIDP, i, rmXMetersToFraction(xsVectorGetX(TCLoc) - (xDifference * xRow) + extraSpace * xMult), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 5 + (zDifference))); if(k == 5) { //void spawnLivestock(bool isSheep left isHouse) spawnLivestock(15, startResourceBuildingIDP, i, true, true, false); spawnLivestock(10, startResourceBuildingIDP, i, false, false, false); } if(k == 4) spawnLivestock(15, startResourceBuildingIDP, i, true, false, false); if((differenceAmount / 8) >= 1) { differenceAmount = differenceAmount - 8; spawnVills(8, startResourceBuildingIDP, i, 0, 1); } else { spawnVills(differenceAmount, startResourceBuildingIDP, i, 0, 1); differenceAmount = 0; } } for(j = 1; <= amountMills) { int startResourceBuildingID = rmCreateObjectDef("starting resource building" + i + " " + j); rmAddObjectDefItem(startResourceBuildingID, placeholder1, 1, 0.0); rmAddObjectDefToClass(startResourceBuildingID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(startResourceBuildingID, 0.0); rmSetObjectDefMaxDistance(startResourceBuildingID, 0.0); rmPlaceObjectDefAtLoc(startResourceBuildingID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) - (xDifference * j)), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 5 - 53)); if(j == 2) spawnLivestock(10, startResourceBuildingID, i, false, true, false); if((differenceAmount / 8) >= 1) { differenceAmount = differenceAmount - 8; spawnVills(8, startResourceBuildingID, i, 0, 1); } else { spawnVills(differenceAmount, startResourceBuildingID, i, 0, 1); differenceAmount = 0; } } } void generateTwcCiv(int playerID = 0, int startID = 0, int amountMills = 0, int amountPlants = 0, bool revert = false) { string placeholder1 = "Farm"; string placeholder2 = "Plantation"; int i = playerID; int modulo = 3; int villAmount = -1; int differenceAmount = -1; if(rmGetPlayerCiv(i) == rmGetCivID(sioux)) villAmount = 93; else if(rmGetPlayerCiv(i) == rmGetCivID(aztec)) villAmount = 84; differenceAmount = villAmount; if(revert == true) { //swap... int x = amountMills; amountMills = amountPlants; amountPlants = x; string placeholder3 = placeholder2; placeholder2 = placeholder1; placeholder1 = placeholder3; } vector millV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)); vector firstMillV = millV; int zDifference = 16; int xDifference = 16; int extraPlace = 0; int xRow = 0; bool firstIteration = true; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) xDifference = xDifference * -1; for(j=0 ; < amountMills) { int startResourceBuildingID = rmCreateObjectDef("starting resource building" + i + j); rmAddObjectDefItem(startResourceBuildingID, placeholder1, 1, 0.0); rmAddObjectDefToClass(startResourceBuildingID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(startResourceBuildingID, 0.0); rmSetObjectDefMaxDistance(startResourceBuildingID, 1.0); if(firstIteration) { rmPlaceObjectDefAtLoc(startResourceBuildingID, i, rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))) - xDifference), rmZMetersToFraction(xsVectorGetZ(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))))); firstIteration = false; firstMillV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startResourceBuildingID, i)); } else { if(j%modulo == 1) zDifference = 16; else if(j%modulo == 2) zDifference = -16; else if(modulo == 4 && (j%modulo == 3)) zDifference = -32; else zDifference = 0; if(j < modulo) xRow = 0; else if (j < modulo * 2) xRow = 1; else xRow = 2; rmPlaceObjectDefAtLoc(startResourceBuildingID, i, rmXMetersToFraction(xsVectorGetX(firstMillV) - (xDifference * xRow)), rmZMetersToFraction(xsVectorGetZ(firstMillV) - zDifference)); } millV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startResourceBuildingID, i)); if((differenceAmount / 10) >= 1) { differenceAmount = differenceAmount - 10; spawnVills(10, startResourceBuildingID, i, 1, 3); } else { spawnVills(differenceAmount, startResourceBuildingID, i, 1, 3); differenceAmount = 0; } } int zDifferenceP = 2; zDifference = 16; xDifference = 16; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) xDifference = xDifference * -1; for(k = 0 ; < amountPlants) { int startResourceBuildingIDP = rmCreateObjectDef("starting resource building plant" + i + k); rmAddObjectDefItem(startResourceBuildingIDP, placeholder2, 1, 0.0); rmAddObjectDefToClass(startResourceBuildingIDP, rmClassID("classBuildings")); rmSetObjectDefMinDistance(startResourceBuildingIDP, 0.0); rmSetObjectDefMaxDistance(startResourceBuildingIDP, 1.0); if(modulo == 3) { if(k%2 == 1 && zDifference > 0) { zDifference = zDifference * -1; } else if(k%2 == 0 && zDifference < 0) { zDifference = zDifference * -1; } if(k > 5) zDifferenceP = 3; } else { zDifference = -16; if(k > 2) zDifferenceP = 3; } if(k%3 == 0) xRow = 1; else if(k%3 == 1) xRow = 2; else xRow = 3; rmPlaceObjectDefAtLoc(startResourceBuildingIDP, i, rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))) - (xDifference * xRow)), rmZMetersToFraction(xsVectorGetZ(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))) + (zDifferenceP * zDifference))); if((differenceAmount / 8) >= 1) { differenceAmount = differenceAmount - 8; spawnVills(8, startResourceBuildingIDP, i, 1, 1); } else { spawnVills(differenceAmount, startResourceBuildingIDP, i, 1, 1); differenceAmount = 0; } } } void generateNillaCiv(int playerID = 0, int startID = 0, int amountMills = 0, int amountPlants = 0, bool revert = false) { string placeholder1 = "Mill"; string placeholder2 = "Plantation"; int i = playerID; int villType = -1; int villAmount = -1; int differenceAmount = -1; int swVillAmount = 10; int differenceSwAmount = swVillAmount; if(rmGetPlayerCiv(i) == rmGetCivID(france)) { villType = 3; } else villType = 0; if(rmGetPlayerCiv(i) == rmGetCivID(france)) villAmount = 72; else if(rmGetPlayerCiv(i) == rmGetCivID(ottoman)) villAmount = 83; else if(rmGetPlayerCiv(i) == rmGetCivID(germany)) villAmount = 95; else if(rmGetPlayerCiv(i) == rmGetCivID(portugal)) villAmount = 87; else if(rmGetPlayerCiv(i) == rmGetCivID(spain)) villAmount = 91; else if(rmGetPlayerCiv(i) == rmGetCivID(dutch)) villAmount = 55; else if(rmGetPlayerCiv(i) == rmGetCivID(russia)) villAmount = 93; else villAmount = 90; differenceAmount = villAmount; int extraPlace = 0; if(revert == true) { //swap... int x = amountMills; amountMills = amountPlants; amountPlants = x; string placeholder3 = placeholder2; placeholder2 = placeholder1; placeholder1 = placeholder3; } vector millV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)); vector firstMillV = millV; int zDifference = 16; int xDifference = 16; int xRow = 0; int modulo = 3; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) xDifference = xDifference * -1; bool firstIteration = true; if(amountMills > 9) { extraPlace = 1; modulo = 4; } //mill for(j=0 ; < amountMills) { int startResourceBuildingID = rmCreateObjectDef("starting resource building" + i + j); rmAddObjectDefItem(startResourceBuildingID, placeholder1, 1, 0.0); rmAddObjectDefToClass(startResourceBuildingID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(startResourceBuildingID, 0.0); rmSetObjectDefMaxDistance(startResourceBuildingID, 1.0); if(firstIteration) { rmPlaceObjectDefAtLoc(startResourceBuildingID, i, rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))) - xDifference), rmZMetersToFraction(xsVectorGetZ(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))))); firstIteration = false; firstMillV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startResourceBuildingID, i)); } else { if(j%modulo == 1) zDifference = 16; else if(j%modulo == 2) zDifference = -16; else if(modulo == 4 && (j%modulo == 3)) zDifference = -32; else zDifference = 0; if(j < modulo) xRow = 0; else if (j < modulo * 2) xRow = 1; else xRow = 2; rmPlaceObjectDefAtLoc(startResourceBuildingID, i, rmXMetersToFraction(xsVectorGetX(firstMillV) - (xDifference * xRow)), rmZMetersToFraction(xsVectorGetZ(firstMillV) - zDifference)); } millV = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startResourceBuildingID, i)); if(rmGetPlayerCiv(i) == rmGetCivID(germany)) { if((differenceAmount / 9) >= 1) { differenceAmount = differenceAmount - 9; spawnVills(9, startResourceBuildingID, i, villType, 0); } else { spawnVills(differenceAmount, startResourceBuildingID, i, villType, 0); differenceAmount = 0; } } else { if((differenceAmount / 8) >= 1) { differenceAmount = differenceAmount - 8; spawnVills(8, startResourceBuildingID, i, villType, 0); } else { spawnVills(differenceAmount, startResourceBuildingID, i, villType, 0); differenceAmount = 0; } } } //plantation int zDifferenceP = 2; zDifference = 16; xDifference = 16; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) xDifference = xDifference * -1; for(k = 0 ; < amountPlants) { int startResourceBuildingIDP = rmCreateObjectDef("starting resource building plant" + i + k); rmAddObjectDefItem(startResourceBuildingIDP, placeholder2, 1, 0.0); rmAddObjectDefToClass(startResourceBuildingIDP, rmClassID("classBuildings")); rmSetObjectDefMinDistance(startResourceBuildingIDP, 0.0); rmSetObjectDefMaxDistance(startResourceBuildingIDP, 1.0); if(modulo == 3) { if(k%2 == 1 && zDifference > 0) { zDifference = zDifference * -1; } else if(k%2 == 0 && zDifference < 0) { zDifference = zDifference * -1; } if(k > 5) zDifferenceP = 3; } else { zDifference = -16; if(k > 2) zDifferenceP = 3; } if(k%3 == 0) xRow = 1; else if(k%3 == 1) xRow = 2; else xRow = 3; rmPlaceObjectDefAtLoc(startResourceBuildingIDP, i, rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))) - (xDifference * xRow)), rmZMetersToFraction(xsVectorGetZ(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i))) + (zDifferenceP * zDifference))); if(rmGetPlayerCiv(i) == rmGetCivID(germany)) { if((differenceSwAmount / 4) >= 1) { differenceSwAmount = differenceSwAmount - 4; spawnVills(4, startResourceBuildingIDP, i, 4, 1); } else { spawnVills(differenceSwAmount, startResourceBuildingIDP, i, 4, 1); differenceSwAmount = 0; } } else { if((differenceAmount / 8) >= 1) { differenceAmount = differenceAmount - 8; spawnVills(8, startResourceBuildingIDP, i, villType, 1); } else { spawnVills(differenceAmount, startResourceBuildingIDP, i, villType, 1); differenceAmount = 0; } } } } void generateTadCiv(int playerID = 0, int startID = 0, int amountPaddies = 0) { int i = playerID; int xDifference = 13; int zDifference = 12; int xRow = 1; int villAmount = -1; if(rmGetPlayerCiv(i) == rmGetCivID(china)) villAmount = 83; else if(rmGetPlayerCiv(i) == rmGetCivID(japan)) villAmount = 69; else { villAmount = 92; amountPaddies = amountPaddies + 3; } int differenceAmount = villAmount; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) xDifference = xDifference * (-1); vector TCLoc = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)); for(j = 0; < amountPaddies) { int startResourceBuildingID = rmCreateObjectDef("starting paddy building" + i + j); rmAddObjectDefItem(startResourceBuildingID, paddy, 1, 0.0); rmAddObjectDefToClass(startResourceBuildingID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(startResourceBuildingID, 0.0); rmSetObjectDefMaxDistance(startResourceBuildingID, 1.0); if(j%3 == 0) zDifference = 16; else if(j%3 == 1) zDifference = -16; else zDifference = 0; if((rmGetPlayerCiv(i) == rmGetCivID(india)) && (j == 5 || j == 9 || j == 10)) continue; if(j < 3) xRow = 1; else if(j < 6 && j > 2) xRow = 2; else if(j < 9 && j > 5) xRow = 3; else if(j >= 9 ) xRow = 4; rmPlaceObjectDefAtLoc(startResourceBuildingID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) - (xDifference * xRow)), rmZMetersToFraction(xsVectorGetZ(TCLoc) + zDifference)); if((differenceAmount / 10) >= 1) { differenceAmount = differenceAmount - 10; //int amount = 0, int buildingID = 0, int playerID = 0, int villType = 0, int buildingType = 0 spawnVills(10, startResourceBuildingID, i, 2, 2); } else { spawnVills(differenceAmount, startResourceBuildingID, i, 2, 2); differenceAmount = 0; } } } void generateCiv(int playerID = 0, int startID = 0, int amountMills = 0, int amountPlants = 0, bool revert = false, string civ = "") { int i = playerID; vector TCLoc = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)); int x = 20; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) x = -20; string house = "House"; string houseAztec = "HouseAztec"; string houseIroq = "LongHouse"; string houseMed = "HouseMed"; // otto/spain/port string houseEast = "HouseEast"; // russian/german string houseWest = "House"; //dutch, france string church = "Church"; string market = "Market"; string firepit = "Firepit"; string settlerStr = "Settler"; string consulate = ""; string bank = "Bank"; int firepitID = -1; int capitolID = -1; int arsenalID = -1; int churchID = -1; int marketID = -1; int houseID = -1; int bankID = -1; int xRow = 1; int xUpLow = -1; int z = 5; if(rmGetPlayerCiv(i) == rmGetCivID(ottoman) || rmGetPlayerCiv(i) == rmGetCivID(spain) || rmGetPlayerCiv(i) == rmGetCivID(portugal)) house = houseMed; else if(rmGetPlayerCiv(i) == rmGetCivID(dutch) || rmGetPlayerCiv(i) == rmGetCivID(france)) house = houseWest; else if(rmGetPlayerCiv(i) == rmGetCivID(russia) || rmGetPlayerCiv(i) == rmGetCivID(germany)) house = houseEast; marketID = rmCreateObjectDef("marketID" + i); rmAddObjectDefToClass(marketID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(marketID, 0.0); rmSetObjectDefMaxDistance(marketID, 0.0); churchID = rmCreateObjectDef("churchID" + i); rmAddObjectDefToClass(churchID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(churchID, 0.0); rmSetObjectDefMaxDistance(churchID, 0.0); if(getExpansionCulture(i) == 0) // nilla { capitolID = rmCreateObjectDef("capitolID" + i); rmAddObjectDefItem(capitolID, "Capitol", 1, 0.0); rmAddObjectDefToClass(capitolID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(capitolID, 0.0); rmSetObjectDefMaxDistance(capitolID, 0.0); rmPlaceObjectDefAtLoc(capitolID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 13)); arsenalID = rmCreateObjectDef("arsenalID" + i); rmAddObjectDefItem(arsenalID, "Arsenal", 1, 0.0); rmAddObjectDefToClass(arsenalID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(arsenalID, 0.0); rmSetObjectDefMaxDistance(arsenalID, 0.0); rmPlaceObjectDefAtLoc(arsenalID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc) - 13 * 2 )); rmAddObjectDefItem(marketID, market, 1, 0.0); if(rmGetPlayerCiv(i) == rmGetCivID(ottoman)) church = "Mosque"; rmAddObjectDefItem(churchID, church, 1, 0.0); rmPlaceObjectDefAtLoc(marketID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc))); rmPlaceObjectDefAtLoc(churchID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc) - 13)); //houses if(rmGetPlayerCiv(i) == rmGetCivID(brittain)) house = "Manor"; z = 5; x = 5; xUpLow = -1; xRow = 1; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) < 0.5) xUpLow = xUpLow * (-1); for(k = 0; < 2) { for(j = 0; < 8) { houseID = rmCreateObjectDef(i + "house" + j + k); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (6 * (xRow * xUpLow))), rmZMetersToFraction(xsVectorGetZ(TCLoc) - 8 - (z * j))); } xRow++; } xRow = 1; for(k = 0; < 2) { for(j = 0; < 2) { houseID = rmCreateObjectDef(i + "houseLeft" + j + k); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (6 * (xRow * xUpLow))), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 10 + (z * j))); } xRow++; } x = -47; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) x = 47; if(rmGetPlayerCiv(i) == rmGetCivID(dutch)) { for(j = 0; < 4) { bankID = rmCreateObjectDef(i + "BankD" + j); rmAddObjectDefItem(bankID, bank, 1, 0.0); rmAddObjectDefToClass(bankID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(bankID, 0.0); rmSetObjectDefMaxDistance(bankID, 0.0); rmPlaceObjectDefAtLoc(bankID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc) + j * 7)); } } } else if(getExpansionCulture(i) == 1) //twc { if(rmGetPlayerCiv(i) == rmGetCivID(aztec)) { house = houseAztec; z = 5; x = 5; xUpLow = -1; xRow = 1; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) < 0.5) xUpLow = xUpLow * (-1); for(k = 0; < 2) { for(j = 0; < 8) { houseID = rmCreateObjectDef(i + "house" + j + k); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (6 * (xRow * xUpLow))), rmZMetersToFraction(xsVectorGetZ(TCLoc) - 8 - (z * j))); } xRow++; } xRow = 1; for(k = 0; < 2) { for(j = 0; < 2) { houseID = rmCreateObjectDef(i + "houseLeft" + j + k); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (6 * (xRow * xUpLow))), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 10 + (z * j))); } xRow++; } firepitID = rmCreateObjectDef(i + "firepitID"); rmAddObjectDefItem(firepitID, firepit, 1, 0.0); rmAddObjectDefToClass(firepitID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(firepitID, 0.0); rmSetObjectDefMaxDistance(firepitID, 0.0); rmPlaceObjectDefAtLoc(firepitID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (6 * xUpLow)), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 25)); int warPriestID = -1; int warX = 4; for(j = 0; < 5) { warPriestID = rmCreateObjectDef("warPriestID" + i + j); rmAddObjectDefItem(warPriestID, "xpMedicineManAztec", 1, 0.0); rmSetObjectDefMinDistance(warPriestID, 0.0); rmSetObjectDefMaxDistance(warPriestID, 0.0); rmPlaceObjectDefAtLoc(warPriestID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (-5 * xUpLow)), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 20 + (j * 2))); } for(j = 0; < 4) { warPriestID = rmCreateObjectDef("warPriestIDRow2" + i + j); rmAddObjectDefItem(warPriestID, "xpMedicineManAztec", 1, 0.0); rmSetObjectDefMinDistance(warPriestID, 0.0); rmSetObjectDefMaxDistance(warPriestID, 0.0); rmPlaceObjectDefAtLoc(warPriestID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (-3 * xUpLow)), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 20 + (j * 2))); } marketID = rmCreateObjectDef("marketIDNat" + i); rmAddObjectDefItem(marketID, market, 1, 0.0); rmAddObjectDefToClass(marketID, rmClassID("classBuildings")); rmPlaceObjectDefAtLoc(marketID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (20 * xUpLow)), rmZMetersToFraction(xsVectorGetZ(TCLoc))); } else if(rmGetPlayerCiv(i) == rmGetCivID(sioux)) { if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) < 0.5) xUpLow = xUpLow * (-1); marketID = rmCreateObjectDef("marketIDNat" + i); rmAddObjectDefItem(marketID, market, 1, 0.0); rmAddObjectDefToClass(marketID, rmClassID("classBuildings")); rmPlaceObjectDefAtLoc(marketID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (15 * xUpLow)), rmZMetersToFraction(xsVectorGetZ(TCLoc))); firepitID = rmCreateObjectDef(i + "firepitID"); rmAddObjectDefItem(firepitID, firepit, 1, 0.0); rmAddObjectDefToClass(firepitID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(firepitID, 0.0); rmSetObjectDefMaxDistance(firepitID, 0.0); rmPlaceObjectDefAtLoc(firepitID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (15 * xUpLow)), rmZMetersToFraction(xsVectorGetZ(TCLoc) - 15)); } } else if(getExpansionCulture(i) == 2) //tad { market = "ypTradeMarketAsian"; church = "ypMonastery"; consulate = "ypConsulate"; if(rmGetPlayerCiv(i) == rmGetCivID(japan)) { house = "ypShrineJapanese"; int zDifference = 30; int changeZ = 1; xUpLow = -1; xRow = 1; bool left = true; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) > 0.5) xUpLow = xUpLow * (-1); bool check = true; for(m = 0; < 20) { if(m%2 == 0) left = false; else left = true; if(m > 9 && check == true) { changeZ = -1; xRow = 1; check = false; } houseID = rmCreateObjectDef("housejap" + i + m); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (5 * (xRow * xUpLow))), rmZMetersToFraction(xsVectorGetZ(TCLoc) + (zDifference * changeZ))); xRow = xRow + 1; //spawnLivestock(int amount = 0, int buildingID = 0, int playerID = 0, bool isSheep = false, bool left = false, bool isHouse = false) spawnLivestock(4, houseID, i, true, left, true); } } else if(rmGetPlayerCiv(i) == rmGetCivID(india)) { house = "ypHouseIndian"; z = 5; x = 5; xUpLow = -1; xRow = 1; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) < 0.5) xUpLow = xUpLow * (-1); for(k = 0; < 2) { for(j = 0; < 8) { houseID = rmCreateObjectDef(i + "houseIndia" + j + k); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (6 * (xRow * xUpLow))), rmZMetersToFraction(xsVectorGetZ(TCLoc) - 8 - (z * j))); } xRow++; } xRow = 1; for(k = 0; < 2) { for(j = 0; < 2) { houseID = rmCreateObjectDef(i + "houseIndiaLeft" + j + k); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + (6 * (xRow * xUpLow))), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 10 + (z * j))); } xRow++; } } else if(rmGetPlayerCiv(i) == rmGetCivID(china)) { house = "ypVillage"; for(j = 1; <= 3) { z = 8; houseID = rmCreateObjectDef(i + "houseChina" + j); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc)), rmZMetersToFraction(xsVectorGetZ(TCLoc) + (z * j))); } z = -9; for(j = 1; <= 3) { houseID = rmCreateObjectDef(i + "houseChinaM" + j); rmAddObjectDefItem(houseID, house, 1, 0.0); rmAddObjectDefToClass(houseID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(houseID, 0.0); rmSetObjectDefMaxDistance(houseID, 0.0); rmPlaceObjectDefAtLoc(houseID, i, rmXMetersToFraction(xsVectorGetX(TCLoc)), rmZMetersToFraction(xsVectorGetZ(TCLoc) + (z * j))); } } x = -20; if(rmXMetersToFraction(xsVectorGetX(rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)))) < 0.5) x = 20; int consulateID = rmCreateObjectDef("consulateID" + i); rmAddObjectDefItem(consulateID, consulate, 1, 0.0); rmAddObjectDefToClass(consulateID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(consulateID, 0.0); rmSetObjectDefMaxDistance(consulateID, 0.0); rmPlaceObjectDefAtLoc(consulateID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc) + 13)); marketID = rmCreateObjectDef("marketIDasian" + i); rmAddObjectDefItem(marketID, market, 1, 0.0); rmAddObjectDefToClass(marketID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(marketID, 0.0); rmSetObjectDefMaxDistance(marketID, 0.0); rmPlaceObjectDefAtLoc(marketID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc))); churchID = rmCreateObjectDef("churchIDasian" + i); rmAddObjectDefItem(churchID, church, 1, 0.0); rmAddObjectDefToClass(churchID, rmClassID("classBuildings")); rmSetObjectDefMinDistance(churchID, 0.0); rmSetObjectDefMaxDistance(churchID, 0.0); rmPlaceObjectDefAtLoc(churchID, i, rmXMetersToFraction(xsVectorGetX(TCLoc) + x), rmZMetersToFraction(xsVectorGetZ(TCLoc) - 13)); } float constructionRate = -119; int field = 4; rmCreateTrigger("ConstructionTrigger" + i); rmSwitchToTrigger(rmTriggerID("ConstructionTrigger" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "LivestockPen"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", house); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmAddTriggerEffect("Modify ProtoUnit"); rmSetTriggerEffectParam("ProtoUnit", "TownCenter"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmCreateTrigger("ConstructionTriggerReset" + i); rmSwitchToTrigger(rmTriggerID("ConstructionTriggerReset" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerCondition("Timer"); rmSetTriggerConditionParamInt("Param1", 240); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "LivestockPen"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", 25); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", house); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", 25); rmAddTriggerEffect("Modify ProtoUnit"); rmSetTriggerEffectParam("ProtoUnit", "TownCenter"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", 50); if(getExpansionCulture(i) == 0) { rmCreateTrigger("RemoveTechTrigger" + i); rmSwitchToTrigger(rmTriggerID("RemoveTechTrigger" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Set Tech Status"); rmSetTriggerEffectParamInt("TechID", 451); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Status", 0); } else { rmCreateTrigger("RemoveTechTriggerNat" + i); rmSwitchToTrigger(rmTriggerID("RemoveTechTriggerNat" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Set Tech Status"); rmSetTriggerEffectParamInt("TechID", 1742); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Status", 0); } if(rmGetPlayerCiv(i) == rmGetCivID(russia)) { rmSetPlayerResource(i, "Food", 50000); rmSetPlayerResource(i, "Gold", 44000); rmSetPlayerResource(i, "Wood", 25000); generateNillaCiv(i, startID, 6, 6, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); } else if(rmGetPlayerCiv(i) == rmGetCivID(germany)) { rmSetPlayerResource(i, "Food", 50000); rmSetPlayerResource(i, "Gold", 60000); rmSetPlayerResource(i, "Wood", 25000); generateNillaCiv(i, startID, 4, 12, true); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); rmCreateTrigger("SettlerWagenTrainPoints" + i); rmSwitchToTrigger(rmTriggerID("SettlerWagenTrainPoints" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Modify ProtoUnit"); rmSetTriggerEffectParam("ProtoUnit", "SettlerWagon"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", 3); rmSetTriggerEffectParamFloat("Delta", -1000); rmCreateTrigger("SettlerWagenTrainPointsRevert" + i); rmSwitchToTrigger(rmTriggerID("SettlerWagenTrainPointsRevert" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerCondition("Timer"); rmSetTriggerConditionParamInt("Param1", 240); rmAddTriggerEffect("Modify ProtoUnit"); rmSetTriggerEffectParam("ProtoUnit", "SettlerWagon"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", 3); rmSetTriggerEffectParamFloat("Delta", 25); } else if(rmGetPlayerCiv(i) == rmGetCivID(france)) { rmSetPlayerResource(i, "Food", 70000); rmSetPlayerResource(i, "Gold", 10000); rmSetPlayerResource(i, "Wood", 25000); generateNillaCiv(i, startID, 8, 3, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); } else if(rmGetPlayerCiv(i) == rmGetCivID(ottoman)) { rmSetPlayerResource(i, "Food", 50000); rmSetPlayerResource(i, "Gold", 38000); rmSetPlayerResource(i, "Wood", 6000); generateNillaCiv(i, startID, 7, 6, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 5000 + calculateXP(i)); rmCreateTrigger("GrantFoodafterTrade" + i); rmSwitchToTrigger(rmTriggerID("GrantFoodafterTrade" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerCondition("Tech Status Equals"); rmSetTriggerConditionParamInt("PlayerID", i); rmSetTriggerConditionParamInt("TechID", 1691); rmSetTriggerConditionParamInt("Status", 2); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "Food"); rmSetTriggerEffectParamInt("Amount", 25000); } else if(rmGetPlayerCiv(i) == rmGetCivID(dutch)) { rmSetPlayerResource(i, "Food", 30000); rmSetPlayerResource(i, "Gold", 49000); rmSetPlayerResource(i, "Wood", 25000); generateNillaCiv(i, startID, 6, 4, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); rmCreateTrigger("ConstructionTriggerDutch" + i); rmSwitchToTrigger(rmTriggerID("ConstructionTriggerDutch" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "Bank"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmCreateTrigger("ConstructionTriggerDutchReset" + i); rmSwitchToTrigger(rmTriggerID("ConstructionTriggerDutchReset" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerCondition("Timer"); rmSetTriggerConditionParamInt("Param1", 240); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "Bank"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", 35); } else if(rmGetPlayerCiv(i) == rmGetCivID(portugal)) { rmSetPlayerResource(i, "Food", 55000); rmSetPlayerResource(i, "Gold", 43000); rmSetPlayerResource(i, "Wood", 23000); generateNillaCiv(i, startID, 6, 6, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); } else if(rmGetPlayerCiv(i) == rmGetCivID(spain)) { rmSetPlayerResource(i, "Food", 43000); rmSetPlayerResource(i, "Gold", 35000); rmSetPlayerResource(i, "Wood", 25000); generateNillaCiv(i, startID, 6, 6, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); } else if(rmGetPlayerCiv(i) == rmGetCivID(brittain)) { rmSetPlayerResource(i, "Food", 63000); rmSetPlayerResource(i, "Gold", 53000); rmSetPlayerResource(i, "Wood", 25000); generateBritCiv(i, startID, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); rmCreateTrigger("ConstructionTriggerBrit" + i); rmSwitchToTrigger(rmTriggerID("ConstructionTriggerBrit" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); } else if(rmGetPlayerCiv(i) == rmGetCivID(aztec)) { rmSetPlayerResource(i, "Food", 50000); rmSetPlayerResource(i, "Gold", 30000); rmSetPlayerResource(i, "Wood", 25000); generateTwcCiv(i, startID, 6, 4, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 12000 + calculateXP(i)); } else if(rmGetPlayerCiv(i) == rmGetCivID(sioux)) { rmSetPlayerResource(i, "Food", 45000); rmSetPlayerResource(i, "Gold", 35000); rmSetPlayerResource(i, "Wood", 20000); generateTwcCiv(i, startID, 6, 5, false); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4500 + calculateXP(i)); } else if(rmGetPlayerCiv(i) == rmGetCivID(india)) { rmSetPlayerResource(i, "Food", 89000); rmSetPlayerResource(i, "Gold", 10000); rmSetPlayerResource(i, "Wood", 22500); rmSetPlayerResource(i, "Trade", 4000); generateTadCiv(i, startID, 9); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 10000 + calculateXP(i)); rmCreateTrigger("IndiaWonderTrigger" + i); rmSwitchToTrigger(rmTriggerID("IndiaWonderTrigger" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); for(j = 2; <= 5) { if(j == 3) constructionRate = -144; else constructionRate = -119; rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWICharminarGate"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWITowerOfVictory"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWITajMahal"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWIAgraFort"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWIKarniMata"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); } rmCreateTrigger("ConstructionTriggerIndia" + i); rmSwitchToTrigger(rmTriggerID("ConstructionTriggerIndia" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypSacredField"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypSacredCow"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", 3); rmSetTriggerEffectParamFloat("Delta", constructionRate); rmCreateTrigger("ConstructionTriggerIndiaReset" + i); rmSwitchToTrigger(rmTriggerID("ConstructionTriggerIndiaReset" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerCondition("Timer"); rmSetTriggerConditionParamInt("Param1", 240); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypSacredField"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamFloat("Delta", 25); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypSacredCow"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", 3); rmSetTriggerEffectParamFloat("Delta", 10); } else if(rmGetPlayerCiv(i) == rmGetCivID(japan)) { rmSetPlayerResource(i, "Food", 54000); rmSetPlayerResource(i, "Gold", 29000); rmSetPlayerResource(i, "Wood", 20000); rmSetPlayerResource(i, "Trade", 3000); generateTadCiv(i, startID, 7); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4000 + calculateXP(i)); rmCreateTrigger("JapanWonderTrigger" + i); rmSwitchToTrigger(rmTriggerID("JapanWonderTrigger" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); for(j = 2; <= 5) { if(j == 3) constructionRate = -144; else constructionRate = -119; rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWJGiantBuddha"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWJGoldenPavillion"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWJShogunate"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWJToriiGates"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWJToshoguShrine"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); } } else if(rmGetPlayerCiv(i) == rmGetCivID(china)) { rmSetPlayerResource(i, "Food", 65000); rmSetPlayerResource(i, "Gold", 25000); rmSetPlayerResource(i, "Wood", 25000); rmSetPlayerResource(i, "Trade", 4000); generateTadCiv(i, startID, 9); rmCreateTrigger("XP" + i); rmSwitchToTrigger(rmTriggerID("XP" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Grant Resources"); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParam("ResName", "XP"); rmSetTriggerEffectParamInt("Amount", 4500 + calculateXP(i)); rmCreateTrigger("ChinaWonderTrigger" + i); rmSwitchToTrigger(rmTriggerID("ChinaWonderTrigger" + i)); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); for(j = 2; <= 5) { if(j == 3) constructionRate = -144; else constructionRate = -119; rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWCConfucianAcademy"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWCPorcelainTower"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWCSummerPalace"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWCTempleOfHeaven"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); rmAddTriggerEffect("Modify Protounit"); rmSetTriggerEffectParam("ProtoUnit", "ypWCWhitePagoda"+j); rmSetTriggerEffectParamInt("PlayerID", i); rmSetTriggerEffectParamInt("Field", field); rmSetTriggerEffectParamInt("Delta", constructionRate); } } } /*--------------------------------------------------------------End------------------------------------------------------------*/ void main(void) { /*-----------------------------------------------------Define local Variables--------------------------------------------------*/ // map size int playerTiles = -1; if(cNumberNonGaiaPlayers ==2) playerTiles = 22000; else if(cNumberNonGaiaPlayers == 6) playerTiles = 11000; else playerTiles = 13000; int size = 2.0 * sqrt(cNumberNonGaiaPlayers*playerTiles); rmSetMapSize(size, size); //map infos rmSetMapType("land"); rmSetMapType("grass"); rmSetMapType("newEngland"); rmTerrainInitialize("grass"); rmSetLightingSet("saguenay"); //natives int subCiv0 = -1; int subCiv1 = -1; int subCiv2 = -1; int subCiv3 = -1; //continent int continent2 = -1; //loop variables int numTries = -1; int failcount = -1; //custom classes rmDefineClass("classForest"); rmDefineClass("classNatives"); rmDefineClass("classBuildings"); rmDefineClass("classVillagers"); //random generated numbers float spawnSwitch = rmRandFloat(0, 1.2); if (rmAllocateSubCivs(4) == true) { subCiv0=rmGetCivID("Incas"); if (subCiv0 >= 0) rmSetSubCiv(0, "Incas"); subCiv1=rmGetCivID("Incas"); if (subCiv1 >= 0) rmSetSubCiv(1, "Incas"); subCiv2=rmGetCivID("Incas"); if (subCiv2 >= 0) rmSetSubCiv(2, "Incas"); subCiv3=rmGetCivID("Incas"); if (subCiv3 >= 0) rmSetSubCiv(3, "Incas"); } /*--------------------------------------------------------------End------------------------------------------------------------*/ /*----------------------------------------------------Define Constraint Variables----------------------------------------------*/ //int rmCreatePieConstraint(string name, float xFraction, float zFraction, float insideRadius, float outsideRadius, float minAngle, float maxAngle, float bufferFraction) int bottomConstraint = rmCreatePieConstraint("south side forest constraint", 0.5, 0.5, rmZFractionToMeters(0.485), rmZFractionToMeters(0.5), rmDegreesToRadians(0), rmDegreesToRadians(360)); /*--------------------------------------------------------------End-----------------------------------------------------------*/ /*---------------------------------------------------------spawnpositions-----------------------------------------------------*/ if(cNumberNonGaiaPlayers == 4) // 2vs2 { if (spawnSwitch <=0.6) { rmSetPlacementTeam(0); rmPlacePlayersLine(0.19, 0.42, 0.205, 0.65, 0, 0); rmSetPlacementTeam(1); rmPlacePlayersLine(0.795, 0.65, 0.805, 0.42, 0, 0); } else if(spawnSwitch <=1.2) { rmSetPlacementTeam(1); rmPlacePlayersLine(0.19, 0.42, 0.205, 0.65, 0, 0); rmSetPlacementTeam(0); rmPlacePlayersLine(0.795, 0.65, 0.805, 0.42, 0, 0); } } else if(cNumberNonGaiaPlayers == 2) // 1vs1 { if(spawnSwitch <= 0.6) { rmPlacePlayer(1, 0.20, 0.50); rmPlacePlayer(2, 0.80, 0.50); } else if(spawnSwitch <= 1.2) { rmPlacePlayer(2, 0.20, 0.50); rmPlacePlayer(1, 0.80, 0.50); } } else if(cNumberNonGaiaPlayers == 6) // 3vs3 { if (spawnSwitch <=0.6) { rmSetPlacementTeam(0); rmPlacePlayersLine(0.235, 0.315, 0.230, 0.695, 0, 0); rmSetPlacementTeam(1); rmPlacePlayersLine(0.765, 0.68, 0.75, 0.30, 0, 0); } else if(spawnSwitch <=1.2) { rmSetPlacementTeam(1); rmPlacePlayersLine(0.235, 0.315, 0.230, 0.695, 0, 0); rmSetPlacementTeam(0); rmPlacePlayersLine(0.765, 0.68, 0.75, 0.30, 0, 0); } } else //ffa { rmPlacePlayersCircular(0.4, 0.4, 0.02); } /*--------------------------------------------------------------End------------------------------------------------------------*/ /*--------------------------------------------------------initilaze terrain----------------------------------------------------*/ chooseMercs(); //ground map continent2 = rmCreateArea("continent"); rmSetAreaSize(continent2, 1.0, 1.0); rmSetAreaLocation(continent2, 0.5, 0.5); rmSetAreaTerrainType(continent2, "yukon\ground3_yuk"); rmSetAreaBaseHeight(continent2, 0.0); rmSetAreaCoherence(continent2, 1.0); rmSetAreaSmoothDistance(continent2, 10); rmSetAreaHeightBlend(continent2, 1); rmSetAreaElevationNoiseBias(continent2, 0); rmSetAreaElevationEdgeFalloffDist(continent2, 10); rmSetAreaElevationVariation(continent2, 0); rmSetAreaElevationPersistence(continent2, .0); rmSetAreaElevationOctaves(continent2, 0); rmSetAreaElevationMinFrequency(continent2, 0.04); rmSetAreaElevationType(continent2, cElevTurbulence); rmBuildArea(continent2); /*--------------------------------------------------------------End------------------------------------------------------------*/ /*----------------------------------------------------tc and ressource placement-----------------------------------------------*/ //...explorer int playerStart = rmCreateStartingUnitsObjectDef(5.0); rmSetObjectDefMinDistance(playerStart, 3.0); rmSetObjectDefMaxDistance(playerStart, 4.0); //...place tc and ressources for(i=1; < cNumberNonGaiaPlayers + 1) { int id=rmCreateArea("Player"+i); rmSetPlayerArea(i, id); int startID = rmCreateObjectDef("start"+i); rmAddObjectDefItem(startID, "TownCenter", 1, 0); rmSetObjectDefMinDistance(startID, 0.0); rmSetObjectDefMaxDistance(startID, 1.0); rmPlaceObjectDefAtLoc(startID, i, rmPlayerLocXFraction(i), rmPlayerLocZFraction(i)); vector TCLoc = rmGetUnitPosition(rmGetUnitPlacedOfPlayer(startID, i)); rmPlaceObjectDefAtLoc(playerStart, i, rmPlayerLocXFraction(i), rmPlayerLocZFraction(i)); generateCiv(i, startID, 0, 0, false, ""); } /*-----------------------------------------------------------End--------------------------------------------------------------*/ /*------------------------------------------------------place buildings-------------------------------------------------------*/ /*----------------------------------------------------------End---------------------------------------------------------------*/ int mapTrees = -1; for (j=0; < (2*cNumberNonGaiaPlayers) + 30) { mapTrees=rmCreateObjectDef("right trees"+j); rmAddObjectDefItem(mapTrees, "ypTreeCeylon", 10, 5); //rmAddObjectDefToClass(mapTrees, rmClassID("classForest")); rmSetObjectDefMinDistance(mapTrees, 0); rmSetObjectDefMaxDistance(mapTrees, rmXFractionToMeters(0.50)); rmAddObjectDefConstraint(mapTrees, bottomConstraint); rmPlaceObjectDefAtLoc(mapTrees, 0, 0.5, 0.5, 5*cNumberNonGaiaPlayers); } int incaSocketID = -1; int riverID2 = rmRiverCreate(-1, "Yellow River", 20, 1, 9, 5); // (x,y, a,b,c,d) a: height, b length or something, c radius of waypoints, d rmRiverAddWaypoint(riverID2, 0.5, 0.0); rmRiverAddWaypoint(riverID2, 0.5, 0.5); rmRiverAddWaypoint(riverID2, 0.5, 1.0); rmRiverSetShallowRadius(riverID2, 20); if(cNumberNonGaiaPlayers == 2) { rmRiverAddShallow(riverID2, 0.5); incaSocketID = rmCreateObjectDef("IncaSocket1"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.96, 0.55, 1); incaSocketID = rmCreateObjectDef("IncaSocket2"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.96, 0.45, 1); incaSocketID = rmCreateObjectDef("IncaSocket3"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.04, 0.55, 1); incaSocketID = rmCreateObjectDef("IncaSocket4"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.04, 0.45, 1); } else if(cNumberNonGaiaPlayers == 4) { rmRiverAddShallow(riverID2, 0.35); rmRiverAddShallow(riverID2, 0.65); incaSocketID = rmCreateObjectDef("IncaSocket1"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.78, 0.51, 1); incaSocketID = rmCreateObjectDef("IncaSocket2"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.75, 0.51, 1); incaSocketID = rmCreateObjectDef("IncaSocket3"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.25, 0.51, 1); incaSocketID = rmCreateObjectDef("IncaSocket4"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.22, 0.51, 1); } else if(cNumberNonGaiaPlayers == 6) { rmRiverAddShallow(riverID2, 0.2); rmRiverAddShallow(riverID2, 0.5); rmRiverAddShallow(riverID2, 0.8); incaSocketID = rmCreateObjectDef("IncaSocket1"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.90, 0.52, 1); incaSocketID = rmCreateObjectDef("IncaSocket2"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.90, 0.48, 1); incaSocketID = rmCreateObjectDef("IncaSocket3"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.10, 0.52, 1); incaSocketID = rmCreateObjectDef("IncaSocket4"); rmAddObjectDefItem(incaSocketID, "SocketInca", 1, 0); rmSetObjectDefMinDistance(incaSocketID, 0.0); rmSetObjectDefMaxDistance(incaSocketID, 1.0); rmPlaceObjectDefAtLoc(incaSocketID, 0, 0.10, 0.48, 1); } rmRiverBuild(riverID2); rmCreateTrigger("BackToNormalTrigger"); rmAddTriggerCondition("Timer"); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmSwitchToTrigger(rmTriggerID("BackToNormalTrigger")); rmSetTriggerConditionParamInt("Param1", 240); rmAddTriggerEffect("Rate Research"); rmSetTriggerEffectParamFloat("Rate", 1.0); rmAddTriggerEffect("Message"); rmSetTriggerEffectParam("Text", "Homecity, research, and construction rates are back to normal. Enjoy your prebuilt eco!"); rmCreateTrigger("ResearchTrigger"); rmSwitchToTrigger(rmTriggerID("ResearchTrigger")); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Rate Research"); rmSetTriggerEffectParamFloat("Rate", 10000); rmCreateTrigger("PauseTrigger"); rmSwitchToTrigger(rmTriggerID("PauseTrigger")); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Pause Game"); rmSetTriggerEffectParam("Pause", "true"); rmCreateTrigger("RevealTrigger"); rmSwitchToTrigger(rmTriggerID("RevealTrigger")); rmSetTriggerPriority(4); rmSetTriggerActive(true); rmSetTriggerRunImmediately(true); rmSetTriggerLoop(false); rmAddTriggerEffect("Reveal Map"); /*--------------------------------------------------triggers and ressources--------------------------------------------------*/ }