rule consulateMonitor inactive minInterval 5 { // Disable rule for non-Asian civilizations if (civIsAsian() == false) { xsDisableSelf(); return; } // Quit if consulate is not allowed and not already built if ((cvOkToBuildConsulate == false) && (kbUnitCount(cMyID, cUnitTypeypConsulate, cUnitStateABQ) == 0)) { return; } // Build a consulate if there is none if ((kbUnitCount(cMyID, cUnitTypeypConsulate, cUnitStateABQ) < 1) && (aiPlanGetIDByTypeAndVariableType(cPlanBuild, cBuildPlanBuildingTypeID, cUnitTypeypConsulate) < 0)) { createSimpleBuildPlan(cUnitTypeypConsulate, 1, 75, true, cEconomyEscrowID, kbBaseGetMainID(cMyID), 1); aiEcho("Starting a new consulate build plan."); } // If no option has been chosen already, choose one now //if ((kbUnitCount(cMyID, cUnitTypeypConsulate, cUnitStateAlive) > 0) && (gFlagChosen == false)) // if ((kbTechGetStatus(cTechypBigConsulateBritish) != cTechStatusActive) || (kbTechGetStatus(cTechypBigConsulateJapanese) != cTechStatusActive)) { chooseConsulateFlag(); } // Maximize export generation in Age 4 and above if ((kbGetAge() >= cAge4)) { int consulateQueryID = -1; consulateQueryID = kbUnitQueryCreate("consulateGetUnitQuery"); kbUnitQuerySetIgnoreKnockedOutUnits(consulateQueryID, true); // Define a query to get consulate if (consulateQueryID != -1) { kbUnitQuerySetPlayerRelation(consulateQueryID, -1); kbUnitQuerySetPlayerID(consulateQueryID, cMyID); kbUnitQuerySetUnitType(consulateQueryID, cUnitTypeypConsulate); kbUnitQuerySetState(consulateQueryID, cUnitStateAlive); kbUnitQueryResetResults(consulateQueryID); int numberFound = kbUnitQueryExecute(consulateQueryID); // Set export gathering rate to +60 % if (numberFound > 0) { aiUnitSetTactic(kbUnitQueryGetResult(consulateQueryID, 0), cTacticTax10); } } } // Research consulate technologies one at a time // Unavailable techs are simply ignored int upgradePlanID = -1; // British technologies if (kbTechGetStatus(cTechypConsulateBritishRedcoats) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateBritishRedcoats); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateBritishRedcoats, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateBritishRogersRangers) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateBritishRogersRangers); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateBritishRogersRangers, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateBritishLifeGuards) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateBritishLifeGuards); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateBritishLifeGuards, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } // Dutch technologies // (bank wagon, arsenal wagon, church wagon) if (kbTechGetStatus(cTechypConsulateDutchSaloonWagon) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateDutchSaloonWagon); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateDutchSaloonWagon, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateDutchArsenalWagon) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateDutchArsenalWagon); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateDutchArsenalWagon, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); xsEnableRule("arsenalUpgradeAsianMonitor"); return; } if (kbTechGetStatus(cTechypConsulateDutchChurchWagon) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateDutchChurchWagon); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateDutchChurchWagon, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); xsEnableRule("churchUpgradeAsianMonitor"); return; } if (kbTechGetStatus(cTechypConsulateDutchLivestockPenWagon) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateDutchLivestockPenWagon); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateDutchLivestockPenWagon, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); xsEnableRule("ShrineGoatMonitor"); return; } // French technologies if (kbTechGetStatus(cTechypConsulateFrenchWoodCrates) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateFrenchWoodCrates); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateFrenchWoodCrates, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateFrenchCoinCrates) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateFrenchCoinCrates); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateFrenchCoinCrates, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateFrenchFoodCrates) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateFrenchFoodCrates); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateFrenchFoodCrates, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } // German technologies if (kbTechGetStatus(cTechypConsulateGermansFoodTrickle) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateGermansFoodTrickle); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateGermansFoodTrickle, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateGermansWoodTrickle) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateGermansWoodTrickle); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateGermansWoodTrickle, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateGermansCoinTrickle) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateGermansCoinTrickle); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateGermansCoinTrickle, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateJapaneseMasterTraining) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateJapaneseMasterTraining); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateJapaneseMasterTraining, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateJapaneseMilitaryRickshaw) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateJapaneseMilitaryRickshaw); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateJapaneseMilitaryRickshaw, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } // Ottoman technologies // (Great bombards) if (kbTechGetStatus(cTechypConsulateOttomansGunpowderSiege) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateOttomansGunpowderSiege); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateOttomansGunpowderSiege, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateOttomansInfantrySpeed) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateOttomansInfantrySpeed); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateOttomansInfantrySpeed, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } // Portuguese technologies // (Ironclad) if ((kbTechGetStatus(cTechypConsulatePortugueseExpeditionaryFleet) == cTechStatusObtainable) && (kbUnitCount(cMyID, cUnitTypeHomeCityWaterSpawnFlag, cUnitStateAlive) > 0)) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulatePortugueseExpeditionaryFleet); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulatePortugueseExpeditionaryFleet, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } if ((kbTechGetStatus(cTechypConsulatePortugueseFishingFleet) == cTechStatusObtainable) && (kbUnitCount(cMyID, cUnitTypeHomeCityWaterSpawnFlag, cUnitStateAlive) > 0)) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulatePortugueseFishingFleet); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulatePortugueseFishingFleet, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } // Russian technologies // (fort wagon, factory wagon, blockhouse wagon) if (kbTechGetStatus(cTechypConsulateRussianFortWagon) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateRussianFortWagon); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateRussianFortWagon, getUnit(cUnitTypeypConsulate), cMilitaryEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateRussianFactoryWagon) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateRussianFactoryWagon); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateRussianFactoryWagon, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateRussianOutpostWagon) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateRussianOutpostWagon); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateRussianOutpostWagon, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } // Spanish technologies if (kbTechGetStatus(cTechypConsulateSpanishMercantilism) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateSpanishMercantilism); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateSpanishMercantilism, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateSpanishFasterShipments) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateSpanishFasterShipments); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateSpanishFasterShipments, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (kbTechGetStatus(cTechypConsulateSpanishEnhancedProfits) == cTechStatusObtainable) { upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypConsulateSpanishEnhancedProfits); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypConsulateSpanishEnhancedProfits, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 95); return; } if (cvOkToTrainArmy == false) return; // Maintain plans static int consulateUPID = -1; static int consulateMaintainPlans = -1; if (consulateUPID < 0) { // create the unit picker after we choose a consulate flag if (kbTechGetStatus(cTechypBigConsulatePortuguese) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateDutch) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateRussians) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateSpanish) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateBritish) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateFrench) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateGermans) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateOttomans) != cTechStatusActive && kbTechGetStatus(cTechypBigConsulateJapanese) != cTechStatusActive) return; // Create it. consulateUPID = kbUnitPickCreate("Consulate army"); if (consulateUPID < 0) return; consulateMaintainPlans = xsArrayCreateInt(4, -1, "Consulate maintain plans"); } bool homeBaseUnderAttack = false; if (gDefenseReflexBaseID == kbBaseGetMainID(cMyID)) homeBaseUnderAttack = true; if ((homeBaseUnderAttack == true) || (kbGetAge() > cAge3)) { int numberResults = 0; int i = 0; int trainUnitID = -1; int planID = -1; int numberToMaintain = 0; // Default init. kbUnitPickResetAll(consulateUPID); kbUnitPickSetPreferenceWeight(consulateUPID, 2.0); if (gSPC == false) { kbUnitPickSetCombatEfficiencyWeight(consulateUPID, 0.4); // Changed from 1.0 to dilute the power of the preference weight. kbUnitPickSetBuildingCombatEfficiencyWeight(consulateUPID, 0.0); } else { kbUnitPickSetCombatEfficiencyWeight(consulateUPID, 0.2); // Leave it at 1.0 to avoid messing up SPC balance kbUnitPickSetBuildingCombatEfficiencyWeight(consulateUPID, 0.0); } kbUnitPickSetCostWeight(consulateUPID, 0.0); // Desired number units types, buildings. kbUnitPickSetDesiredNumberUnitTypes(consulateUPID, 2, 1, true); // Default to land units. kbUnitPickSetEnemyPlayerID(consulateUPID, aiGetMostHatedPlayerID()); kbUnitPickSetAttackUnitType(consulateUPID, cUnitTypeLogicalTypeLandMilitary); // Set the default target types and weights, for use until we've seen enough actual units. kbUnitPickAddCombatEfficiencyType(consulateUPID, cUnitTypeLogicalTypeLandMilitary, 1.0); kbUnitPickAddBuildingCombatEfficiencyType(consulateUPID, cUnitTypeMilitaryBuilding, 0.0); kbUnitPickAddBuildingCombatEfficiencyType(consulateUPID, cUnitTypeAbstractTownCenter, 0.0); kbUnitPickSetMinimumCounterModePop(consulateUPID, 15); kbUnitPickSetPreferenceFactor(consulateUPID, cUnitTypeAbstractConsulateSiegeIndustrial, 0.25); kbUnitPickSetPreferenceFactor(consulateUPID, cUnitTypeAbstractConsulateSiegeFortress, 0.0); kbUnitPickSetPreferenceFactor(consulateUPID, cUnitTypeAbstractConsulateUnitColonial, 0.0); kbUnitPickSetPreferenceFactor(consulateUPID, cUnitTypeAbstractConsulateUnit, 0.0); // Banner armies are calculated with a weighed average of unit types the banner army contains kbUnitPickRemovePreferenceFactor(consulateUPID, cUnitTypeAbstractBannerArmy); kbUnitPickRun(consulateUPID); for (i = 0; < 2) { trainUnitID = kbUnitPickGetResult(consulateUPID, i); planID = xsArrayGetInt(consulateMaintainPlans, i); if (planID >= 0) { if (trainUnitID == aiPlanGetVariableInt(planID, cTrainPlanUnitType, 0)) { numberToMaintain = kbResourceGet(cResourceTrade) / kbUnitCostPerResource(trainUnitID, cResourceTrade); aiPlanSetVariableInt(planID, cTrainPlanNumberToMaintain, 0, numberToMaintain); continue; } aiPlanDestroy(planID); } if (trainUnitID < 0) continue; numberToMaintain = kbResourceGet(cResourceTrade) / kbUnitCostPerResource(trainUnitID, cResourceTrade); planID = createSimpleMaintainPlan(trainUnitID, numberToMaintain, false, kbBaseGetMainID(cMyID), 1); aiPlanSetDesiredResourcePriority(planID, 30 - i); // below research plans xsArraySetInt(consulateMaintainPlans, i, planID); } } else return; } rule ShrineGoatMonitor inactive minInterval 15 { static int cowPlan = -1; int numHerdables = 0; int numCows = 0; // Quit if there is no sacred field around or we're in age1 without excess food if (kbResourceGet(cResourceFood) < 4000) { return; } // Check number of captured herdables, add sacred cows as necessary to bring total number to 10 numHerdables = kbUnitCount(cMyID, cUnitTypeypGoat, cUnitStateAlive); numCows = (30 - numHerdables); if (numCows > 0) { // Create/update maintain plan if (cowPlan < 0) { cowPlan = createSimpleMaintainPlan(cUnitTypeypGoat, numCows, true, kbBaseGetMainID(cMyID), 1); } else { aiPlanSetVariableInt(cowPlan, cTrainPlanNumberToMaintain, 0, numCows); } } } void chooseConsulateFlag() { int consulatePlanID = -1; int randomizer = aiRandInt(100); // 0-99 int flag_button_id = -1; int upgradePlanID = -1; if ((cMyCiv == cCivChinese) || (cMyCiv == cCivSPCChinese)) { flag_button_id = cTechypBigConsulateFrench; if (kbTechGetStatus(cTechypBigConsulateFrench) == cTechStatusActive) { if ((kbTechGetStatus(cTechypConsulateFrenchWoodCrates) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateFrenchCoinCrates) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateFrenchFoodCrates) == cTechStatusObtainable)) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterFrench); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterFrench, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateGermans; } } if (kbTechGetStatus(cTechypBigConsulateGermans) == cTechStatusActive) { if ((kbTechGetStatus(cTechypConsulateGermansFoodTrickle) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateGermansWoodTrickle) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateGermansCoinTrickle) == cTechStatusObtainable)) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterGermans); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterGermans, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateRussians; } } if (kbTechGetStatus(cTechypBigConsulateRussians) == cTechStatusActive) { if ((kbTechGetStatus(cTechypConsulateRussianFortWagon) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateRussianFactoryWagon) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateRussianOutpostWagon) == cTechStatusObtainable)) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterRussians); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterRussians, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateBritish; } } } if ((cMyCiv == cCivIndians) || (cMyCiv == cCivSPCIndians)) { /* if (kbUnitCount(cMyID, cUnitTypeHomeCityWaterSpawnFlag) > 0) { flag_button_id = cTechypBigConsulatePortuguese; if (kbTechGetStatus(cTechypBigConsulatePortuguese) == cTechStatusActive) { if (kbTechGetStatus(cTechypConsulatePortugueseFishingFleet) == cTechStatusObtainable) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterPortuguese); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterPortuguese, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateOttomans; } } } else */ flag_button_id = cTechypBigConsulateOttomans; if (kbTechGetStatus(cTechypBigConsulateOttomans) == cTechStatusActive) { if (kbTechGetStatus(cTechypConsulateOttomansInfantrySpeed) == cTechStatusObtainable) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterOttomans); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterOttomans, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateFrench; } } if (kbTechGetStatus(cTechypBigConsulateFrench) == cTechStatusActive) { if ((kbTechGetStatus(cTechypConsulateFrenchWoodCrates) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateFrenchCoinCrates) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateFrenchFoodCrates) == cTechStatusObtainable)) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterFrench); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterFrench, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateBritish; } } } if ((cMyCiv == cCivJapanese) || (cMyCiv == cCivSPCJapanese)) { /* if (kbUnitCount(cMyID, cUnitTypeHomeCityWaterSpawnFlag) > 0) { flag_button_id = cTechypBigConsulatePortuguese; if (kbTechGetStatus(cTechypBigConsulatePortuguese) == cTechStatusActive) { if (kbTechGetStatus(cTechypConsulatePortugueseFishingFleet) == cTechStatusObtainable) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterPortuguese); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterPortuguese, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateSpanish; } } } else */ flag_button_id = cTechypBigConsulateSpanish; if (kbTechGetStatus(cTechypBigConsulateSpanish) == cTechStatusActive) { if ((kbTechGetStatus(cTechypConsulateSpanishFasterShipments) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateSpanishMercantilism) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateSpanishEnhancedProfits) == cTechStatusObtainable)) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterSpanish); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterSpanish, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateDutch; } } if (kbTechGetStatus(cTechypBigConsulateDutch) == cTechStatusActive) { if ((kbTechGetStatus(cTechypConsulateDutchArsenalWagon) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateDutchSaloonWagon) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateDutchLivestockPenWagon) == cTechStatusObtainable) || (kbTechGetStatus(cTechypConsulateDutchChurchWagon) == cTechStatusObtainable)) return; else { createSimpleResearchPlan(cTechypBigSequester, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); upgradePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, cTechypBigSequesterDutch); if (upgradePlanID >= 0) aiPlanDestroy(upgradePlanID); createSimpleResearchPlan(cTechypBigSequesterDutch, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 50); flag_button_id = cTechypBigConsulateJapanese; } } } if (kbTechGetStatus(flag_button_id) == cTechStatusObtainable) { consulatePlanID = aiPlanGetIDByTypeAndVariableType(cPlanResearch, cResearchPlanTechID, flag_button_id); if (consulatePlanID < 0) { aiEcho("************Consulate Flag************"); aiEcho("Our Consulate flag is: " + kbGetTechName(flag_button_id)); aiEcho("Randomizer value: " + randomizer); createSimpleResearchPlan(flag_button_id, getUnit(cUnitTypeypConsulate), cEconomyEscrowID, 40); gFlagChosen = true; } } }