def setup(self):
		iTurn = getTurnForYear(-600)
		if utils.getScenario() == i600AD:  #late start condition
			iTurn = getTurnForYear(900)
		elif utils.getScenario() == i1700AD:
			iTurn = getTurnForYear(1720)
		data.iNextTurnAIWar = iTurn + gc.getGame().getSorenRandNum(iMaxIntervalEarly-iMinIntervalEarly, 'random turn')
	def setup(self):
		iTurn = getTurnForYear(-600)
		if utils.getScenario() == i600AD:  #late start condition
			iTurn = getTurnForYear(900)
		elif utils.getScenario() == i1700AD:
			iTurn = getTurnForYear(1720)
		data.iNextTurnAIWar = iTurn + gc.getGame().getSorenRandNum(iMaxIntervalEarly-iMinIntervalEarly, 'random turn')
Ejemplo n.º 3
0
    def foundMinorCities(self, iGameTurn):
        for i in range(len(tMinorCities)):
            iYear, tPlot, iPlayer, sName, iPopulation, iUnitType, iNumUnits = tMinorCities[
                i]
            if iGameTurn < getTurnForYear(iYear): return
            if iGameTurn > getTurnForYear(iYear) + 10: continue

            if data.lMinorCityFounded[i]: continue

            x, y = tPlot
            plot = gc.getMap().plot(x, y)
            if plot.isCity(): continue

            # special cases
            if not self.canFoundCity(sName): continue

            lReligions = []
            bForceSpawn = False

            if sName == 'Kyiv': lReligions = [iOrthodoxy, iCatholicism]
            if iPlayer == iCeltia and utils.getScenario() != i3000BC:
                iPlayer = iIndependent
            if sName == 'Buda': bForceSpawn = True

            if not self.isFreePlot(tPlot, bForceSpawn): continue

            utils.evacuate(tPlot)

            if self.foundCity(iPlayer, tPlot, sName, iPopulation, iUnitType,
                              iNumUnits, lReligions):
                data.lMinorCityFounded[i] = True
def initPlayerTechs(iPlayer):
    initTechs(iPlayer, getStartingTechs(iPlayer))

    if iPlayer == iChina and utils.getScenario(
    ) == i3000BC and utils.getHumanID() != iPlayer:
        initTech(iPlayer, iProperty)
        initTech(iPlayer, iAlloys)
Ejemplo n.º 5
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
Ejemplo n.º 6
0
def getAdjustedModifier(iPlayer, iModifier):
    if utils.getScenario(
    ) > i3000BC and iPlayer < iVikings and not iPlayer in [iInuit]:
        if iModifier in dLateScenarioModifiers:
            return getModifier(
                iPlayer, iModifier) * dLateScenarioModifiers[iModifier] / 100

    return getModifier(iPlayer, iModifier)
Ejemplo n.º 7
0
def init():
    for iPlayer in range(iNumTotalPlayersB):
        updateModifiers(iPlayer)

        if utils.getScenario() > i3000BC and iPlayer < iVikings:
            adjustModifiers(iPlayer)

        gc.getPlayer(iPlayer).updateMaintenance()
	def onTechAcquired(self, iTech, iPlayer):
		if utils.getScenario() == i1700AD:
			return
			
		if iTech == iPrintingPress:
			if gc.getPlayer(iPlayer).getStateReligion() == iCatholicism:
				if not gc.getGame().isReligionFounded(iProtestantism):
					gc.getPlayer(iPlayer).foundReligion(iProtestantism, iProtestantism, True)
					self.reformation()
					
		for iReligion in range(iNumReligions):
			self.checkLateReligionFounding(iReligion, iTech)
Ejemplo n.º 9
0
	def onTechAcquired(self, iTech, iPlayer):
		if utils.getScenario() == i1700AD:
			return

		if iTech == iAcademia:
			if gc.getPlayer(iPlayer).getStateReligion() == iCatholicism:
				if not gc.getGame().isReligionFounded(iProtestantism):
					gc.getPlayer(iPlayer).foundReligion(iProtestantism, iProtestantism, True)
					self.reformation()
					
		for iReligion in range(iNumReligions):
			self.checkLateReligionFounding(iReligion, iTech)
Ejemplo n.º 10
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
Ejemplo n.º 11
0
    def onBeginGameTurn(self, argsList):
        iGameTurn = argsList[0]

        self.rnf.checkTurn(iGameTurn)
        self.barb.checkTurn(iGameTurn)
        self.rel.checkTurn(iGameTurn)
        self.res.checkTurn(iGameTurn)
        self.up.checkTurn(iGameTurn)
        self.aiw.checkTurn(iGameTurn)
        self.pla.checkTurn(iGameTurn)
        self.com.checkTurn(iGameTurn)
        self.corp.checkTurn(iGameTurn)

        sta.checkTurn(iGameTurn)
        cong.checkTurn(iGameTurn)

        if iGameTurn % 10 == 0:
            dc.checkTurn(iGameTurn)

        if utils.getScenario() == i3000BC and iGameTurn == getTurnForYear(600):
            for iPlayer in range(iVikings):
                Modifiers.adjustInflationModifier(iPlayer)

        return 0
	def onBeginGameTurn(self, argsList):
		iGameTurn = argsList[0]
		
		self.rnf.checkTurn(iGameTurn)
		self.barb.checkTurn(iGameTurn)
		self.rel.checkTurn(iGameTurn)
		self.res.checkTurn(iGameTurn)
		self.up.checkTurn(iGameTurn)
		self.aiw.checkTurn(iGameTurn)
		self.pla.checkTurn(iGameTurn)
		self.com.checkTurn(iGameTurn)
		self.corp.checkTurn(iGameTurn)
		
		sta.checkTurn(iGameTurn)
		cong.checkTurn(iGameTurn)
		
		if iGameTurn % 10 == 0:
			dc.checkTurn(iGameTurn)
			
		if utils.getScenario() == i3000BC and iGameTurn == getTurnForYear(600):
			for iPlayer in range(iVikings):
				Modifiers.adjustInflationModifier(iPlayer)
			
		return 0
def init():
	for iPlayer in range(iNumTotalPlayersB):
		updateModifiers(iPlayer)
		
		if utils.getScenario() > i3000BC and iPlayer < iVikings:
			adjustModifiers(iPlayer)
def getStartingTechs(iPlayer):
    return getScenarioTechs(utils.getScenario(), iPlayer)
def getAdjustedModifier(iPlayer, iModifier):
	if utils.getScenario() > i3000BC and iPlayer < iVikings:
		if iModifier in dLateScenarioModifiers:
			return getModifier(iPlayer, iModifier) * dLateScenarioModifiers[iModifier] / 100
	return getModifier(iPlayer, iModifier)
	def onTechAcquired(self, argsList):
		iTech, iTeam, iPlayer, bAnnounce = argsList

		iHuman = utils.getHumanID()
		
		iEra = gc.getTechInfo(iTech).getEra()
		
		if utils.getScenario() == i600AD and gc.getGame().getGameTurn() == getTurnForYear(600): #late start condition
			return
			
		if utils.getScenario() == i1700AD and gc.getGame().getGameTurn() == getTurnForYear(1700):
			return
			
		sta.onTechAcquired(iPlayer, iTech)
		AIParameters.onTechAcquired(iPlayer, iTech)
		
		if gc.getGame().getGameTurn() > getTurnForYear(tBirth[iPlayer]):
			vic.onTechAcquired(iPlayer, iTech)
			cnm.onTechAcquired(argsList[2])

		if gc.getPlayer(iPlayer).isAlive() and gc.getGame().getGameTurn() > getTurnForYear(tBirth[iPlayer]) and iPlayer < iNumPlayers:
			self.rel.onTechAcquired(argsList[0], argsList[2])
			if (gc.getGame().getGameTurn() > getTurnForYear(1700)):
				self.aiw.forgetMemory(argsList[0], argsList[2])

		if iTech == iAstronomy:
			if iPlayer in [iSpain, iFrance, iEngland, iGermany, iVikings, iNetherlands, iPortugal]:
				data.players[iPlayer].iAstronomyTurn = gc.getGame().getGameTurn()
				
		elif iTech == iCompass:
			if iPlayer == iVikings:
				gc.getMap().plot(49, 62).setTerrainType(iCoast, True, True)
				
		elif iTech == iMedicine:
			self.pla.onTechAcquired(argsList[0], argsList[2])

		elif iTech == iRailroad:
			self.rnf.onRailroadDiscovered(argsList[2])
			
		if iTech in [iAstronomy, iGunpowder]:
			teamPlayer = gc.getTeam(iPlayer)
			if teamPlayer.isHasTech(iAstronomy) and teamPlayer.isHasTech(iGunpowder):
				self.rnf.earlyTradingCompany(iPlayer)
			
		if iTech in [iEconomics, iRifling]:
			teamPlayer = gc.getTeam(iPlayer)
			if teamPlayer.isHasTech(iEconomics) and teamPlayer.isHasTech(iRifling):
				self.rnf.lateTradingCompany(iPlayer)
	
		if utils.getHumanID() != iPlayer:
			if iPlayer == iJapan and iEra == iIndustrial:
				utils.moveCapital(iPlayer, (116, 47)) # Toukyou
			elif iPlayer == iItaly and iEra == iIndustrial:
				utils.moveCapital(iPlayer, (60, 44)) # Roma
			elif iPlayer == iVikings and iEra == iRenaissance:
				utils.moveCapital(iPlayer, (63, 59)) # Stockholm
			elif iPlayer == iHolyRome and iEra == iRenaissance:
				utils.moveCapital(iPlayer, (62, 49)) # Wien
				
		# Spain's core extends when reaching the Renaissance and there are no Moors in Iberia
		# at the same time, the Moorish core relocates to Africa
		if iPlayer == iSpain and iEra == iRenaissance and not utils.isReborn(iSpain):
			bNoMoors = True
			if gc.getPlayer(iMoors).isAlive():
				for city in utils.getCityList(iMoors):
					if city.plot().getRegionID() == rIberia:
						bNoMoors = False
			if bNoMoors:
				utils.setReborn(iSpain, True)
				utils.setReborn(iMoors, True)
				
		# Italy's core extends when reaching the Industrial era
		if iPlayer == iItaly and iEra == iIndustrial:
			utils.setReborn(iItaly, True)
			
		# Arabia's core moves to Iraq when Philosophy is discovered
		if iPlayer == iArabia and iTech == iPhilosophy:
			utils.setReborn(iArabia, True)
			
		# Japan's core extends when reaching the Industrial era
		if iPlayer == iJapan and iEra == iIndustrial:
			utils.setReborn(iJapan, True)
			
		# Germany's core shrinks when reaching the Modern era
		if iPlayer == iGermany and iEra == iModern:
			utils.setReborn(iGermany, True)
