Example #1
0
def isWHEOOH(playerOrID, askingPlayerOrID):
    """
    Returns True if askingPlayerOrID can see that playerOrID is WHEOOH.

    In game terms, this is the case if the player gives the TOO_MANY_WARS denial type
    for a request to go to war against a rival.
    """
    askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
    askingPlayer, askingTeam = getPlayerAndTeam(askingPlayerOrID)
    if not TradeUtil.canTrade(askingPlayer, askedPlayer):
        return False
    tradeData = TradeData()
    tradeData.ItemType = TradeableItems.TRADE_WAR
    for player in players(alive=True, barbarian=False, minor=False):
        eTeam = player.getTeam()
        if eTeam == askingPlayer.getTeam() or eTeam == askedPlayer.getTeam(
        ) or askedTeam.isAtWar(eTeam):
            # won't DoW your team, their team, or a team they are fighting
            continue
        if not ((askingTeam.isHasMet(eTeam) and askedTeam.isHasMet(eTeam))
                or gc.getGame().isDebugMode()):
            # won't DoW someone you or they haven't met
            continue
        tradeData.iData = eTeam
        if askedPlayer.canTradeItem(askingPlayer.getID(), tradeData, False):
            denial = askedPlayer.getTradeDenial(askingPlayer.getID(),
                                                tradeData)
            if denial == DenialTypes.DENIAL_TOO_MANY_WARS:
                return True
    return False
Example #2
0
def getPossibleEmbargos(playerOrID, askingPlayerOrID):
    """
    Returns a list of all CyPlayers with which playerOrID will stop trading.

    The askingPlayerOrID is used to limit the list to players they have met.
    """
    askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
    askingPlayer, askingTeam = getPlayerAndTeam(askingPlayerOrID)
    if not TradeUtil.canTrade(askingPlayer, askedPlayer):
        return ()
    embargos = []
    tradeData = TradeData()
    tradeData.ItemType = TradeableItems.TRADE_EMBARGO
    for player in players(alive=True, barbarian=False, minor=False):
        eTeam = player.getTeam()
        if eTeam == askingPlayer.getTeam() or eTeam == askedPlayer.getTeam(
        ) or askedTeam.isAtWar(eTeam):
            # won't embargo your team, their team, or a team they are fighting
            continue
        if not ((askingTeam.isHasMet(eTeam) and askedTeam.isHasMet(eTeam))
                or gc.getGame().isDebugMode()):
            # won't embargo someone you or they haven't met
            continue
        tradeData.iData = eTeam
        if askedPlayer.canTradeItem(askingPlayer.getID(), tradeData, True):
            embargos.append(player)
    return embargos
Example #3
0
def getPossibleWars(playerOrID, askingPlayerOrID):
    """
    Returns a tuple containing the WHEOOH status of the given player and
    a list of all CyPlayers on which playerOrID will declare war in a trade.

    The askingPlayerOrID is used to limit the list to players they have met.
    """
    askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
    askingPlayer, askingTeam = getPlayerAndTeam(askingPlayerOrID)
    if not TradeUtil.canTrade(askingPlayer, askedPlayer):
        return (False, ())
    wheooh = False
    wars = []
    tradeData = TradeData()
    tradeData.ItemType = TradeableItems.TRADE_WAR
    for player in players(alive=True, barbarian=False, minor=False):
        eTeam = player.getTeam()
        if eTeam == askingPlayer.getTeam() or eTeam == askedPlayer.getTeam(
        ) or askedTeam.isAtWar(eTeam):
            # won't DoW your team, their team, or a team they are fighting
            continue
        if not ((askingTeam.isHasMet(eTeam) and askedTeam.isHasMet(eTeam))
                or gc.getGame().isDebugMode()):
            # won't DoW someone you or they haven't met
            continue
        tradeData.iData = eTeam
        if askedPlayer.canTradeItem(askingPlayer.getID(), tradeData, False):
            denial = askedPlayer.getTradeDenial(askingPlayer.getID(),
                                                tradeData)
            if denial == DenialTypes.NO_DENIAL:
                wars.append(player)
            elif denial == DenialTypes.DENIAL_TOO_MANY_WARS:
                wheooh = True
    return (wheooh, wars)
