コード例 #1
0
    def spreadIslamIndonesia(self, iGameTurn):
        if not gc.getGame().isReligionFounded(iIslam): return
        if not pIndonesia.isAlive(): return
        if not (getTurnForYear(1300) <= iGameTurn <= getTurnForYear(1600)):
            return

        if iGameTurn % utils.getTurns(15) != utils.getTurns(4): return

        lIndonesianContacts = [
            iPlayer for iPlayer in range(iNumPlayers)
            if pIndonesia.canContact(iPlayer)
            and gc.getPlayer(iPlayer).getStateReligion() == iIslam
        ]
        if not lIndonesianContacts:
            return

        lIndonesianCities = utils.getRegionCities([rIndonesia])
        lPotentialCities = [
            city for city in lIndonesianCities
            if not city.isHasReligion(iIslam)
        ]

        iMaxCitiesMultiplier = 2
        if pIndonesia.getStateReligion() == iIslam: iMaxCitiesMultiplier = 5

        if len(lPotentialCities) * iMaxCitiesMultiplier >= len(
                lIndonesianCities):
            pSpreadCity = utils.getRandomEntry(lPotentialCities)
            if pSpreadCity:
                pSpreadCity.spreadReligion(iIslam)
コード例 #2
0
	def stopPlague(self, iPlayer):
		data.players[iPlayer].iPlagueCountdown = -utils.getTurns(iImmunity)
		if data.players[iPlayer].bFirstContactPlague:
			data.players[iPlayer].iPlagueCountdown = -utils.getTurns(iImmunity-30)
		data.players[iPlayer].bFirstContactPlague = False
		for city in utils.getCityList(iPlayer):
			city.setHasRealBuilding(iPlague, False)
コード例 #3
0
    def checkTurn(self, iGameTurn):

        #turn automatically peace on between independent cities and all the major civs
        if iGameTurn % 20 == 7:
            utils.restorePeaceHuman(iIndependent2, False)
        elif iGameTurn % 20 == 14:
            utils.restorePeaceHuman(iIndependent, False)
        if iGameTurn % 60 == 55 and iGameTurn > utils.getTurns(50):
            utils.restorePeaceAI(iIndependent, False)
        elif iGameTurn % 60 == 30 and iGameTurn > utils.getTurns(50):
            utils.restorePeaceAI(iIndependent2, False)
        #turn automatically war on between independent cities and some AI major civs
        if iGameTurn % 13 == 6 and iGameTurn > utils.getTurns(
                50):  #1 turn after restorePeace()
            utils.minorWars(iIndependent)
        elif iGameTurn % 13 == 11 and iGameTurn > utils.getTurns(
                50):  #1 turn after restorePeace()
            utils.minorWars(iIndependent2)
        if iGameTurn % 50 == 24 and iGameTurn > utils.getTurns(50):
            utils.minorWars(iCeltia)

        for tConquest in lConquests:
            self.checkConquest(tConquest)

        if iGameTurn == data.iNextTurnAIWar:
            self.planWars(iGameTurn)

        for iLoopPlayer in range(iNumPlayers):
            data.players[iLoopPlayer].iAggressionLevel = tAggressionLevel[
                iLoopPlayer] + gc.getGame().getSorenRandNum(
                    2, "Random aggression")
コード例 #4
0
    def checkImplosion(self, iGameTurn):

        if iGameTurn % utils.getTurns(10) == 5:
            for iPlayer in range(iNumPlayers):
                pPlayer = gc.getPlayer(iPlayer)
                if pPlayer.isAlive() and iGameTurn >= getTurnForYear(
                        tBirth[iPlayer]) + utils.getTurns(
                            25) and not pPlayer.isGoldenAge():
                    if self.getStability(iPlayer) < -40:  #civil war

                        iHuman = utils.getHumanID()

                        # normal collapse
                        if iPlayer != iHuman:
                            if gc.getPlayer(iHuman).canContact(iPlayer):
                                CyInterface().addMessage(iHuman, False, con.iDuration, pPlayer.getCivilizationDescription(0) + " " + \
                                 localText.getText("TXT_KEY_STABILITY_CIVILWAR", ()), "", 0, "", ColorTypes(con.iRed), -1, -1, True, True)
                            utils.killAndFragmentCiv(iPlayer, False)
                        else:
                            if gc.getPlayer(iPlayer).getNumCities() > 1:
                                CyInterface().addMessage(
                                    iPlayer, True, con.iDuration,
                                    localText.getText(
                                        "TXT_KEY_STABILITY_CIVILWAR_HUMAN",
                                        ()), "", 0, "", ColorTypes(con.iRed),
                                    -1, -1, True, True)
                                utils.killAndFragmentCiv(iPlayer, True)
                                utils.setStartingStabilityParameters(iPlayer)
                                self.setGNPold(iPlayer, 0)
                                self.setGNPnew(iPlayer, 0)

                        return
コード例 #5
0
 def stopPlague(self, iPlayer):
     data.players[iPlayer].iPlagueCountdown = -utils.getTurns(iImmunity)
     if data.players[iPlayer].bFirstContactPlague:
         data.players[iPlayer].iPlagueCountdown = -utils.getTurns(
             iImmunity - 30)
     data.players[iPlayer].bFirstContactPlague = False
     for city in utils.getCityList(iPlayer):
         city.setHasRealBuilding(iPlague, False)
コード例 #6
0
	def getNextInterval(self, iGameTurn):
		if iGameTurn > getTurnForYear(1600):
			iMinInterval = iMinIntervalLate
			iMaxInterval = iMaxIntervalLate
		else:
			iMinInterval = iMinIntervalEarly
			iMaxInterval = iMaxIntervalEarly
			
		iMinInterval = utils.getTurns(iMinInterval)
		iMaxInterval = utils.getTurns(iMaxInterval)
		
		return iMinInterval + gc.getGame().getSorenRandNum(iMaxInterval-iMinInterval, 'random turn')
コード例 #7
0
	def getNextInterval(self, iGameTurn):
		if iGameTurn > getTurnForYear(1600):
			iMinInterval = iMinIntervalLate
			iMaxInterval = iMaxIntervalLate
		else:
			iMinInterval = iMinIntervalEarly
			iMaxInterval = iMaxIntervalEarly
			
		iMinInterval = utils.getTurns(iMinInterval)
		iMaxInterval = utils.getTurns(iMaxInterval)
		
		return iMinInterval + gc.getGame().getSorenRandNum(iMaxInterval-iMinInterval, 'random turn')
コード例 #8
0
	def spreadJudaismMiddleEast(self, iGameTurn):
		if not gc.getGame().isReligionFounded(iJudaism): return
		if iGameTurn < getTurnForYear(600): return
		
		if iGameTurn % utils.getTurns(20) != utils.getTurns(5): return
		
		lMiddleEastCities = utils.getRegionCities([rMesopotamia, rAnatolia, rEgypt])
		lJewishCities = [city for city in lMiddleEastCities if city.isHasReligion(iJudaism)]
		
		if 2 * len(lJewishCities) < len(lMiddleEastCities):
			pSpreadCity = utils.getRandomEntry(self.getTargetCities(lMiddleEastCities, iJudaism))
			if pSpreadCity:
				pSpreadCity.spreadReligion(iJudaism)
コード例 #9
0
    def checkTurn(self, iGameTurn):
        #checkturn入口
        #a=PlayerTypes.NO_PLAYER
        #a=gc.AI_considerOfferThreshold(4,13)
        #utils.show(str(a))
        #a=gc.CvPlayerAI().AI_considerOffer_Threshold()
        #gc = CyGlobalContext()
        #a=gc.getPlayer(0).AI_considerOffer_Threshold()
        #utils.show(str(gc.getMAX_PLAYERS()))
        #import TradeUtil
        #a=TradeUtil.getTradeableBonuses111(14,3)#3是中国,14是拜占庭,在AD1700剧本中均存活
        #utils.show(str(a))
        #utils.show(str(TradeUtil.canTrade(13,3)))
        #BugUtil.logToScreen('aa')#可以使用
        #DiplomacyUtil.onTributeDemanded(1,12,0)#回调函数,失败了
        #a=CvTeamAI().AI_isWarPossible()   #utils.show(str(gc.getPlayer(3).getDemandTributeAttitudeThreshold()))
        ###import MapDrawer
        ###MapDrawer.createMaps()  #事实证明这个函数没什么用,生成一堆数组
        #入口结束
        #turn automatically peace on between independent cities and all the major civs
        if iGameTurn % 20 == 7:
            utils.restorePeaceHuman(iIndependent2, False)
        elif iGameTurn % 20 == 14:
            utils.restorePeaceHuman(iIndependent, False)
        if iGameTurn % 60 == 55 and iGameTurn > utils.getTurns(50):
            utils.restorePeaceAI(iIndependent, False)
        elif iGameTurn % 60 == 30 and iGameTurn > utils.getTurns(50):
            utils.restorePeaceAI(iIndependent2, False)
        #turn automatically war on between independent cities and some AI major civs
        if iGameTurn % 13 == 6 and iGameTurn > utils.getTurns(
                50):  #1 turn after restorePeace()
            utils.minorWars(iIndependent)
        elif iGameTurn % 13 == 11 and iGameTurn > utils.getTurns(
                50):  #1 turn after restorePeace()
            utils.minorWars(iIndependent2)
        if iGameTurn % 50 == 24 and iGameTurn > utils.getTurns(50):
            utils.minorWars(iCeltia)

        for tConquest in lConquests:
            self.checkConquest(tConquest)

        if iGameTurn == data.iNextTurnAIWar:
            self.planWars(iGameTurn)

        for iLoopPlayer in range(iNumPlayers):
            data.players[iLoopPlayer].iAggressionLevel = tAggressionLevel[
                iLoopPlayer] + gc.getGame().getSorenRandNum(
                    2, "Random aggression")
