//////////////////////////////////////////////////////////////////////////////// //Martin Gühmann's CRA_Goods.slc v.1.4 for Cradle // //////////////////////////////////////////////////////////////////////////////// //This script file creates on every good tile an "good tileimprovement". // //Unfortunatly I wasn't able to find a possibility to create on every good // //a player independant tile improvement directly. It is also not possible to // //create a tile improvement like a fort outside of the vision range of a unit.// //My conclusion was to create first a Barbarian unit in the neighbourhood of a// //good tile (it could be that on the good tile is a settler) and create under // //the unit a border expanding tile improvement without an own graphic. My // //obversation was that a tile improvement loose its owner if the borders // //arround are deleted. So afterwards the first tile improvement is finished // //on the good tile the actual good tile improvement is created and the frist // //tile improvement is be pillaged. Unfortunatly the game crashes if you put // //the creation of the second improvement and the deletion of the first // //improvement into one event handler, therefore both events can be now found // //in different event handler. // //////////////////////////////////////////////////////////////////////////////// // added some terraforming features, PT HandleEvent(BeginTurn)'MG_NewGoodImprovement' pre { int_t i; int_t j; int_t ran; location_t MGGoodLoc; location_t MGUnitLoc; unit_t MGGoodUnit; if (GetCurrentRound () == 0) { GrantAdvance(0, AdvanceDB(ADVANCE_SUBNEURAL_ADS)); for (i=0; i<=GetMapWidth()-1 ; i=i+1) { for (j=0; j<=GetMapHeight()-1 ; j=j+1) { MakeLocation(MGGoodLoc, i, j); ran=random(3); if (TerrainType(MGGoodLoc)==2 || TerrainType(MGGoodLoc)==3){//tundra or glacier if (ran==0){ terraform(MGGoodLoc,4);//change to grassland } elseif (ran==1){ terraform(MGGoodLoc,1);//change to plains } else{ terraform(MGGoodLoc,0);//change to forest } } elseif (TerrainType(MGGoodLoc)==18 || TerrainType(MGGoodLoc)==20 || TerrainType(MGGoodLoc)==21) { //brown hills, white hills, or white mountains if (ran==0){ terraform(MGGoodLoc,9);//change to hills } elseif (ran==1){ terraform(MGGoodLoc,1);//change to plains } else{ terraform(MGGoodLoc,0);//change to forest } } elseif (TerrainType(MGGoodLoc)==9) {//hills if (ran<=1){ terraform(MGGoodLoc,4);//change to grassland } // if (ran==1){ // terraform(MGGoodLoc,1);//change to plains // } } elseif (TerrainType(MGGoodLoc)==8 ) {//mountains or swamp: || TerrainType(MGGoodLoc)==6 if (ran==0){ terraform(MGGoodLoc,4);//change to grassland } if (ran==1){ terraform(MGGoodLoc,0);//change to forest } } if (HasGood(MGGoodLoc)>-1) { GetRandomNeighbor(MGGoodLoc, MGUnitLoc); CreateUnit(0, UnitDB(UNIT_BOMBER), MGUnitLoc, 1, MGGoodUnit); Event:CreateImprovement(0,MGUnitLoc, 44,0 ); Event: DisbandUnit(MGGoodUnit); } } } DisableTrigger('MG_NewGoodImprovement'); DisableTrigger('MG_CutUnitImprovement'); } elseif (GetCurrentRound () > 1) {//if someone reloads slic DisableTrigger('MG_NewGoodImprovement'); DisableTrigger('MG_FinishUnitImprovement'); DisableTrigger('MG_ReplaceGoodImprovement'); DisableTrigger('MG_CutUnitImprovement'); DisableTrigger('MG_FinishGoodImprovement'); } } HandleEvent(BeginTurnProduction)'MG_FinishUnitImprovement' post { int_t i; int_t j; int_t k; location_t MGGoodLoc; location_t MGUnitLoc; if (GetCurrentRound () <= 1) { for (i=0; i<=GetMapWidth()-1 ; i=i+1) { for (j=0; j<=GetMapHeight()-1 ; j=j+1) { MakeLocation(MGGoodLoc, i, j); if (HasGood(MGGoodLoc)>-1) { for (k=0; k<=7 ; k=k+1) { //directions GetNeighbor(MGGoodLoc, k, MGUnitLoc);//look around FinishImprovements(MGUnitLoc); } } } } DisableTrigger('MG_FinishUnitImprovement'); } } HandleEvent(BeginTurnImprovements)'MG_ReplaceGoodImprovement' post { int_t i; int_t j; location_t MGGoodLoc; if (GetCurrentRound () <= 1) { for (i=0; i<=GetMapWidth()-1 ; i=i+1) { for (j=0; j<=GetMapHeight()-1 ; j=j+1) { MakeLocation(MGGoodLoc, i, j); if (HasGood(MGGoodLoc)==0) {//TERRAIN_ARCTIC_MOUNTAIN_GOOD_ONE // Rubies Event:CreateImprovement(0,MGGoodLoc, 45,0 ); // Event:CutImprovements(MGUnitLoc); I don't know why this causes a game crach but MG_CutUnitImprovement solved this problem. Event:CreateImprovement(0,MGGoodLoc, 49,0 ); } elseif (HasGood(MGGoodLoc)==1) {//TERRAIN_ARCTIC_MOUNTAIN_GOOD_TWO // Diamonds Event:CreateImprovement(0,MGGoodLoc, 46,0 ); Event:CreateImprovement(0,MGGoodLoc, 50,0 ); } elseif (HasGood(MGGoodLoc)==2) {//TERRAIN_ARCTIC_MOUNTAIN_GOOD_THREE // Bauxite Event:CreateImprovement(0,MGGoodLoc, 47,0 ); // Event:CreateImprovement(0,MGGoodLoc, 51,0 ); } elseif (HasGood(MGGoodLoc)==3) {//TERRAIN_ARCTIC_MOUNTAIN_GOOD_FOUR // Emerals Event:CreateImprovement(0,MGGoodLoc, 48,0 ); Event:CreateImprovement(0,MGGoodLoc, 52,0 ); } elseif (HasGood(MGGoodLoc)==4) {//TERRAIN_DESERT_GOOD_ONE // Glass Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==5) {//TERRAIN_DESERT_GOOD_TWO // Oil Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==6) {//TERRAIN_DESERT_GOOD_THREE // Dates Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==7) {//TERRAIN_DESERT_GOOD_FOUR // Camels Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==8) {//TERRAIN_FOREST_GOOD_ONE // Hardwood Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==9) {//TERRAIN_FOREST_GOOD_TWO // Bear Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==10) {//TERRAIN_FOREST_GOOD_THREE // Apples Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==11) {//TERRAIN_FOREST_GOOD_FOUR // Beavers Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==12) {//TERRAIN_GRASSLAND_GOOD_ONE // Cotton/Flax Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==13) {//TERRAIN_GRASSLAND_GOOD_TWO // Tobacco Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==14) {//TERRAIN_GRASSLAND_GOOD_THREE // Potatoes Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==15) {//TERRAIN_GRASSLAND_GOOD_FOUR // Poppies Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==16) {//TERRAIN_HILL_GOOD_ONE // Coffee Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==17) {//TERRAIN_HILL_GOOD_TWO // Grapes Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==18) {//TERRAIN_HILL_GOOD_THREE // Uranium Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==19) {//TERRAIN_HILL_GOOD_FOUR // Olives Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==20) {//TERRAIN_JUNGLE_GOOD_ONE // Medicinal Herbs Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==21) {//TERRAIN_JUNGLE_GOOD_TWO // Jade Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==22) {//TERRAIN_JUNGLE_GOOD_THREE // Banannas Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==23) {//TERRAIN_JUNGLE_GOOD_FOUR // Sugar Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==24) {//TERRAIN_MOUNTAIN_GOOD_ONE // Tea Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==25) {//TERRAIN_MOUNTAIN_GOOD_TWO // Emeralds Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==26) {//TERRAIN_MOUNTAIN_GOOD_THREE // Coal Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==27) {//TERRAIN_MOUNTAIN_GOOD_FOUR // Gold Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==28) {//TERRAIN_PLAINS_GOOD_ONE // Spices Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==29) {//TERRAIN_PLAINS_GOOD_TWO // Elephant Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==30) {//TERRAIN_PLAINS_GOOD_THREE // Wheat Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==31) {//TERRAIN_PLAINS_GOOD_FOUR // Buffalo Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==32) {//TERRAIN_SWAMP_GOOD_ONE // Alligator Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==33) {//TERRAIN_SWAMP_GOOD_TWO // Rice Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==34) {//TERRAIN_SWAMP_GOOD_THREE // Chilli Event:CreateImprovement(0,MGGoodLoc, 47,0 ); } elseif (HasGood(MGGoodLoc)==35) {//TERRAIN_SWAMP_GOOD_FOUR // Peat Event:CreateImprovement(0,MGGoodLoc, 48,0 ); } elseif (HasGood(MGGoodLoc)==36) {//TERRAIN_TUNDRA_GOOD_ONE // Caribou Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==37) {//TERRAIN_WATER_DEEP_GOOD_ONE // Whales Event:CreateImprovement(0,MGGoodLoc, 49,0 ); } elseif (HasGood(MGGoodLoc)==38) {//TERRAIN_WATER_DEEP_GOOD_TWO // Giant Squid Event:CreateImprovement(0,MGGoodLoc, 50,0 ); } elseif (HasGood(MGGoodLoc)==39) {//TERRAIN_WATER_DEEP_GOOD_THREE // Tuna Event:CreateImprovement(0,MGGoodLoc, 51,0 ); } elseif (HasGood(MGGoodLoc)==40) {//TERRAIN_WATER_SHALLOW_GOOD_ONE // Crabs Event:CreateImprovement(0,MGGoodLoc, 49,0 ); } elseif (HasGood(MGGoodLoc)==41) {//TERRAIN_WATER_SHALLOW_GOOD_TWO // Pearls Event:CreateImprovement(0,MGGoodLoc, 50,0 ); } elseif (HasGood(MGGoodLoc)==42) {//TERRAIN_WATER_SHALLOW_GOOD_THREE // Salmon Event:CreateImprovement(0,MGGoodLoc, 51,0 ); } elseif (HasGood(MGGoodLoc)==43) {//TERRAIN_WATER_SHALLOW_GOOD_FOUR // Lobster Event:CreateImprovement(0,MGGoodLoc, 52,0 ); } elseif (HasGood(MGGoodLoc)==44) {//TERRAIN_BROWN_HILL_GOOD_ONE // Copper Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==45) {//TERRAIN_BROWN_HILL_GOOD_TWO // Silver Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==46) {//TERRAIN_WATER_BEACH_GOOD_ONE // Crab Event:CreateImprovement(0,MGGoodLoc, 49,0 ); } elseif (HasGood(MGGoodLoc)==47) {//TERRAIN_WATER_BEACH_GOOD_TWO // Fish Event:CreateImprovement(0,MGGoodLoc, 50,0 ); } elseif (HasGood(MGGoodLoc)==48) {//TERRAIN_WATER_BEACH_GOOD_THREE // Dye Event:CreateImprovement(0,MGGoodLoc, 51,0 ); } elseif (HasGood(MGGoodLoc)==49) {//TERRAIN_BROWN_MOUNTAIN_GOOD_ONE // Iron Ore Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==50) {//TERRAIN_BROWN_MOUNTAIN_GOOD_TWO // Silver Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==51) {//TERRAIN_WHITE_HILL_GOOD_ONE // Sapphires Event:CreateImprovement(0,MGGoodLoc, 45,0 ); Event:CreateImprovement(0,MGGoodLoc, 49,0 ); } elseif (HasGood(MGGoodLoc)==52) {//TERRAIN_WHITE_HILL_GOOD_TWO // Emerals Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } elseif (HasGood(MGGoodLoc)==53) {//TERRAIN_GLACIER_GOOD_ONE // Seals Event:CreateImprovement(0,MGGoodLoc, 45,0 ); } elseif (HasGood(MGGoodLoc)==54) {//TERRAIN_GLACIER_GOOD_TWO // Walrus Event:CreateImprovement(0,MGGoodLoc, 46,0 ); } } } EnableTrigger('MG_CutUnitImprovement'); DisableTrigger('MG_ReplaceGoodImprovement'); } } HandleEvent(FinishBuildPhase)'MG_CutUnitImprovement' post { int_t i; int_t j; location_t MGUnitLoc; if (GetCurrentRound () <= 1) { for (i=0; i<=GetMapWidth()-1 ; i=i+1) { for (j=0; j<=GetMapHeight()-1 ; j=j+1) { MakeLocation(MGUnitLoc, i, j); if (TileHasImprovement(MGUnitLoc, 44)) { Event:CutImprovements(MGUnitLoc); } } } DisableTrigger('MG_CutUnitImprovement'); DisableTrigger('MG_NewGoodImprovement'); RemoveAdvance(0, AdvanceDB(ADVANCE_SUBNEURAL_ADS)); } } HandleEvent(AIFinishBeginTurn)'MG_FinishGoodImprovement' post { int_t i; int_t j; location_t MGGoodLoc; if (GetCurrentRound () <= 1) { for (i=0; i<=GetMapWidth()-1 ; i=i+1) { for (j=0; j<=GetMapHeight()-1 ; j=j+1) { MakeLocation(MGGoodLoc, i, j); if (HasGood(MGGoodLoc)>-1) { FinishImprovements(MGGoodLoc); } } } DisableTrigger('MG_FinishGoodImprovement'); } } HandleEvent(CutImprovements)'MG_PillageImprovement' pre { if (CellOwner(location[0])==-1) { return STOP; } } HandleEvent (CreateImprovement)'MG_ImpOnGoodStop' pre { int_t MG_tilimpcreate; location_t MGGoodLoc; MG_tilimpcreate = value[0]; if (!IsHumanPlayer(player[0])&&(GetCurrentRound () > 1)) { if (HasGood(MGGoodLoc)>-1) { if ((MG_tilimpcreate == TerrainImprovementDB(TILEIMP_TERRAFORM_GRASSLAND)) ||(MG_tilimpcreate == TerrainImprovementDB(TILEIMP_TERRAFORM_PLAINS)) ||(MG_tilimpcreate == TerrainImprovementDB(TILEIMP_TERRAFORM_JUNGLE)) ||(MG_tilimpcreate == TerrainImprovementDB(TILEIMP_TERRAFORM_FOREST)) ||(MG_tilimpcreate == TerrainImprovementDB(TILEIMP_TERRAFORM_SWAMP))) { return STOP; } } } }