Example #4
0
def isWHEOOH(playerOrID, askingPlayerOrID):
	"""
	Returns True if askingPlayerOrID can see that playerOrID is WHEOOH.
	
	In game terms, this is the case if the player gives the TOO_MANY_WARS denial type
	for a request to go to war against a rival.
	"""
	askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
	askingPlayer, askingTeam = getPlayerAndTeam(askingPlayerOrID)
	if not TradeUtil.canTrade(askingPlayer, askedPlayer):
		return False
	tradeData = TradeData()
	tradeData.ItemType = TradeableItems.TRADE_WAR
	for player in players(alive=True, barbarian=False, minor=False):
		eTeam = player.getTeam()
		if eTeam == askingPlayer.getTeam() or eTeam == askedPlayer.getTeam() or askedTeam.isAtWar(eTeam):
			# won't DoW your team, their team, or a team they are fighting
			continue
		if not ((askingTeam.isHasMet(eTeam) and askedTeam.isHasMet(eTeam)) or gc.getGame().isDebugMode()):
			# won't DoW someone you or they haven't met
			continue
		tradeData.iData = eTeam
		if askedPlayer.canTradeItem(askingPlayer.getID(), tradeData, False):
			denial = askedPlayer.getTradeDenial(askingPlayer.getID(), tradeData)
			if denial == DenialTypes.DENIAL_TOO_MANY_WARS:
				return True
	return False
Example #5
0
def getPossibleEmbargos(playerOrID, askingPlayerOrID):
	"""
	Returns a list of all CyPlayers with which playerOrID will stop trading.
	
	The askingPlayerOrID is used to limit the list to players they have met.
	"""
	askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
	askingPlayer, askingTeam = getPlayerAndTeam(askingPlayerOrID)
	if not TradeUtil.canTrade(askingPlayer, askedPlayer):
		return ()
	embargos = []
	tradeData = TradeData()
	tradeData.ItemType = TradeableItems.TRADE_EMBARGO
	for player in players(alive=True, barbarian=False, minor=False):
		eTeam = player.getTeam()
		if eTeam == askingPlayer.getTeam() or eTeam == askedPlayer.getTeam() or askedTeam.isAtWar(eTeam):
			# won't embargo your team, their team, or a team they are fighting
			continue
		if not ((askingTeam.isHasMet(eTeam) and askedTeam.isHasMet(eTeam)) or gc.getGame().isDebugMode()):
			# won't embargo someone you or they haven't met
			continue
		tradeData.iData = eTeam
		if askedPlayer.canTradeItem(askingPlayer.getID(), tradeData, True):
			embargos.append(player)
	return embargos
Example #6
0
def getPossibleWars(playerOrID, askingPlayerOrID):
	"""
	Returns a tuple containing the WHEOOH status of the given player and 
	a list of all CyPlayers on which playerOrID will declare war in a trade.
	
	The askingPlayerOrID is used to limit the list to players they have met.
	"""
	askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
	askingPlayer, askingTeam = getPlayerAndTeam(askingPlayerOrID)
	if not TradeUtil.canTrade(askingPlayer, askedPlayer):
		return (False, ())
	wheooh = False
	wars = []
	tradeData = TradeData()
	tradeData.ItemType = TradeableItems.TRADE_WAR
	for player in players(alive=True, barbarian=False, minor=False):
		eTeam = player.getTeam()
		if eTeam == askingPlayer.getTeam() or eTeam == askedPlayer.getTeam() or askedTeam.isAtWar(eTeam):
			# won't DoW your team, their team, or a team they are fighting
			continue
		if not ((askingTeam.isHasMet(eTeam) and askedTeam.isHasMet(eTeam)) or gc.getGame().isDebugMode()):
			# won't DoW someone you or they haven't met
			continue
		tradeData.iData = eTeam
		if askedPlayer.canTradeItem(askingPlayer.getID(), tradeData, False):
			denial = askedPlayer.getTradeDenial(askingPlayer.getID(), tradeData)
			if denial == DenialTypes.NO_DENIAL:
				wars.append(player)
			elif denial == DenialTypes.DENIAL_TOO_MANY_WARS:
				wheooh = True
	return (wheooh, wars)
Example #7
0
def canSeeCityList(playerOrID):
    """
    Returns True if the active player can see the list of <player>'s cities.
    
    In the unmodified game, this is possible if the players have met and <player>
    is not a vassal of a rival. They must be able to contact (trade with)
    <player>, and OCC must be disabled. You can always see a teammate's cities.
    """
    if GameUtil.isOCC():
        return False
    askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
    askingPlayer, askingTeam = getActivePlayerAndTeam()

    iDemographicsMission = -1

    if (GameUtil.isEspionage()):
        for iMissionLoop in range(gc.getNumEspionageMissionInfos()):
            if (gc.getEspionageMissionInfo(iMissionLoop).isSeeDemographics()):
                iDemographicsMission = iMissionLoop

    if gc.getGame().isOption(
            GameOptionTypes.GAMEOPTION_CITYCOUNT_TIED_TO_ESPIONAGE):
        if (askedTeam.isEverAlive()):
            if (askingTeam.isHasMet(playerOrID) or CyGame().isDebugMode()):
                if (iDemographicsMission != -1
                        and not askingPlayer.canDoEspionageMission(
                            iDemographicsMission, playerOrID, None, -1)):
                    return False

    if askingPlayer.getTeam() == askedPlayer.getTeam():
        return True
    if askedTeam.isAVassal() and not askedTeam.isVassal(askingTeam.getID()):
        return False
    return TradeUtil.canTrade(askingPlayer, askedPlayer)