コード例 #10
0
ファイル: Victory.py プロジェクト: srpt/RFC-Classical-World
	def isHasLegendaryCity(self, iPlayer):
		"""Checks whether iPlayer has a city with Legendary culture."""
		apCityList = PyPlayer(iPlayer).getCityList()
		for pCity in apCityList:
			if pCity.GetCy().countTotalCultureTimes100() >= utils.getTurns(2500000):
				return True
		return False
コード例 #11
0
    def checkJudaism(self, iGameTurn):
        if gc.getGame().isReligionFounded(iJudaism): return

        if iGameTurn == getTurnForYear(-1500) - utils.getTurns(data.iSeed % 5):
            self.foundReligion(
                self.selectHolyCity(tJewishTL, tJewishBR, tJerusalem),
                iJudaism)
コード例 #12
0
    def vikingUP(self, argsList):

        pWinningUnit, pLosingUnit = argsList
        cLosingUnit = PyHelpers.PyInfo.UnitInfo(pLosingUnit.getUnitType())

        iOwner = pWinningUnit.getOwner()

        if (iOwner == iVikings
                and gc.getGame().getGameTurn() <= getTurnForYear(1500)
            ) or pWinningUnit.getUnitType() == iCorsair:
            if cLosingUnit.getDomainType() == DomainTypes.DOMAIN_SEA:
                iGold = cLosingUnit.getProductionCost() / 2
                iGold = utils.getTurns(iGold)
                gc.getPlayer(iOwner).changeGold(iGold)
                sAdjective = gc.getPlayer(
                    pLosingUnit.getOwner()).getCivilizationAdjectiveKey()
                CyInterface().addMessage(
                    iOwner, False, iDuration,
                    CyTranslator().getText(
                        "TXT_KEY_VIKING_NAVAL_UP",
                        (iGold, sAdjective, pLosingUnit.getNameKey())), "", 0,
                    "", ColorTypes(iWhite), -1, -1, True, True)

                if iOwner == iVikings:
                    data.iVikingGold += iGold
                elif iOwner == iMoors:
                    data.iMoorishGold += iGold
コード例 #13
0
    def setup(self):
        for iPlayer in range(iNumMajorPlayers):
            data.players[iPlayer].iPlagueCountdown = -utils.getTurns(iImmunity)

        data.lGenericPlagueDates[0] = 80
        data.lGenericPlagueDates[
            2] = 300  # safe value to prevent plague at start of 1700 AD scenario

        if utils.getScenario() == i3000BC:
            data.lGenericPlagueDates[0] = getTurnForYear(
                400) + utils.variation(20)

        data.lGenericPlagueDates[1] = getTurnForYear(1300) + utils.variation(
            20)

        # Avoid interfering with the Indian UHV
        if utils.getHumanID(
        ) == iIndia and data.lGenericPlagueDates[1] <= getTurnForYear(1200):
            data.lGenericPlagueDates[1] = getTurnForYear(1200) + 1

        if utils.getScenario != i1700AD:
            data.lGenericPlagueDates[2] = getTurnForYear(
                1650) + utils.variation(20)

        data.lGenericPlagueDates[3] = getTurnForYear(1850) + utils.variation(
            20)

        undoPlague = gc.getGame().getSorenRandNum(8, 'undo')
        if undoPlague <= 3:
            data.lGenericPlagueDates[undoPlague] = -1
コード例 #14
0
 def canDecay(self, iGameTurn, iCiv):
     if 0 <= iCiv < iNumMajorPlayers:
         if gc.getPlayer(iCiv).isAlive() and iGameTurn >= getTurnForYear(
                 tBirth[iCiv] + utils.getTurns(15)):  # edead: RFCM
             if not gc.getTeam(
                     gc.getPlayer(iCiv).getTeam()).isHasTech(iElectricity):
                 self.decay(iCiv)
コード例 #15
0
    def checkTurn(self, iGameTurn):
        if iGameTurn >= getTurnForYear(tBirth[iRussia]) and pRussia.isAlive():
            self.russianUP()

        if iGameTurn >= getTurnForYear(tBirth[iAmerica]) + utils.getTurns(5):
            self.checkImmigration()

        if iGameTurn >= getTurnForYear(
                tBirth[iKhazars]) and pKhazars.isAlive():
            self.doJewishKingdom()

        #if iGameTurn >= getTurnForYear(tBirth[iIndonesia]) and pIndonesia.isAlive():
        #	self.indonesianUP()

        if iGameTurn >= getTurnForYear(
                tBirth[iPhilippines]) and pPhilippines.isAlive():
            utils.doPhilippineEmbassy()

        if iGameTurn >= getTurnForYear(
                tBirth[iSwahili]) and pSwahili.isAlive():
            self.swahiliDhow()

        if iGameTurn >= getTurnForYear(
                tBirth[iTeotihuacan]) and pTeotihuacan.isAlive():
            self.teotihuacanArtisan()

        data.bBabyloniaTechReceived = False
コード例 #16
0
	def update(self, fDelta):
##Rhye - begin
		iActivePlayer = CyGame().getActivePlayer()
		if tBirth[iActivePlayer] <= utils.getScenarioStartYear():
			screen = CyGInterfaceScreen( "CvLoadingScreen", self.iScreenID )
			screen.setBarPercentage("ProgressBar", InfoBarTypes.INFOBAR_STORED, 1)
			screen.setLabel("Text", "", CyTranslator().getText("TXT_KEY_AUTOPLAY_TURNS_REMAINING", (0,)), CvUtil.FONT_CENTER_JUSTIFY, 530, 445, 0, FontTypes.GAME_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)
			screen.show( "Exit" )  #Rhye
		else:
			iGameTurn = CyGame().getGameTurn()

			iNumAutoPlayTurns = getTurnForYear(tBirth[CyGame().getActiveTeam()])
			iNumTurnsRemaining = iNumAutoPlayTurns - iGameTurn
			
			#if (iNumTurnsRemaining != self.iTurnsRemaining):
			#	self.iTurnsRemaining = iNumTurnsRemaining
			screen = CyGInterfaceScreen( "CvLoadingScreen", self.iScreenID )

			exponent = 1 + iNumAutoPlayTurns/utils.getTurns(190)
			screen.setBarPercentage("ProgressBar", InfoBarTypes.INFOBAR_STORED, float(math.pow(iGameTurn-utils.getScenarioStartTurn(), exponent)) / float(math.pow(iNumAutoPlayTurns-utils.getScenarioStartTurn(), exponent)))
			screen.setLabel("Text", "", CyTranslator().getText("TXT_KEY_AUTOPLAY_TURNS_REMAINING", (max(0,iNumTurnsRemaining),)), CvUtil.FONT_CENTER_JUSTIFY, 530, 445, 0, FontTypes.GAME_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)
			if (iNumTurnsRemaining <= 0):  #Rhye
				screen.show( "Exit" )  #Rhye
		
##Rhye - end
		return
コード例 #17
0
    def checkChristianity(self, iGameTurn):
        if not gc.getGame().isReligionFounded(iJudaism): return
        if gc.getGame().isReligionFounded(iOrthodoxy): return

        iOffset = utils.getTurns(data.iSeed % 15)

        if iGameTurn == getTurnForYear(0) + iOffset:
            pHolyCity = gc.getGame().getHolyCity(iJudaism)

            if pHolyCity.getOwner() != utils.getHumanID() and gc.getGame(
            ).getSorenRandNum(2, "Holy city?") == 0:
                pChristianCity = pHolyCity
                self.foundReligion(
                    (pChristianCity.getX(), pChristianCity.getY()), iOrthodoxy)
                return

            lJewishCities = []
            for iPlayer in range(iNumTotalPlayersB):
                lJewishCities.extend([
                    city for city in utils.getCityList(iPlayer)
                    if city.isHasReligion(iJudaism)
                    and city.getOwner() != utils.getHumanID()
                ])

            if lJewishCities:
                pChristianCity = utils.getRandomEntry(lJewishCities)
                self.foundReligion(
                    (pChristianCity.getX(), pChristianCity.getY()), iOrthodoxy)
コード例 #18
0
    def checkBuddhism(self, iGameTurn):
        if gc.getGame().isReligionFounded(iBuddhism): return

        if iGameTurn == getTurnForYear(-300) - 5 + utils.getTurns(
                data.iSeed % 10):
            self.foundReligion(self.selectHolyCity(tBuddhistTL, tBuddhistBR),
                               iBuddhism)
コード例 #19
0
 def doIndonesianUP(self, iNumCorporations=1):
     iGold = utils.getTurns(20 * iNumCorporations)
     gc.getPlayer(iIndonesia).changeGold(iGold)
     if utils.getHumanID() == iIndonesia and iGold > 0:
         CyInterface().addMessage(
             iIndonesia, False, iDuration,
             CyTranslator().getText("TXT_KEY_INDONESIAN_UP", (iGold, )), "",
             0, "", ColorTypes(iWhite), -1, -1, True, True)
コード例 #20
0
    def spreadJudaismMiddleEast(self, iGameTurn):
        if not gc.getGame().isReligionFounded(iJudaism): return
        if iGameTurn < getTurnForYear(600): return

        if iGameTurn % utils.getTurns(20) != utils.getTurns(5): return

        lMiddleEastCities = utils.getRegionCities(
            [rMesopotamia, rAnatolia, rEgypt])
        lJewishCities = [
            city for city in lMiddleEastCities if city.isHasReligion(iJudaism)
        ]

        if 2 * len(lJewishCities) < len(lMiddleEastCities):
            pSpreadCity = utils.getRandomEntry(
                self.getTargetCities(lMiddleEastCities, iJudaism))
            if pSpreadCity:
                pSpreadCity.spreadReligion(iJudaism)
