
/////////////////////////////////////////////////////////////////
//
// Terrain Improvements Possibilities BETA
// by Pedrunn
//
// This code when building a TI over another gives back 1/5 of
// the PW cost of the TI that is going to be destroyed. And
//
// And also gives when Pillaging a random PW value that varies from  
// 0 to 1/3 of the pillaged improvement
//
/////////////////////////////////////////////////////////////////

int_t PEDRUNN_IMPROVEMENT[];
int_t PEDRUNN_TI_COST[];

HandleEvent(BeginTurn) 'SaveTileImpsInArrays' pre {

PEDRUNN_IMPROVEMENT[0] = TerrainImprovementDB(TILEIMP_PASTURE);
PEDRUNN_TI_COST[0] = 250;

PEDRUNN_IMPROVEMENT[1] = TerrainImprovementDB(TILEIMP_FARMS);
PEDRUNN_TI_COST[1] = 250;

PEDRUNN_IMPROVEMENT[2] = TerrainImprovementDB(TILEIMP_ADVANCED_FARMS);
PEDRUNN_TI_COST[2] = 1200;

PEDRUNN_IMPROVEMENT[3] = TerrainImprovementDB(TILEIMP_HYDROPONIC_FARMS);
PEDRUNN_TI_COST[3] = 900;

PEDRUNN_IMPROVEMENT[4] = TerrainImprovementDB(TILEIMP_TRADING_POST);
PEDRUNN_TI_COST[4] = 600;

PEDRUNN_IMPROVEMENT[5] = TerrainImprovementDB(TILEIMP_LATIFUNDIA);
PEDRUNN_TI_COST[5] = 500;

PEDRUNN_IMPROVEMENT[6] = TerrainImprovementDB(TILEIMP_OUTLET_MALL);
PEDRUNN_TI_COST[6] = 1500;

PEDRUNN_IMPROVEMENT[7] = TerrainImprovementDB(TILEIMP_NATURE_PRESERVE);
PEDRUNN_TI_COST[7] = 1800;

PEDRUNN_IMPROVEMENT[8] = TerrainImprovementDB(TILEIMP_MINES);
PEDRUNN_TI_COST[8] = 600;

PEDRUNN_IMPROVEMENT[9] = TerrainImprovementDB(TILEIMP_MINE_SHAFT);
PEDRUNN_TI_COST[9] = 900;

PEDRUNN_IMPROVEMENT[10] = TerrainImprovementDB(TILEIMP_ADVANCED_MINES);
PEDRUNN_TI_COST[10] = 1200;

PEDRUNN_IMPROVEMENT[11] = TerrainImprovementDB(TILEIMP_MEGA_MINES);
PEDRUNN_TI_COST[11] = 1500;

PEDRUNN_IMPROVEMENT[12] = TerrainImprovementDB(TILEIMP_UNDERSEA_MINES);
PEDRUNN_TI_COST[12] = 1200;

PEDRUNN_IMPROVEMENT[13] = TerrainImprovementDB(TILEIMP_ADVANCED_UNDERSEA_MINES);
PEDRUNN_TI_COST[13] = 2500;

PEDRUNN_IMPROVEMENT[14] = TerrainImprovementDB(TILEIMP_MEGA_UNDERSEA_MINES);
PEDRUNN_TI_COST[14] = 3000;

PEDRUNN_IMPROVEMENT[15] = TerrainImprovementDB(TILEIMP_NETS);
PEDRUNN_TI_COST[15] = 250;

PEDRUNN_IMPROVEMENT[16] = TerrainImprovementDB(TILEIMP_FISHERIES);
PEDRUNN_TI_COST[16] = 750;

PEDRUNN_IMPROVEMENT[17] = TerrainImprovementDB(TILEIMP_AUTOMATED_FISHERIES);
PEDRUNN_TI_COST[17] = 1500;

PEDRUNN_IMPROVEMENT[18] = TerrainImprovementDB(TILEIMP_PORT);
PEDRUNN_TI_COST[18] = 900;

PEDRUNN_IMPROVEMENT[19] = TerrainImprovementDB(TILEIMP_DRILLING_PLATFORM);
PEDRUNN_TI_COST[19] = 2100;

PEDRUNN_IMPROVEMENT[20] = TerrainImprovementDB(TILEIMP_FORTIFICATIONS);
PEDRUNN_TI_COST[20] = 3600;

PEDRUNN_IMPROVEMENT[21] = TerrainImprovementDB(TILEIMP_AIR_BASES);
PEDRUNN_TI_COST[21] = 2000;

PEDRUNN_IMPROVEMENT[22] = TerrainImprovementDB(TILEIMP_PROCESSING_TOWER);
PEDRUNN_TI_COST[22] = 4000;

PEDRUNN_IMPROVEMENT[23] = TerrainImprovementDB(TILEIMP_WATCH_TOWER);
PEDRUNN_TI_COST[23] = 1200;

PEDRUNN_IMPROVEMENT[24] = TerrainImprovementDB(TILEIMP_LISTENING_POSTS);
PEDRUNN_TI_COST[24] = 2000;

PEDRUNN_IMPROVEMENT[25] = TerrainImprovementDB(TILEIMP_RADAR_STATIONS);
PEDRUNN_TI_COST[25] = 2500;

PEDRUNN_IMPROVEMENT[26] = TerrainImprovementDB(TILEIMP_SONAR_BUOYS);
PEDRUNN_TI_COST[26] = 1500;

PEDRUNN_IMPROVEMENT[27] = TerrainImprovementDB(TILEIMP_ROAD);
PEDRUNN_TI_COST[27] = 60;

PEDRUNN_IMPROVEMENT[28] = TerrainImprovementDB(TILEIMP_RAILROAD);
PEDRUNN_TI_COST[28] = 240;

PEDRUNN_IMPROVEMENT[29] = TerrainImprovementDB(TILEIMP_MAGLEV);
PEDRUNN_TI_COST[29] = 480;

PEDRUNN_IMPROVEMENT[30] = TerrainImprovementDB(TILEIMP_UNDERSEA_TUNNEL);
PEDRUNN_TI_COST[30] = 2000;

PEDRUNN_IMPROVEMENT[31] = TerrainImprovementDB(TILEIMP_UNDERSEA_FORTIFICATIONS);
PEDRUNN_TI_COST[31] = 3600;

PEDRUNN_IMPROVEMENT[32] = TerrainImprovementDB(TILEIMP_ANCIENT_CITY_ONE);
PEDRUNN_TI_COST[32] = 1000;

PEDRUNN_IMPROVEMENT[33] = TerrainImprovementDB(TILEIMP_MEDIEVAL_CITY_ONE);
PEDRUNN_TI_COST[33] = 1500;

PEDRUNN_IMPROVEMENT[34] = TerrainImprovementDB(TILEIMP_MODERN_CITY_ONE);
PEDRUNN_TI_COST[34] = 2000;

PEDRUNN_IMPROVEMENT[35] = TerrainImprovementDB(TILEIMP_MODERN_CITY_TWO);
PEDRUNN_TI_COST[35] = 2000;

PEDRUNN_IMPROVEMENT[36] = TerrainImprovementDB(TILEIMP_MODERN_CITY_THREE);
PEDRUNN_TI_COST[36] = 2000;

PEDRUNN_IMPROVEMENT[37] = TerrainImprovementDB(TILEIMP_GENETIC_CITY_ONE);
PEDRUNN_TI_COST[37] = 2500;

PEDRUNN_IMPROVEMENT[38] = TerrainImprovementDB(TILEIMP_GENETIC_CITY_TWO);
PEDRUNN_TI_COST[38] = 2500;

PEDRUNN_IMPROVEMENT[39] = TerrainImprovementDB(TILEIMP_FUTURE_CITY_ONE);
PEDRUNN_TI_COST[39] = 3000;

PEDRUNN_IMPROVEMENT[40] = TerrainImprovementDB(TILEIMP_FUTURE_CITY_TWO);
PEDRUNN_TI_COST[40] = 3000;

PEDRUNN_IMPROVEMENT[41] = TerrainImprovementDB(TILEIMP_SEA_CITY_ONE);
PEDRUNN_TI_COST[41] = 2000;

	DisableTrigger('SaveTileImpsInArrays');
}