Example #8
0
def canSeeCityList(playerOrID):
    """
    Returns True if the active player can see the list of <player>'s cities.

    In the unmodified game, this is possible if the players have met and <player>
    is not a vassal of a rival. They must be able to contact (trade with)
    <player>, and OCC must be disabled. You can always see a teammate's cities.
    """
    if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ONE_CITY_CHALLENGE):
        return False
    askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
    askingPlayer, askingTeam = getActivePlayerAndTeam()
    if askingPlayer.getTeam() == askedPlayer.getTeam():
        return True
    if askedTeam.isAVassal() and not askedTeam.isVassal(askingTeam.getID()):
        return False
    return TradeUtil.canTrade(askingPlayer, askedPlayer)
Example #9
0
def canSeeCityList(playerOrID):
	"""
	Returns True if the active player can see the list of <player>'s cities.
	
	In the unmodified game, this is possible if the players have met and <player>
	is not a vassal of a rival. They must be able to contact (trade with)
	<player>, and OCC must be disabled. You can always see a teammate's cities.
	"""
	if GameUtil.isOCC():
		return False
	askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
	askingPlayer, askingTeam = getActivePlayerAndTeam()
	if askingPlayer.getTeam() == askedPlayer.getTeam():
		return True
	if askedTeam.isAVassal() and not askedTeam.isVassal(askingTeam.getID()):
		return False
	return TradeUtil.canTrade(askingPlayer, askedPlayer)
def checkturn_main():
    #s=""
    if not gc.getPlayer(utils.getHumanID()).isAlive():
        return
    if gc.getDefineINT("PLAYER_AI_ALLOW_TO_USE_CONSIDEROFFER_THRESHOLD") == 0:
        return
    for iPlayer in range(iNumPlayers):
        human=utils.getHumanID()
        
        if gc.getPlayer(iPlayer).isAlive() and human!=iPlayer :
            cantrade=TradeUtil.canTrade(human,iPlayer)
            if 1==1:
                a=gc.AI_considerOfferThreshold(human,iPlayer)#3是中国
                b=gc.getPlayer(iPlayer).AI_maxGoldTrade(human)
                c=min(a,b)
                if Stability.isImmune_War(iPlayer):
                    c=0

                if cantrade and c>0:
                    #civname1=gc.getPlayer(human).getCivilizationAdjectiveKey()
                    tem_civname1='&#25105;&#20204;'#我们

                    #civname2=gc.getPlayer(iPlayer).getCivilizationAdjectiveKey()
                    #tem_civname2=handle_civname(civname2)
                    tem_civname2=gc.getPlayer(iPlayer).getCivilizationAdjective(0)

                    s1=str(tem_civname1)+" &#21487;&#20197;&#21202;&#32034;  "+str(c)+"  &#37329;&#24065;&#26469;&#33258; "+tem_civname2+"  &#28508;&#22312;&#26368;&#22823;&#21487;&#21202;&#32034;&#37329;&#24065;&#37327;&#20026; "+str(a)+" ;    \r"
                    CyInterface().addMessage(gc.getGame().getActivePlayer(), False, iDuration, s1, "", 0, "", ColorTypes(iYellow), -1, -1, True, True) 
                if cantrade==0 and c>0:
                    #civname1=gc.getPlayer(human).getCivilizationAdjectiveKey()
                    #tem_civname1=handle_civname(civname1)#
                    #tem_civname1=human
                    tem_civname1=''#我们

                    #civname2=gc.getPlayer(iPlayer).getCivilizationAdjectiveKey()
                    #tem_civname2=iPlayer
                    #tem_civname2=handle_civname(civname2)
                    tem_civname2 = gc.getPlayer(iPlayer).getCivilizationAdjective(0)

                    s1=str(tem_civname1)+" &#22914;&#26524;&#25105;&#20204;&#36935;&#35265;&#20182;&#20204;&#65292;&#21487;&#20197;&#21202;&#32034;  "+str(c)+"  &#37329;&#24065;&#26469;&#33258; "+str(tem_civname2)+"  &#28508;&#22312;&#26368;&#22823;&#21487;&#21202;&#32034;&#37329;&#24065;&#37327;&#20026; "+str(a)+"  ;    \r"
                    CyInterface().addMessage(gc.getGame().getActivePlayer(), False, iDuration, s1, "", 0, "", ColorTypes(iWhite), -1, -1, True, True) 
                    #s=s+s1
    #utils.show(str(s))
    pass