コード例 #21
0
	def checkSpawn(self, iPlayer, iUnitType, iNumUnits, tTL, tBR, spawnFunction, iTurn, iPeriod, iRest, lAdj=[]):
		if len(lAdj) == 0:
			sAdj = ""
		else:
			sAdj = utils.getRandomEntry(lAdj)
	
		if iTurn % utils.getTurns(iPeriod) == iRest:
			spawnFunction(iPlayer, iUnitType, iNumUnits, tTL, tBR, sAdj)
コード例 #22
0
	def decay(self, iPlayer):
		
		pPlayer = gc.getPlayer(iPlayer)
		pTeam = gc.getTeam(gc.getPlayer(iPlayer).getTeam())
		iGameTurn = gc.getGame().getGameTurn()
		cutList = []
		for i in range(con.iNumPlayers):
			if i != iPlayer and gc.getPlayer(i).isAlive() and pTeam.canContact(i) and pPlayer.getBorders(i) > 3:
				if iGameTurn >= getTurnForYear(con.tBirth[i]) + utils.getTurns(15):
					cutList.append(i)

		if not cutList:
			return
					
		shuffle(cutList)
		
		#first browse our cities - if other civs can see our borders
		for pyCity in PyPlayer(iPlayer).getCityList():
			city = pyCity.GetCy()
			for iOtherCiv in cutList:
				if city.plot().isVisible(iOtherCiv, False) and iOtherCiv in cutList:
					cutList.remove(iOtherCiv)
			for x in range(city.getX()-4, city.getX()+5):
				for y in range(city.getY()-4, city.getY()+5):
					plot = gc.getMap().plot(x, y)
					if plot.isVisible(iPlayer, False):
						for iOtherCiv in cutList:
							if plot.getOwner() == iOtherCiv and iOtherCiv in cutList:
								cutList.remove(iOtherCiv)
									
		#then browse their cities - if we can see their borders (view distance is asymmetrical)        
		for iOtherCiv in cutList:
			bNear = False
			for pyCity in PyPlayer(iOtherCiv).getCityList():
				city = pyCity.GetCy()
				for x in range(city.getX()-4, city.getX()+5):
					for y in range(city.getY()-4, city.getY()+5):
						plot = gc.getMap().plot(x, y)
						if plot.isVisible(iOtherCiv, False):
							if plot.getOwner() == iPlayer:
								bNear = True
								break
								break
			if not bNear:
				iChance = 50
				#nRFCCW
				#if pPlayer.getBorders(iOtherCiv) == 5:
					#iChance = 100
				for iTech in []:
					if pTeam.isHasTech(iTech):
						iChance -= 10
				otherPlayer = gc.getPlayer(iOtherCiv)
				
				if gc.getGame().getSorenRandNum(100, 'Cut contact') < iChance:
					pTeam.cutContact(iOtherCiv)
					#utils.echo("Cutting contact between %s and %s." %(pPlayer.getCivilizationShortDescription(0),otherPlayer.getCivilizationShortDescription(0)))
					print ("Cutting contacts between", pPlayer.getCivilizationShortDescription(0), "and", otherPlayer.getCivilizationShortDescription(0))
					return
コード例 #23
0
 def canDecay(self, iGameTurn, iCiv):
     if 0 <= iCiv < iNumMajorPlayers:
         if gc.getPlayer(iCiv).isAlive() and iGameTurn >= getTurnForYear(
                 tBirth[iCiv] + utils.getTurns(15)):  # edead: RFCM
             if not gc.getTeam(gc.getPlayer(iCiv).getTeam()).isHasTech(
                     iElectricity):  #mediv01 外交关系遗忘
                 if not (gc.getDefineINT("PYTHON_DIPO_NO_DECAY")
                         == 1):  #mediv01 外交关系遗忘
                     self.decay(iCiv)
コード例 #24
0
def checkTurn(iGameTurn):
	if isCongressEnabled():
		if not isGlobalWar():
			data.iCongressTurns -= 1
			
		if data.iCongressTurns == 0:
			data.iCongressTurns = utils.getTurns(iCongressInterval)
			currentCongress = Congress()
			data.currentCongress = currentCongress
			currentCongress.startCongress()
コード例 #25
0
def checkTurn(iGameTurn):
	if isCongressEnabled():
		if not isGlobalWar():
			data.iCongressTurns -= 1
			
		if data.iCongressTurns == 0:
			data.iCongressTurns = utils.getTurns(iCongressInterval)
			currentCongress = Congress()
			data.currentCongress = currentCongress
			currentCongress.startCongress()
コード例 #26
0
ファイル: Plague.py プロジェクト: srpt/RFC-Classical-World
    def stopPlague(self, iPlayer):

        sd.setPlagueCountdown(iPlayer, -utils.getTurns(iImmunity))
        apCityList = PyPlayer(iPlayer).getCityList()
        for pCity in apCityList:
            city = pCity.GetCy()
            if city.getNumRealBuilding(iPlague) > 0:
                city.setNumRealBuilding(iPlague, 0)
                city.changeEspionageHealthCounter(
                    -city.getEspionageHealthCounter() / 2)
コード例 #27
0
	def checkTurn(self, iGameTurn):
		if iGameTurn >= getTurnForYear(tBirth[iRussia]) and pRussia.isAlive():
			self.russianUP()

		if iGameTurn >= getTurnForYear(tBirth[iAmerica])+utils.getTurns(5):
			self.checkImmigration()

		if iGameTurn >= getTurnForYear(tBirth[iIndonesia]) and pIndonesia.isAlive():
			self.indonesianUP()
		
		data.bBabyloniaTechReceived = False
コード例 #28
0
	def checkTurn(self, iGameTurn):

		print("UniquePowers.checkTurn()")
			
		if iGameTurn >= getTurnForYear(tBirth[iRussia]) and pRussia.isAlive():
			self.russianUP()

		if iGameTurn >= getTurnForYear(tBirth[iAmerica])+utils.getTurns(5):
			self.checkImmigration()
			
		if iGameTurn >= getTurnForYear(tBirth[iIndonesia]) and pIndonesia.isAlive():
			self.indonesianUP()
コード例 #29
0
    def onCityBuilt(self, iPlayer, x, y):

        iTempExpansionThreshold = self.getStability(iPlayer)
        iGameTurn = gc.getGame().getGameTurn()
        if (iGameTurn <= getTurnForYear(tBirth[iPlayer]) + utils.getTurns(20)):
            self.setStability(iPlayer, self.getStability(iPlayer) + 3)
        else:
            self.setStability(iPlayer, self.getStability(iPlayer) + 1)
        if (gc.getPlayer(iPlayer).getNumCities() == 1):
            self.setStability(iPlayer, self.getStability(iPlayer) + 1)
        self.setParameter(iPlayer, iParExpansionE, True,
                          self.getStability(iPlayer) - iTempExpansionThreshold)
コード例 #30
0
ファイル: Plague.py プロジェクト: srpt/RFC-Classical-World
    def spreadPlague(self, iPlayer):

        #utils.echo("Spreading plague to %s" %(gc.getPlayer(iPlayer).getCivilizationShortDescription(0))) # DEBUG
        pPlayer = gc.getPlayer(iPlayer)
        iHealth = -30
        if (pPlayer.calculateTotalCityHealthiness() > 0):
            iHealth = int((1.0 * pPlayer.calculateTotalCityHealthiness()) / (pPlayer.calculateTotalCityHealthiness() + \
             pPlayer.calculateTotalCityUnhealthiness()) * 100) - 60
        iHealth /= 7  #duration range will be -4 to +4 for 30 to 90
        sd.setPlagueCountdown(
            iPlayer, min(9,
                         utils.getTurns(iPlagueDuration) - iHealth))
コード例 #31
0
	def spreadJudaismEurope(self, iGameTurn):
		if not gc.getGame().isReligionFounded(iJudaism): return
		if iGameTurn < getTurnForYear(1000): return
		
		if iGameTurn % utils.getTurns(10) != 0: return
	
		lEuropeanCities = utils.getRegionCities([rIberia, rEurope, rItaly, rBritain, rRussia, rBalkans])
		lJewishCities = [city for city in lEuropeanCities if city.isHasReligion(iJudaism)]
		
		if 2 * len(lJewishCities) < len(lEuropeanCities):
			pSpreadCity = utils.getRandomEntry(self.getTargetCities(lEuropeanCities, iJudaism))
			if pSpreadCity:
				pSpreadCity.spreadReligion(iJudaism)
コード例 #32
0
ファイル: Religions.py プロジェクト: Imperator-Knoedel/Sunset
	def spreadReligionToRegion(self, iReligion, lRegions, iGameTurn, iStartDate, iInterval, iOffset):
		if not gc.getGame().isReligionFounded(iReligion): return
		if iGameTurn < getTurnForYear(iStartDate): return
		
		if iGameTurn % utils.getTurns(iInterval) != iOffset: return
		
		lRegionCities = utils.getRegionCities(lRegions)
		lReligionCities = [city for city in lRegionCities if city.isHasReligion(iReligion)]
		
		if 2 * len(lReligionCities) < len(lRegionCities):
			pSpreadCity = utils.getRandomEntry(self.getTargetCities(lRegionCities, iReligion))
			if pSpreadCity:
				pSpreadCity.spreadReligion(iReligion)