Ejemplo n.º 17
0
    def checkTurn(self, iGameTurn):

        #handicap level modifier
        iHandicap = gc.getHandicapInfo(
            gc.getGame().getHandicapType()).getBarbarianSpawnModifier()

        # Leoreth: buff certain cities if independent / barbarian (imported from SoI)
        if iGameTurn % 20 == 10:
            for tMinorState in tMinorStates:
                iStartYear, iEndYear, tPlot, lUnitList = tMinorState
                if utils.isYearIn(iStartYear, iEndYear):
                    x, y = tPlot
                    plot = gc.getMap().plot(x, y)
                    iOwner = plot.getOwner()
                    if plot.isCity(
                    ) and plot.getNumUnits() < 4 and iOwner >= iNumPlayers:
                        iUnit = utils.getRandomEntry(lUnitList)
                        utils.makeUnit(iUnit, iOwner, tPlot, 1)

        if utils.isYearIn(-100, 1600):
            # Brown Bear in Chukchi
            self.checkLimitedSpawn(iBarbarian, iPolarBear, 1, 5, (140, 65),
                                   (148, 76), self.spawnBears, iGameTurn, 10,
                                   1)
            # Brown Bear and American Black Bear in Alaska and Western Canada
            self.checkLimitedSpawn(iBarbarian, iPolarBear, 1, 5, (0, 67),
                                   (24, 77), self.spawnBears, iGameTurn, 5, 3)
            # Polar Bear in Greenland and Eastern Canada
            self.checkLimitedSpawn(iBarbarian, iPolarBear, 1, 5, (25, 63),
                                   (44, 77), self.spawnBears, iGameTurn, 5, 5)

        if utils.isYearIn(-3000, -850):
            if iHandicap >= 0:
                self.checkSpawn(iBarbarian, iWarrior, 1, (92, 53), (116, 62),
                                self.spawnMinors, iGameTurn, 5, 0)

            # Wolves and Brown Bears in Russia and Siberia
            self.checkSpawn(iBarbarian, iWolf, 1, (89, 66), (125, 75),
                            self.spawnNatives, iGameTurn, 5, 2)
            self.checkSpawn(iBarbarian, iBear, 1, (89, 66), (125, 75),
                            self.spawnNatives, iGameTurn, 5, 4)

            # Panthers, Hyenas, and Lions in South Africa
            self.checkSpawn(iBarbarian, iLion, 1, (67, 12), (84, 34),
                            self.spawnNatives, iGameTurn, 4, 1)
            self.checkSpawn(iBarbarian, iPanther, 1, (67, 12), (84, 34),
                            self.spawnNatives, iGameTurn, 4, 3)
            self.checkLimitedSpawn(iBarbarian, iHyena, 1, 5, (67, 12),
                                   (84, 34), self.spawnNatives, iGameTurn, 5,
                                   3)

            # Panthers and Tigers in India, South China, Indochina, and Indonesia
            self.checkLimitedSpawn(iBarbarian, iPanther, 1, 5, (101, 32),
                                   (130, 49), self.spawnNatives, iGameTurn, 5,
                                   1)
            self.checkLimitedSpawn(iBarbarian, iTiger, 1, 5, (101, 32),
                                   (130, 49), self.spawnNatives, iGameTurn, 5,
                                   1)

            #Asian Black Bears in China, Japan, Manchuria, Vietnam, and Korea
            self.checkLimitedSpawn(iBarbarian, iBear, 1, 5, (120, 35),
                                   (141, 66), self.spawnNatives, iGameTurn, 5,
                                   3)

            # Jaguars in Brazil, Colombia, and Mesoamerica
            self.checkLimitedSpawn(iBarbarian, iJaguarAnimal, 1, 5, (34, 24),
                                   (49, 36), self.spawnNatives, iGameTurn, 5,
                                   1)
            self.checkLimitedSpawn(iBarbarian, iJaguarAnimal, 1, 5, (26, 29),
                                   (40, 38), self.spawnNatives, iGameTurn, 5,
                                   3)
            self.checkLimitedSpawn(iBarbarian, iJaguarAnimal, 1, 5, (19, 36),
                                   (30, 45), self.spawnNatives, iGameTurn, 5,
                                   3)

        #celts
        if utils.isYearIn(-650, -110):
            self.checkSpawn(iBarbarian, iSwordsman, 1, (57, 56), (76, 61),
                            self.spawnMinors, iGameTurn, 6, 0)
            if iHandicap >= 0:
                self.checkSpawn(iBarbarian, iAxeman, 1, (57, 56), (76, 61),
                                self.spawnMinors, iGameTurn, 8, 5,
                                ["TXT_KEY_ADJECTIVE_GAUL"])

        #norse
        if utils.isYearIn(-650, 550):
            self.checkSpawn(iBarbarian, iGalley, 1, (55, 59), (66, 68),
                            self.spawnPirates, iGameTurn, 20, 0,
                            ["TXT_KEY_ADJECTIVE_NORSE"])

        #mongolia
        if utils.isYearIn(-210, 400):
            self.checkSpawn(iBarbarian, iHorseArcher, 3 + iHandicap, (118, 55),
                            (129, 58), self.spawnNomads, iGameTurn,
                            7 - iHandicap, 0, ["TXT_KEY_ADJECTIVE_XIONGNU"])
        elif utils.isYearIn(-210, 400):
            self.checkSpawn(iBarbarian, iHorseArcher, 1 + iHandicap, (106, 54),
                            (114, 59), self.spawnNomads, iGameTurn,
                            7 - iHandicap, 0, ["TXT_KEY_ADJECTIVE_XIONGNU"])
        elif utils.isYearIn(-210, 400):
            self.checkSpawn(iBarbarian, iHorseArcher, 1 + iHandicap, (114, 60),
                            (125, 65), self.spawnNomads, iGameTurn,
                            7 - iHandicap, 0, ["TXT_KEY_ADJECTIVE_XIONGNU"])
        elif utils.isYearIn(400, 900):
            iNumUnits = 3 + iHandicap
            self.checkSpawn(
                iBarbarian, iHorseArcher, iNumUnits, (110, 58), (129, 65),
                self.spawnNomads, iGameTurn, 6 - iHandicap, 0,
                ["TXT_KEY_ADJECTIVE_GOKTURK", "TXT_KEY_ADJECTIVE_UIGHUR"])
        elif utils.isYearIn(900, 1100):
            iNumUnits = 3 + iHandicap
            self.checkSpawn(
                iBarbarian, iKeshik, iNumUnits, (110, 58), (129, 65),
                self.spawnInvaders, iGameTurn, 6, 0,
                ["TXT_KEY_ADJECTIVE_JURCHEN", "TXT_KEY_ADJECTIVE_KHITAN"])

        #tibet
        if utils.isYearIn(-350, 200):
            self.checkSpawn(iBarbarian, iLightSwordsman, 1 + iHandicap,
                            (107, 48), (116, 52), self.spawnMinors, iGameTurn,
                            10 - iHandicap, 3, ["TXT_KEY_ADJECTIVE_TIBETAN"])
        elif utils.isYearIn(200, 1100):
            self.checkSpawn(iBarbarian, iSwordsman, 1 + iHandicap, (107, 48),
                            (116, 52), self.spawnMinors, iGameTurn,
                            10 - iHandicap, 3, ["TXT_KEY_ADJECTIVE_TIBETAN"])

        # Deccan barbarians
        if utils.isYearIn(-1000, 1200):
            iUnit = iArcher
            iStrength = iHandicap
            if iGameTurn >= getTurnForYear(-500): iUnit = iAxeman
            if iGameTurn >= getTurnForYear(0): iStrength += 1
            if iGameTurn >= getTurnForYear(200): iUnit = iSwordsman

            self.checkSpawn(iBarbarian, iUnit, iStrength, (101, 31), (111, 42),
                            self.spawnInvaders, iGameTurn, 8 - iHandicap, 0,
                            ["Hindi"])

        # elephants in india pre-khmer
        if utils.isYearIn(-210, 700):
            self.checkSpawn(iBarbarian, iWarElephant, 1, (103, 35), (117, 45),
                            self.spawnInvaders, iGameTurn, 8 - iHandicap, 4)

        # elephants in africa
        if utils.isYearIn(1110, 1450):
            self.checkSpawn(iBarbarian, iWarElephant, 2, (75, 18), (83, 25),
                            self.spawnInvaders, iGameTurn, 8 - iHandicap, 4)

        # Longbowman in africa
        if utils.isYearIn(1450, 1600):
            self.checkSpawn(iBarbarian, iLongbowman, 2, (75, 18), (83, 25),
                            self.spawnInvaders, iGameTurn, 8 - iHandicap, 4)

        # OromoWarrior in africa
        if utils.isYearIn(1610, 1850):
            self.checkSpawn(iBarbarian, iOromoWarrior, 2, (75, 18), (83, 25),
                            self.spawnInvaders, iGameTurn, 8 - iHandicap, 4)

        #Indo-Scythians
        if utils.isYearIn(-200, 400):
            self.checkSpawn(iBarbarian, iHorseman, 2, (97, 47), (104, 51),
                            self.spawnNomads, iGameTurn, 8 - iHandicap, 4,
                            ["TXT_KEY_ADJECTIVE_INDO_SCYTHIAN"])

        #Kushana
        if utils.isYearIn(30, 220):
            self.checkSpawn(iBarbarian, iHorseman, 3 + iHandicap, (97, 47),
                            (104, 51), self.spawnInvaders, iGameTurn, 8, 3,
                            ["TXT_KEY_ADJECTIVE_KUSHANA"])

        #Hephtalites
        if utils.isYearIn(400, 550):
            self.checkSpawn(iBarbarian, iHorseArcher, 2 + iHandicap, (97, 47),
                            (104, 51), self.spawnInvaders, iGameTurn,
                            5 - iHandicap, 2,
                            ["TXT_KEY_ADJECTIVE_HEPHTHALITE"])

        # Holkans in classical Mesoamerica
        if utils.isYearIn(-200, 100):
            self.checkSpawn(iBarbarian, iHolkan, 1, (15, 36), (27, 44),
                            self.spawnUprising, iGameTurn, 7, 5)
        if utils.isYearIn(100, 600):
            self.checkSpawn(iBarbarian, iHolkan, 1, (15, 36), (27, 44),
                            self.spawnUprising, iGameTurn, 6, 4)
        elif utils.isYearIn(600, 1000):
            self.checkSpawn(iBarbarian, iHolkan, 1, (15, 36), (27, 44),
                            self.spawnUprising, iGameTurn, 4, 2)

    # Picta Aucacs in pre-Incan Andes
        if utils.isYearIn(800, 1100):
            self.checkSpawn(iBarbarian, iPictaAucac, 1, (29, 17), (33, 24),
                            self.spawnUprising, iGameTurn, 4, 2)

        # Jaguars in classical Mesoamerica
        if utils.isYearIn(150, 500):
            self.checkSpawn(iBarbarian, iJaguar, 1, (15, 36), (27, 44),
                            self.spawnUprising, iGameTurn, 6, 4)
        elif utils.isYearIn(500, 1150):
            self.checkSpawn(iBarbarian, iJaguar, 1, (15, 36), (27, 44),
                            self.spawnUprising, iGameTurn, 4, 2)

        #pirates in Mediterranean
        if utils.isYearIn(-210, 50):
            self.checkSpawn(iBarbarian, iWarGalley, 1, (55, 44), (84, 54),
                            self.spawnPirates, iGameTurn, 8, 0)

        #pirates in Barbary coast
        if not gc.getPlayer(iMoors).isAlive():
            if utils.isYearIn(-50, 700):
                self.checkSpawn(iBarbarian, iWarGalley, 1, (52, 41), (72, 49),
                                self.spawnPirates, iGameTurn, 18, 0)
            elif utils.isYearIn(700, 1400):
                self.checkSpawn(iBarbarian, iWarGalley, 1, (52, 41), (72, 49),
                                self.spawnPirates, iGameTurn, 8, 0)
        #pirates in Indian ocean
        if utils.isYearIn(-650, 700):
            self.checkSpawn(iBarbarian, iWarGalley, 1, (84, 24), (106, 42),
                            self.spawnPirates, iGameTurn, 18, 0)
        elif utils.isYearIn(700, 1700):
            self.checkSpawn(iBarbarian, iHeavyGalley, 1, (84, 24), (106, 42),
                            self.spawnPirates, iGameTurn, 10, 0)

        # Leoreth: Barbarians in Anatolia (Hittites), replace Hattusas spawn
        #if utils.isYearIn(-2000, -800):
        #self.checkSpawn(iBarbarian, iHuluganni, 1 + iHandicap, (81, 51), (86, 55), self.spawnInvaders, iGameTurn, 16, 0, ["TXT_KEY_ADJECTIVE_HITTITE"])
        if utils.isYearIn(-2000, -800):
            self.checkSpawn(iBarbarian, iChariot, 1 + iHandicap, (81, 51),
                            (86, 55), self.spawnInvaders, iGameTurn, 16, 0)

        #barbarians in europe
        if utils.isYearIn(-210, 470):
            self.checkSpawn(iBarbarian, iAxeman, 3 + iHandicap, (57, 55),
                            (74, 61), self.spawnInvaders, iGameTurn, 10, 0,
                            ["TXT_KEY_ADJECTIVE_GERMANIC"])
            self.checkSpawn(iBarbarian, iAxeman, 2 + iHandicap, (74, 58),
                            (81, 66), self.spawnInvaders, iGameTurn, 12, 2,
                            ["TXT_KEY_ADJECTIVE_GERMANIC"])
        # Leoreth: begins 100 AD instead of 50 AD
        if utils.isYearIn(100, 470):
            self.checkSpawn(iBarbarian, iSwordsman, 4, (66, 55), (82, 66),
                            self.spawnInvaders, iGameTurn, 8, 5,
                            ["TXT_KEY_ADJECTIVE_GERMANIC"])
        if utils.isYearIn(300, 550):
            self.checkSpawn(iBarbarian, iAxeman, 4 + iHandicap, (55, 49),
                            (63, 61), self.spawnInvaders, iGameTurn, 5, 4,
                            ["TXT_KEY_ADJECTIVE_VISIGOTHIC"])
            self.checkSpawn(iBarbarian, iSwordsman, 4 + iHandicap, (55, 49),
                            (63, 61), self.spawnInvaders, iGameTurn, 5, 2,
                            ["TXT_KEY_ADJECTIVE_VISIGOTHIC"])
            self.checkSpawn(iBarbarian, iHorseArcher, 4, (62, 58), (76, 64),
                            self.spawnInvaders, iGameTurn, 5, 0,
                            ["TXT_KEY_ADJECTIVE_HUNNIC"])
        if utils.isYearIn(300, 700):
            self.checkSpawn(iBarbarian, iHorseArcher, 3 + iHandicap, (65, 60),
                            (106, 63), self.spawnInvaders, iGameTurn, 3, 2,
                            ["TXT_KEY_ADJECTIVE_HUNNIC"])

        #Leoreth: barbarians in Balkans / Black Sea until the High Middle Ages (Bulgarians, Cumans, Pechenegs)
        if utils.isYearIn(680, 1000):
            self.checkSpawn(
                iBarbarian, iHorseArcher, 3 + iHandicap, (73, 55), (81, 60),
                self.spawnInvaders, iGameTurn, 6, 2,
                ["TXT_KEY_ADJECTIVE_AVAR", "TXT_KEY_ADJECTIVE_BULGAR"])
        if utils.isYearIn(900, 1200):
            self.checkSpawn(iBarbarian, iHorseArcher, 3 + iHandicap, (79, 58),
                            (92, 61), self.spawnInvaders, iGameTurn, 8, 5,
                            ["TXT_KEY_ADJECTIVE_CUMAN"])

        #1SDAN: Qarmatians (Abu Tahir al-Jannabi)
        if utils.isYearIn(900, 1000):
            self.checkSpawn(iBarbarian, iHorseArcher, 1 + iHandicap, (91, 39),
                            (95, 41), self.spawnInvaders, iGameTurn, 3, 2,
                            ["TXT_KEY_ADJECTIVE_QARMATIAN"])

        #barbarians in central asia
        if utils.isYearIn(-1600, -850):
            self.checkLimitedSpawn(iBarbarian, iVulture, 1, 3, (84, 42),
                                   (90, 44), self.spawnNomads, iGameTurn,
                                   8 - iHandicap, 2,
                                   ["TXT_KEY_ADJECTIVE_ASSYRIAN"])
        elif utils.isYearIn(-850, -200):
            self.checkSpawn(iBarbarian, iHorseman, 1 + iHandicap, (80, 56),
                            (90, 60), self.spawnInvaders, iGameTurn,
                            10 - 2 * iHandicap, 3,
                            ["TXT_KEY_ADJECTIVE_SCYTHIAN"])
        elif utils.isYearIn(-200, 600):
            self.checkSpawn(iBarbarian, iHorseman, 2 + iHandicap, (92, 49),
                            (98, 59), self.spawnInvaders, iGameTurn,
                            7 - iHandicap, 2, ["TXT_KEY_ADJECTIVE_PARTHIAN"])
        elif utils.isYearIn(600, 900):
            #if utils.getScenario() == i3000BC:  #late start condition
            self.checkSpawn(iBarbarian, iOghuz, 2 + iHandicap, (91, 50),
                            (103, 58), self.spawnNomads, iGameTurn,
                            8 - iHandicap, 2)
        elif utils.isYearIn(900, 1040):
            #if utils.getScenario() == i3000BC:  #late start condition
            self.checkSpawn(iBarbarian, iOghuz, 2 + iHandicap, (91, 50),
                            (106, 62), self.spawnNomads, iGameTurn,
                            6 - iHandicap, 2)

        # late Central Asian barbarians
        if utils.isYearIn(1200, 1600):
            if not utils.getAreaCitiesCiv(
                    iMongolia, utils.getPlotList((82, 58), (95, 70))):
                self.checkSpawn(
                    iBarbarian, iKeshik, 1 + iHandicap, (88, 57), (94, 61),
                    self.spawnNomads, iGameTurn, 10 - iHandicap, 5,
                    ["TXT_KEY_ADJECTIVE_TATAR", "TXT_KEY_ADJECTIVE_NOGAI"])
        if utils.isYearIn(1400, 1700):
            if utils.getAreaCities(utils.getPlotList((91, 58), (106, 62))):
                self.checkSpawn(
                    iBarbarian, iKeshik, 1 + iHandicap, (91, 58), (106, 62),
                    self.spawnNomads, iGameTurn, 10 - 2 * iHandicap, 2,
                    ["TXT_KEY_ADJECTIVE_UZBEK", "TXT_KEY_ADJECTIVE_KAZAKH"])

        #barbarians in Elam
        if utils.isYearIn(-1600, -1000):
            self.checkSpawn(iBarbarian, iChariot, 1, (92, 43), (99, 50),
                            self.spawnMinors, iGameTurn, 9 - iHandicap, 0,
                            ["TXT_KEY_ADJECTIVE_ELAMITE"])

        #barbarians in north africa
        if utils.isYearIn(-210, 50):
            self.checkSpawn(iBarbarian, iCamelRider, 1, (60, 38), (78, 42),
                            self.spawnNomads, iGameTurn, 9 - iHandicap, 3,
                            ["TXT_KEY_ADJECTIVE_BERBER"])
        elif utils.isYearIn(50, 900):
            if utils.getScenario() == i3000BC:  #late start condition
                self.checkSpawn(iBarbarian, iCamelRider, 1 + iHandicap,
                                (60, 38), (78, 42), self.spawnNomads,
                                iGameTurn, 10 - iHandicap, 5,
                                ["TXT_KEY_ADJECTIVE_BERBER"])
        elif utils.isYearIn(900, 1800):
            self.checkSpawn(iBarbarian, iCamelArcher, 1, (60, 33), (78, 42),
                            self.spawnNomads, iGameTurn, 10 - iHandicap, 4,
                            ["TXT_KEY_ADJECTIVE_BERBER"])

        #camels in arabia
        if utils.isYearIn(190, 550):
            self.checkSpawn(iBarbarian, iCamelArcher, 1, (85, 36), (96, 42),
                            self.spawnNomads, iGameTurn, 9 - iHandicap, 7,
                            ["TXT_KEY_ADJECTIVE_BEDOUIN"])
        if utils.isYearIn(-800, 1300) and self.includesActiveHuman(
            [iEgypt, iMamluks, iArabia]):
            iNumUnits = iHandicap
            if utils.getScenario() == i3000BC: iNumUnits += 1
            self.checkSpawn(iBarbarian, iMedjay, iNumUnits, (78, 33), (82, 41),
                            self.spawnUprising, iGameTurn, 12, 4,
                            ["TXT_KEY_ADJECTIVE_NUBIAN"])
        if utils.isYearIn(450, 1600):
            if utils.getScenario() == i3000BC:
                self.checkSpawn(iNative, iImpi, 2 + iHandicap, (68, 12),
                                (85, 31), self.spawnNatives, iGameTurn, 10, 4)
            else:
                self.checkSpawn(iNative, iImpi, 2 + iHandicap, (68, 12),
                                (85, 31), self.spawnNatives, iGameTurn, 15, 4)
        elif utils.isYearIn(1600, 1800):
            self.checkSpawn(iNative, iPombos, 2 + iHandicap, (68, 12),
                            (85, 31), self.spawnNatives, iGameTurn, 10, 4)

        #west africa
        if utils.isYearIn(450, 1700):
            if iGameTurn < getTurnForYear(1300):
                sAdj = ["TXT_KEY_ADJECTIVE_GHANAIAN"]
            else:
                sAdj = ["TXT_KEY_ADJECTIVE_SONGHAI"]
            self.checkSpawn(iNative, iImpi, 2, (55, 28), (70, 34),
                            self.spawnMinors, iGameTurn, 16, 10, sAdj)

        if utils.isYearIn(1200, 1700):
            self.checkSpawn(iBarbarian, iFarari, 2, (54, 31), (76, 43),
                            self.spawnMinors, iGameTurn, 16, 4, sAdj)

        #bulala in Chad
        if utils.isYearIn(1210, 1571):
            self.checkSpawn(iNative, iLongbowman, 1, (70, 33), (75, 37),
                            self.spawnNatives, iGameTurn, 5, 2,
                            ["TXT_KEY_ADJECTIVE_BULALA"])

        #American natives
        if utils.isYearIn(-100, 400):
            self.checkSpawn(iNative, iDogSoldier, 2 + iHandicap, (13, 46),
                            (24, 56), self.spawnNatives, iGameTurn, 20, 0)
        if utils.isYearIn(400, 1100):
            self.checkSpawn(iNative, iDogSoldier, 1 + iHandicap, (13, 46),
                            (24, 56), self.spawnNatives, iGameTurn, 20, 0)
            if utils.getScenario() == i3000BC:  #late start condition
                self.checkSpawn(iNative, iJaguar, 3, (12, 45), (24, 55),
                                self.spawnNatives, iGameTurn,
                                16 - 2 * iHandicap, 10)
            else:  #late start condition
                self.checkSpawn(iNative, iJaguar, 2, (12, 45), (24, 55),
                                self.spawnNatives, iGameTurn,
                                16 - 2 * iHandicap, 10)
        if utils.isYearIn(1300, 1600):
            self.checkSpawn(iNative, iDogSoldier, 2 + iHandicap, (12, 45),
                            (24, 55), self.spawnNatives, iGameTurn, 8, 0)
        if utils.isYearIn(1400, 1800):
            self.checkSpawn(iNative, iDogSoldier, 1 + iHandicap, (8, 50),
                            (34, 60), self.spawnUprising, iGameTurn, 12, 0)
            self.checkSpawn(iNative, iDogSoldier, 1 + iHandicap, (8, 50),
                            (34, 60), self.spawnUprising, iGameTurn, 12, 6)
        if utils.isYearIn(1300, 1600):
            if iGameTurn % 18 == 0:
                if not gc.getMap().plot(28, 31).isUnit():
                    utils.makeUnitAI(iChimuSuchucChiquiAucac, iNative,
                                     (28, 31), UnitAITypes.UNITAI_ATTACK,
                                     2 + iHandicap)
            elif iGameTurn % 18 == 9:
                if not gc.getMap().plot(34, 20).isUnit():
                    utils.makeUnitAI(iChimuSuchucChiquiAucac, iNative,
                                     (34, 20), UnitAITypes.UNITAI_ATTACK,
                                     2 + iHandicap)

        if self.includesActiveHuman(
            [iAmerica, iEngland, iFrance, iMississippi]):
            if utils.isYearIn(1700, 1900):
                self.checkSpawn(iNative, iMountedBrave, 1 + iHandicap,
                                (14, 52), (23, 62), self.spawnNomads,
                                iGameTurn, 12 - iHandicap, 2)

            if utils.isYearIn(1500, 1850):
                self.checkSpawn(iNative, iMohawk, 1, (24, 54), (31, 61),
                                self.spawnUprising, iGameTurn, 8, 4)

        # if iGameTurn == getTurnForYear(-500):
        # 	gc.getMap().plot(19, 41).setImprovementType(iHut)
        # 	utils.makeUnitAI(iHolkan, iNative, (19, 41), UnitAITypes.UNITAI_ATTACK, 2)

        # Oromos in the Horn of Africa
        if utils.isYearIn(1500, 1700):
            iNumUnits = 1
            if pEthiopia.isAlive():
                iNumUnits += 1
                if utils.isYearIn(1650, 1800): iNumUnits += 1
            self.checkSpawn(iBarbarian, iOromoWarrior, iNumUnits, (80, 29),
                            (85, 32), self.spawnInvaders, iGameTurn, 8, 3)

        #pirates in the Caribbean
        if utils.isYearIn(1600, 1800):
            self.checkSpawn(iNative, iPrivateer, 1, (25, 37), (38, 53),
                            self.spawnPirates, iGameTurn, 5, 0)
        #pirates in Asia
        if utils.isYearIn(1500, 1900):
            self.checkSpawn(iNative, iPrivateer, 1, (83, 24), (133, 42),
                            self.spawnPirates, iGameTurn, 8, 0)

        if iGameTurn < getTurnForYear(
                tMinorCities[len(tMinorCities) - 1][0]) + 10:
            self.foundMinorCities(iGameTurn)

        if iGameTurn == getTurnForYear(-1200):
            pJerusalem = gc.getGame().getHolyCity(iJudaism)
            if pJerusalem and pJerusalem.getOwner() >= iNumMajorPlayers:
                pJerusalem.setHasRealBuilding(iJewishShrine, True)
