posted 11-11-20 07:19 AM EDT (US)
int gCardNames = -1; // Array of strings, handy name for this card.
int gCardStates = -1; // Array of chars (strings), A = avail, N = Not avail, P = Purchased, D = in deck (and purchased)
int gCardPriorities = -1; // Array of ints, used for selecting cards into deck.
const int maxCards = 150;
const int deckSize = 20;
const int pointsForLevel2 = 5; // First five cards must be level 1
const int pointsForLevel3 = 25; // Cards 6..25 must be levels 1 or 2
rule buyCards
inactive
minInterval 1
{
static int pass = 0; // Pass 0, init arrays. Pass 1, buy cards. Pass 2, create deck.
static int startingSP = -1;
if (startingSP <0)
startingSP = kbResourceGet(cResourceSkillPoints) - 15; // XS won't allow float initialization of const ints, also subtract first 15 free cards.
int remainingSP = kbResourceGet(cResourceSkillPoints) - 15;
int SPSpent = startingSP - remainingSP;
int myLevel = 0;
if (SPSpent >= 10)
myLevel = 10;
if (SPSpent >= 25)
myLevel = 25;
int totalCardCount = aiHCCardsGetTotal();
aiEcho("My starting level is "+myLevel+", my SP remaining is "+remainingSP);
switch(pass) // Break processing load into 3 passes: init, buy, deck.
{
case 0: // Init arrays
{
gCardNames = xsArrayCreateString(maxCards, " ", "Card names");
gCardStates = xsArrayCreateString(maxCards, "P", "Card states");
gCardPriorities = xsArrayCreateInt(maxCards, 0, "Card priorities");
for (i=0; <totalCardCount)
{ // First, set maximum priority for the "best" cards
// 'Advanced Trading Post', 'Royal Decree', 'Advanced Arsenal', 'New Ways' & 'Advanced Balloon',
// plus '2 Grove Rickshaws' & 'Shogun Tokugawa'
if ((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCImprovedBuildings") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCImprovedBuildingsGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreeBritish") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreeDutch") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreeFrench") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreeGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreeOttoman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreePortuguese") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreeRussian") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalDecreeSpanish") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCAdvancedArsenal") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCAdvancedArsenalGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPNewWaysIroquois") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPNewWaysSioux") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPAdvancedBalloon") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCUnlockFactory") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRobberBarons") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCUnlockFactoryGerman") && (kbGetCiv() != cCivGermans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRobberBaronsGerman") && (kbGetCiv() != cCivGermans)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPIndustrialRevolution") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCExoticHardwoods") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCGrainMarket") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCShipCoveredWagons1") && (kbGetCiv() != cCivFrench)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCShipCoveredWagons1") && (kbGetCiv() != cCivBritish)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCShipCoveredWagons1") && (kbGetCiv() != cCivSpanish)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCShipCoveredWagons1") && (kbGetCiv() != cCivRussians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCShipCoveredWagons1") && (kbGetCiv() != cCivXPIroquois)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCShipCoveredWagons1German") && (kbGetCiv() != cCivGermans)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRefrigeration") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalMint") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCTextileMills") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRoyalMintGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRefrigerationGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCRoyalMintIndians") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCFencingSchoolIndians") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCRidingSchoolIndians") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCGermanTownFarmers") && (kbGetCiv() != cCivGermans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCGuildArtisans") && (kbGetCiv() != cCivGermans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCTeamTeutonTownCenter") && (kbGetCiv() != cCivGermans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCUhlanCombatGerman") && (kbGetCiv() != cCivGermans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCDutchEastIndiaCompany") && (kbGetCiv() != cCivDutch)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCBetterBanks") && (kbGetCiv() != cCivDutch)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCBanks1") && (kbGetCiv() != cCivDutch)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCBanks2") && (kbGetCiv() != cCivDutch)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRansack") && (kbGetCiv() != cCivRussians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCGurkhaAid") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCSustainableAgricultureIndians") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCIncreasedTribute") && (kbGetCiv() != cCivJapanese)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCMughalArchitecture") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCEastIndiaCompany") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCCamelDamageIndians") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRumDistillery") && (kbGetCiv() != cCivXPIroquois)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCSustainableAgriculture") && (kbGetCiv() != cCivXPIroquois)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCFencingSchool") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCFencingSchoolGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRidingSchool") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRidingSchoolGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCJanissaryCombatOttoman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCJanissaryCost") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCShipCoveredWagonIndians1") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCShipGroveWagonIndians2") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCElephantTrampling") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCElephantCombatIndians") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCElephantLimit") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCCamelFrightening") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCShipWoodCratesInf4Indians") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCShipHowdah2") && (kbGetCiv() != cCivIndians)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCShipUrumi2") && (kbGetCiv() != cCivIndians)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPCoyoteCombat") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPKnightDamage") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPKnightHitpoints") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPKnightCombat") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPInfantryCombatIroquois") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPSiegeCombat") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPInfantryHitpointsIroquois") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPInfantryDamageIroquois") && (kbGetCiv() != cCivXPIroquois)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCEngineeringSchool") && (kbGetCiv() != cCivXPIroquois)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPShipTomahawk3") && (kbGetCiv() != cCivXPIroquois)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPShipTomahawk5") && (kbGetCiv() != cCivXPIroquois)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPShipLightCannon2") && (kbGetCiv() != cCivXPIroquois)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPCommandSkill") && (kbGetCiv() != cCivXPSioux)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPMustangs") && (kbGetCiv() != cCivXPSioux)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCSpiceTrade") && (kbGetCiv() != cCivBritish)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCPioneers") && (kbGetCiv() != cCivFrench)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCLightArtilleryHitpointsOttoman") && (kbGetCiv() != cCivOttomans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCArtilleryDamageOttoman") && (kbGetCiv() != cCivOttomans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCArtilleryHitpointsOttomanTeam") && (kbGetCiv() != cCivOttomans)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCNativeWarriors") && (kbGetCiv() != cCivFrench)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCHandCavalryHitpointsFrench") && (kbGetCiv() != cCivFrench)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPAdoption") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPBuffalo4") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPCavalryDamageSioux") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPCavalryHitpointsSioux") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPCavalryCombatSioux") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPMedicineTeam") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCFoodSilos") && (kbGetCiv() != cCivXPSioux)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPEarthBounty") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPWindRunner") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPNomadicExpansion") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCCavalryCombatFrench") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCRangedInfantryDamageFrenchTeam") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCCavalryDamageGermanTeam") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCDragoonCombatPortuguese") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCCavalryCombatRussian") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCStreletsCombatRussian") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCCavalryCombatGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPSiouxTwoKettleSupport") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPSiouxSanteeSupport") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCXPSiouxYanktonSupport") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCHandInfantryCombatGerman") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCHandCavalryCombatSpanish") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "HCMusketeerGrenadierCombatBritish") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCHanAntiCavalryBonus") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCAccupuncture") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCBannerSchool") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCSamuraiDamage") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCSamuraiSpeed") && (kbGetCiv() != cCivJapanese)) ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCShipSamurai2") && (kbGetCiv() != cCivJapanese)) ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCNobleCombat") ||
(kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCNaginataHitpoints") ||
((kbGetTechName(aiHCCardsGetCardTechID(i)) == "YPHCShipYumi4") && (kbGetCiv() != cCivJapanese)) ||