コード例 #33
0
	def checkTurn(self, iGameTurn):

		print "Check AI wars"

		#turn automatically peace on between independent cities and all the major civs
		if iGameTurn % 20 == 7:
			utils.restorePeaceHuman(iIndependent2, False)
		elif iGameTurn % 20 == 14:
			utils.restorePeaceHuman(iIndependent, False)
		if iGameTurn % 60 == 55 and iGameTurn > utils.getTurns(50):
			utils.restorePeaceAI(iIndependent, False)
		elif iGameTurn % 60 == 30 and iGameTurn > utils.getTurns(50):
			utils.restorePeaceAI(iIndependent2, False)
		#turn automatically war on between independent cities and some AI major civs
		if iGameTurn % 13 == 6 and iGameTurn > utils.getTurns(50): #1 turn after restorePeace()
			utils.minorWars(iIndependent)
		elif iGameTurn % 13 == 11 and iGameTurn > utils.getTurns(50): #1 turn after restorePeace()
			utils.minorWars(iIndependent2)
		if iGameTurn % 50 == 24 and iGameTurn > utils.getTurns(50):
			utils.minorWars(iCeltia)
			utils.minorWars(iSeljuks)
		
		self.checkConquest(tConquestGreeceMesopotamia)
		self.checkConquest(tConquestGreeceEgypt)
		self.checkConquest(tConquestGreecePersia, tConquestGreeceMesopotamia)
		
		self.checkConquest(tConquestRomeCarthage)
		self.checkConquest(tConquestRomeGreece)
		self.checkConquest(tConquestRomeAnatolia, tConquestRomeGreece)
		self.checkConquest(tConquestRomeCelts)
		self.checkConquest(tConquestRomeEgypt)
		
		self.checkConquest(tConquestSpainMoors)
		
		if iGameTurn == data.iNextTurnAIWar:
			self.planWars(iGameTurn)
			
		for iLoopPlayer in range(iNumPlayers):
			data.players[iLoopPlayer].iAggressionLevel = tAggressionLevel[iLoopPlayer] + gc.getGame().getSorenRandNum(2, "Random aggression")
コード例 #34
0
	def checkTurn(self, iGameTurn):

		print "Check AI wars"

		#turn automatically peace on between independent cities and all the major civs
		if iGameTurn % 20 == 7:
			utils.restorePeaceHuman(iIndependent2, False)
		elif iGameTurn % 20 == 14:
			utils.restorePeaceHuman(iIndependent, False)
		if iGameTurn % 60 == 55 and iGameTurn > utils.getTurns(50):
			utils.restorePeaceAI(iIndependent, False)
		elif iGameTurn % 60 == 30 and iGameTurn > utils.getTurns(50):
			utils.restorePeaceAI(iIndependent2, False)
		#turn automatically war on between independent cities and some AI major civs
		if iGameTurn % 13 == 6 and iGameTurn > utils.getTurns(50): #1 turn after restorePeace()
			utils.minorWars(iIndependent)
		elif iGameTurn % 13 == 11 and iGameTurn > utils.getTurns(50): #1 turn after restorePeace()
			utils.minorWars(iIndependent2)
		if iGameTurn % 50 == 24 and iGameTurn > utils.getTurns(50):
			utils.minorWars(iCeltia)
			utils.minorWars(iSeljuks)
		
		self.checkConquest(tConquestGreeceMesopotamia)
		self.checkConquest(tConquestGreeceEgypt)
		self.checkConquest(tConquestGreecePersia, tConquestGreeceMesopotamia)
		
		self.checkConquest(tConquestRomeCarthage)
		self.checkConquest(tConquestRomeGreece)
		self.checkConquest(tConquestRomeAnatolia, tConquestRomeGreece)
		self.checkConquest(tConquestRomeCelts)
		self.checkConquest(tConquestRomeEgypt)
		
		self.checkConquest(tConquestSpainMoors)
		
		if iGameTurn == data.iNextTurnAIWar:
			self.planWars(iGameTurn)
			
		for iLoopPlayer in range(iNumPlayers):
			data.players[iLoopPlayer].iAggressionLevel = tAggressionLevel[iLoopPlayer] + gc.getGame().getSorenRandNum(2, "Random aggression")
コード例 #35
0
	def checkChristianity(self, iGameTurn):
		if not gc.getGame().isReligionFounded(iJudaism): return
		if gc.getGame().isReligionFounded(iOrthodoxy): return
		
		iEthiopiaOffset = 0
		if utils.getHumanID() == iEthiopia: iEthiopiaOffset = utils.getTurns(10 + data.iSeed % 5)
		iOffset = utils.getTurns(data.iSeed % 15)
		
		if iGameTurn == getTurnForYear(0) + iOffset + iEthiopiaOffset:
			pHolyCity = gc.getGame().getHolyCity(iJudaism)
			
			if pHolyCity.getOwner() != utils.getHumanID() and gc.getGame().getSorenRandNum(2, "Holy city?") == 0:
				pChristianCity = pHolyCity
				self.foundReligion((pChristianCity.getX(), pChristianCity.getY()), iOrthodoxy)
				return

			lJewishCities = []
			for iPlayer in range(iNumTotalPlayersB):
				lJewishCities.extend([city for city in utils.getCityList(iPlayer) if city.isHasReligion(iJudaism) and city.getOwner() != utils.getHumanID()])
							
			if lJewishCities:
				pChristianCity = utils.getRandomEntry(lJewishCities)
				self.foundReligion((pChristianCity.getX(), pChristianCity.getY()), iOrthodoxy)
コード例 #36
0
	def spawnUnits(self, iCiv, tTopLeft, tBottomRight, iUnitType, iNumUnits, iTurn, iPeriod, iRest, function, eUnitAIType = UnitAITypes.UNITAI_ATTACK, prefix = 0, art = "", promotionList = [], argsList = []):
		
		print "spawnUnits called"
		if iNumUnits <= 0: # edead
			return None
		pUnit = None # edead
		if (iTurn % utils.getTurns(iPeriod) == iRest):
			dummy, plotList = utils.squareSearch( tTopLeft, tBottomRight, function, argsList )
			if (len(plotList)):
				rndNum = gc.getGame().getSorenRandNum(len(plotList), 'Spawn units')
				result = plotList[rndNum]
				if (result):
					pUnit = utils.makeUnit(iUnitType, iCiv, result, iNumUnits, eUnitAIType, promotionList, prefix, art) # edead: pass the object
					
		return pUnit # edead: pass the object
コード例 #37
0
 def checkLimitedSpawn(self,
                       iPlayer,
                       iUnitType,
                       iNumUnits,
                       iMaxUnits,
                       tTL,
                       tBR,
                       spawnFunction,
                       iTurn,
                       iPeriod,
                       iRest,
                       lAdj=[]):
     if iTurn % utils.getTurns(iPeriod) == iRest:
         lAreaUnits = utils.getAreaUnits(iPlayer, tTL, tBR)
         if len(lAreaUnits) < iMaxUnits:
             self.checkSpawn(iPlayer, iUnitType, iNumUnits, tTL, tBR,
                             spawnFunction, iTurn, iPeriod, iRest, lAdj)
コード例 #38
0
 def onCityAcquired(self, iOldOwner, iNewOwner, city):
     if city.hasBuilding(iPlague):
         if not data.players[
                 iOldOwner].bFirstContactPlague:  #don't infect if first contact plague
             if data.players[iNewOwner].iPlagueCountdown <= 0 and gc.getGame(
             ).getGameTurn(
             ) > getTurnForYear(tBirth[iNewOwner]) + utils.getTurns(
                     iImmunity
             ):  #skip immunity in this case (to prevent expoiting of being immune to conquer weak civs), but not for the new born civs
                 if not gc.getTeam(gc.getPlayer(iNewOwner).getTeam(
                 )).isHasTech(iMicrobiology):  #but not permanent immunity
                     print("acquiring plague")
                     self.spreadPlague(iNewOwner)
                     self.infectCitiesNear(iNewOwner, city.getX(),
                                           city.getY())
                     return
         city.setHasRealBuilding(iPlague, False)
コード例 #39
0
	def setup(self):
		for iPlayer in range(iNumMajorPlayers):
			data.players[iPlayer].iPlagueCountdown = -utils.getTurns(iImmunity)
		
		if utils.getScenario() == i3000BC:  #early start condition
			data.lGenericPlagueDates[0] = getTurnForYear(400) + gc.getGame().getSorenRandNum(40, 'Variation') - 20
		else:
			data.lGenericPlagueDates[0] = 80
			
		data.lGenericPlagueDates[1] = getTurnForYear(1300) + gc.getGame().getSorenRandNum(40, 'Variation') - 20
		if utils.getScenario != i1700AD:
			data.lGenericPlagueDates[2] = getTurnForYear(1650) + gc.getGame().getSorenRandNum(40, 'Variation') - 20
		else:
			data.lGenericPlagueDates[2] = 300 # Safe value to prevent plague at start of 1700 scenario
		data.lGenericPlagueDates[3] = getTurnForYear(1850) + gc.getGame().getSorenRandNum(40, 'Variation') - 20

		undoPlague = gc.getGame().getSorenRandNum(8, 'undo')
		if undoPlague <= 3:
			data.lGenericPlagueDates[undoPlague] = -1
コード例 #40
0
def setup():
	data.iCongressTurns = utils.getTurns(iCongressInterval)