Example #11
0
	def getWarTrades(self, player, team):
		iPlayerID = player.getID()
		tradeData = TradeData()
		tradeData.ItemType = TradeableItems.TRADE_WAR
		currentTrades = set()
		for loopPlayer in TradeUtil.getWarTraders(player):
			if player.canTradeWith(loopPlayer.getID()):
				###print "LOOP PLAYER: %s %d"%(gc.getLeaderHeadInfo(loopPlayer.getLeaderType()).getDescription(), loopPlayer.getID())
				canDoTrade = false
				for pPlayer in TradeUtil.getWarTraders(loopPlayer):
					if TradeUtil.canTrade(player, pPlayer):
						tradeData.iData = pPlayer.getID()
						###print "      %s DENIAL: %d"%(gc.getLeaderHeadInfo(pPlayer.getLeaderType()).getDescription(), loopPlayer.getTradeDenial(iPlayerID, tradeData))					
						if (loopPlayer.getTradeDenial(iPlayerID, tradeData) == DenialTypes.NO_DENIAL):
							canDoTrade = true				
					if canDoTrade:
						currentTrades.add(loopPlayer.getID())
						break
		return currentTrades
Example #12
0
def canSeeCityList(askedPlayer):
	"""
	Returns True if the active player can see the list of <player>'s cities.

	In the unmodified game, this is possible if the players have met and <player>
	is not a vassal of a rival. They must be able to contact (trade with)
	<player>, and OCC must be disabled. You can always see a teammate's cities.
	"""
	if GAME.isOption(GameOptionTypes.GAMEOPTION_ONE_CITY_CHALLENGE):
		return False
	iAskedTeam = askedPlayer.getTeam()
	iAskingTeam = GAME.getActiveTeam()
	if iAskingTeam == iAskedTeam:
		return True

	askedTeam = GC.getTeam(iAskedTeam)
	if askedTeam.isAVassal() and not askedTeam.isVassal(iAskingTeam):
		return False

	return TradeUtil.canTrade(GC.getActivePlayer(), askedPlayer)
Example #13
0
def canSeeCityList(playerOrID):
    """
	Returns True if the active player can see the list of <player>'s cities.
	
	In the unmodified game, this is possible if the players have met and <player>
	is not a vassal of a rival. They must be able to contact (trade with)
	<player>, and OCC must be disabled. You can always see a teammate's cities.
	"""
    # In K-Mod, the city list is only visible when at war. - Also, human players will only show their city list if they are willing to talk!
    # Rather than risk getting this wrong..
    return False
    # done. (old code follows, but does nothing.)
    if GameUtil.isOCC():
        return False
    askedPlayer, askedTeam = getPlayerAndTeam(playerOrID)
    askingPlayer, askingTeam = getActivePlayerAndTeam()
    if askingPlayer.getTeam() == askedPlayer.getTeam():
        return True
    if askedTeam.isAVassal() and not askedTeam.isVassal(askingTeam.getID()):
        return False
    return TradeUtil.canTrade(askingPlayer, askedPlayer)
Example #14
0
 def getWarTrades(self, player, team):
     iPlayerID = player.getID()
     tradeData = TradeData()
     tradeData.ItemType = TradeableItems.TRADE_WAR
     currentTrades = set()
     for loopPlayer in TradeUtil.getWarTraders(player):
         if player.canTradeWith(loopPlayer.getID()):
             ###print "LOOP PLAYER: %s %d"%(gc.getLeaderHeadInfo(loopPlayer.getLeaderType()).getDescription(), loopPlayer.getID())
             canDoTrade = false
             for pPlayer in TradeUtil.getWarTraders(loopPlayer):
                 if TradeUtil.canTrade(player, pPlayer):
                     tradeData.iData = pPlayer.getID()
                     ###print "      %s DENIAL: %d"%(gc.getLeaderHeadInfo(pPlayer.getLeaderType()).getDescription(), loopPlayer.getTradeDenial(iPlayerID, tradeData))
                     if (loopPlayer.getTradeDenial(
                             iPlayerID,
                             tradeData) == DenialTypes.NO_DENIAL):
                         canDoTrade = true
                 if canDoTrade:
                     currentTrades.add(loopPlayer.getID())
                     break
     return currentTrades