Ejemplo n.º 18
0
def getScreenHelp():

    import Debug
    Debug.main()

    aHelp = []
    #游戏基本信息
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_00") == 1):
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_BASIC", ()))
        iHandicap = gc.getGame().getHandicapType()
        aHelp.append(' Handicap Level (1-5): ' + str(iHandicap + 1))
        iScenario = utils.getScenario()
        txtScenario = ['BC3000', 'AD600', 'AD1700']
        iGameSpeed = gc.getGame().getGameSpeedType()
        speedtext = u"正常速度"
        if iGameSpeed == 0:
            speedtext = "马拉松速度"
        elif iGameSpeed == 1:
            speedtext = "史诗速度"

        aHelp.append(' Scenario : ' + str(txtScenario[iScenario]) +
                     "     Speed: " + str(speedtext))

    # 勒索国家金币的信息
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_SHOW_AITRADE_ON_MONEY") >
            0):
        aHelp.append(' ')
        aHelp.append('可勒索金币数量排名')
        for iCiv in range(iNumPlayers):
            if (gc.getPlayer(iCiv).isAlive()
                    and iCiv is not utils.getHumanID()):
                iPlayer = iCiv
                human = utils.getHumanID()
                cantrade = gc.getPlayer(iPlayer).canTradeNetworkWith(human)
                a = gc.AI_considerOfferThreshold(human, iPlayer)  # 3是中国
                b = gc.getPlayer(iPlayer).AI_maxGoldTrade(human)
                c = min(a, b)
                if cantrade and c > 0:
                    civname = gc.getPlayer(
                        iCiv).getCivilizationShortDescription(0)
                    aHelp.append(civname + ':' + str(c))

        pass

    # 科技交易信息
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_SHOW_AITRADE_ON_TECH") >
            0):
        aHelp.append(' ')
        aHelp.append('AI可卖科技列表:')
        for iCiv in range(iNumPlayers):
            iPlayer = iCiv
            human = utils.getHumanID()
            if (gc.getPlayer(iCiv).isAlive() and iCiv is not human):
                for iTech in range(iNumTechs):
                    cantrade = gc.getPlayer(iPlayer).canTradeNetworkWith(human)
                    buyplayer = human
                    sellplayer = iPlayer
                    AIhastech = gc.getTeam(
                        gc.getPlayer(iPlayer).getTeam()).isHasTech(iTech)
                    Humanhastech = gc.getTeam(
                        gc.getPlayer(human).getTeam()).isHasTech(iTech)
                    if (AIhastech and not Humanhastech):
                        techvalue = getTechValue(buyplayer, iTech, sellplayer)
                        if techvalue > 0:
                            civname = gc.getPlayer(
                                iCiv).getCivilizationShortDescription(0)
                            techname = utils.getTechNameCn(iTech)
                            cantradetext = ''
                            bcantradetech = canTradeTech(
                                buyplayer, iTech, sellplayer)
                            if (not cantrade or not bcantradetech):
                                cantradetext = '[目前无法交易]'
                            aHelp.append(civname + ':     ' + techname + '(' +
                                         str(techvalue) + ')' + cantradetext)

        aHelp.append(' ')
        aHelp.append('人类可卖科技列表:')
        for iCiv in range(iNumPlayers):
            iPlayer = iCiv
            human = utils.getHumanID()
            if (gc.getPlayer(iCiv).isAlive() and iCiv is not human):
                for iTech in range(iNumTechs):
                    cantrade = gc.getPlayer(iPlayer).canTradeNetworkWith(human)
                    buyplayer = iPlayer
                    sellplayer = human
                    AIhastech = gc.getTeam(
                        gc.getPlayer(iPlayer).getTeam()).isHasTech(iTech)
                    Humanhastech = gc.getTeam(
                        gc.getPlayer(human).getTeam()).isHasTech(iTech)
                    if (not AIhastech and Humanhastech):
                        techvalue = getTechValue(buyplayer, iTech, sellplayer)
                        if techvalue > 0:
                            civname = gc.getPlayer(
                                iCiv).getCivilizationShortDescription(0)
                            techname = utils.getTechNameCn(iTech)
                            cantradetext = ''
                            bcantradetech = canTradeTech(
                                buyplayer, iTech, sellplayer)

                            bTradeWorth = False
                            iAImaxMoney = gc.getPlayer(
                                buyplayer).AI_maxGoldTrade(utils.getHumanID())
                            PYTHON_TECHTRADE_VALUE_MIN_PERCENT = 80
                            iMinPercent = PYTHON_TECHTRADE_VALUE_MIN_PERCENT
                            iThreshold = techvalue * iMinPercent / 100
                            if (iAImaxMoney >= iThreshold):
                                bTradeWorth = True

                            if (not cantrade or not bcantradetech
                                    or not bTradeWorth):
                                cantradetext = '[目前无法交易]'
                                # aHelp.append(civname + ':     ' + techname + '(' + str(techvalue) + ')' + cantradetext)
                            else:
                                txt = '%s:    %s  :  %d (%d' % (
                                    civname, techname, techvalue,
                                    iAImaxMoney * 100 / techvalue) + '%)'
                                aHelp.append(txt)
                                # aHelp.append(civname + ':     ' + techname+'('+str(techvalue)+')' + cantradetext)

        pass

    #部落村庄信息:
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_11") > 0):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CITY_RANK_GOODY",
                              ()))
        goody_list = []
        for x in range(gc.getMap().getGridWidth()):
            for y in range(gc.getMap().getGridHeight()):
                plot = gc.getMap().plot(x, y)
                isgoody = plot.isGoody()
                regionid = plot.getRegionID()
                if (isgoody):
                    goody_list.append([regionid, x, y])

        goody_list.sort(key=lambda x: x[0])

        for i in range(len(goody_list)):
            regionid = goody_list[i][0]
            x = goody_list[i][1]
            y = goody_list[i][2]
            if regionid >= 0:
                regionname = utils.getRegionNameCn(regionid)
                aHelp.append('Goody [' + str(i) + '] in X:' + str(x) +
                             '  Y: ' + str(y) + ' RegionName: ' + regionname)
            else:

                aHelp.append('Goody in X:' + str(x) + '  Y: ' + str(y))

    # 稳定度信息:
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_12") > 0):
        aHelp.append(' ')
        for iCiv in range(iNumPlayers):
            if (gc.getPlayer(iCiv).isAlive()):
                #稳定度免疫信息
                Stability_Immune = 0
                War_Immune = 0
                if Stability.isImmune(iCiv):
                    Stability_Immune = 1
                if Stability.isImmune_War(iCiv):
                    War_Immune = 1
                if (Stability_Immune or War_Immune):
                    iPlayer = iCiv
                    civname = gc.getPlayer(
                        iCiv).getCivilizationShortDescription(0)
                    Stability_Immune_Turn1 = Stability.calculate_stability_immune_after_Scenario_Start(
                    ) + utils.getScenarioStartTurn() - gc.getGame(
                    ).getGameTurn()
                    Stability_Immune_Turn2 = Stability.calculate_stability_immune_after_birth(
                    ) + getTurnForYear(
                        tBirth[iPlayer]) - gc.getGame().getGameTurn()
                    Stability_Immune_Turn3 = Stability.calculate_stability_immune_after_resurrection(
                    ) + gc.getPlayer(iPlayer).getLatestRebellionTurn(
                    ) - gc.getGame().getGameTurn()
                    Stability_Immune_Turn = max(Stability_Immune_Turn1,
                                                Stability_Immune_Turn2,
                                                Stability_Immune_Turn3, 0)
                    War_Immune_Turn1 = Stability.calculate_war_immune(
                    ) + utils.getScenarioStartTurn() - gc.getGame(
                    ).getGameTurn()
                    War_Immune_Turn2 = Stability.calculate_war_immune(
                    ) + getTurnForYear(
                        tBirth[iPlayer]) - gc.getGame().getGameTurn()
                    War_Immune_Turn3 = Stability.calculate_war_immune(
                    ) + gc.getPlayer(iPlayer).getLatestRebellionTurn(
                    ) - gc.getGame().getGameTurn()
                    War_Immune_Turn = max(War_Immune_Turn1, War_Immune_Turn2,
                                          War_Immune_Turn3, 0)

                    tiptext = civname + ": Stability Immune Turn Left: " + str(
                        Stability_Immune_Turn
                    ) + "    War Immune Turn Left: " + str(War_Immune_Turn)
                    aHelp.append(tiptext)
    # 1.国际会议回合
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_01") == 1):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CONGRESS", ()) +
            str(data.iCongressTurns))

        iGameTurn = gc.getGame().getGameTurn()
        ti = 0
        for i in range(len(tBirth)):
            if (getTurnForYear(tBirth[i]) >= iGameTurn):
                ti = i
                break
        aHelp.append("Next Country    " +
                     gc.getPlayer(ti).getCivilizationShortDescription(0) +
                     "    Birth in " + str(tBirth[ti]) + " with turns left: " +
                     str(getTurnForYear(tBirth[i]) - iGameTurn))

    # 2.殖民地进度
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_02") == 1):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_COLONIST", ()))
        for iCiv in [
                iSpain, iEngland, iFrance, iPortugal, iNetherlands, iVikings,
                iGermany
        ]:
            showtext1 = str(
                gc.getPlayer(iCiv).getCivilizationShortDescription(0) +
                ':    ')
            showtext2 = str(
                data.players[iCiv].iColonistsAlreadyGiven) + ' / ' + str(
                    dMaxColonists[iCiv])
            showtext3 = ''
            if (data.players[iCiv].iColonistsAlreadyGiven <
                    dMaxColonists[iCiv]):
                iGameTurn = (data.players[iCiv].iExplorationTurn + 1 +
                             data.players[iCiv].iColonistsAlreadyGiven *
                             8) - gc.getGame().getGameTurn()
                if (iGameTurn < 0):
                    iGameTurn = 0
                showtext3 = str('                next exploration turn: ' +
                                str(iGameTurn))
            aHelp.append(showtext1 + showtext2 + showtext3)

    #3.瘟疫进度
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_03") == 1):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_PLAGUE", ()))
        for i in range(4):
            plague_turn = data.lGenericPlagueDates[i]
            iGameTurn = max(plague_turn - gc.getGame().getGameTurn(), 0)
            aHelp.append('Plague ' + str(i + 1) + ' start in: ' +
                         str(plague_turn) + '   turn,    Game turn left:  ' +
                         str(iGameTurn))

    #4.科技进度
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_04") > 0):
        aHelp.append(' ')
        techlist = []
        valuelist = []
        for iCiv in range(iNumPlayers):
            if (gc.getPlayer(iCiv).isAlive()):
                iTechValue = gc.getPlayer(iCiv).getTechHistory(
                    gc.getGame().getGameTurn() - 1)
                valuelist.append(iTechValue)
                techlist.append([iCiv, iTechValue])
            pass
        AveragePoint = 1
        if (len(valuelist) > 0 and sum(valuelist) > 0):
            AveragePoint = sum(valuelist) / len(valuelist)
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_TECHRANK", ()))

        techlist.sort(key=lambda x: -x[1])
        for i in range(len(techlist)):
            if (i < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_04")):
                iCiv = techlist[i][0]
                iTechValue = techlist[i][1]
                civname = gc.getPlayer(iCiv).getCivilizationShortDescription(0)
                if (isDecline(iCiv)):
                    civname = civname + '[F]'

                rank_percent = iTechValue * 100 / AveragePoint
                aHelp.append(' RANK (' + str(i + 1) + ') : ' + civname +
                             '             with ' + str(iTechValue) + '  (' +
                             str(rank_percent) + '%)')

    # 5.军事实力
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_05") > 0):
        aHelp.append(' ')
        techlist = []
        valuelist = []
        for iCiv in range(iNumPlayers):
            if (gc.getPlayer(iCiv).isAlive()):
                iTechValue = gc.getPlayer(iCiv).getPowerHistory(
                    gc.getGame().getGameTurn() - 1)
                valuelist.append(iTechValue)
                techlist.append([iCiv, iTechValue])
            pass
        AveragePoint = 1
        if (len(valuelist) > 0 and sum(valuelist) > 0):
            AveragePoint = sum(valuelist) / len(valuelist)
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_ARMYRANK", ()))

        techlist.sort(key=lambda x: -x[1])
        for i in range(len(techlist)):
            if (i < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_05")):
                iCiv = techlist[i][0]
                iTechValue = techlist[i][1]
                civname = gc.getPlayer(iCiv).getCivilizationShortDescription(0)
                if (isDecline(iCiv)):
                    civname = civname + '[F]'

                rank_percent = iTechValue * 100 / AveragePoint
                aHelp.append(' RANK (' + str(i + 1) + ') : ' + civname +
                             '             with ' + str(iTechValue) + '  (' +
                             str(rank_percent) + '%)')

    # 5.文化实力
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_05") > 0):
        aHelp.append(' ')
        techlist = []
        valuelist = []
        for iCiv in range(iNumPlayers):
            if (gc.getPlayer(iCiv).isAlive()):
                iTechValue = gc.getPlayer(iCiv).getCultureHistory(
                    gc.getGame().getGameTurn() - 1)
                valuelist.append(iTechValue)
                techlist.append([iCiv, iTechValue])
            pass
        AveragePoint = 1
        if (len(valuelist) > 0 and sum(valuelist) > 0):
            AveragePoint = sum(valuelist) / len(valuelist)
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CULTURERANK",
                              ()))

        techlist.sort(key=lambda x: -x[1])
        for i in range(len(techlist)):
            if (i < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_05")):
                iCiv = techlist[i][0]
                iTechValue = techlist[i][1]
                civname = gc.getPlayer(iCiv).getCivilizationShortDescription(0)
                if (isDecline(iCiv)):
                    civname = civname + '[F]'

                rank_percent = iTechValue * 100 / AveragePoint
                aHelp.append(' RANK (' + str(i + 1) + ') : ' + civname +
                             '             with ' + str(iTechValue) + '  (' +
                             str(rank_percent) + '%)')

    # 5.AI性格
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_05") > 0 and 1 == 2):
        aHelp.append(' ')
        techlist = []
        valuelist = []
        for iCiv in range(iNumPlayers):
            if (gc.getPlayer(iCiv).isAlive()):
                #iTechValue = gc.getPlayer(iCiv).getCultureHistory(gc.getGame().getGameTurn()-1)
                iStrategyNum = gc.showAIstrategy(iCiv)
                #iStrategyNum=1
                iTechValue = iStrategyNum
                valuelist.append(iTechValue)
                techlist.append([iCiv, iTechValue])
            pass

        for i in range(len(techlist)):

            iCiv = techlist[i][0]
            iTechValue = techlist[i][1]
            civname = gc.getPlayer(iCiv).getCivilizationShortDescription(0)
            if (isDecline(iCiv)):
                civname = civname + '[F]'
            txt1 = civname + ' 的策略是 ' + str(iTechValue)
            aHelp.append(txt1)

    #6.世界最大城市排名
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_06") > 0):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CITY_RANK_POP",
                              ()))
        lCities = calculateTopCities_population()
        i_num_city = 0
        for iCity in lCities:
            if (i_num_city < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_06")):
                i_num_city += 1
                civname = iCity[0].getName() + '  [' + str(
                    gc.getPlayer(iCity[0].getOwner()).
                    getCivilizationShortDescription(0)) + ']'
                iValue = iCity[1]
                rank_percent = 100
                aHelp.append(' RANK (' + str(i_num_city) + ') : ' + civname +
                             '             with ' + str(iValue) + ' ')
        pass

    #7.世界文化最高城市排名
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_07") > 0):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CITY_RANK_CUL",
                              ()))
        lCities = calculateTopCities_culture()
        i_num_city = 0
        for iCity in lCities:
            if (i_num_city < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_07")):
                i_num_city += 1
                civname = iCity[0].getName() + '  [' + str(
                    gc.getPlayer(iCity[0].getOwner()).
                    getCivilizationShortDescription(0)) + ']'
                iValue = iCity[1]
                rank_percent = 100
                aHelp.append(' RANK (' + str(i_num_city) + ') : ' + civname +
                             '             with ' + str(iValue) + ' ')
        pass

    #8.世界工业产量最高城市排名
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_08") > 0):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CITY_RANK_PRO",
                              ()))
        lCities = calculateTopCities_production()
        i_num_city = 0
        for iCity in lCities:
            if (i_num_city < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_08")):
                i_num_city += 1
                civname = iCity[0].getName() + '  [' + str(
                    gc.getPlayer(iCity[0].getOwner()).
                    getCivilizationShortDescription(0)) + ']'
                iValue = iCity[1]
                rank_percent = 100
                aHelp.append(' RANK (' + str(i_num_city) + ') : ' + civname +
                             '             with ' + str(iValue) + ' ')
        pass

    #9.世界商业产出最高城市排名
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_09") > 0):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CITY_RANK_COM",
                              ()))
        lCities = calculateTopCities_COMMERCE()
        i_num_city = 0
        for iCity in lCities:
            if (i_num_city < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_09")):
                i_num_city += 1
                civname = iCity[0].getName() + '  [' + str(
                    gc.getPlayer(iCity[0].getOwner()).
                    getCivilizationShortDescription(0)) + ']'
                iValue = iCity[1]
                rank_percent = 100
                aHelp.append(' RANK (' + str(i_num_city) + ') : ' + civname +
                             '             with ' + str(iValue) + ' ')
        pass

    #10.世界食物产出最高城市排名
    if (gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_10") > 0):
        aHelp.append(' ')
        aHelp.append(
            localText.getText("TXT_KEY_VICTORY_TIPS_IN_SCREEN_CITY_RANK_FOOD",
                              ()))
        lCities = calculateTopCities_FOOD()
        i_num_city = 0
        for iCity in lCities:
            if (i_num_city < gc.getDefineINT("PYTHON_SCREEN_VICTORY_TIPS_10")):
                i_num_city += 1
                civname = iCity[0].getName() + '  [' + str(
                    gc.getPlayer(iCity[0].getOwner()).
                    getCivilizationShortDescription(0)) + ']'
                iValue = iCity[1]
                rank_percent = 100
                aHelp.append(' RANK (' + str(i_num_city) + ') : ' + civname +
                             '             with ' + str(iValue) + ' ')
        pass
    '''
    iDebug=1
    #下面代码仅为DEBUG使用
    if (iDebug):
        for ePlayer in range(iNumActivePlayers):
            researchCost = str(gc.getTeam(gc.getPlayer(ePlayer).getTeam()).getResearchCost(100)*100/3000)
            civname=gc.getPlayer(ePlayer).getCivilizationShortDescription(0)
            utils.debug_manual(civname+','+researchCost,'ResearchCost')
    '''

    return aHelp
    pass
def getStartingTechs(iPlayer):
	return getScenarioTechs(utils.getScenario(), iPlayer)
Ejemplo n.º 20
0
    def checkTurn(self, iGameTurn):

        #handicap level modifier
        iHandicap = gc.getHandicapInfo(
            gc.getGame().getHandicapType()).getBarbarianSpawnModifier()

        # Leoreth: buff certain cities if independent / barbarian (imported from SoI)
        if iGameTurn % 20 == 10:
            for tMinorState in tMinorStates:
                iStartYear, iEndYear, tPlot, lUnitList = tMinorState
                if utils.isYearIn(iStartYear, iEndYear):
                    x, y = tPlot
                    plot = gc.getMap().plot(x, y)
                    iOwner = plot.getOwner()
                    if plot.isCity(
                    ) and plot.getNumUnits() < 4 and iOwner >= iNumPlayers:
                        iUnit = utils.getRandomEntry(lUnitList)
                        utils.makeUnit(iUnit, iOwner, tPlot, 1)

        if utils.isYearIn(-3000, -850):
            if iHandicap >= 0:
                self.checkSpawn(iBarbarian, iWarrior, 1, (76, 46), (99, 53),
                                self.spawnMinors, iGameTurn, 5, 0)

            self.checkSpawn(iBarbarian, iWolf, 1, (75, 54), (104, 64),
                            self.spawnNatives, iGameTurn, 5, 2)
            self.checkSpawn(iBarbarian, iBear, 1, (75, 54), (104, 64),
                            self.spawnNatives, iGameTurn, 5, 4)
            self.checkLimitedSpawn(iBarbarian, iLion, 1, 5, (55, 10), (72, 29),
                                   self.spawnNatives, iGameTurn, 5, 1)
            self.checkLimitedSpawn(iBarbarian, iPanther, 1, 5, (55, 10),
                                   (72, 29), self.spawnNatives, iGameTurn, 5,
                                   3)

        #celts
        if utils.isYearIn(-650, -110):
            self.checkSpawn(iCeltia, iGallicWarrior, 1, (49, 46), (65, 52),
                            self.spawnMinors, iGameTurn, 6, 0)
            if iHandicap >= 0:
                self.checkSpawn(iCeltia, iAxeman, 1, (49, 46), (65, 52),
                                self.spawnMinors, iGameTurn, 8, 5,
                                ["TXT_KEY_ADJECTIVE_GAUL"])

        #norse
        if utils.isYearIn(-650, 550):
            self.checkSpawn(iBarbarian, iGalley, 1, (50, 49), (61, 55),
                            self.spawnPirates, iGameTurn, 20, 0,
                            ["TXT_KEY_ADJECTIVE_NORSE"])

        #mongolia
        if utils.isYearIn(-210, 300):
            self.checkSpawn(iBarbarian, iHorseman, 3 + iHandicap, (94, 48),
                            (107, 54), self.spawnNomads, iGameTurn,
                            8 - iHandicap, 0, ["TXT_KEY_ADJECTIVE_XIONGNU"])
        elif utils.isYearIn(300, 900):
            iNumUnits = 2 + iHandicap
            self.checkSpawn(
                iBarbarian, iHorseArcher, iNumUnits, (91, 50), (107, 54),
                self.spawnNomads, iGameTurn, 7 - iHandicap, 0,
                ["TXT_KEY_ADJECTIVE_GOKTURK", "TXT_KEY_ADJECTIVE_UIGHUR"])
        elif utils.isYearIn(900, 1100):
            iNumUnits = 1 + iHandicap
            self.checkSpawn(
                iBarbarian, iKeshik, iNumUnits, (94, 48), (107, 54),
                self.spawnInvaders, iGameTurn, 6, 0,
                ["TXT_KEY_ADJECTIVE_JURCHEN", "TXT_KEY_ADJECTIVE_KHITAN"])

        #tibet
        if utils.isYearIn(-350, 200):
            self.checkSpawn(iBarbarian, iLightSwordsman, 1 + iHandicap,
                            (92, 41), (99, 45), self.spawnMinors, iGameTurn,
                            10 - iHandicap, 3, ["TXT_KEY_ADJECTIVE_TIBETAN"])
        elif utils.isYearIn(200, 1100):
            self.checkSpawn(iBarbarian, iSwordsman, 1 + iHandicap, (92, 41),
                            (99, 45), self.spawnMinors, iGameTurn,
                            10 - iHandicap, 3, ["TXT_KEY_ADJECTIVE_TIBETAN"])

        # Deccan barbarians
        if utils.isYearIn(-1000, 1200):
            iUnit = iArcher
            iStrength = iHandicap
            if iGameTurn >= getTurnForYear(-500): iUnit = iAxeman
            if iGameTurn >= getTurnForYear(0): iStrength += 1
            if iGameTurn >= getTurnForYear(200): iUnit = iSwordsman

            self.checkSpawn(iBarbarian, iUnit, iStrength, (87, 23), (96, 37),
                            self.spawnInvaders, iGameTurn, 8 - iHandicap, 0,
                            ["Hindi"])

        # elephants in india pre-khmer
        if utils.isYearIn(-210, 700):
            self.checkSpawn(iBarbarian, iWarElephant, 1, (86, 31), (100, 41),
                            self.spawnInvaders, iGameTurn, 8 - iHandicap, 4)

        #Indo-Scythians
        if utils.isYearIn(-200, 400):
            self.checkSpawn(iBarbarian, iHorseman, 2, (84, 40), (89, 43),
                            self.spawnNomads, iGameTurn, 8 - iHandicap, 4,
                            ["TXT_KEY_ADJECTIVE_INDO_SCYTHIAN"])

        #Kushana
        if utils.isYearIn(30, 220):
            self.checkSpawn(iBarbarian, iAsvaka, 3 + iHandicap, (84, 40),
                            (89, 43), self.spawnInvaders, iGameTurn, 8, 3,
                            ["TXT_KEY_ADJECTIVE_KUSHANA"])

        #Hephtalites
        if utils.isYearIn(400, 550):
            self.checkSpawn(iBarbarian, iHorseArcher, 2 + iHandicap, (84, 40),
                            (89, 43), self.spawnInvaders, iGameTurn,
                            5 - iHandicap, 2,
                            ["TXT_KEY_ADJECTIVE_HEPHTHALITE"])

        # Holkans in classical Mesoamerica
        if utils.isYearIn(100, 600):
            self.checkSpawn(iBarbarian, iHolkan, 1, (17, 31), (25, 37),
                            self.spawnUprising, iGameTurn, 6, 4)
        elif utils.isYearIn(600, 1000):
            self.checkSpawn(iBarbarian, iHolkan, 1, (17, 31), (25, 37),
                            self.spawnUprising, iGameTurn, 4, 2)

        #pirates in Mediterranean
        if utils.isYearIn(-210, 50):
            self.checkSpawn(iBarbarian, iWarGalley, 1, (49, 37), (72, 44),
                            self.spawnPirates, iGameTurn, 8, 0)
        #pirates in Barbary coast
        if not gc.getPlayer(iMoors).isAlive():
            if utils.isYearIn(-50, 700):
                self.checkSpawn(iBarbarian, iWarGalley, 1, (46, 30), (62, 39),
                                self.spawnPirates, iGameTurn, 18, 0)
            elif utils.isYearIn(700, 1400):
                self.checkSpawn(iBarbarian, iWarGalley, 1, (46, 30), (62, 39),
                                self.spawnPirates, iGameTurn, 8, 0)
        #pirates in Indian ocean
        if utils.isYearIn(-650, 700):
            self.checkSpawn(iBarbarian, iWarGalley, 1, (72, 20), (91, 36),
                            self.spawnPirates, iGameTurn, 18, 0)
        elif utils.isYearIn(700, 1700):
            self.checkSpawn(iBarbarian, iHeavyGalley, 1, (72, 20), (91, 36),
                            self.spawnPirates, iGameTurn, 10, 0)

        # Leoreth: Barbarians in Anatolia (Hittites), replace Hattusas spawn
        if utils.isYearIn(-2000, -800):
            self.checkSpawn(iBarbarian, iHuluganni, 1 + iHandicap, (68, 42),
                            (74, 45), self.spawnInvaders, iGameTurn, 16, 0,
                            ["TXT_KEY_ADJECTIVE_HITTITE"])

        #barbarians in europe
        if utils.isYearIn(-210, 470):
            self.checkSpawn(iBarbarian, iAxeman, 3 + iHandicap, (50, 45),
                            (63, 52), self.spawnInvaders, iGameTurn, 10, 0,
                            ["TXT_KEY_ADJECTIVE_GERMANIC"])
            self.checkSpawn(iBarbarian, iAxeman, 2 + iHandicap, (64, 49),
                            (69, 55), self.spawnInvaders, iGameTurn, 12, 2,
                            ["TXT_KEY_ADJECTIVE_GERMANIC"])
        # Leoreth: begins 100 AD instead of 50 AD
        if utils.isYearIn(100, 470):
            self.checkSpawn(iBarbarian, iSwordsman, 3, (58, 45), (70, 55),
                            self.spawnInvaders, iGameTurn, 8, 5,
                            ["TXT_KEY_ADJECTIVE_GERMANIC"])
        if utils.isYearIn(300, 550):
            self.checkSpawn(iBarbarian, iAxeman, 4 + iHandicap, (49, 41),
                            (56, 52), self.spawnInvaders, iGameTurn, 5, 4,
                            ["TXT_KEY_ADJECTIVE_VISIGOTHIC"])
            self.checkSpawn(iBarbarian, iSwordsman, 4 + iHandicap, (49, 41),
                            (57, 52), self.spawnInvaders, iGameTurn, 5, 2,
                            ["TXT_KEY_ADJECTIVE_VISIGOTHIC"])
            self.checkSpawn(iBarbarian, iHorseArcher, 3, (55, 49), (65, 53),
                            self.spawnInvaders, iGameTurn, 5, 0,
                            ["TXT_KEY_ADJECTIVE_HUNNIC"])
        if utils.isYearIn(300, 700):
            self.checkSpawn(iBarbarian, iHorseArcher, 3 + iHandicap, (58, 50),
                            (88, 53), self.spawnInvaders, iGameTurn, 3, 2,
                            ["TXT_KEY_ADJECTIVE_HUNNIC"])

        #Leoreth: barbarians in Balkans / Black Sea until the High Middle Ages (Bulgarians, Cumans, Pechenegs)
        if utils.isYearIn(680, 1000):
            self.checkSpawn(
                iBarbarian, iHorseArcher, 3 + iHandicap, (64, 45), (69, 49),
                self.spawnInvaders, iGameTurn, 6, 2,
                ["TXT_KEY_ADJECTIVE_AVAR", "TXT_KEY_ADJECTIVE_BULGAR"])
        if utils.isYearIn(900, 1200):
            self.checkSpawn(iBarbarian, iHorseArcher, 3 + iHandicap, (68, 48),
                            (78, 50), self.spawnInvaders, iGameTurn, 8, 5,
                            ["TXT_KEY_ADJECTIVE_CUMAN"])

        #barbarians in central asia
        if utils.isYearIn(-1600, -850):
            self.checkLimitedSpawn(iBarbarian, iVulture, 1, 3, (74, 34),
                                   (78, 44), self.spawnNomads, iGameTurn,
                                   8 - iHandicap, 2,
                                   ["TXT_KEY_ADJECTIVE_ASSYRIAN"])
        elif utils.isYearIn(-850, 300):
            self.checkLimitedSpawn(iBarbarian, iVulture, 1, 4, (73, 38),
                                   (78, 44), self.spawnNomads, iGameTurn,
                                   10 - iHandicap, 2,
                                   ["TXT_KEY_ADJECTIVE_ASSYRIAN"])
            self.checkSpawn(iBarbarian, iHorseman, 2 + iHandicap, (79, 41),
                            (84, 49), self.spawnInvaders, iGameTurn,
                            7 - iHandicap, 2, ["TXT_KEY_ADJECTIVE_PARTHIAN"])
        elif utils.isYearIn(300, 700):
            #if utils.getScenario() == i3000BC:  #late start condition
            self.checkSpawn(iBarbarian, iHorseArcher, 2 + iHandicap, (78, 42),
                            (88, 50), self.spawnNomads, iGameTurn,
                            8 - iHandicap, 2, ["TXT_KEY_ADJECTIVE_TURKIC"])
        elif utils.isYearIn(700, 1040):
            #if utils.getScenario() == i3000BC:  #late start condition
            self.checkSpawn(iBarbarian, iHorseArcher, 2 + iHandicap, (78, 42),
                            (90, 52), self.spawnNomads, iGameTurn,
                            6 - iHandicap, 2, ["TXT_KEY_ADJECTIVE_TURKIC"])

        # late Central Asian barbarians
        iSteppeUnit = iKeshik
        iExtra = iHandicap

        if utils.isYearIn(1200, 1600):
            if not utils.getAreaCitiesCiv(
                    iMongolia, utils.getPlotList((70, 48), (80, 59))):
                self.checkSpawn(
                    iBarbarian, iSteppeUnit, 1 + iExtra, (74, 47), (81, 47),
                    self.spawnNomads, iGameTurn, 10 - iHandicap, 5,
                    ["TXT_KEY_ADJECTIVE_TATAR", "TXT_KEY_ADJECTIVE_NOGAI"])
        if utils.isYearIn(1400, 1700):
            if utils.getAreaCities(utils.getPlotList((80, 47), (88, 53))):
                self.checkSpawn(
                    iBarbarian, iSteppeUnit, 1 + iExtra, (80, 47), (88, 53),
                    self.spawnNomads, iGameTurn, 10 - 2 * iHandicap, 2,
                    ["TXT_KEY_ADJECTIVE_UZBEK", "TXT_KEY_ADJECTIVE_KAZAKH"])

        #barbarians in Elam
        if utils.isYearIn(-1600, -1000):
            self.checkSpawn(iBarbarian, iChariot, 1, (81, 37), (87, 45),
                            self.spawnMinors, iGameTurn, 9 - iHandicap, 0,
                            ["TXT_KEY_ADJECTIVE_ELAMITE"])

        #barbarians in north africa
        if utils.isYearIn(-210, 50):
            self.checkSpawn(iBarbarian, iNumidianCavalry, 1, (54, 31),
                            (67, 35), self.spawnNomads, iGameTurn,
                            9 - iHandicap, 3, ["TXT_KEY_ADJECTIVE_BERBER"])
        elif utils.isYearIn(50, 900):
            if utils.getScenario() == i3000BC:  #late start condition
                self.checkSpawn(iBarbarian, iNumidianCavalry, 1 + iHandicap,
                                (54, 31), (67, 35), self.spawnNomads,
                                iGameTurn, 10 - iHandicap, 5,
                                ["TXT_KEY_ADJECTIVE_BERBER"])
        elif utils.isYearIn(900, 1800):
            self.checkSpawn(iBarbarian, iCamelArcher, 1, (54, 27), (67, 35),
                            self.spawnNomads, iGameTurn, 10 - iHandicap, 4,
                            ["TXT_KEY_ADJECTIVE_BERBER"])

        #camels in arabia
        if utils.isYearIn(190, 550):
            self.checkSpawn(iBarbarian, iCamelArcher, 1, (73, 30), (82, 36),
                            self.spawnNomads, iGameTurn, 9 - iHandicap, 7,
                            ["TXT_KEY_ADJECTIVE_BEDOUIN"])
        if utils.isYearIn(-800, 1300):
            iNumUnits = iHandicap
            if utils.getScenario() == i3000BC: iNumUnits += 1
            self.checkSpawn(iBarbarian, iMedjay, iNumUnits, (66, 28), (71, 34),
                            self.spawnUprising, iGameTurn, 12, 4,
                            ["TXT_KEY_ADJECTIVE_NUBIAN"])
        if utils.isYearIn(450, 1600):
            if utils.getScenario() == i3000BC:
                self.checkSpawn(iNative, iImpi, 2 + iHandicap, (60, 10),
                                (72, 27), self.spawnNatives, iGameTurn, 10, 4)
            else:
                self.checkSpawn(iNative, iImpi, 2 + iHandicap, (60, 10),
                                (72, 27), self.spawnNatives, iGameTurn, 15, 4)
        elif utils.isYearIn(1600, 1800):
            self.checkSpawn(iNative, iPombos, 2 + iHandicap, (60, 10),
                            (72, 27), self.spawnNatives, iGameTurn, 10, 4)

        #west africa
        if utils.isYearIn(450, 1700):
            if iGameTurn < getTurnForYear(1300):
                sAdj = ["TXT_KEY_ADJECTIVE_GHANAIAN"]
            else:
                sAdj = ["TXT_KEY_ADJECTIVE_SONGHAI"]
            self.checkSpawn(iNative, iImpi, 2, (48, 22), (63, 29),
                            self.spawnMinors, iGameTurn, 16, 10, sAdj)

        if utils.isYearIn(1200, 1700):
            self.checkSpawn(iBarbarian, iFarari, 1, (48, 26), (65, 37),
                            self.spawnMinors, iGameTurn, 16, 4, sAdj)

        #American natives
        if utils.isYearIn(600, 1100):
            self.checkSpawn(iNative, iDogSoldier, 1 + iHandicap, (15, 38),
                            (24, 47), self.spawnNatives, iGameTurn, 20, 0)
            if utils.getScenario() == i3000BC:  #late start condition
                self.checkSpawn(iNative, iJaguar, 3, (15, 38), (24, 47),
                                self.spawnNatives, iGameTurn,
                                16 - 2 * iHandicap, 10)
            else:  #late start condition
                self.checkSpawn(iNative, iJaguar, 2, (15, 38), (24, 47),
                                self.spawnNatives, iGameTurn,
                                16 - 2 * iHandicap, 10)
        if utils.isYearIn(1300, 1600):
            self.checkSpawn(iNative, iDogSoldier, 2 + iHandicap, (15, 38),
                            (24, 47), self.spawnNatives, iGameTurn, 8, 0)
        if utils.isYearIn(1400, 1800):
            self.checkSpawn(iNative, iDogSoldier, 1 + iHandicap, (11, 44),
                            (33, 51), self.spawnUprising, iGameTurn, 12, 0)
            self.checkSpawn(iNative, iDogSoldier, 1 + iHandicap, (11, 44),
                            (33, 51), self.spawnUprising, iGameTurn, 12, 6)
        if utils.isYearIn(1300, 1600):
            if iGameTurn % 18 == 0:
                if not gc.getMap().plot(27, 29).isUnit():
                    utils.makeUnitAI(iDogSoldier, iNative, (27, 29),
                                     UnitAITypes.UNITAI_ATTACK, 2 + iHandicap)
            elif iGameTurn % 18 == 9:
                if not gc.getMap().plot(30, 13).isUnit():
                    utils.makeUnitAI(iDogSoldier, iNative, (30, 13),
                                     UnitAITypes.UNITAI_ATTACK, 2 + iHandicap)

        if utils.isYearIn(1700, 1900):
            self.checkSpawn(iNative, iMountedBrave, 1 + iHandicap, (15, 44),
                            (24, 52), self.spawnUprising, iGameTurn,
                            12 - iHandicap, 2)

        if utils.isYearIn(1500, 1850):
            self.checkSpawn(iNative, iMohawk, 1, (24, 46), (30, 51),
                            self.spawnUprising, iGameTurn, 8, 4)

        #pirates in the Caribbean
        if utils.isYearIn(1600, 1800):
            self.checkSpawn(iNative, iPrivateer, 1, (24, 32), (35, 46),
                            self.spawnPirates, iGameTurn, 5, 0)
        #pirates in Asia
        if utils.isYearIn(1500, 1900):
            self.checkSpawn(iNative, iPrivateer, 1, (72, 24), (110, 36),
                            self.spawnPirates, iGameTurn, 8, 0)

        if iGameTurn < getTurnForYear(
                tMinorCities[len(tMinorCities) - 1][0]) + 10:
            self.foundMinorCities(iGameTurn)

        if iGameTurn == getTurnForYear(tBirth[iInca]):
            if utils.getHumanID() == iInca:
                utils.makeUnit(iAucac, iNative, (24, 26), 1)
                utils.makeUnit(iAucac, iNative, (25, 23), 1)
Ejemplo n.º 21
0
	def interfaceScreen(self):
		'Use a popup to display the opening text'
		if ( CyGame().isPitbossHost() ):
			return
		
		self.player = gc.getPlayer(gc.getGame().getActivePlayer())
		self.EXIT_TEXT = localText.getText("TXT_KEY_SCREEN_CONTINUE", ())
		
		# Create screen
		
		screen = CyGInterfaceScreen( "CvDawnOfMan", self.iScreenID )		
		screen.showScreen(PopupStates.POPUPSTATE_QUEUED, False)
		screen.showWindowBackground( False )
		screen.setDimensions(screen.centerX(self.X_SCREEN), screen.centerY(self.Y_SCREEN), self.W_SCREEN, self.H_SCREEN)
		screen.enableWorldSounds( false )
		
		# Create panels
		
		# Main
		szMainPanel = "DawnOfManMainPanel"
		screen.addPanel( szMainPanel, "", "", true, true,
			self.X_MAIN_PANEL, self.Y_MAIN_PANEL, self.W_MAIN_PANEL, self.H_MAIN_PANEL, PanelStyles.PANEL_STYLE_MAIN )
##Rhye - begin		
##		# Top
##		szHeaderPanel = "DawnOfManHeaderPanel"
##		screen.addPanel( szHeaderPanel, "", "", true, false,
##			self.X_HEADER_PANEL, self.Y_HEADER_PANEL, self.W_HEADER_PANEL, self.H_HEADER_PANEL, PanelStyles.PANEL_STYLE_DAWNTOP )
##Rhye - end			
		# Bottom
		szTextPanel = "DawnOfManTextPanel"
		screen.addPanel( szTextPanel, "", "", true, true,
			self.X_TEXT_PANEL, self.Y_TEXT_PANEL, self.W_TEXT_PANEL, self.H_TEXT_PANEL, PanelStyles.PANEL_STYLE_DAWNBOTTOM )
		
		# Add contents
##Rhye - begin		
##		# Leaderhead graphic
##		szLeaderPanel = "DawnOfManLeaderPanel"
##		screen.addPanel( szLeaderPanel, "", "", true, false,
##			self.X_LEADER_ICON - 3, self.Y_LEADER_ICON - 5, self.W_LEADER_ICON + 6, self.H_LEADER_ICON + 8, PanelStyles.PANEL_STYLE_DAWNTOP )
##		screen.addLeaderheadGFC("LeaderHead", self.player.getLeaderType(), AttitudeTypes.ATTITUDE_PLEASED,
##			self.X_LEADER_ICON + 5, self.Y_LEADER_ICON + 5, self.W_LEADER_ICON - 10, self.H_LEADER_ICON - 10, WidgetTypes.WIDGET_GENERAL, -1, -1)
		
##		# Info/"Stats" text
##		
##		szNameText = "<color=255,255,0,255>" + u"<font=3b>" + gc.getLeaderHeadInfo(self.player.getLeaderType()).getDescription().upper() + u"</font>" + "\n- " + self.player.getCivilizationDescription(0) + " -"
##		screen.addMultilineText( "NameText", szNameText, self.X_LEADER_TITLE_TEXT, self.Y_LEADER_TITLE_TEXT, self.W_LEADER_TITLE_TEXT, self.H_LEADER_TITLE_TEXT, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_CENTER_JUSTIFY)
##		
##		self.Text_BoxText = CyGameTextMgr().parseLeaderTraits(self.player.getLeaderType(), self.player.getCivilizationType(), True, False)
##		self.Text_BoxText += "\n" + CyGameTextMgr().parseCivInfos(self.player.getCivilizationType(), True)
##		
##		screen.addMultilineText( "HeaderText", self.Text_BoxText, self.X_STATS_TEXT, self.Y_STATS_TEXT, self.W_STATS_TEXT, self.H_STATS_TEXT, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)
		
##		# Fancy icon things
##		screen.addDDSGFC( "IconLeft", gc.getMissionInfo(MissionTypes.MISSION_FORTIFY).getButton(), self.X_FANCY_ICON1 , self.Y_FANCY_ICON , self.WH_FANCY_ICON, self.WH_FANCY_ICON, WidgetTypes.WIDGET_GENERAL, -1, -1 )
##		screen.addDDSGFC( "IconRight", gc.getMissionInfo(MissionTypes.MISSION_FORTIFY).getButton(), self.X_FANCY_ICON2 , self.Y_FANCY_ICON , self.WH_FANCY_ICON, self.WH_FANCY_ICON, WidgetTypes.WIDGET_GENERAL, -1, -1 )

##Rhye - end		
		# Main Body text
		szDawnTitle = u"<font=3>" + localText.getText("TXT_KEY_DAWN_OF_MAN_SCREEN_TITLE", ()).upper() + u"</font>"
		screen.setLabel("DawnTitle", "Background", szDawnTitle, CvUtil.FONT_CENTER_JUSTIFY,
				self.X_TEXT_PANEL + (self.W_TEXT_PANEL / 2), self.Y_TEXT_PANEL + 15, -2.0, FontTypes.GAME_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1 )


##Rhye - begin	
		pActivePlayer = gc.getPlayer(CyGame().getActivePlayer())
		iActivePlayer = CyGame().getActivePlayer()
			
		if getTurnForYear(tBirth[iActivePlayer]) <= utils.getScenarioStartTurn():
			iYear = utils.getScenarioStartYear()
		else:
			iYear = tBirth[iActivePlayer]
			
		year = str(abs(iYear)) + ' '
		if iYear >= 0: year += CyTranslator().getText("TXT_KEY_AD", ())
		else: year += CyTranslator().getText("TXT_KEY_BC", ())
		
		#Leoreth: imported individual texts from Sword of Islam (edead)
		pActivePlayer = gc.getPlayer(CyGame().getActivePlayer())
		
		textKey = dawnOfMan3000BC[iActivePlayer]
		dawnOfMan = lDawnOfMan[utils.getScenario()]
		if iActivePlayer in dawnOfMan:
			textKey = dawnOfMan[iActivePlayer]

		bodyString = localText.getText(textKey, (self.player.getCivilizationAdjectiveKey(), self.player.getNameKey())) # edead

		screen.addStackedBarGFC("ProgressBar", 300, 400, 435, 40, InfoBarTypes.NUM_INFOBAR_TYPES, WidgetTypes.WIDGET_GENERAL, -1, -1)
		screen.setStackedBarColors("ProgressBar", InfoBarTypes.INFOBAR_STORED, gc.getInfoTypeForString("COLOR_PLAYER_GREEN"))
		screen.setStackedBarColors("ProgressBar", InfoBarTypes.INFOBAR_RATE, gc.getInfoTypeForString("COLOR_RESEARCH_RATE"))
		screen.setStackedBarColors("ProgressBar", InfoBarTypes.INFOBAR_RATE_EXTRA, gc.getInfoTypeForString("COLOR_EMPTY"))
		screen.setStackedBarColors("ProgressBar", InfoBarTypes.INFOBAR_EMPTY, gc.getInfoTypeForString("COLOR_EMPTY"))
		self.iTurnsRemaining = -1

##Rhye - end		
		screen.addMultilineText( "BodyText", bodyString, self.X_TEXT_PANEL + self.iMarginSpace, self.Y_TEXT_PANEL + self.iMarginSpace + self.iTEXT_PANEL_MARGIN, self.W_TEXT_PANEL - (self.iMarginSpace * 2), self.H_TEXT_PANEL - (self.iMarginSpace * 2) - 75, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)
		
		screen.setButtonGFC("Exit", self.EXIT_TEXT, "", self.X_EXIT, self.Y_EXIT, self.W_EXIT, self.H_EXIT, WidgetTypes.WIDGET_CLOSE_SCREEN, -1, -1, ButtonStyles.BUTTON_STYLE_STANDARD )
		screen.hide( "Exit" ) #Rhye
		
		pActivePlayer = gc.getPlayer(CyGame().getActivePlayer())
		pLeaderHeadInfo = gc.getLeaderHeadInfo(pActivePlayer.getLeaderType())
		screen.setSoundId(CyAudioGame().Play2DSoundWithId(pLeaderHeadInfo.getDiploPeaceMusicScriptIds(0)))