コード例 #41
0
	def selectClaims(self, iPlayer):
		pPlayer = gc.getPlayer(iPlayer)
		iGameTurn = gc.getGame().getGameTurn()
		iNumPlayersAlive = gc.getGame().countCivPlayersAlive()
		lPlots = []
		
		for iLoopPlayer in range(iNumTotalPlayers+1):
			if iLoopPlayer == iPlayer: continue
			if not gc.getPlayer(iLoopPlayer).isAlive(): continue
			
			# after a war: winners can only claim from losers and vice versa
			if self.bPostWar:
				if iPlayer in self.lWinners and iLoopPlayer not in self.lLosers: continue
				if iPlayer in self.lLosers and iLoopPlayer not in self.lWinners: continue
				
			# AI civs: cannot claim cities from friends
			if utils.getHumanID() != iPlayer and pPlayer.AI_getAttitude(iLoopPlayer) >= AttitudeTypes.ATTITUDE_FRIENDLY: continue
			
			# recently born
			if iGameTurn < getTurnForYear(tBirth[iLoopPlayer]) + utils.getTurns(20): continue
			
			# recently resurrected
			if iGameTurn < pPlayer.getLatestRebellionTurn() + utils.getTurns(20): continue
			
			# recently reborn
			if utils.isReborn(iLoopPlayer) and tRebirth != -1 and iGameTurn < getTurnForYear(tRebirth[iLoopPlayer]) + utils.getTurns(20): continue
			
			# exclude master/vassal relationships
			if gc.getTeam(iPlayer).isVassal(iLoopPlayer): continue
			if gc.getTeam(iLoopPlayer).isVassal(iPlayer): continue
			
			# cannot demand cities while at war
			if gc.getTeam(iPlayer).isAtWar(iLoopPlayer): continue
			
			for city in utils.getCityList(iLoopPlayer):
				x, y = city.getX(), city.getY()
				plot = gc.getMap().plot(x, y)
				iSettlerMapValue = plot.getSettlerValue(iPlayer)
				iValue = 0
				
				if not plot.isRevealed(iPlayer, False): continue
				if city.isCapital(): continue
				
				# after a war: losers can only claim previously owned cities
				if self.bPostWar and iPlayer in self.lLosers:
					if city.getGameTurnPlayerLost(iPlayer) < gc.getGame().getGameTurn() - utils.getTurns(25): continue
				
				# city culture
				iTotalCulture = city.countTotalCultureTimes100()
				if iTotalCulture > 0:
					iCultureRatio = city.getCultureTimes100(iPlayer) * 100 / iTotalCulture
					if iCultureRatio > 20:
						if iLoopPlayer != iAmerica:
							iValue += iCultureRatio / 20
							
				# ever owned
				if city.isEverOwned(iPlayer):
					iValue += 3
						
				# own core
				if plot.isCore(iPlayer):
					iValue += 5
							
				# colonies
				if iPlayer in lCivGroups[0]:
					if iLoopPlayer >= iNumPlayers or (iLoopPlayer not in lCivGroups[0] and utils.getStabilityLevel(iLoopPlayer) < iStabilityShaky) or (iLoopPlayer in lCivGroups[0] and utils.getHumanID() != iLoopPlayer and pPlayer.AI_getAttitude(iLoopPlayer) < AttitudeTypes.ATTITUDE_PLEASED):
						if plot.getRegionID() not in lEurope and plot.getRegionID() not in lMiddleEast:
							if iSettlerMapValue > 90:
								iValue += max(1, iSettlerMapValue / 100)
									
				# weaker and collapsing empires
				if iLoopPlayer < iNumPlayers:
					if gc.getGame().getPlayerRank(iLoopPlayer) > iNumPlayersAlive / 2 and gc.getGame().getPlayerRank(iLoopPlayer) < iNumPlayersAlive / 2:
						if data.players[iLoopPlayer].iStabilityLevel == iStabilityCollapsing:
							if iSettlerMapValue >= 90:
								iValue += max(1, iSettlerMapValue / 100)
									
				# close to own empire
				closestCity = gc.getMap().findCity(x, y, iPlayer, TeamTypes.NO_TEAM, False, False, TeamTypes.NO_TEAM, DirectionTypes.NO_DIRECTION, city)
				iDistance = stepDistance(x, y, closestCity.getX(), closestCity.getY())
				if iDistance < 5:
					iValue += 5-iDistance
					
				# after war: war targets
				if self.bPostWar:
					iValue += plot.getWarValue(iPlayer) / 2
					
				# AI America receives extra value for claims in the west
				if iPlayer == iAmerica and utils.getHumanID() != iPlayer:
					if utils.isPlotInArea((x, y), tAmericanClaimsTL, tAmericanClaimsBR):
						iValue += 5
						
				# help Canada gain Labrador and Newfoundland
				if iPlayer == iCanada:
					if utils.isPlotInArea((x, y), tNewfoundlandTL, tNewfoundlandBR):
						iValue += 5
					
				if iValue > 0:
					lPlots.append((x, y, iValue))
		
		# extra spots for colonial civs -> will be settled
		# not available after wars because these congresses are supposed to reassign cities
		if iPlayer in lCivGroups[0] and not self.bPostWar:
			for (x, y) in utils.getWorldPlotsList():
				if utils.getHumanID() == iPlayer and not plot.isRevealed(iPlayer, False): continue
				plot = gc.getMap().plot(x, y)
				if not plot.isCity() and not plot.isPeak() and not plot.isWater() and pPlayer.canFound(x, y):
					if plot.getRegionID() in [rWestAfrica, rSouthAfrica, rEthiopia, rAustralia, rOceania]:
						iSettlerMapValue = plot.getSettlerValue(iPlayer)
						if iSettlerMapValue >= 90 and cnm.getFoundName(iPlayer, (x, y)):
							closestCity = gc.getMap().findCity(x, y, PlayerTypes.NO_PLAYER, TeamTypes.NO_TEAM, False, False, TeamTypes.NO_TEAM, DirectionTypes.NO_DIRECTION, CyCity())
							if stepDistance(x, y, closestCity.getX(), closestCity.getY()) > 2:
								lPlots.append((x, y, max(1, iSettlerMapValue / 100 - 1)))
						
		lPlots = utils.getSortedList(lPlots, lambda x: x[2] + gc.getGame().getSorenRandNum(3, 'Randomize city value'), True)
		return lPlots[:10]
コード例 #42
0
	def onCityAcquired(self, iOldOwner, iNewOwner, city):
		if city.hasBuilding(iPlague):
			if not data.players[iOldOwner].bFirstContactPlague: #don't infect if first contact plague
				if data.players[iNewOwner].iPlagueCountdown <= 0 and gc.getGame().getGameTurn() > getTurnForYear(tBirth[iNewOwner]) + utils.getTurns(iImmunity): #skip immunity in this case (to prevent expoiting of being immune to conquer weak civs), but not for the new born civs
					if not gc.getTeam(gc.getPlayer(iNewOwner).getTeam()).isHasTech(iMedicine): #but not permanent immunity
						print("acquiring plague")
						self.spreadPlague(iNewOwner)
						self.infectCitiesNear(iNewOwner, city.getX(), city.getY())
						return
			city.setHasRealBuilding(iPlague, False)
コード例 #43
0
	def canDecay(self, iGameTurn, iCiv):
		if 0 <= iCiv < iNumMajorPlayers:
			if gc.getPlayer(iCiv).isAlive() and iGameTurn >= getTurnForYear(tBirth[iCiv]+utils.getTurns(15)): # edead: RFCM
				if not gc.getTeam(gc.getPlayer(iCiv).getTeam()).isHasTech(iElectricity):
					self.decay(iCiv)
コード例 #44
0
	def killUnitsByPlague(self, city, pPlot, baseValue, iDamage, iPreserveDefenders):
		iOwner = city.getOwner()
		pOwner = gc.getPlayer(iOwner)
		teamOwner = gc.getTeam(gc.getPlayer(city.getOwner()).getTeam())
		
		#deadly plague when human player isn't born yet, will speed up the loading
		if gc.getGame().getGameTurn() < getTurnForYear(tBirth[utils.getHumanID()]) + utils.getTurns(20):
			iDamage += 10
			baseValue -= 5


		#print (city.getX(), city.getY())
		iNumUnitsInAPlot = pPlot.getNumUnits()
		#iPreserveHumanDefenders = iPreserveDefenders -1 #human handicap
		iPreserveHumanDefenders = iPreserveDefenders
		iHuman = utils.getHumanID()
		if iPreserveDefenders > 0: #cities only
			#handicap for civs distant from human player too
			if not pOwner.isHuman(): #if not human and close or at war
				#iPreserveDefenders -= 1
				if teamOwner.isAtWar(iHuman):
					iPreserveDefenders += 2
				else:
					for iCivGroups in range(len(lCivGroups)):
						if iOwner in lCivGroups[iCivGroups] and utils.getHumanID() in lCivGroups[iCivGroups]:
							iPreserveDefenders += 1
							break
		if iNumUnitsInAPlot > 0:
			for iUnit in range(iNumUnitsInAPlot):
				i = iNumUnitsInAPlot - iUnit - 1
				unit = pPlot.getUnit(i)
				if gc.getPlayer(unit.getOwner()).isHuman():
					#print ("iPreserveHumanDefenders", iPreserveHumanDefenders)
					if iPreserveHumanDefenders > 0:
						if utils.isDefenderUnit(unit):
							iPreserveHumanDefenders -= 1
							if pPlot.getNumUnits() > iPreserveDefenders:
								pass
							else:
								# Leoreth: keep units at 50% minimum
								unit.setDamage(min(50, unit.getDamage() + iDamage - 20), iBarbarian)
							#print ("preserve")
							continue
				else:
					if iPreserveDefenders > 0:
						if utils.isDefenderUnit(unit):
							iPreserveDefenders -= 1
							if pPlot.getNumUnits() > iPreserveDefenders or gc.getTeam(gc.getPlayer(unit.getOwner()).getTeam()).isAtWar(iHuman):
								pass
							else:
								# Leoreth: keep units at 50% minimum
								unit.setDamage(min(50, unit.getDamage() + iDamage - 20), iBarbarian)
							#print ("preserve")
							continue
				if utils.isMortalUnit(unit): #another human handicap inside
					iThreshold = baseValue + 5*city.healthRate(False, 0)
					#print ("iThreshold", iThreshold)

					if teamOwner.isAtWar(iHuman) and iOwner < iNumMajorPlayers:
						if unit.getOwner() == iOwner:
							iDamage *= 3
							iDamage /= 4
					
					if data.players[city.getOwner()].bFirstContactPlague:
						if unit.getOwner() in lCivBioOldWorld:
							iDamage /= 2
					
					if gc.getGame().getSorenRandNum(100, 'roll') > iThreshold:
						if iDamage - unit.getExperience()/10 - unit.baseCombatStr()*3/7 >= 100 - unit.getDamage():
							if unit.getOwner() != iOwner and gc.getPlayer(unit.getOwner()).isHuman():
								CyInterface().addMessage(unit.getOwner(), False, iDuration/2, CyTranslator().getText("TXT_KEY_PLAGUE_PROCESS_UNIT", ()) + " " + city.getName(), "AS2D_PLAGUE", 0, "", ColorTypes(iLime), -1, -1, True, True)
						#Leoreth: keep units at 50% minimum
						unit.setDamage(min(50, unit.getDamage() + iDamage - unit.getExperience()/10 - unit.baseCombatStr()/2), iBarbarian)
						#print ("process")
						break
