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()
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)
def changePiety(self, iPlayer, iChange): if iPlayer < con.iNumPlayers: iPiety = sd.getPiety(iPlayer) if iPiety >= 0: iPreviousPiety = iPiety iPiety += iChange sd.setPiety(iPlayer, iPiety)
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)
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
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)