def onWarDemanded(argsList): #BugUtil.debug("DiplomacyUtil::onWarDemanded %s" %(str(argsList))) eDemandPlayer, eTargetPlayer, eVictim = argsList BugUtil.debug("DiplomacyUtil - %s asks %s to declare war on %s", PlayerUtil.getPlayer(eDemandPlayer).getName(), PlayerUtil.getPlayer(eTargetPlayer).getName(), PlayerUtil.getPlayer(eVictim).getName())
def onWarRejected(argsList): #BugUtil.debug("DiplomacyUtil::onWarRejected %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eVictim = argsList BugUtil.debug("DiplomacyUtil - %s rejects demand from %s to declare war on %s", PlayerUtil.getPlayer(eTargetPlayer).getName(), PlayerUtil.getPlayer(eDemandPlayer).getName(), PlayerUtil.getPlayer(eVictim).getName())
def onEmbargoRejected(argsList): #BugUtil.debug("DiplomacyUtil::onEmbargoRejected %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eVictim = argsList BugUtil.debug("DiplomacyUtil - %s rejects demand from %s to stop trading with %s", PlayerUtil.getPlayer(eTargetPlayer).getName(), PlayerUtil.getPlayer(eDemandPlayer).getName(), PlayerUtil.getPlayer(eVictim).getName())
def onVassalOffered(argsList): #BugUtil.debug("DiplomacyUtil::onVassalOffered %s" %(str(argsList))) eOfferPlayer, eTargetPlayer = argsList BugUtil.debug( "DiplomacyUtil - %s offers vassalage to %s", PlayerUtil.getPlayer(eOfferPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0))
def onCivicRejected(argsList): #BugUtil.debug("DiplomacyUtil::onCivicRejected %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eCivic = argsList BugUtil.debug("DiplomacyUtil - %s rejects demand from %s to switch to %s", PlayerUtil.getPlayer(eTargetPlayer).getName(), PlayerUtil.getPlayer(eDemandPlayer).getName(), gc.getCivicInfo(eCivic).getDescription())
def onWarRejected(argsList): #BugUtil.debug("DiplomacyUtil::onWarRejected %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eVictim = argsList BugUtil.debug("DiplomacyUtil - %s rejects demand from %s to declare war on %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eVictim).getCivilizationShortDescription(0))
def onDealRejected(argsList): #BugUtil.debug("DiplomacyUtil::onDealRejected %s" %(str(argsList))) eTargetPlayer, eOfferPlayer, pTrade = argsList BugUtil.debug("DiplomacyUtil - %s accepts trade offered by %s: %r", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eOfferPlayer).getCivilizationShortDescription(0), pTrade)
def onCivicAccepted(argsList): #BugUtil.debug("DiplomacyUtil::onCivicAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eCivic = argsList BugUtil.debug("DiplomacyUtil - %s accepts demand from %s to switch to %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), gc.getCivicInfo(eCivic).getDescription())
def onHelpOffered(argsList): #BugUtil.debug("DiplomacyUtil::onHelpOffered %s" %(str(argsList))) eOfferPlayer, eTargetPlayer, pTrade = argsList BugUtil.debug("DiplomacyUtil - %s offers help to %s: %r", PlayerUtil.getPlayer(eOfferPlayer).getName(), PlayerUtil.getPlayer(eTargetPlayer).getName(), pTrade)
def onReligionRejected(argsList): #BugUtil.debug("DiplomacyUtil::onReligionRejected %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eReligion = argsList BugUtil.debug("DiplomacyUtil - %s rejects demand from %s to convert to %s", PlayerUtil.getPlayer(eTargetPlayer).getName(), PlayerUtil.getPlayer(eDemandPlayer).getName(), gc.getReligionInfo(eReligion).getDescription())
def onDealCanceled(argsList): #BugUtil.debug("DiplomacyUtil::onDealCanceled %s" %(str(argsList))) eOfferPlayer, eTargetPlayer, pTrade = argsList if eOfferPlayer != -1 and eTargetPlayer != -1 and pTrade is not None: BugUtil.debug("DiplomacyUtil - %s cancels deal with %s: %r", PlayerUtil.getPlayer(eOfferPlayer).getName(), PlayerUtil.getPlayer(eTargetPlayer).getName(), pTrade)
def onEmbargoAccepted(argsList): #BugUtil.debug("DiplomacyUtil::onEmbargoAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eVictim = argsList BugUtil.debug("DiplomacyUtil - %s agrees to demand from %s to stop trading with %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eVictim).getCivilizationShortDescription(0))
def onHelpOffered(argsList): #BugUtil.debug("DiplomacyUtil::onHelpOffered %s" %(str(argsList))) eOfferPlayer, eTargetPlayer, pTrade = argsList BugUtil.debug("DiplomacyUtil - %s offers help to %s: %r", PlayerUtil.getPlayer(eOfferPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), pTrade)
def onDealRejected(argsList): #BugUtil.debug("DiplomacyUtil::onDealRejected %s" %(str(argsList))) eTargetPlayer, eOfferPlayer, pTrade = argsList BugUtil.debug("DiplomacyUtil - %s accepts trade offered by %s: %r", PlayerUtil.getPlayer(eTargetPlayer).getName(), PlayerUtil.getPlayer(eOfferPlayer).getName(), pTrade)
def onReligionAccepted(argsList): #BugUtil.debug("DiplomacyUtil::onReligionAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eReligion = argsList BugUtil.debug("DiplomacyUtil - %s accepts demand from %s to convert to %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), gc.getReligionInfo(eReligion).getDescription())
def onVassalOffered(argsList): # BugUtil.debug("DiplomacyUtil::onVassalOffered %s" %(str(argsList))) eOfferPlayer, eTargetPlayer = argsList BugUtil.debug( "DiplomacyUtil - %s offers vassalage to %s", PlayerUtil.getPlayer(eOfferPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), )
def onEmbargoAccepted(argsList): # BugUtil.debug("DiplomacyUtil::onEmbargoAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eVictim = argsList BugUtil.debug( "DiplomacyUtil - %s agrees to demand from %s to stop trading with %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eVictim).getCivilizationShortDescription(0), )
def onTributeRejected(argsList): #BugUtil.debug("DiplomacyUtil::onTributeRejected %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, pTrade = argsList szItems = "" for i in range(pTrade.getCount()): szItems = szItems + TradeUtil.format(eTargetPlayer, pTrade.getTrade(i)) BugUtil.debug("DiplomacyUtil - %s refuses to give tribute (%s) to %s", PlayerUtil.getPlayer(eTargetPlayer).getName(), szItems, PlayerUtil.getPlayer(eDemandPlayer).getName())
def onDealRejected(argsList): # BugUtil.debug("DiplomacyUtil::onDealRejected %s" %(str(argsList))) eTargetPlayer, eOfferPlayer, pTrade = argsList BugUtil.debug( "DiplomacyUtil - %s accepts trade offered by %s: %r", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eOfferPlayer).getCivilizationShortDescription(0), pTrade, )
def onTributeDemanded(argsList): #BugUtil.debug("DiplomacyUtil::onTributeDemanded %s" %(str(argsList))) eDemandPlayer, eTargetPlayer, pTrade = argsList szItems = "" for i in range(pTrade.getCount()): szItems = szItems + TradeUtil.format(eTargetPlayer, pTrade.getTrade(i)) BugUtil.debug("DiplomacyUtil - %s demands a tribute (%s) from %s", PlayerUtil.getPlayer(eDemandPlayer).getName(), szItems, PlayerUtil.getPlayer(eTargetPlayer).getName())
def onHelpAccepted(argsList): #BugUtil.debug("DiplomacyUtil::onHelpAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, pTrade = argsList szItems = "" for i in range(pTrade.getCount()): szItems = szItems + TradeUtil.format(eTargetPlayer, pTrade.getTrade(i)) BugUtil.debug("DiplomacyUtil - %s agrees to give help (%s) to %s", PlayerUtil.getPlayer(eTargetPlayer).getName(), szItems, PlayerUtil.getPlayer(eDemandPlayer).getName())
def onReligionAccepted(argsList): # BugUtil.debug("DiplomacyUtil::onReligionAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eReligion = argsList BugUtil.debug( "DiplomacyUtil - %s accepts demand from %s to convert to %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), gc.getReligionInfo(eReligion).getDescription(), )
def onWarRejected(argsList): # BugUtil.debug("DiplomacyUtil::onWarRejected %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eVictim = argsList BugUtil.debug( "DiplomacyUtil - %s rejects demand from %s to declare war on %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eVictim).getCivilizationShortDescription(0), )
def onHelpOffered(argsList): # BugUtil.debug("DiplomacyUtil::onHelpOffered %s" %(str(argsList))) eOfferPlayer, eTargetPlayer, pTrade = argsList BugUtil.debug( "DiplomacyUtil - %s offers help to %s: %r", PlayerUtil.getPlayer(eOfferPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), pTrade, )
def onCivicAccepted(argsList): # BugUtil.debug("DiplomacyUtil::onCivicAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, eCivic = argsList BugUtil.debug( "DiplomacyUtil - %s accepts demand from %s to switch to %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), gc.getCivicInfo(eCivic).getDescription(), )
def onHelpDemanded(argsList): #BugUtil.debug("DiplomacyUtil::onHelpDemanded %s" %(str(argsList))) eDemandPlayer, eTargetPlayer, pTrade = argsList szItems = "" for i in range(pTrade.getCount()): szItems = szItems + TradeUtil.format(eTargetPlayer, pTrade.getTrade(i)) BugUtil.debug("DiplomacyUtil - %s requests help (%s) from %s", PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), szItems, PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0))
def onTributeAccepted(argsList): #BugUtil.debug("DiplomacyUtil::onTributeAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, pTrade = argsList szItems = "" for i in range(pTrade.getCount()): szItems = szItems + TradeUtil.format(eTargetPlayer, pTrade.getTrade(i)) BugUtil.debug("DiplomacyUtil - %s agrees to give tribute (%s) to %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), szItems, PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0))
def test(): allDeals = findDealsByPlayerAndType(0, ( TradeableItems.TRADE_PEACE_TREATY, TradeableItems.TRADE_OPEN_BORDERS, TradeableItems.TRADE_DEFENSIVE_PACT, TradeableItems.TRADE_RESOURCES, TradeableItems.TRADE_GOLD_PER_TURN, )) for player, deals in allDeals.iteritems(): print PlayerUtil.getPlayer(player).getName() for type, deal in deals.iteritems(): print "%s: %r" % (TradeUtil.TRADE_FORMATS[type].name, deal)
def onHelpDemanded(argsList): # BugUtil.debug("DiplomacyUtil::onHelpDemanded %s" %(str(argsList))) eDemandPlayer, eTargetPlayer, pTrade = argsList szItems = "" for i in range(pTrade.getCount()): szItems = szItems + TradeUtil.format(eTargetPlayer, pTrade.getTrade(i)) BugUtil.debug( "DiplomacyUtil - %s requests help (%s) from %s", PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), szItems, PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), )
def onTributeAccepted(argsList): # BugUtil.debug("DiplomacyUtil::onTributeAccepted %s" %(str(argsList))) eTargetPlayer, eDemandPlayer, pTrade = argsList szItems = "" for i in range(pTrade.getCount()): szItems = szItems + TradeUtil.format(eTargetPlayer, pTrade.getTrade(i)) BugUtil.debug( "DiplomacyUtil - %s agrees to give tribute (%s) to %s", PlayerUtil.getPlayer(eTargetPlayer).getCivilizationShortDescription(0), szItems, PlayerUtil.getPlayer(eDemandPlayer).getCivilizationShortDescription(0), )
def printStatus(ePlayer, eAskingPlayer=None): player = PlayerUtil.getPlayer(ePlayer) if eAskingPlayer is None: eAskingPlayer = PlayerUtil.getActivePlayerID() print "Trade Status -- %s" % player.getCivilizationShortDescription(0) for eItem, name in STATUS_TRADE_ITEMS: tradeData = TradeData() tradeData.ItemType = eItem can = player.canTradeItem(eAskingPlayer, tradeData, False) denial = player.getTradeDenial(eAskingPlayer, tradeData) will = denial == DenialTypes.NO_DENIAL if denial in DENIALS: denial = DENIALS[denial] else: denial = str(denial) if not can: if will: print "%s: can't but will" % (name) else: print "%s: can't and won't because %s" % (name, denial) else: if will: print "%s: will" % (name) else: print "%s: won't because %s" % (name, denial)
def getWorstEnemyTeams(): """ Returns a dictionary of the team IDs that are each team's worst enemy. The key is team ID; the value is the worst enemy team ID. If a team has no worst enemy, -1 is stored as its value. Ignores dead, human, barbarian, and minor teams. Loops over players because CyTeam does not have getWorstEnemyName(). """ namesToID = {} for team in PlayerUtil.teams(alive=True, barbarian=False, minor=False): namesToID[team.getName()] = team.getID() enemies = {} for team in PlayerUtil.teams(alive=True, human=False, barbarian=False, minor=False): eTeam = team.getID() eLeader = team.getLeaderID() if eLeader != -1: player = PlayerUtil.getPlayer(eLeader) worstEnemyName = player.getWorstEnemyName() if worstEnemyName: try: enemies[eTeam] = namesToID[worstEnemyName] except KeyError: BugUtil.debug("Cannot find team \"%s\"", worstEnemyName) enemies[eTeam] = -1 else: enemies[eTeam] = -1 return enemies
def getKnownTrainableUnits(playerOrID, askingPlayerOrID, knowableUnits, bonuses, military=None): player, team = PlayerUtil.getPlayerAndTeam(playerOrID) askingPlayer = PlayerUtil.getPlayer(askingPlayerOrID) eAskingTeam, askingTeam = PlayerUtil.getPlayerTeamAndID(askingPlayer) #trade = player.canTradeNetworkWith(askingPlayer.getID()) cities = PlayerUtil.getPlayerCities( player, lambda city: city.isRevealed(eAskingTeam, False)) # separate units into two groups: yes and maybe units = getTrainableUnits(playerOrID, knowableUnits, False, military) yesUnits = set() maybeUnits = set() BugUtil.debug("-----------------------") for eUnit in units: if not canAnyCityBuildUnit(eUnit, cities, eAskingTeam, False): BugUtil.debug(" no %s", gc.getUnitInfo(eUnit).getDescription()) elif hasBonusesForUnit(eUnit, bonuses): BugUtil.debug(" yes %s", gc.getUnitInfo(eUnit).getDescription()) yesUnits.add(eUnit) elif bonuses is None: BugUtil.debug(" maybe %s", gc.getUnitInfo(eUnit).getDescription()) maybeUnits.add(eUnit) return yesUnits, maybeUnits
def tradeParters(playerOrID): """ Iterates over all of <player>'s possible trade partners, yielding each CyPlayer in turn. """ player = PlayerUtil.getPlayer(playerOrID) for partner in PlayerUtil.players(alive=True, barbarian=False, minor=False): if canTrade(player, partner): yield partner
def getSurplusBonuses(playerOrID, minimum=1): """ Returns a list of bonus IDs of which <player> has at least <minimum> available to export. """ player = PlayerUtil.getPlayer(playerOrID) available = [] for eBonus in range(gc.getNumBonusInfos()): if player.getNumTradeableBonuses(eBonus) >= minimum: available.append(eBonus) return available
def getCorporationBonuses(playerOrID): """ Returns the set of bonus IDs that <player> can receive due to their corporations. Takes into account anything (e.g. civics) that alters <player>'s ability to run corporations. """ player = PlayerUtil.getPlayer(playerOrID) bonuses = set() for eCorp, inputs in CORP_BONUSES.iteritems(): if player.getHasCorporationCount(eCorp) > 0: bonuses |= inputs return bonuses
def getTradePartnersByPlayer(playerOrID, testFunction, *args): """ Returns a list of CyPlayers that can trade with <player>. <testFunction> is passed two CyPlayers plus <args> for each viable pairing and should return a boolean value. """ player = PlayerUtil.getPlayer(playerOrID) partners = [] for partner in tradeParters(player): if testFunction(player, partner, *args): partners.append(partner) return partners
def triggerRandomEvent(argsList): id = argsList[0] iData1 = argsList[1] BugUtil.debug("args: %r", argsList) type = None if id < gc.getNumEventTriggerInfos(): type = gc.getEventTriggerInfo(id).getType() else: return BugUtil.alert("Event: %s [%d]", type, id) pPlayer = PlayerUtil.getPlayer(iData1) pPlayer.trigger(id)
def getTradePartnersByTeam(playerOrID, testFunction, *args): """ Returns a list of CyPlayers that can trade with <player>. <testFunction> is passed two CyTeams plus <args> for each viable pairing and should return a boolean value. """ #DLP if CyGame().isPitbossHost(): return player = PlayerUtil.getPlayer(playerOrID) team = PlayerUtil.getTeam(player.getTeam()) partners = [] for partner in tradeParters(player): if testFunction(team, PlayerUtil.getTeam(partner.getTeam()), *args): partners.append(partner) return partners
def getKnownTrainableUnits(playerOrID, askingPlayerOrID, knowableUnits, bonuses, military=None): player, team = PlayerUtil.getPlayerAndTeam(playerOrID) askingPlayer = PlayerUtil.getPlayer(askingPlayerOrID) eAskingTeam, askingTeam = PlayerUtil.getPlayerTeamAndID(askingPlayer) # trade = player.canTradeNetworkWith(askingPlayer.getID()) cities = PlayerUtil.getPlayerCities(player, lambda city: city.isRevealed(eAskingTeam, False)) # separate units into two groups: yes and maybe units = getTrainableUnits(playerOrID, knowableUnits, False, military) yesUnits = set() maybeUnits = set() BugUtil.debug("-----------------------") for eUnit in units: if not canAnyCityBuildUnit(eUnit, cities, eAskingTeam, False): BugUtil.debug(" no %s", gc.getUnitInfo(eUnit).getDescription()) elif hasBonusesForUnit(eUnit, bonuses): BugUtil.debug(" yes %s", gc.getUnitInfo(eUnit).getDescription()) yesUnits.add(eUnit) elif bonuses is None: BugUtil.debug(" maybe %s", gc.getUnitInfo(eUnit).getDescription()) maybeUnits.add(eUnit) return yesUnits, maybeUnits
def getTradeableBonuses(fromPlayerOrID, toPlayerOrID): """ Returns two sets of bonus IDs that <fromPlayer> will and won't trade to <toPlayer>. Assumes that the two players can trade bonuses. """ fromPlayer = PlayerUtil.getPlayer(fromPlayerOrID) eToPlayer = PlayerUtil.getPlayerID(toPlayerOrID) fromPlayerIsHuman = fromPlayer.isHuman() will = set() wont = set() tradeData = TradeData() tradeData.ItemType = TradeableItems.TRADE_RESOURCES for eBonus in range(gc.getNumBonusInfos()): tradeData.iData = eBonus if fromPlayer.canTradeItem(eToPlayer, tradeData, False): if fromPlayerIsHuman or fromPlayer.canTradeItem(eToPlayer, tradeData, True): will.add(eBonus) else: wont.add(eBonus) return will, wont