コード例 #45
0
	def determineTargetPlayer(self, iPlayer):
		pPlayer = gc.getPlayer(iPlayer)
		tPlayer = gc.getTeam(pPlayer.getTeam())
		lPotentialTargets = []
		lTargetValues = [0 for i in range(iNumPlayers)]

		# determine potential targets
		for iLoopPlayer in range(iNumPlayers):
			pLoopPlayer = gc.getPlayer(iLoopPlayer)
			tLoopPlayer = gc.getTeam(pLoopPlayer.getTeam())
			
			# requires live civ and past contact
			if not pLoopPlayer.isAlive(): continue
			if not tPlayer.isHasMet(iLoopPlayer): continue
			
			# no masters or vassals
			if tPlayer.isVassal(iLoopPlayer): continue
			if tLoopPlayer.isVassal(iPlayer): continue
			
			# not already at war
			if tPlayer.isAtWar(iLoopPlayer): continue
			
			lPotentialTargets.append(iLoopPlayer)
			
		if not lPotentialTargets: return -1
			
		# iterate the map for all potential targets
		for i in range(124):
			for j in range(68):
				iOwner = gc.getMap().plot(i,j).getOwner()
				if iOwner in lPotentialTargets:
					lTargetValues[iOwner] += pPlayer.getWarValue(i, j)
					
		# hard to attack with lost contact
		for iLoopPlayer in lPotentialTargets:
			lTargetValues[iLoopPlayer] /= 8
			
		# normalization
		iMaxValue = utils.getHighestEntry(lTargetValues)
		if iMaxValue == 0: return -1
		
		for iLoopPlayer in lPotentialTargets:
			lTargetValues[iLoopPlayer] *= 500
			lTargetValues[iLoopPlayer] /= iMaxValue
			
		for iLoopPlayer in lPotentialTargets:
		
			# randomization
			if lTargetValues[iLoopPlayer] <= iThreshold:
				lTargetValues[iLoopPlayer] += gc.getGame().getSorenRandNum(100, 'random modifier')
			else:
				lTargetValues[iLoopPlayer] += gc.getGame().getSorenRandNum(300, 'random modifier')
			
			# balanced by attitude
			iAttitude = pPlayer.AI_getAttitude(iLoopPlayer) - 2
			if iAttitude > 0:
				lTargetValues[iLoopPlayer] /= 2 * iAttitude
				
			# exploit plague
			if data.players[iLoopPlayer].iPlagueCountdown > 0 or data.players[iLoopPlayer].iPlagueCountdown < -10:
				if gc.getGame().getGameTurn() > getTurnForYear(tBirth[iLoopPlayer]) + utils.getTurns(20):
					lTargetValues[iLoopPlayer] *= 3
					lTargetValues[iLoopPlayer] /= 2
		
			# determine master
			iMaster = -1
			for iLoopMaster in range(iNumPlayers):
				if tLoopPlayer.isVassal(iLoopMaster):
					iMaster = iLoopMaster
					break
					
			# master attitudes
			if iMaster >= 0:
				iAttitude = gc.getPlayer(iMaster).AI_getAttitude(iLoopPlayer)
				if iAttitude > 0:
					lTargetValues[iLoopPlayer] /= 2 * iAttitude
			
			# peace counter
			if not tPlayer.isAtWar(iLoopPlayer):
				iCounter = min(7, max(1, tPlayer.AI_getAtPeaceCounter(iLoopPlayer)))
				if iCounter <= 7:
					lTargetValues[iLoopPlayer] *= 20 + 10 * iCounter
					lTargetValues[iLoopPlayer] /= 100
					
			# defensive pact
			if tPlayer.isDefensivePact(iLoopPlayer):
				lTargetValues[iLoopPlayer] /= 4
				
			# consider power
			iOurPower = tPlayer.getPower(True)
			iTheirPower = gc.getTeam(iLoopPlayer).getPower(True)
			if iOurPower > 2 * iTheirPower:
				lTargetValues[iLoopPlayer] *= 2
			elif 2 * iOurPower < iTheirPower:
				lTargetValues[iLoopPlayer] /= 2
				
			# spare smallish civs
			if iLoopPlayer in [iNetherlands, iPortugal, iItaly]:
				lTargetValues[iLoopPlayer] *= 4
				lTargetValues[iLoopPlayer] /= 5
				
			# no suicide
			if iPlayer == iNetherlands:
				if iLoopPlayer in [iFrance, iHolyRome, iGermany]:
					lTargetValues[iLoopPlayer] /= 2
			elif iPlayer == iPortugal:
				if iLoopPlayer == iSpain:
					lTargetValues[iLoopPlayer] /= 2
			elif iPlayer == iItaly:
				if iLoopPlayer in [iFrance, iHolyRome, iGermany]:
					lTargetValues[iLoopPlayer] /= 2
					
		return utils.getHighestIndex(lTargetValues)
コード例 #46
0
	def doImmigration(self):
	
		# get available migration and immigration cities
		lSourceCities = []
		lTargetCities = []
		
		for iPlayer in range(iNumPlayers):
			if iPlayer in lCivBioNewWorld and not utils.isReborn(iPlayer): continue # no immigration to natives
			pPlayer = gc.getPlayer(iPlayer)
			lCities = []
			bNewWorld = pPlayer.getCapitalCity().getRegionID() in lNewWorld
			for city in utils.getCityList(iPlayer):
				iFoodDifference = city.foodDifference(False)
				iHappinessDifference = city.happyLevel() - city.unhappyLevel(0)
				if city.getRegionID() in lNewWorld and bNewWorld:
					if iFoodDifference <= 0 or iHappinessDifference <= 0: continue
					iNorthAmericaBonus = 0
					if city.getRegionID() in [rCanada, rUnitedStates]: iNorthAmericaBonus = 5
					lCities.append((city, iHappinessDifference + iFoodDifference / 2 + city.getPopulation() / 2 + iNorthAmericaBonus))
				elif city.getRegionID() not in lNewWorld and not bNewWorld:
					iValue = 0
					if iFoodDifference < 0:
						iValue -= iFoodDifference / 2
					if iHappinessDifference < 0:
						iValue -= iHappinessDifference
					if iValue > 0:
						lCities.append((city, iValue))
			
			if lCities:
				lCities.sort(key=itemgetter(1), reverse=True)
			
				if bNewWorld:
					lTargetCities.append(lCities[0])
				else:
					lSourceCities.append(lCities[0])
				
		# sort highest to lowest for happiness/unhappiness
		lSourceCities.sort(key=itemgetter(1), reverse=True)
		lTargetCities.sort(key=itemgetter(1), reverse=True)
		
		#utils.debugTextPopup(str([(x.getName(), y) for (x,y) in lTargetCities]))
		#utils.debugTextPopup("Target city: "+targetCity.getName())
		#utils.debugTextPopup("Source city: "+sourceCity.getName())
		
		iNumMigrations = min(len(lSourceCities) / 4, len(lTargetCities))
		
		for iMigration in range(iNumMigrations):
			sourceCity = lSourceCities[iMigration][0]
			targetCity = lTargetCities[iMigration][0]
		
			sourceCity.changePopulation(-1)
			targetCity.changePopulation(1)
			
			if sourceCity.getPopulation() >= 9:
				sourceCity.changePopulation(-1)
				targetCity.changePopulation(1)
				
			# extra cottage growth for target city's vicinity
			x = targetCity.getX()
			y = targetCity.getY()
			for (i, j) in utils.surroundingPlots((x, y), 2):
				pCurrent = gc.getMap().plot(i, j)
				if pCurrent.getWorkingCity() == targetCity:
					pCurrent.changeUpgradeProgress(utils.getTurns(10))
						
			# migration brings culture
			targetPlot = gc.getMap().plot(x, y)
			iTargetPlayer = targetCity.getOwner()
			iSourcePlayer = sourceCity.getOwner()
			iCultureChange = targetPlot.getCulture(iTargetPlayer) / targetCity.getPopulation()
			targetPlot.setCulture(iSourcePlayer, iCultureChange, False)
			
			# chance to spread state religion if in source city
			if gc.getPlayer(iSourcePlayer).isStateReligion():
				iReligion = gc.getPlayer(iSourcePlayer).getStateReligion()
				if sourceCity.isHasReligion(iReligion) and not targetCity.isHasReligion(iReligion):
					iRandom = gc.getGame().getSorenRandNum(3, 'random religion spread')
					if iRandom == 0:
						targetCity.setHasReligion(iReligion, True, True, True)
						
			# notify affected players
			if utils.getHumanID() == iSourcePlayer:
				CyInterface().addMessage(iSourcePlayer, False, iDuration, CyTranslator().getText("TXT_KEY_UP_EMIGRATION", (sourceCity.getName(),)), "", InterfaceMessageTypes.MESSAGE_TYPE_MINOR_EVENT, gc.getUnitInfo(iSettler).getButton(), ColorTypes(iYellow), sourceCity.getX(), sourceCity.getY(), True, True)
			elif utils.getHumanID() == iTargetPlayer:
				CyInterface().addMessage(iTargetPlayer, False, iDuration, CyTranslator().getText("TXT_KEY_UP_IMMIGRATION", (targetCity.getName(),)), "", InterfaceMessageTypes.MESSAGE_TYPE_MINOR_EVENT, gc.getUnitInfo(iSettler).getButton(), ColorTypes(iYellow), x, y, True, True)
	
			if iTargetPlayer == iCanada:
				self.canadianUP(targetCity)