//
// Bonus from creating a tile improvement over another
// 

HandleEvent(CreateImprovement) 'UpgradeImprovementBonus' pre {
int_t i;
int_t BonusPW;
int_t PlayerPW;
	for (i = 0; i < PEDRUNN_IMPROVEMENT.#; i = i + 1){
		if(TileHasImprovement(location[0], i)) {
			BonusPW = PEDRUNN_TI_COST[i]/5;
			PlayerPW = Player[0].publicworkslevel + BonusPW;
			SetPW(player[0], PlayerPW);
		}
	}
}

//
// Bonus from Pillaging
// 

HandleEvent(CutImprovements) 'PillageImprovementBonus' pre {
int_t i;
int_t BonusPW;
int_t PlayerPW;
unit_t tmpUnit;
location_t tmpLoc;
	tmpLoc = location[0];
	if(GetUnitsAtLocation(tmpLoc) > 0) {
		GetUnitFromCell(tmpLoc, 0, tmpUnit);
		if(tmpUnit.valid == 1) {
			player[3] = tmpUnit.owner;
			for(i = 0; i < PEDRUNN_IMPROVEMENT.#; i = i + 1) {
				if(TileHasImprovement(tmpLoc, PEDRUNN_IMPROVEMENT[i])) {
					BonusPW = PEDRUNN_TI_COST[i]/3;
					PlayerPW = player[3].publicworkslevel + Random(BonusPW);
					SetPW(player[3], PlayerPW);
				}
			}
		}
	}
}