예제 #1
0
 def check(self):
     if (not Civ4lertsOpt.isShowRefusesToTalkAlert()):
         return
     eActivePlayer, activePlayer = PlayerUtil.getActivePlayerAndID()
     try:  # advc.009b
         refusals = self.refusals[eActivePlayer]
     # <advc.009b>
     except (AttributeError, KeyError):
         return  # </advc.009b>
     newRefusals = set()
     newRefusalsDisplay = set(
     )  # advc.106d: Don't necessarily display them all
     for player in PlayerUtil.players(True, False, False, False):
         if DiplomacyUtil.canContact(
                 activePlayer,
                 player) and not DiplomacyUtil.isWillingToTalk(
                     player, eActivePlayer):
             newRefusals.add(player.getID())
             # <advc.106d> Don't report refusal when war just begun, nor when stopped trading (i.e. when not at war).
             if gc.getTeam(gc.getPlayer(eActivePlayer).getTeam()).isAtWar(
                     player.getTeam()) and gc.getTeam(
                         gc.getPlayer(eActivePlayer).getTeam()
                     ).AI_getAtWarCounter(player.getTeam()) > 1:
                 newRefusalsDisplay.add(player.getID())  # </advc.106d>
     self.display(eActivePlayer, "TXT_KEY_CIV4LERTS_ON_WILLING_TO_TALK",
                  refusals.difference(newRefusals))
     self.display(eActivePlayer, "TXT_KEY_CIV4LERTS_ON_REFUSES_TO_TALK",
                  newRefusalsDisplay.difference(
                      refusals))  # advc.106d: was newRefusals...
     self.refusals[eActivePlayer] = newRefusals
예제 #2
0
def canTrade(playerOrID, withPlayerOrID):
    """
	Returns True if <player> can open the trade window with <withPlayer>.
	"""
    return DiplomacyUtil.canContact(
        playerOrID, withPlayerOrID) and DiplomacyUtil.isWillingToTalk(
            withPlayerOrID, playerOrID)
예제 #3
0
	def _reset(self):
		self.refusals = {}
		for player in PlayerUtil.players():
			# <advc.106c>
			playerID = player.getID()
			self.refusals[playerID] = set()
			for rival in PlayerUtil.players(True, False, False, False):
				if DiplomacyUtil.canContact(player, rival) and not DiplomacyUtil.isWillingToTalk(rival, playerID):
					self.refusals[playerID].add(rival.getID())
예제 #4
0
	def check(self):
		if (not Civ4lertsOpt.isShowRefusesToTalkAlert()):
			return
		eActivePlayer, activePlayer = PlayerUtil.getActivePlayerAndID()
		refusals = self.refusals[eActivePlayer]
		newRefusals = set()
		for player in PlayerUtil.players(True, False, False, False):
			if DiplomacyUtil.canContact(activePlayer, player) and not DiplomacyUtil.isWillingToTalk(player, eActivePlayer):
				newRefusals.add(player.getID())
		self.display(eActivePlayer, "TXT_KEY_CIV4LERTS_ON_WILLING_TO_TALK", refusals.difference(newRefusals))
		self.display(eActivePlayer, "TXT_KEY_CIV4LERTS_ON_REFUSES_TO_TALK", newRefusals.difference(refusals))
		self.refusals[eActivePlayer] = newRefusals
예제 #5
0
	def check(self):
		if (not Civ4lertsOpt.isShowRefusesToTalkAlert()):
			return
		eActivePlayer, activePlayer = PlayerUtil.getActivePlayerAndID()
		refusals = self.refusals[eActivePlayer]
		newRefusals = set()
		for player in PlayerUtil.players(True, False, False, False):
			if DiplomacyUtil.canContact(activePlayer, player) and not DiplomacyUtil.isWillingToTalk(player, eActivePlayer):
				newRefusals.add(player.getID())
		self.display(eActivePlayer, "TXT_KEY_CIV4LERTS_ON_WILLING_TO_TALK", refusals.difference(newRefusals))
		self.display(eActivePlayer, "TXT_KEY_CIV4LERTS_ON_REFUSES_TO_TALK", newRefusals.difference(refusals))
		self.refusals[eActivePlayer] = newRefusals
예제 #6
0
def handleUserResponse (argsList):
	"First parameter of argsList if the comment they clicked on..."
	diploClass = CvDiplomacy.CvDiplomacy()

	eComment = argsList[0]
	iData1 = argsList[1]
	iData2 = argsList[2]
	
# BUG - Diplomacy Events - start
	DiplomacyUtil.handleUserResponse(eComment, (iData1, iData2))
# BUG - Diplomacy Events - end
	
	diploClass.handleUserResponse(eComment, iData1, iData2)
예제 #7
0
def beginDiplomacy (argsList):
	"""
	This is what gets called when you first begin diplomacy
	The first parameter argsList[0] is the 'comment type', or how they feel about you
	"""
	eComment = argsList[0]
	commentArgsSize = argsList[1]
	if (commentArgsSize):
		commentArgs = argsList[2:]
		CvUtil.pyAssert(len(commentArgs)==commentArgsSize, "comment args tuple size mismatch")
		print "tuple size", len(commentArgs), ", commentArgsSize ", commentArgsSize
	else:
		commentArgs=[]
	
# BUG - Diplomacy Events - start
	DiplomacyUtil.handleAIComment(eComment, commentArgs)
# BUG - Diplomacy Events - end
	
	diploClass = CvDiplomacy.CvDiplomacy()
	diploClass.setAIComment(eComment, *commentArgs)	#unpack args tuple
예제 #8
0
def canTrade(playerOrID, withPlayerOrID):
	"""
	Returns True if <player> can open the trade window with <withPlayer>.
	"""
	return DiplomacyUtil.canContact(playerOrID, withPlayerOrID) and DiplomacyUtil.isWillingToTalk(withPlayerOrID, playerOrID)