コード例 #47
0
	def getWidgetHelp(self, argsList):
		eWidgetType, iData1, iData2, bOption = argsList

		# Espionage Advisor
		if eWidgetType == WidgetTypes.WIDGET_ESPIONAGE_SELECT_PLAYER:
			pPlayer = gc.getPlayer(iData1)
			szHelp = CyTranslator().changeTextColor(pPlayer.getName(), gc.getInfoTypeForString('COLOR_HIGHLIGHT_TEXT'))
			szHelp += "\n"
			szHelp += pPlayer.getCivilizationDescription(0)
			szHelp += "\n\n"
			szHelp += CyGameTextMgr().getAttitudeString(iData1, iData2)
			return szHelp

		elif eWidgetType == WidgetTypes.WIDGET_ESPIONAGE_SELECT_CITY:
			return " "

		elif eWidgetType == WidgetTypes.WIDGET_ESPIONAGE_SELECT_MISSION:
			MissionInfo = gc.getEspionageMissionInfo(iData1)
			szHelp = CyTranslator().changeTextColor(MissionInfo.getDescription(), gc.getInfoTypeForString('COLOR_HIGHLIGHT_TEXT'))
			szHelp += "\n"
			szHelp += MissionInfo.getHelp()
			return szHelp

		# Go to City
		elif eWidgetType == WidgetTypes.WIDGET_GO_TO_CITY:
			szHelp = "Locate this city in the world"
			return szHelp
	
		# Leoreth: Aztec UP: sacrifice slaves
		if iData1 == 10000:
			return CyTranslator().getText("TXT_KEY_BUTTON_SACRIFICE", (utils.getTurns(5), utils.getTurns(5)))
						
		# Leoreth: Byzantine UP: bribe button
		if iData1 == 10001:
			return CyTranslator().getText("TXT_KEY_ACTION_BYZANTINE_UP", ())
		
## Religion Screen ##
#		if eWidgetType == WidgetTypes.WIDGET_HELP_RELIGION:
#			if iData1 == -1:
#				return CyTranslator().getText("TXT_KEY_CULTURELEVEL_NONE", ())

## Platy WorldBuilder ##
		if eWidgetType == WidgetTypes.WIDGET_PYTHON:
			if iData1 == 1027:
				return CyTranslator().getText("TXT_KEY_WB_PLOT_DATA",())
			elif iData1 == 1028:
				return gc.getGameOptionInfo(iData2).getHelp()
			elif iData1 == 1029:
				if iData2 == 0:
					sText = CyTranslator().getText("TXT_KEY_WB_PYTHON", ())
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onFirstContact"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onChangeWar"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onVassalState"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onCityAcquired"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onCityBuilt"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onCultureExpansion"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onGoldenAge"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onEndGoldenAge"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onGreatPersonBorn"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onPlayerChangeStateReligion"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onReligionFounded"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onReligionSpread"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onReligionRemove"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onCorporationFounded"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onCorporationSpread"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onCorporationRemove"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onUnitCreated"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onUnitLost"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onUnitPromoted"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onBuildingBuilt"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onProjectBuilt"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onTechAcquired"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onImprovementBuilt"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onImprovementDestroyed"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onRouteBuilt"
					sText += "\n" + CyTranslator().getText("[ICON_BULLET]", ()) + "onPlotRevealed"
					return sText
				elif iData2 == 1:
					return CyTranslator().getText("TXT_KEY_WB_PLAYER_DATA",())
				elif iData2 == 2:
					return CyTranslator().getText("TXT_KEY_WB_TEAM_DATA",())
				elif iData2 == 3:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_TECH",())
				elif iData2 == 4:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_PROJECT",())
				elif iData2 == 5:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_UNIT", ()) + " + " + CyTranslator().getText("TXT_KEY_CONCEPT_CITIES", ())
				elif iData2 == 6:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_PROMOTION",())
				elif iData2 == 7:
					return CyTranslator().getText("TXT_KEY_WB_CITY_DATA2",())
				elif iData2 == 8:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_BUILDING",())
				elif iData2 == 9:
					return "Platy Builder\nVersion: 4.17"
				elif iData2 == 10:
					return CyTranslator().getText("TXT_KEY_CONCEPT_EVENTS",())
				elif iData2 == 11:
					return CyTranslator().getText("TXT_KEY_WB_RIVER_PLACEMENT",())
				elif iData2 == 12:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_IMPROVEMENT",())
				elif iData2 == 13:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_BONUS",())
				elif iData2 == 14:
					return CyTranslator().getText("TXT_KEY_WB_PLOT_TYPE",())
				elif iData2 == 15:
					return CyTranslator().getText("TXT_KEY_CONCEPT_TERRAIN",())
				elif iData2 == 16:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_ROUTE",())
				elif iData2 == 17:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_FEATURE",())
				elif iData2 == 18:
					return CyTranslator().getText("TXT_KEY_MISSION_BUILD_CITY",())
				elif iData2 == 19:
					return CyTranslator().getText("TXT_KEY_WB_ADD_BUILDINGS",())
				elif iData2 == 20:
					return CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_RELIGION",())
				elif iData2 == 21:
					return CyTranslator().getText("TXT_KEY_CONCEPT_CORPORATIONS",())
				elif iData2 == 22:
					return CyTranslator().getText("TXT_KEY_ESPIONAGE_CULTURE",())
				elif iData2 == 23:
					return CyTranslator().getText("TXT_KEY_PITBOSS_GAME_OPTIONS",())
				elif iData2 == 24:
					return CyTranslator().getText("TXT_KEY_WB_SENSIBILITY",())
				elif iData2 == 27:
					return CyTranslator().getText("TXT_KEY_WB_ADD_UNITS",())
				elif iData2 == 28:
					return CyTranslator().getText("TXT_KEY_WB_TERRITORY",())
				elif iData2 == 29:
					return CyTranslator().getText("TXT_KEY_WB_ERASE_ALL_PLOTS",())
				elif iData2 == 30:
					return CyTranslator().getText("TXT_KEY_WB_REPEATABLE",())
				elif iData2 == 31:
					return CyTranslator().getText("TXT_KEY_PEDIA_HIDE_INACTIVE", ())
				elif iData2 == 32:
					return CyTranslator().getText("TXT_KEY_WB_STARTING_PLOT", ())
				elif iData2 == 33:
					return CyTranslator().getText("TXT_KEY_INFO_SCREEN", ())
				elif iData2 == 34:
					return CyTranslator().getText("TXT_KEY_CONCEPT_TRADE", ())
			elif iData1 > 1029 and iData1 < 1040:
				if iData1 %2:
					return "-"
				return "+"
			elif iData1 == 1041:
				return CyTranslator().getText("TXT_KEY_WB_KILL",())
			elif iData1 == 1042:
				return CyTranslator().getText("TXT_KEY_MISSION_SKIP",())
			elif iData1 == 1043:
				if iData2 == 0:
					return CyTranslator().getText("TXT_KEY_WB_DONE",())
				elif iData2 == 1:
					return CyTranslator().getText("TXT_KEY_WB_FORTIFY",())
				elif iData2 == 2:
					return CyTranslator().getText("TXT_KEY_WB_WAIT",())
			elif iData1 == 6782:
				return CyGameTextMgr().parseCorporationInfo(iData2, False)
			elif iData1 == 6785:
				return CyGameTextMgr().getProjectHelp(iData2, False, CyCity())
			elif iData1 == 6787:
				return gc.getProcessInfo(iData2).getDescription()
			elif iData1 == 6788:
				if iData2 == -1:
					return CyTranslator().getText("TXT_KEY_CULTURELEVEL_NONE", ())
				return gc.getRouteInfo(iData2).getDescription()
