Ejemplo n.º 1
0
	def eventApply7625(self, popupReturn):
		"""Holy war call."""
		iHuman = utils.getHumanID()
		if popupReturn.getButtonClicked() == 0: # YES
			gc.getTeam(gc.getPlayer(iHuman).getTeam()).declareWar(sd.getVal('iHolyWarTarget'), False, -1)
			sd.changePiety(iHuman, max(5, (100 - sd.getPiety(iHuman)) / 5))
		else:
			sd.changePiety(iHuman, min(-10, -(sd.getPiety(iHuman) * 2 / 5)))
		CvMainInterface().updateGameDataStrings()
Ejemplo n.º 2
0
	def makePilgrim(self):
		"""Generate a pilgrim at a random city."""
		
		# make a list of eligible players, count each player several times depending on piety
		playerList = []
		for iPlayer in range(con.iNumPlayers):
			pPlayer = gc.getPlayer(iPlayer)
			iPiety = sd.getPiety(iPlayer)
			if pPlayer.isAlive() and iPiety > 20:
				for i in range(iPiety/10 - 1):
					playerList.append(iPlayer)
		
		if len(playerList) > 1:
		
			# determine the recipient
			iRandNum = gc.getGame().getSorenRandNum(len(playerList), 'Random Player')
			iPlayer = playerList[iRandNum]
			pPlayer = gc.getPlayer(iPlayer)
			
			pCity = utils.getRandomCity(iPlayer)
			tCoords = utils.getPilgrimageSite(iPlayer)
			
			# make the pilgrim
			if pCity != -1:
				if pCity.getX() != tCoords[0] and pCity.getY() != tCoords[1]:
					pPlayer.initUnit(con.iPilgrim, pCity.getX(), pCity.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
					szText = localText.getText("TXT_KEY_MINOR_EVENT_PILGRIM_ARRIVED", (pCity.getName(), gc.getMap().plot(tCoords[0],tCoords[1]).getPlotCity().getName()))
					CyInterface().addMessage(iPlayer, False, con.iDuration, szText, "AS2D_RELIGION_CONVERT", InterfaceMessageTypes.MESSAGE_TYPE_MINOR_EVENT, gc.getUnitInfo(con.iPilgrim).getButton(), ColorTypes(con.iGreen), pCity.getX(), pCity.getY(), True, True)
Ejemplo n.º 3
0
	def changePiety(self, iPlayer, iChange):
		
		if iPlayer < con.iNumPlayers:
			iPiety = sd.getPiety(iPlayer)
			if iPiety >= 0:
				iPreviousPiety = iPiety
				iPiety += iChange
				sd.setPiety(iPlayer, iPiety)
Ejemplo n.º 4
0
    def drawHolyWarInfo(self):
        if (not self.bScreenUp):
            return
        screen = self.getScreen()
        pPlayer = gc.getPlayer(self.iActivePlayer)

        iOffset = 0
        iCaliphPlayer = utils.getCaliphController()
        if iCaliphPlayer == self.iActivePlayer:
            targetList = utils.getHolyWarTargets(iCaliphPlayer)
            if targetList:
                szInfo = localText.getText("TXT_KEY_HOLY_WAR_TARGETS", ())
                for i in range(len(targetList)):
                    if i > 0: szInfo += ","
                    szInfo += " %s" % (gc.getPlayer(
                        targetList[i][0]).getCivilizationShortDescription(0))
                iOffset = 32
            else:
                szInfo = localText.getText("TXT_KEY_HOLY_WAR_NO_TARGETS", ())
            iDelay = gc.getGame().getGameTurn() - sd.getVal(
                'iLastHolyWarTurn') - 100
            if iDelay < 0:
                szInfo = localText.getText("TXT_KEY_HOLY_WAR_DELAY",
                                           (-iDelay, ))
                iOffset = 0
            if sd.getPiety(self.iActivePlayer) < 50:
                szInfo = localText.getText("TXT_KEY_HOLY_WAR_PIETY_TOO_LOW",
                                           ())
                iOffset = 0
        else:
            return

        szHolyWarArea = self.HOLY_WAR_AREA_ID
        screen.addPanel(self.HOLY_WAR_AREA_ID, "", "", True, True,
                        self.X_HOLY_WAR_AREA, self.Y_HOLY_WAR_AREA,
                        self.W_HOLY_WAR_AREA, self.H_HOLY_WAR_AREA,
                        PanelStyles.PANEL_STYLE_MAIN)

        if iOffset:
            screen.setImageButton(
                "HolyWarButton", "", self.X_HOLY_WAR_AREA + 14,
                self.Y_HOLY_WAR_AREA + 14, 28, 28, WidgetTypes.WIDGET_ACTION,
                gc.getControlInfo(
                    ControlTypes.CONTROL_HOLY_WAR).getActionInfoIndex(), -1)
            screen.setStyle("HolyWarButton", "Button_HUDAdvisorVictory_Style")

        # Erase the flag?
        CyInterface().setDirty(InterfaceDirtyBits.MiscButtons_DIRTY_BIT, True)

        screen.setLabelAt("", szHolyWarArea, szInfo, CvUtil.FONT_LEFT_JUSTIFY,
                          18 + iOffset, 16, 500, FontTypes.TITLE_FONT,
                          WidgetTypes.WIDGET_GENERAL, -1, -1)
Ejemplo n.º 5
0
	def checkTurn(self, iGameTurn):
		
		iHuman = utils.getHumanID()
		
		# Piety rise/decay
		if iGameTurn % utils.getTurns(5) == 1:
			for iPlayer in range(con.iNumPlayers):
				if gc.getPlayer(iPlayer).isAlive():
					iBasePiety = self.calcBasePiety(iPlayer)
					sd.setBasePiety(iPlayer, iBasePiety)
					iPiety = sd.getPiety(iPlayer)
					if iPiety < 0:
						sd.setPiety(iPlayer, iBasePiety)
					elif iPiety > iBasePiety:
						self.changePiety(iPlayer, -1)
					elif iPiety < iBasePiety:
						self.changePiety(iPlayer, min(5, (iBasePiety + 1) / (iPiety + 1)))
			# Piety effects
			#for iPlayer in range(con.iNumPlayers):
				#if gc.getPlayer(iPlayer).isAlive():
					#self.doPietyEffects(iPlayer)
					
		return
Ejemplo n.º 6
0
    def makeList(self, szType):

        # Determine the list of top civs

        # Will eventually Store [iValue, iPlayerID]
        self.aiTopCivsValues = []

        # Loop through all players except the barbs
        #for iPlayerLoop in range(gc.getMAX_PLAYERS()-1): #Rhye
        for iPlayerLoop in range(con.iNumPlayers):  #Rhye

            if (gc.getPlayer(iPlayerLoop).isAlive()):

                if (szType == localText.getText("TXT_KEY_TOPCIVS_WEALTH", ())):

                    self.aiTopCivsValues.append(
                        [gc.getPlayer(iPlayerLoop).getGold(), iPlayerLoop])
                    print("Player %d Num Gold: %d" %
                          (iPlayerLoop, gc.getPlayer(iPlayerLoop).getGold()))

                if (szType == localText.getText("TXT_KEY_TOPCIVS_POWER", ())):

                    self.aiTopCivsValues.append(
                        [gc.getPlayer(iPlayerLoop).getPower(), iPlayerLoop])

                if (szType == localText.getText("TXT_KEY_TOPCIVS_TECH", ())):

                    iPlayerNumTechs = 0
                    iNumTotalTechs = gc.getNumTechInfos()

                    for iTechLoop in range(iNumTotalTechs):

                        bPlayerHasTech = gc.getTeam(
                            gc.getPlayer(iPlayerLoop).getTeam()).isHasTech(
                                iTechLoop)

                        if (bPlayerHasTech):
                            iPlayerNumTechs = iPlayerNumTechs + 1

                    self.aiTopCivsValues.append([iPlayerNumTechs, iPlayerLoop])

                if (szType == localText.getText("TXT_KEY_TOPCIVS_CULTURE",
                                                ())):

                    self.aiTopCivsValues.append([
                        gc.getPlayer(iPlayerLoop).countTotalCulture(),
                        iPlayerLoop
                    ])

                if (szType == localText.getText("TXT_KEY_TOPCIVS_SIZE", ())):

                    self.aiTopCivsValues.append([
                        gc.getPlayer(iPlayerLoop).getTotalLand(), iPlayerLoop
                    ])

                # edead: start most pious civs
                if (szType == localText.getText("TXT_KEY_TOPCIVS_PIETY", ())):
                    self.aiTopCivsValues.append(
                        [sd.getPiety(iPlayerLoop), iPlayerLoop])
                # edead: end

        # Lowest to Highest
        self.aiTopCivsValues.sort()
        # Switch it around - want the best to be first
        self.aiTopCivsValues.reverse()

        self.printList(szType)