## City Hover Text ##
			elif iData1 > 7199 and iData1 < 7300:
				iPlayer = iData1 - 7200
				pPlayer = gc.getPlayer(iPlayer)
				pCity = pPlayer.getCity(iData2)
				if CyGame().GetWorldBuilderMode():
					sText = "<font=3>"
					if pCity.isCapital():
						sText += CyTranslator().getText("[ICON_STAR]", ())
					elif pCity.isGovernmentCenter():
						sText += CyTranslator().getText("[ICON_SILVER_STAR]", ())
					sText += u"%s: %d<font=2>" %(pCity.getName(), pCity.getPopulation())
					sTemp = ""
					if pCity.isConnectedToCapital(iPlayer):
						sTemp += CyTranslator().getText("[ICON_TRADE]", ())
					for i in xrange(gc.getNumReligionInfos()):
						if pCity.isHolyCityByType(i):
							sTemp += u"%c" %(gc.getReligionInfo(i).getHolyCityChar())
						elif pCity.isHasReligion(i):
							sTemp += u"%c" %(gc.getReligionInfo(i).getChar())

					for i in xrange(gc.getNumCorporationInfos()):
						if pCity.isHeadquartersByType(i):
							sTemp += u"%c" %(gc.getCorporationInfo(i).getHeadquarterChar())
						elif pCity.isHasCorporation(i):
							sTemp += u"%c" %(gc.getCorporationInfo(i).getChar())
					if len(sTemp) > 0:
						sText += "\n" + sTemp

					iMaxDefense = pCity.getTotalDefense(False)
					if iMaxDefense > 0:
						sText += u"\n%s: " %(CyTranslator().getText("[ICON_DEFENSE]", ()))
						iCurrent = pCity.getDefenseModifier(False)
						if iCurrent != iMaxDefense:
							sText += u"%d/" %(iCurrent)
						sText += u"%d%%" %(iMaxDefense)

					sText += u"\n%s: %d/%d" %(CyTranslator().getText("[ICON_FOOD]", ()), pCity.getFood(), pCity.growthThreshold())
					iFoodGrowth = pCity.foodDifference(True)
					if iFoodGrowth != 0:
						sText += u" %+d" %(iFoodGrowth)

					if pCity.isProduction():
						sText += u"\n%s:" %(CyTranslator().getText("[ICON_PRODUCTION]", ()))
						if not pCity.isProductionProcess():
							sText += u" %d/%d" %(pCity.getProduction(), pCity.getProductionNeeded())
							iProduction = pCity.getCurrentProductionDifference(False, True)
							if iProduction != 0:
								sText += u" %+d" %(iProduction)
						sText += u" (%s)" %(pCity.getProductionName())

					iGPRate = pCity.getGreatPeopleRate()
					iProgress = pCity.getGreatPeopleProgress()
					if iGPRate > 0 or iProgress > 0:
						sText += u"\n%s: %d/%d %+d" %(CyTranslator().getText("[ICON_GREATPEOPLE]", ()), iProgress, pPlayer.greatPeopleThreshold(False), iGPRate)

					sText += u"\n%s: %d/%d (%s)" %(CyTranslator().getText("[ICON_CULTURE]", ()), pCity.getCulture(iPlayer), pCity.getCultureThreshold(), gc.getCultureLevelInfo(pCity.getCultureLevel()).getDescription())

					lTemp = []
					for i in xrange(CommerceTypes.NUM_COMMERCE_TYPES):
						iAmount = pCity.getCommerceRateTimes100(i)
						if iAmount <= 0: continue
						sTemp = u"%d.%02d%c" %(pCity.getCommerceRate(i), pCity.getCommerceRateTimes100(i)%100, gc.getCommerceInfo(i).getChar())
						lTemp.append(sTemp)
					if len(lTemp) > 0:
						sText += "\n"
						for i in xrange(len(lTemp)):
							sText += lTemp[i]
							if i < len(lTemp) - 1:
								sText += ", "

					iMaintenance = pCity.getMaintenanceTimes100()
					if iMaintenance != 0:
						sText += "\n" + CyTranslator().getText("[COLOR_WARNING_TEXT]", ()) + CyTranslator().getText("INTERFACE_CITY_MAINTENANCE", ()) + " </color>"
						sText += u"-%d.%02d%c" %(iMaintenance/100, iMaintenance%100, gc.getCommerceInfo(CommerceTypes.COMMERCE_GOLD).getChar())

					lBuildings = []
					lWonders = []
					for i in xrange(gc.getNumBuildingInfos()):
						if pCity.isHasBuilding(i):
							Info = gc.getBuildingInfo(i)
							if isLimitedWonderClass(Info.getBuildingClassType()):
								lWonders.append(Info.getDescription())
							else:
								lBuildings.append(Info.getDescription())
					if len(lBuildings) > 0:
						lBuildings.sort()
						sText += "\n" + CyTranslator().getText("[COLOR_BUILDING_TEXT]", ()) + CyTranslator().getText("TXT_KEY_PEDIA_CATEGORY_BUILDING", ()) + ": </color>"
						for i in xrange(len(lBuildings)):
							sText += lBuildings[i]
							if i < len(lBuildings) - 1:
								sText += ", "
					if len(lWonders) > 0:
						lWonders.sort()
						sText += "\n" + CyTranslator().getText("[COLOR_SELECTED_TEXT]", ()) + CyTranslator().getText("TXT_KEY_CONCEPT_WONDERS", ()) + ": </color>"
						for i in xrange(len(lWonders)):
							sText += lWonders[i]
							if i < len(lWonders) - 1:
								sText += ", "
					sText += "</font>"
					return sText
## Religion Widget Text##
			elif iData1 == 7869:
				return CyGameTextMgr().parseReligionInfo(iData2, False)
## Building Widget Text##
			elif iData1 == 7870:
				return CyGameTextMgr().getBuildingHelp(iData2, False, False, False, None)
## Tech Widget Text##
			elif iData1 == 7871:
				if iData2 == -1:
					return CyTranslator().getText("TXT_KEY_CULTURELEVEL_NONE", ())
				return CyGameTextMgr().getTechHelp(iData2, False, False, False, False, -1)
## Civilization Widget Text##
			elif iData1 == 7872:
				iCiv = iData2 % 10000
				return CyGameTextMgr().parseCivInfos(iCiv, False)
## Promotion Widget Text##
			elif iData1 == 7873:
				return CyGameTextMgr().getPromotionHelp(iData2, False)
## Feature Widget Text##
			elif iData1 == 7874:
				if iData2 == -1:
					return CyTranslator().getText("TXT_KEY_CULTURELEVEL_NONE", ())
				iFeature = iData2 % 10000
				return CyGameTextMgr().getFeatureHelp(iFeature, False)
## Terrain Widget Text##
			elif iData1 == 7875:
				return CyGameTextMgr().getTerrainHelp(iData2, False)
## Leader Widget Text##
			elif iData1 == 7876:
				iLeader = iData2 % 10000
				return CyGameTextMgr().parseLeaderTraits(iLeader, -1, False, False)
## Improvement Widget Text##
			elif iData1 == 7877:
				if iData2 == -1:
					return CyTranslator().getText("TXT_KEY_CULTURELEVEL_NONE", ())
				return CyGameTextMgr().getImprovementHelp(iData2, False)
## Bonus Widget Text##
			elif iData1 == 7878:
				if iData2 == -1:
					return CyTranslator().getText("TXT_KEY_CULTURELEVEL_NONE", ())
				return CyGameTextMgr().getBonusHelp(iData2, False)
## Specialist Widget Text##
			elif iData1 == 7879:
				return CyGameTextMgr().getSpecialistHelp(iData2, False)
## Yield Text##
			elif iData1 == 7880:
				return gc.getYieldInfo(iData2).getDescription()
## Commerce Text##
			elif iData1 == 7881:
				return gc.getCommerceInfo(iData2).getDescription()
## Build Text##
			elif iData1 == 7882:
				return gc.getBuildInfo(iData2).getDescription()
## Corporation Screen ##
			elif iData1 == 8201:
				return CyGameTextMgr().parseCorporationInfo(iData2, False)
## Military Screen ##
			elif iData1 == 8202:
				if iData2 == -1:
					return CyTranslator().getText("TXT_KEY_PEDIA_ALL_UNITS", ())
				return CyGameTextMgr().getUnitHelp(iData2, False, False, False, None)
			elif iData1 > 8299 and iData1 < 8400:
				iPlayer = iData1 - 8300
				pUnit = gc.getPlayer(iPlayer).getUnit(iData2)
				sText = CyGameTextMgr().getSpecificUnitHelp(pUnit, True, False)
				if CyGame().GetWorldBuilderMode():
					sText += "\n" + CyTranslator().getText("TXT_KEY_WB_UNIT", ()) + " ID: " + str(iData2)
					sText += "\n" + CyTranslator().getText("TXT_KEY_WB_GROUP", ()) + " ID: " + str(pUnit.getGroupID())
					sText += "\n" + "X: " + str(pUnit.getX()) + ", Y: " + str(pUnit.getY())
					sText += "\n" + CyTranslator().getText("TXT_KEY_WB_AREA_ID", ()) + ": "  + str(pUnit.plot().getArea())
				return sText
## Civics Screen ##
			elif iData1 == 8205 or iData1 == 8206:
				sText = CyGameTextMgr().parseCivicInfo(iData2, False, True, False)
				if gc.getCivicInfo(iData2).getUpkeep() > -1:
					sText += "\n" + gc.getUpkeepInfo(gc.getCivicInfo(iData2).getUpkeep()).getDescription()
				else:
					sText += "\n" + CyTranslator().getText("TXT_KEY_CIVICS_SCREEN_NO_UPKEEP", ())
				return sText
## Ultrapack ##
		return u""
コード例 #48
0
	def checkJudaism(self, iGameTurn):
		if gc.getGame().isReligionFounded(iJudaism): return

		if iGameTurn == getTurnForYear(-1500) - utils.getTurns(data.iSeed % 5):
			self.foundReligion(self.selectHolyCity(tJewishTL, tJewishBR, tJerusalem), iJudaism)
コード例 #49
0
	def checkBuddhism(self, iGameTurn):
		if gc.getGame().isReligionFounded(iBuddhism): return
		
		if iGameTurn == getTurnForYear(-300) - 5 + utils.getTurns(data.iSeed % 10):
			self.foundReligion(self.selectHolyCity(tBuddhistTL, tBuddhistBR), iBuddhism)