def applyMap(self):
		"after reading setup the map"

		self.gameDesc.apply()

		# recreate map
		worldSizeType = CvUtil.findInfoTypeNum(self.mapDesc.worldSize)
		climateType = CvUtil.findInfoTypeNum(self.mapDesc.climate)
		seaLevelType = CvUtil.findInfoTypeNum(self.mapDesc.seaLevel)
		CyMap().rebuild(self.mapDesc.iGridW, self.mapDesc.iGridH, self.mapDesc.iTopLatitude, self.mapDesc.iBottomLatitude, self.mapDesc.bWrapX, self.mapDesc.bWrapY, WorldSizeTypes(worldSizeType), ClimateTypes(climateType), SeaLevelTypes(seaLevelType), 0, None)

		for pDesc in self.plotDesc:
			pDesc.preApply()	# set plot type / terrain type

		CyMap().recalculateAreas()

		for pDesc in self.plotDesc:
			pDesc.apply()

		for pDesc in self.signDesc:
			pDesc.apply()

		if (self.mapDesc.bRandomizeResources != "false"):
			for iPlotLoop in range(CyMap().numPlots()):
				pPlot = CyMap().plotByIndex(iPlotLoop)
				pPlot.setBonusType(BonusTypes.NO_BONUS)
			CyMapGenerator().addBonuses()
			
		if (self.mapDesc.bRandomizeGoodies != "false"):
			CyMapGenerator().eraseGoodies()	
			CyMapGenerator().addGoodies()

		return 0	# ok
示例#2
0
def getPlayerData():
    "after reading a save file, return player data as a tuple, terminated by -1"
    t = ()
    for i in range(gc.getMAX_CIV_PLAYERS()):
        leaderType = CvUtil.findInfoTypeNum(gc.getLeaderHeadInfo,
                                            gc.getNumLeaderHeadInfos(),
                                            WBDesc.playersDesc[i].leaderType)
        civType = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         WBDesc.playersDesc[i].civType)
        handicapType = CvUtil.findInfoTypeNum(gc.getHandicapInfo,
                                              gc.getNumHandicapInfos(),
                                              WBDesc.playersDesc[i].handicap)
        color = CvUtil.findInfoTypeNum(gc.getPlayerColorInfo,
                                       gc.getNumPlayerColorInfos(),
                                       WBDesc.playersDesc[i].color)
        artStyle = gc.getTypesEnum(WBDesc.playersDesc[i].artStyle)

        t = t + (civType, )
        t = t + (WBDesc.playersDesc[i].isPlayableCiv, )
        t = t + (leaderType, )
        t = t + (handicapType, )
        t = t + (WBDesc.playersDesc[i].team, )
        t = t + (color, )
        t = t + (artStyle, )
        t = t + (WBDesc.playersDesc[i].isMinorNationCiv, )
        t = t + (WBDesc.playersDesc[i].isWhiteFlag, )

    return t
示例#3
0
def init():
    BugUtil.debug("Caveman2Cosmos INIT.")

    ## MILITIA PROMOTIONS CODE ##
    #~ global gaiSettlerWorkerList, giMilInstCivic, giVolArmyCivic
    global giMilInstCivic, giVolArmyCivic, gaiSettlerWorkerCombatList
    #~ gaiSettlerWorkerList = [gc.getInfoTypeForString("UNITCLASS_GATHERER"), gc.getInfoTypeForString("UNITCLASS_TRIBE"),
    #~ gc.getInfoTypeForString("UNITCLASS_WORKER"), gc.getInfoTypeForString("UNITCLASS_SETTLER"),
    #~ gc.getInfoTypeForString("UNIT_INDIAN_FAST_WORKER"), gc.getInfoTypeForString("UNITCLASS_WORKBUFFALO"),
    #~ gc.getInfoTypeForString("UNITCLASS_WORKMULE"), gc.getInfoTypeForString("UNITCLASS_WORKELEPHANT"),
    #~ gc.getInfoTypeForString("UNIT_WORKER_INDUSTRIAL"), gc.getInfoTypeForString("UNIT_WORKER_MODERN"),
    #~ gc.getInfoTypeForString("UNIT_CLONES"), gc.getInfoTypeForString("UNIT_WORKER_ANDROID"),
    #~ gc.getInfoTypeForString("UNIT_WORKBOAT"), gc.getInfoTypeForString("UNIT_CLASSIC_WORKBOAT"),
    #~ gc.getInfoTypeForString("UNIT_MIDDLE_WORKBOAT"), gc.getInfoTypeForString("UNIT_MODERN_WORKBOAT"),
    #~ gc.getInfoTypeForString("UNIT_CONSTRUCT_SHIP")
    #~ ]

    gaiSettlerWorkerCombatList = [
        gc.getInfoTypeForString("UNITCOMBAT_SETTLER"),
        gc.getInfoTypeForString("UNITCOMBAT_WORKER"),
        gc.getInfoTypeForString("UNITCOMBAT_SEA_WORKER")
    ]

    giMilInstCivic = CvUtil.findInfoTypeNum(gc.getCivicInfo,
                                            gc.getNumCivicInfos(),
                                            'CIVIC_MILITARY_TRADITION')
    giVolArmyCivic = CvUtil.findInfoTypeNum(gc.getCivicInfo,
                                            gc.getNumCivicInfos(),
                                            'CIVIC_VOLUNTEER_ARMY')
	def apply(self):
		"after reading, this will actually apply the data"
		plot = CyMap().plot(self.iX, self.iY)
		plot.setNOfRiver(self.isNOfRiver, self.riverWEDirection)
		plot.setWOfRiver(self.isWOfRiver, self.riverNSDirection)
		plot.setStartingPlot(self.isStartingPlot)
		if (self.europeType):
			plot.setEurope(CvUtil.findInfoTypeNum(self.europeType))
		if (self.bonusType):
			bonusTypeNum = CvUtil.findInfoTypeNum(self.bonusType)
			plot.setBonusType(bonusTypeNum)
		if (self.improvementType):
			improvementTypeNum = CvUtil.findInfoTypeNum(self.improvementType)
			plot.setImprovementType(improvementTypeNum)
		if (self.featureType):
			featureTypeNum = CvUtil.findInfoTypeNum(self.featureType)
			plot.setFeatureType(featureTypeNum, self.featureVariety)
		if (self.routeType):
			routeTypeNum = CvUtil.findInfoTypeNum(self.routeType)
			plot.setRouteType(routeTypeNum)

		if (self.szLandmark != ""):
			CyEngine().addLandmark(CyMap().plot(self.iX, self.iY), "%s" %(self.szLandmark))

		if (self.szScriptData != "NONE"):
			plot.setScriptData(self.szScriptData)
示例#5
0
def getGameData():
	"after reading a save file, return game/player data as a tuple"
	t=()
	gameTurn = WBDesc.gameDesc.gameTurn
	maxTurns = WBDesc.gameDesc.maxTurns
	maxCityElimination = WBDesc.gameDesc.maxCityElimination
	numAdvancedStartPoints = WBDesc.gameDesc.numAdvancedStartPoints
	targetScore = WBDesc.gameDesc.targetScore
	#print "### %r" % (gc.getWorldInfo)
	#print "### %r" % (gc.getNumWorldInfos())
	#print "### %r" % (WBDesc.mapDesc.worldSize)
	worldSizeType = CvUtil.findInfoTypeNum(gc.getWorldInfo, gc.getNumWorldInfos(), WBDesc.mapDesc.worldSize)
	climateType = CvUtil.findInfoTypeNum(gc.getClimateInfo, gc.getNumClimateInfos(), WBDesc.mapDesc.climate)
	seaLevelType = CvUtil.findInfoTypeNum(gc.getSeaLevelInfo, gc.getNumSeaLevelInfos(), WBDesc.mapDesc.seaLevel)
	eraType = CvUtil.findInfoTypeNum(gc.getEraInfo, gc.getNumEraInfos(), WBDesc.gameDesc.eraType)
	gameSpeedType = CvUtil.findInfoTypeNum(gc.getGameSpeedInfo, gc.getNumGameSpeedInfos(), WBDesc.gameDesc.speedType)
	calendarType = CvUtil.findInfoTypeNum(gc.getCalendarInfo, gc.getNumCalendarInfos(), WBDesc.gameDesc.calendarType)

	t=t+(worldSizeType,)
	t=t+(climateType,)
	t=t+(seaLevelType,)
	t=t+(eraType,)
	t=t+(gameSpeedType,)
	t=t+(calendarType,)

	t=t+(len(WBDesc.gameDesc.options),)
	for i in range(len(WBDesc.gameDesc.options)):
		option = CvUtil.findInfoTypeNum(gc.getGameOptionInfo, gc.getNumGameOptionInfos(), WBDesc.gameDesc.options[i])
		t=t+(option,)

	t=t+(len(WBDesc.gameDesc.mpOptions),)
	for i in range(len(WBDesc.gameDesc.mpOptions)):
		mpOption = CvUtil.findInfoTypeNum(gc.getMPOptionInfo, gc.getNumMPOptionInfos(), WBDesc.gameDesc.mpOptions[i])
		t=t+(mpOption,)

	t=t+(len(WBDesc.gameDesc.forceControls),)
	for i in range(len(WBDesc.gameDesc.forceControls)):
		forceControl = CvUtil.findInfoTypeNum(gc.getForceControlInfo, gc.getNumForceControlInfos(), WBDesc.gameDesc.forceControls[i])
		t=t+(forceControl,)

	t=t+(len(WBDesc.gameDesc.victories),)
	for i in range(len(WBDesc.gameDesc.victories)):
		victory = CvUtil.findInfoTypeNum(gc.getVictoryInfo, gc.getNumVictoryInfos(), WBDesc.gameDesc.victories[i])
		t=t+(victory,)

	t=t+(gameTurn,)
	t=t+(maxTurns,)
	t=t+(maxCityElimination,)
	t=t+(numAdvancedStartPoints,)
	t=t+(targetScore,)

	return t
示例#6
0
    def doNewHuman(self, iNewPlayerID, iOldPlayerID):
        # This still not working properly. Boo.... Close though.
        CyInterface().addImmediateMessage("doNewHuman", "")
        self.bLaunchedChangeHumanPopup = False
        gc.getPlayer(iOldPlayerID).setNewPlayerAlive(True)
        iSettler = CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(),
                                          'UNIT_SETTLER')
        gc.getPlayer(iOldPlayerID).initUnit(iSettler, 0, 0,
                                            UnitAITypes.NO_UNITAI,
                                            DirectionTypes.DIRECTION_SOUTH)
        gc.getPlayer(iOldPlayerID).setFoundedFirstCity(False)
        gc.getPlayer(iOldPlayerID).setIsHuman(True)

        toKillPlayer = gc.getPlayer(iOldPlayerID)
        CyInterface().addImmediateMessage("calling changeHuman", "")
        RevUtils.changeHuman(iNewPlayerID, iOldPlayerID)

        if (toKillPlayer.getNumCities() == 0):
            # Kills off the lion in the ice field
            CvUtil.pyPrint("Killing off player %d" % (toKillPlayer.getID()))
            toKillPlayer.killUnits()
            toKillPlayer.setIsHuman(False)
            #success = game.changePlayer( toKillPlayer.getID(), toKillPlayer.getCivilizationType(), toKillPlayer.getLeaderType(), -1, False, False )
            toKillPlayer.setNewPlayerAlive(False)
            toKillPlayer.setFoundedFirstCity(True)
示例#7
0
	def onCityRazed(self, argsList):
		'City Razed'
		city, iPlayer = argsList
		iOwner = city.findHighestCulture()
		
		#Rhye - start bugfix
		#owner = PyPlayer(city.getOwner())
		owner = PyPlayer(city.getPreviousOwner())
		#Rhye - end bugfix
		
		razor = PyPlayer(iPlayer)
		CvUtil.pyPrint('Player %d Civilization %s City %s was razed by Player %d' 
			%(owner.getID(), owner.getCivilizationName(), city.getName(), razor.getID()))
		
		# Partisans!
		if city.getPopulation > 1 and iOwner != -1 and iPlayer != -1:
			owner = gc.getPlayer(iOwner)
			if not owner.isBarbarian() and owner.getNumCities() > 0:
				if gc.getTeam(owner.getTeam()).isAtWar(gc.getPlayer(iPlayer).getTeam()):
					if gc.getNumEventTriggerInfos() > 0: # prevents mods that don't have events from getting an error
						iEvent = CvUtil.findInfoTypeNum(gc.getEventTriggerInfo, gc.getNumEventTriggerInfos(),'EVENTTRIGGER_PARTISANS')
						if iEvent != -1 and gc.getGame().isEventActive(iEvent) and owner.getEventTriggerWeight(iEvent) < 0:
							triggerData = owner.initTriggeredData(iEvent, true, -1, city.getX(), city.getY(), iPlayer, city.getID(), -1, -1, -1, -1)
			
		CvUtil.pyPrint("City Razed Event: %s" %(city.getName(),))
def addRiverFeature(pPlot, riverDesc=RiverDesc(), bSetTerrain=True):
	iTerrainRiver = CvUtil.findInfoTypeNum(
		gc.getFeatureInfo,
		gc.getNumFeatureInfos(),
		'TERRAIN_RIVER')
	iFeatureRiver = CvUtil.findInfoTypeNum(
		gc.getFeatureInfo,
		gc.getNumFeatureInfos(),
		'FEATURE_RIVER')
	if bSetTerrain:
		pPlot.setTerrainType(iTerrainRiver, True, True)

	iVariety = riverDesc.getVariety()
	# Variant 0 is empty.nif,
	pPlot.setFeatureType(-1, 0)
	pPlot.setFeatureType(iFeatureRiver, iVariety)
	updateRiverFeature(pPlot, riverDesc, False)
	def preApply(self):
		"apply plot and terrain type"
		plot = CyMap().plot(self.iX, self.iY)
		if (self.plotType != PlotTypes.NO_PLOT):
			plot.setPlotType(self.plotType, False, False)
		if (self.terrainType):
			terrainTypeNum = CvUtil.findInfoTypeNum(self.terrainType)
			plot.setTerrainType(terrainTypeNum, False, False)
示例#10
0
    def checkPlayer(self):

        pPlayer = gc.getActivePlayer()
        # advc.127: Unit check added to avoid multiple popups. Note however: Normally, CvPlayer::verifyAlive automatically transfers human control to a different player when the active player is defeated. The popup here remains only as a fallback. Also added not-human check - should obviously only affect AI Auto Play. Don't know if and how that was working previously.
        if not pPlayer.isAlive(
        ) and pPlayer.getNumUnits() <= 0 and not pPlayer.isHuman():
            popup = PyPopup.PyPopup(
                7052, contextType=EventContextTypes.EVENTCONTEXT_ALL)
            popup.setHeaderString(
                localText.getText("TXT_KEY_AIAUTOPLAY_PICK_CIV", ()))
            popup.setBodyString(
                localText.getText("TXT_KEY_AIAUTOPLAY_CIV_DIED", ()))
            popup.addSeparator()

            popup.createPythonPullDown(
                localText.getText("TXT_KEY_AIAUTOPLAY_TAKE_CONTROL_CIV", ()),
                1)
            for i in range(0, gc.getMAX_CIV_PLAYERS()):
                player = PyPlayer(i)
                if (not player.isNone() and not i == pPlayer.getID()):
                    if (player.isAlive()):
                        popup.addPullDownString(
                            localText.getText("TXT_KEY_AIAUTOPLAY_OF_THE",
                                              ()) %
                            (player.getName(), player.getCivilizationName()),
                            i, 1)

            activePlayerIdx = gc.getActivePlayer().getID()
            popup.popup.setSelectedPulldownID(activePlayerIdx, 1)

            popup.addSeparator()

            popup.addButton(localText.getText("TXT_KEY_AIAUTOPLAY_NONE", ()))
            CvUtil.pyPrint('Launching pick human popup')
            popup.launch()

            #gc.getActivePlayer().setNewPlayerAlive( True )
            iSettler = CvUtil.findInfoTypeNum(gc.getUnitInfo,
                                              gc.getNumUnitInfos(),
                                              'UNIT_SETTLER')
            gc.getActivePlayer().initUnit(iSettler, 0, 0,
                                          UnitAITypes.NO_UNITAI,
                                          DirectionTypes.DIRECTION_SOUTH)
            #gc.getActivePlayer().setFoundedFirstCity( False )
            gc.getActivePlayer().setIsHuman(True)

        CvUtil.pyPrint('CDP: Setting autoplay to 0')
        # advc.127 (comment): Re-enables humans
        game.setAIAutoPlay(0)

        if (not pPlayer.isHuman()):
            CvUtil.pyPrint('Returning human player to control of %s' %
                           (pPlayer.getCivilizationDescription(0)))
            game.setActivePlayer(pPlayer.getID(), False)
            pPlayer.setIsHuman(True)
示例#11
0
def AI_unitUpdate(argsList):
    pUnit = argsList[0]
    iOwner = pUnit.getOwner()
    iInquisitor = CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(),
                                         "UNIT_INQUISITOR")

    if not gc.getPlayer(iOwner).isHuman():
        if pUnit.getUnitType() == iInquisitor:
            doInquisitorCore_AI(pUnit)
            return True
    return False
	def apply(self):
		"after reading, this will actually apply the data"
		player = getPlayer(self.owner)
		if (player):
			CvUtil.pyAssert(self.plotX>=0 and self.plotY>=0, "invalid plot coords")
			unitTypeNum = CvUtil.findInfoTypeNum(self.unitType)
			if (unitTypeNum < 0):
				unit = None
			else:
				if (self.szUnitAIType != "NO_UNITAI"):
					eUnitAI = CvUtil.findInfoTypeNum(self.szUnitAIType)
				else:
					eUnitAI = UnitAITypes.NO_UNITAI

				unit = player.initUnit(unitTypeNum, ProfessionTypes.NO_PROFESSION, self.plotX, self.plotY, UnitAITypes(eUnitAI), self.facingDirection, self.iYieldStored)
				
			if (unit):
				#profession
				if(self.profession != None):
					unit.setProfession(CvUtil.findInfoTypeNum(self.profession))

				#leader unit type
				if(self.leaderUnitType != None):
					leaderUnitTypeNum = CvUtil.findInfoTypeNum(self.leaderUnitType)
					if leaderUnitTypeNum >= 0:
						unit.setLeaderUnitType(leaderUnitTypeNum);

				#other properties
				if self.damage != 0:
					unit.setDamage(self.damage)
				if self.level != -1:
					unit.setLevel(self.level)
				if self.experience != -1:
					unit.setExperience(self.experience, -1)
				for promo in self.promotionType:
					promotionTypeNum = CvUtil.findInfoTypeNum(promo)
					unit.setHasRealPromotion(promotionTypeNum, true)
				if self.isSleep:
					unit.getGroup().setActivityType(ActivityTypes.ACTIVITY_SLEEP)
				if self.szScriptData != "NONE":
					unit.setScriptData(self.szScriptData)
示例#13
0
    def checkPlayer(self):

        pPlayer = gc.getActivePlayer()

        if (not pPlayer.isAlive()):
            popup = PyPopup.PyPopup(
                7052, contextType=EventContextTypes.EVENTCONTEXT_ALL)
            popup.setHeaderString(
                localText.getText("TXT_KEY_AIAUTOPLAY_PICK_CIV", ()))
            popup.setBodyString(
                localText.getText("TXT_KEY_AIAUTOPLAY_CIV_DIED", ()))
            popup.addSeparator()

            popup.createPythonPullDown(
                localText.getText("TXT_KEY_AIAUTOPLAY_TAKE_CONTROL_CIV", ()),
                1)
            for i in range(0, gc.getMAX_CIV_PLAYERS()):
                player = PyPlayer(i)
                if (not player.isNone() and not i == pPlayer.getID()):
                    if (player.isAlive()):
                        popup.addPullDownString(
                            localText.getText("TXT_KEY_AIAUTOPLAY_OF_THE",
                                              ()) %
                            (player.getName(), player.getCivilizationName()),
                            i, 1)

            activePlayerIdx = gc.getActivePlayer().getID()
            popup.popup.setSelectedPulldownID(activePlayerIdx, 1)

            popup.addSeparator()

            popup.addButton(localText.getText("TXT_KEY_AIAUTOPLAY_NONE", ()))
            CvUtil.pyPrint('Launching pick human popup')
            popup.launch()

            #gc.getActivePlayer().setNewPlayerAlive( True )
            iSettler = CvUtil.findInfoTypeNum(gc.getUnitInfo,
                                              gc.getNumUnitInfos(),
                                              'UNIT_SETTLER')
            gc.getActivePlayer().initUnit(iSettler, 0, 0,
                                          UnitAITypes.NO_UNITAI,
                                          DirectionTypes.DIRECTION_SOUTH)
            #gc.getActivePlayer().setFoundedFirstCity( False )
            gc.getActivePlayer().setIsHuman(True)

        CvUtil.pyPrint('CDP: Setting autoplay to 0')
        game.setAIAutoPlay(0)

        if (not pPlayer.isHuman()):
            CvUtil.pyPrint('Returning human player to control of %s' %
                           (pPlayer.getCivilizationDescription(0)))
            game.setActivePlayer(pPlayer.getID(), False)
            pPlayer.setIsHuman(True)
	def apply(self):
		"after reading, this will actually apply the data"
		player = getPlayer(self.owner)
		if (player):
			self.city = player.initCity(self.plotX, self.plotY)

		if (self.name != None):
			self.city.setName(self.name, False)

		if (self.culture):
			self.city.setCulture(self.city.getOwner(), self.culture, True)

		for bldg in (self.bldgType):
			bldgTypeNum = CvUtil.findInfoTypeNum(bldg)
			self.city.setHasRealBuilding(bldgTypeNum, true)

		for unit in (self.citizenList):
			unitTypeNum = CvUtil.findInfoTypeNum(unit)
			pUnit = player.initUnit(unitTypeNum, ProfessionTypes.NO_PROFESSION, self.plotX, self.plotY, UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION, 0)
			self.city.addPopulationUnit(pUnit, ProfessionTypes.NO_PROFESSION)

		if (self.population):
			self.city.setPopulation(self.population)

		for iPlayerLoop in range(gc.getMAX_CIV_PLAYERS()):
			iPlayerCulture = self.aiPlayerCulture[iPlayerLoop]
			if (iPlayerCulture > 0):
				self.city.setCulture(iPlayerLoop, iPlayerCulture, true)

		unitTypeNum = CvUtil.findInfoTypeNum(self.productionUnit)
		buildingTypeNum = CvUtil.findInfoTypeNum(self.productionBuilding)

		if (unitTypeNum != UnitTypes.NO_UNIT):
			self.city.pushOrder(OrderTypes.ORDER_TRAIN, unitTypeNum, -1, False, False, False, True)
		elif (buildingTypeNum != BuildingTypes.NO_BUILDING):
			self.city.pushOrder(OrderTypes.ORDER_CONSTRUCT, buildingTypeNum, -1, False, False, False, True)

		if (self.szScriptData != "NONE"):
			self.city.setScriptData(self.szScriptData)
示例#15
0
def onSetPlayerAlive(argsList):

    iPlayerID = argsList[0]
    bNewValue = argsList[1]

    pPlayer = gc.getPlayer(iPlayerID)
    pTeam = gc.getTeam(pPlayer.getTeam())

    if (bNewValue):
        # Extra check required for exiting to main menu, starting new game
        if (gc.getGame().isOption(GameOptionTypes.GAMEOPTION_START_AS_MINORS)):

            if (not pPlayer.isMinorCiv() and
                    not gc.getTeam(pPlayer.getTeam()).isOpenBordersTrading()):
                if (LOG_DEBUG):
                    CvUtil.pyPrint(
                        "SAM - forcing new civ to minor before writing")
                pTeam.setIsMinorCiv(True, False)

            if (game.isFinalInitialized() and game.getGameTurn() < 1
                    and pPlayer.isMinorCiv()):
                if (pPlayer.isAlive() and not pPlayer.isBarbarian()):
                    if (pPlayer.getNumUnits() > 0
                            and pPlayer.getNumMilitaryUnits() < 2
                            and not game.isInAdvancedStart()):
                        warriorClass = CvUtil.findInfoTypeNum(
                            gc.getUnitClassInfo, gc.getNumUnitClassInfos(),
                            RevDefs.sXMLWarrior)
                        iWarrior = gc.getCivilizationInfo(
                            pPlayer.getCivilizationType(
                            )).getCivilizationUnits(warriorClass)

                        startPlot = pPlayer.getStartingPlot()

                        if (LOG_DEBUG):
                            CvUtil.pyPrint("SAM - Civ has %d units" %
                                           (pPlayer.getNumUnits()))

                        if (not startPlot is None and not startPlot.isNone()):
                            pPlayer.initUnit(iWarrior, startPlot.getX(),
                                             startPlot.getY(),
                                             UnitAITypes.NO_UNITAI,
                                             DirectionTypes.DIRECTION_SOUTH)
                            if (LOG_DEBUG):
                                CvUtil.pyPrint(
                                    "SAM - Giving new civ extra warrior for defense"
                                )
示例#16
0
def AI_chooseProduction(argsList):
    pCity = argsList[0]

    ## Inquisitor Production AI ##

    iOwner = pCity.getOwner()
    pPlayer = gc.getPlayer(pCity.getOwner())
    iInquisitor = CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(),
                                         "UNIT_INQUISITOR")
    iStateReligion = gc.getPlayer(iOwner).getStateReligion()
    #Checks religion percents
    lReligions = []
    bestReligionPercent = 0
    iStateLevel = 0
    for iReligionLoop in range(gc.getNumReligionInfos()):
        if (gc.getGame().getReligionGameTurnFounded(iReligionLoop) > 0):
            iReligionLevel = gc.getGame().calculateReligionPercent(
                iReligionLoop)
            if iStateReligion >= 0:
                iStateLevel = gc.getGame().calculateReligionPercent(
                    iStateReligion)
            if iReligionLevel > iStateLevel:
                lReligions.append(iReligionLoop)
            if (iReligionLoop != iStateReligion):
                religionPercent = gc.getGame().calculateReligionPercent(
                    iReligionLoop)
                if (religionPercent > bestReligionPercent):
                    bestReligionPercent = religionPercent

    if iStateReligion >= 0 or bestReligionPercent >= 60:
        if pCity.canTrain(iInquisitor, 0, 0):
            lUnits = PyPlayer(pPlayer.getID()).getUnitList()
            for iUnit in range(len(lUnits)):
                # if there are any Inquisitors, don't Build one
                if pPlayer.getUnit(
                        lUnits[iUnit].getID()).getUnitType() == iInquisitor:
                    return False
            if getRandomNumber(2) == 0:
                gc.getMap().plot(pCity.getX(),
                                 pCity.getY()).getPlotCity().pushOrder(
                                     OrderTypes.ORDER_TRAIN, iInquisitor, -1,
                                     False, False, False, True)
                #BugUtil.alert("AI deciding to produce inquisitor by player %s", iOwner)
                return True

    return False
示例#17
0
	def onCityRazed(self, argsList):
		'City Razed'
		city, iPlayer = argsList
		iOwner = city.findHighestCulture()
		
		# Partisans!
		# f1rpo (bugfix by SmokeyTheBear): Missing parentheses after getPopulation
		if city.getPopulation() > 1 and iOwner != -1 and iPlayer != -1:
			owner = gc.getPlayer(iOwner)
			if not owner.isBarbarian() and owner.getNumCities() > 0:
				if gc.getTeam(owner.getTeam()).isAtWar(gc.getPlayer(iPlayer).getTeam()):
					if gc.getNumEventTriggerInfos() > 0: # prevents mods that don't have events from getting an error
						iEvent = CvUtil.findInfoTypeNum(gc.getEventTriggerInfo, gc.getNumEventTriggerInfos(),'EVENTTRIGGER_PARTISANS')
						if iEvent != -1 and gc.getGame().isEventActive(iEvent) and owner.getEventTriggerWeight(iEvent) < 0:
							triggerData = owner.initTriggeredData(iEvent, true, -1, city.getX(), city.getY(), iPlayer, city.getID(), -1, -1, -1, -1)
			
		CvUtil.pyPrint("City Razed Event: %s" %(city.getName(),))
示例#18
0
def showUnits():

    for iPlayer in range(0, int(gc.getMAX_PLAYERS())):
        pPlayer = gc.getPlayer(iPlayer)
        if (pPlayer.isAlive() and not pPlayer.isBarbarian()):
            kCivilization = gc.getCivilizationInfo(
                pPlayer.getCivilizationType())
            for iUnitClass in range(gc.getNumUnitClassInfos()):
                eLoopUnit = kCivilization.getCivilizationUnits(iUnitClass)
                if (eLoopUnit != -1):
                    x = iUnitClass % 10 + 1 + iPlayer * 12
                    y = (iUnitClass / 10) + 5
                    gc.getMap().plot(x, y).setTerrainType(
                        CvUtil.findInfoTypeNum(gc.getTerrainInfo,
                                               gc.getNumTerrainInfos(),
                                               "TERRAIN_OCEAN"), 1, 1)
                    pPlayer.initUnit(eLoopUnit, x, y,
                                     UnitAITypes.UNITAI_UNKNOWN,
                                     DirectionTypes.NO_DIRECTION)
示例#19
0
def showUnitClass(UnitClass):

    iUnitClass = gc.getInfoTypeForString(UnitClass)

    for iPlayer in range(0, int(gc.getMAX_PLAYERS())):
        if (gc.getPlayer(iPlayer).isAlive()
                and not gc.getPlayer(iPlayer).isBarbarian()):
            eUnit = gc.getCivilizationInfo(
                gc.getPlayer(iPlayer).getCivilizationType()
            ).getCivilizationUnits(iUnitClass)
            if (eUnit != -1):
                x = eUnit % 10 + 1 + iPlayer
                y = (eUnit / 10) + 5
                gc.getMap().plot(x, y).setTerrainType(
                    CvUtil.findInfoTypeNum(gc.getTerrainInfo,
                                           gc.getNumTerrainInfos(),
                                           "TERRAIN_OCEAN"), 1, 1)
                gc.getPlayer(iPlayer).initUnit(eUnit, x, y,
                                               UnitAITypes.UNITAI_UNKNOWN,
                                               DirectionTypes.NO_DIRECTION)
示例#20
0
	def onChangeWar(self, argsList):
		'War Status Changes'
		bIsWar = argsList[0]
		iTeam = argsList[1]
		iRivalTeam = argsList[2]
		if not (bIsWar):
			# TAC Baby Boom Event Start
			pPlayer = gc.getPlayer(gc.getTeam(iTeam).getLeaderID())
			pRivalPlayer = gc.getPlayer(gc.getTeam(iRivalTeam).getLeaderID())
			if gc.getNumEventTriggerInfos() > 0: # prevents mods that don't have events from getting an error
				iEvent = CvUtil.findInfoTypeNum('EVENTTRIGGER_BABY_BOOM')
				if iEvent != -1 and gc.getGame().isEventActive(iEvent):
					pPlayer.trigger(iEvent)
					pRivalPlayer.trigger(iEvent)
			# TAC Baby Boom Event Ende
		if (not self.__LOG_WARPEACE):
			return
		if (bIsWar):
			strStatus = "declared war"
		else:
			strStatus = "declared peace"
		CvUtil.pyPrint('Team %d has %s on Team %d'
			%(iTeam, strStatus, iRivalTeam))
示例#21
0
def isCathedral(info, iReligion):
	"""
	Returns True if <info> is the Cathedral for <iReligion>.
	"""
	iNum = GC.getNumSpecialBuildingInfos()
	if not isWorldWonderClass(info.getBuildingClassType()) and (info.getSpecialBuildingType() == CvUtil.findInfoTypeNum(GC.getSpecialBuildingInfo, iNum, 'SPECIALBUILDING_CATHEDRAL') or info.getSpecialBuildingType() == CvUtil.findInfoTypeNum(GC.getSpecialBuildingInfo, iNum, 'SPECIALBUILDING_PANTHEON')):
		return info.getCommerceModifier(CommerceTypes.COMMERCE_CULTURE) > 0
	return False
	def addPlanetCustomization(self, pSystem, pPlanet, szWidgetName, bShowSelection = true):
		
		screen = CyGInterfaceScreen( "CvPlanetInfoScreen", CvScreenEnums.PLANET_INFO_SCREEN )
		
		# Disabled by Doomsday Missile?
		if (pPlanet.isDisabled()):
			szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, "FEATURE_MODEL_TAG_SUN_ORANGE")
			screen.addToModelGraphicGFC(szWidgetName, szFilename)
		
		else:
			
			iType = pPlanet.getPlanetType()
			# Atmospheric effect
			if (iType == iPlanetTypeGreen or iType == iPlanetTypeOrange or iType == iPlanetTypeWhite):
				szPlanetArt = aszPlanetGlowSizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			
			# Clouds effect
			if (iType == iPlanetTypeGreen):
				szPlanetArt = aszPlanetCloudsSizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			
			# Rings effect
			if (pPlanet.isRings()):
				szPlanetArt = aszPlanetRingsSizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			
			# Moon
			if (pPlanet.isMoon()):
				szPlanetArt = aszPlanetMoonSizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			
			# Population Lights effect
			if (pPlanet.getPopulation() == 1):
				szPlanetArt = aszPlanetPopulation1Sizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			elif (pPlanet.getPopulation() == 2):
				szPlanetArt = aszPlanetPopulation2Sizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			elif (pPlanet.getPopulation() >= 3):
				szPlanetArt = aszPlanetPopulation3Sizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			
			# Mag-Lev Network
			iMagLevNetwork = CvUtil.findInfoTypeNum(gc.getBuildingInfo,gc.getNumBuildingInfos(),'BUILDING_MAG_LEV_NETWORK')
			if (pPlanet.isHasBuilding(iMagLevNetwork)):
				szPlanetArt = aszPlanetMagLevNetworkSizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
			
			# Commercial Satellites or PBS (UB for Brotherhood)
			iCommercialSatellites = CvUtil.findInfoTypeNum(gc.getBuildingInfo,gc.getNumBuildingInfos(),'BUILDING_COMMERCIAL_SATELLITES')
			iPBS = CvUtil.findInfoTypeNum(gc.getBuildingInfo,gc.getNumBuildingInfos(),'BUILDING_PBS')
			if (pPlanet.isHasBuilding(iCommercialSatellites) or pPlanet.isHasBuilding(iPBS)):
				szPlanetArt = aszPlanetCommercialSatellitesSizes[pPlanet.getPlanetSize()]
				szFilename = ArtFileMgr.getFeatureArtInfo("ART_DEF_FEATURE_SOLAR_SYSTEM").getFeatureDummyNodeName(0, szPlanetArt)
				screen.addToModelGraphicGFC(szWidgetName, szFilename)
示例#23
0
def setup():

    global RebelTypeList

    RebelTypeList = list()

    for idx in range(0, gc.getNumCivilizationInfos()):
        RebelTypeList.append(list())

    try:
        iArabia = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_ARABIA')
        iAssyria = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_ASSYRIA')
        iAztec = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_AZTEC')
        iBabylon = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_BABYLON')
        iByzantium = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                            gc.getNumCivilizationInfos(),
                                            'CIVILIZATION_BYZANTIUM')
        iCarthage = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_CARTHAGE')
        iCelt = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_CELT')
        iChina = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_CHINA')
        iEgypt = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_EGYPT')
        iEngland = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_ENGLAND')
        iEthiopia = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_ETHIOPIA')
        iFrance = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_FRANCE')
        iGermany = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_GERMANY')
        iGreece = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_GREECE')
        iHittites = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_HITTITES')
        iHolyRoman = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                            gc.getNumCivilizationInfos(),
                                            'CIVILIZATION_HOLY_ROMAN')
        iInca = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_INCA')
        iIndia = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_INDIA')
        iIroquois = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_IROQUOIS')
        iJapan = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_JAPAN')
        iKhmer = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_KHMER')
        iKorea = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_KOREA')
        iMali = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_MALI')
        iMaya = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_MAYA')
        iMongol = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_MONGOL')
        iNativeAmerica = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                                gc.getNumCivilizationInfos(),
                                                'CIVILIZATION_NATIVE_AMERICA')
        iNetherlands = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'CIVILIZATION_NETHERLANDS')
        iOttoman = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_OTTOMAN')
        iPersia = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_PERSIA')
        iPortugal = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_PORTUGAL')
        iRome = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_ROME')
        iRussia = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_RUSSIA')
        iSiam = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_SIAM')
        iSpain = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_SPAIN')
        iSumeria = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_SUMERIA')
        iUnitedStates = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                               gc.getNumCivilizationInfos(),
                                               'CIVILIZATION_UNITED_STATES')
        iViking = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_VIKING')
        iZulu = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_ZULU')
    except:
        print "Error! Civ not found. -RebelTypes.py"

# Format is:
# RebelTypeList[iHomeland] = [iRebel1, iRebel2, iRebel3]
    try:
        RebelTypeList[iArabia] = [
            iEgypt, iPersia, iOttoman, iBabylon, iSumeria, iAssyria
        ]
        RebelTypeList[iAssyria] = [
            iPersia, iBabylon, iSumeria, iHittites, iEgypt, iArabia
        ]
        RebelTypeList[iAztec] = [
            iInca, iSpain, iNativeAmerica, iMaya, iIroquois
        ]
        RebelTypeList[iBabylon] = [
            iSumeria, iPersia, iGreece, iEgypt, iArabia, iAssyria, iHittites
        ]
        RebelTypeList[iByzantium] = [
            iGreece, iRome, iOttoman, iHolyRoman, iHittites
        ]
        RebelTypeList[iCarthage] = [iRome, iGreece, iMali, iSpain]
        RebelTypeList[iCelt] = [iFrance, iEngland, iGermany, iSpain]
        RebelTypeList[iChina] = [
            iKorea, iMongol, iIndia, iJapan, iKhmer, iSiam
        ]
        RebelTypeList[iEgypt] = [
            iBabylon, iArabia, iPersia, iGreece, iEthiopia, iAssyria, iHittites
        ]
        RebelTypeList[iEngland] = [
            iUnitedStates, iIndia, iZulu, iNetherlands, iCelt
        ]
        RebelTypeList[iEthiopia] = [iEgypt, iMali, iZulu, iArabia]
        RebelTypeList[iFrance] = [iGermany, iCelt, iEngland, iMali, iHolyRoman]
        RebelTypeList[iGermany] = [
            iFrance, iRussia, iViking, iHolyRoman, iNetherlands
        ]
        RebelTypeList[iGreece] = [
            iRome, iPersia, iCarthage, iOttoman, iHittites
        ]
        RebelTypeList[iHittites] = [
            iAssyria, iEgypt, iPersia, iOttoman, iByzantium, iGreece, iBabylon
        ]
        RebelTypeList[iHolyRoman] = [iGermany, iFrance, iSpain, iByzantium]
        RebelTypeList[iInca] = [
            iAztec, iSpain, iMaya, iNativeAmerica, iIroquois
        ]
        RebelTypeList[iIndia] = [iPersia, iSiam, iChina, iEngland, iKhmer]
        RebelTypeList[iIroquois] = [
            iNativeAmerica, iAztec, iMaya, iInca, iUnitedStates
        ]
        RebelTypeList[iJapan] = [iKorea, iChina, iMongol, iKhmer, iSiam]
        RebelTypeList[iKhmer] = [iSiam, iIndia, iChina, iMongol, iJapan]
        RebelTypeList[iKorea] = [iJapan, iChina, iMongol, iKhmer]
        RebelTypeList[iMali] = [iCarthage, iEgypt, iFrance, iZulu, iEthiopia]
        RebelTypeList[iMaya] = [
            iAztec, iInca, iSpain, iNativeAmerica, iIroquois
        ]
        RebelTypeList[iMongol] = [iChina, iRussia, iPersia, iKorea, iSiam]
        RebelTypeList[iNativeAmerica] = [
            iIroquois, iAztec, iMaya, iUnitedStates, iInca
        ]
        RebelTypeList[iNetherlands] = [
            iPortugal, iGermany, iEngland, iUnitedStates
        ]
        RebelTypeList[iOttoman] = [
            iPersia, iGreece, iGermany, iArabia, iByzantium, iHittites
        ]
        RebelTypeList[iPersia] = [
            iOttoman, iIndia, iMongol, iGreece, iSumeria, iBabylon, iAssyria,
            iHittites
        ]
        RebelTypeList[iPortugal] = [iSpain, iFrance, iNetherlands]
        RebelTypeList[iRome] = [iGreece, iCarthage, iCelt, iEgypt, iByzantium]
        RebelTypeList[iRussia] = [iViking, iGermany, iMongol, iPersia]
        RebelTypeList[iSiam] = [iKhmer, iIndia, iChina, iMongol, iJapan]
        RebelTypeList[iSpain] = [iPortugal, iArabia, iAztec, iInca, iHolyRoman]
        RebelTypeList[iSumeria] = [
            iBabylon, iOttoman, iGreece, iPersia, iAssyria
        ]
        RebelTypeList[iUnitedStates] = [
            iEngland, iAztec, iNativeAmerica, iIroquois
        ]
        RebelTypeList[iViking] = [iRussia, iGermany, iEngland, iUnitedStates]
        RebelTypeList[iZulu] = [iMali, iArabia, iEgypt, iEthiopia]
    except:
        print "Error!  Rebel types not found, no short lists available"
示例#24
0
    def onProjectBuilt(self, argsList):
        'Project Completed'
        pCity, iProjectType = argsList
        game = gc.getGame()

        ## Spanish Inquisition Start ##

        iPlayer = pCity.getOwner()
        pPlayer = gc.getPlayer(iPlayer)
        pPID = pPlayer.getID()
        pTID = pPlayer.getTeam()
        iX = pCity.getX()
        iY = pCity.getY()

        if iProjectType == gc.getInfoTypeForString(
                'PROJECT_SPANISH_INQUISITION'):

            for pyCity in PyPlayer(iPlayer).getCityList():
                pCity2 = pyCity.GetCy()
                StateBelief = pPlayer.getStateReligion()
                for iTarget in range(gc.getNumReligionInfos()):

                    ## NOTE: To allow it to remove Holy Cities remove "and pCity2.isHolyCityByType(iTarget) == False)" from the following line: ##

                    if (StateBelief != iTarget
                            and pCity2.isHasReligion(iTarget)
                            and pCity2.isHolyCityByType(iTarget) == False):
                        pCity2.setHasReligion(iTarget, False, True, True)

                        ## NOTE: To prevent it from removing buildings comment out or delete the following lines: ##

                        for i in range(gc.getNumBuildingInfos()):
                            if gc.getBuildingInfo(
                                    i).getPrereqReligion() == iTarget:
                                pCity2.setNumRealBuilding(i, 0)

            CyInterface().addMessage(
                pPID, false, 15,
                CyTranslator().getText("TXT_KEY_SPANISH_INQUISITION_PYTHON",
                                       ()), '', 0, 'Art/Inquisition.dds',
                ColorTypes(44), iX, iY, True, True)

        if iProjectType == gc.getInfoTypeForString(
                'PROJECT_SPANISH_INQUISITION'):

            pPlayer = gc.getPlayer(pCity.plot().getOwner())

            for iLoopPlayer in range(gc.getMAX_CIV_PLAYERS()):
                loopPlayer = gc.getPlayer(iLoopPlayer)

                if loopPlayer.isAlive() and loopPlayer.getStateReligion(
                ) == pPlayer.getStateReligion():
                    loopPlayer.AI_changeAttitudeExtra(iPlayer, +3)
                    pPlayer.AI_changeAttitudeExtra(iLoopPlayer, +3)

                if loopPlayer.isAlive() and loopPlayer.getStateReligion(
                ) != pPlayer.getStateReligion():
                    loopPlayer.AI_changeAttitudeExtra(iPlayer, -1)
                    pPlayer.AI_changeAttitudeExtra(iLoopPlayer, -1)

            DeathEffect = CvUtil.findInfoTypeNum(gc.getEffectInfo,
                                                 gc.getNumEffectInfos(),
                                                 "EFFECT_GODS_PLAGUE")
            CyEngine().triggerEffect(
                DeathEffect,
                gc.getMap().plot(pCity.getX() + 0,
                                 pCity.getY() + 0).getPoint())

## Spanish Inquisition End ##

        if ((not gc.getGame().isNetworkMultiPlayer())
                and (pCity.getOwner() == gc.getGame().getActivePlayer())):
            popupInfo = CyPopupInfo()
            popupInfo.setButtonPopupType(
                ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
            popupInfo.setData1(iProjectType)
            popupInfo.setData2(pCity.getID())
            popupInfo.setData3(2)
            popupInfo.setText(u"showWonderMovie")
            popupInfo.addPopup(pCity.getOwner())
示例#25
0
def setup():

    #print "Setting up rebel type list"

    global RebelTypeList

    RebelTypeList = list()

    for idx in range(0, gc.getNumCivilizationInfos()):
        RebelTypeList.append(list())

    try:
        iAmurite = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_AMURITES')
        iBalseraph = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                            gc.getNumCivilizationInfos(),
                                            'CIVILIZATION_BALSERAPHS')
        iBannor = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_BANNOR')
        iClan = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                       gc.getNumCivilizationInfos(),
                                       'CIVILIZATION_CLAN_OF_EMBERS')
        iDoviello = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_DOVIELLO')
        iElohim = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_ELOHIM')
        iGrigori = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_GRIGORI')
        iHippus = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_HIPPUS')
        iIllians = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_ILLIANS')
        iInfernal = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_INFERNAL')
        iKhazad = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_KHAZAD')
        iKuriotates = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'CIVILIZATION_KURIOTATES')
        iLanun = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_LANUN')
        iLjosalfar = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                            gc.getNumCivilizationInfos(),
                                            'CIVILIZATION_LJOSALFAR')
        iLuchuirp = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'CIVILIZATION_LUCHUIRP')
        iMalakim = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_MALAKIM')
        iMercurians = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'CIVILIZATION_MERCURIANS')
        iSheaim = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                         gc.getNumCivilizationInfos(),
                                         'CIVILIZATION_SHEAIM')
        iSidar = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                        gc.getNumCivilizationInfos(),
                                        'CIVILIZATION_SIDAR')
        iSvartalfar = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'CIVILIZATION_SVARTALFAR')
        iCalabim = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'CIVILIZATION_CALABIM')

        # Format is:
        # RebelTypeList[iHomeland] = [iRebel1, iRebel2, iRebel3]
        # No limit on length of rebel list, can be zero

        RebelTypeList[iAmurite] = [iAmurite]
        RebelTypeList[iBalseraph] = [iBalseraph]
        RebelTypeList[iBannor] = [iBannor]
        RebelTypeList[iClan] = [iClan]
        RebelTypeList[iDoviello] = [iDoviello]
        RebelTypeList[iElohim] = [iElohim]
        RebelTypeList[iGrigori] = [iGrigori]
        RebelTypeList[iHippus] = [iHippus]
        RebelTypeList[iIllians] = [iIllians]
        RebelTypeList[iInfernal] = [iInfernal]
        RebelTypeList[iKhazad] = [iKhazad]
        RebelTypeList[iKuriotates] = [iKuriotates]
        RebelTypeList[iLanun] = [iLanun]
        RebelTypeList[iLjosalfar] = [iLjosalfar]
        RebelTypeList[iLuchuirp] = [iLuchuirp]
        RebelTypeList[iMalakim] = [iMalakim]
        RebelTypeList[iMercurians] = [iMercurians]
        RebelTypeList[iSheaim] = [iSheaim]
        RebelTypeList[iSidar] = [iSidar]
        RebelTypeList[iSvartalfar] = [iSvartalfar]

        #print "Completed rebel type list"

        # lfgr
        # minor rebel leaders
        global MinorLeaders

        MinorLeaders = list()

        for idx in range(0, gc.getNumCivilizationInfos()):
            MinorLeaders.append(list())

        try:
            iAnaganios = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                                gc.getNumCivilizationInfos(),
                                                'LEADER_ANAGANTIOS')
            iAverax = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'LEADER_AVERAX')
            iBraeden = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'LEADER_BRAEDEN')
            iDumannios = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                                gc.getNumCivilizationInfos(),
                                                'LEADER_DUMANNIOS')
            iGosea = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                            gc.getNumCivilizationInfos(),
                                            'LEADER_GOSEA')
            iHafgan = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'LEADER_HAFGAN')
            iKane = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'LEADER_KANE')
            iKoun = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'LEADER_KOUN')
            iMahon = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                            gc.getNumCivilizationInfos(),
                                            'LEADER_MAHON')
            iMalchavic = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                                gc.getNumCivilizationInfos(),
                                                'LEADER_MALCHAVIC')
            iOstanes = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'LEADER_OSTANES')
            iRiuros = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'LEADER_RIUROS')
            iShekinah = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                               gc.getNumCivilizationInfos(),
                                               'LEADER_SHEKINAH')
            iUldanor = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'LEADER_ULDANOR')
            iTethira = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'LEADER_TETHIRA')
            iThessalonica = CvUtil.findInfoTypeNum(
                gc.getCivilizationInfo, gc.getNumCivilizationInfos(),
                'LEADER_THESSALONICA')
            iVolanna = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'LEADER_VOLANNA')
            iMelisandre = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                                 gc.getNumCivilizationInfos(),
                                                 'LEADER_MELISANDRE')
            iFuria = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                            gc.getNumCivilizationInfos(),
                                            'LEADER_FURIA')
            iWeevil = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'LEADER_WEEVIL')
            iTya = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                          gc.getNumCivilizationInfos(),
                                          'LEADER_TYA')
            iSallos = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                             gc.getNumCivilizationInfos(),
                                             'LEADER_SALLOS')
            iVolanna = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'LEADER_VOLANNA')
            iRivanna = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                              gc.getNumCivilizationInfos(),
                                              'LEADER_RIVANNA')
            iDuin = CvUtil.findInfoTypeNum(gc.getCivilizationInfo,
                                           gc.getNumCivilizationInfos(),
                                           'LEADER_DUIN')

            MinorLeaders[iAmurite] = [iTya]
            MinorLeaders[iBannor] = [iTethira]
            MinorLeaders[iBalseraph] = [iMelisandre, iFuria, iWeevil]
            MinorLeaders[iClan] = [iHafgan]
            MinorLeaders[iCalabim] = [iMahon]
            MinorLeaders[iDoviello] = [iVolanna, iDuin]
            MinorLeaders[iElohim] = [iThessalonica]
            MinorLeaders[iGrigori] = [iKoun]
            MinorLeaders[iHippus] = [iOstanes, iUldanor]
            MinorLeaders[iIllians] = [
                iDumannios, iRiuros, iAnaganios, iBraeden
            ]
            MinorLeaders[iInfernal] = [iSallos]
            MinorLeaders[iMalakim] = [iKane]
            MinorLeaders[iSheaim] = [iAverax, iGosea, iMalchavic]
            MinorLeaders[iSidar] = [iShekinah]
            MinorLeaders[iSvartalfar] = [iVolanna, iRivanna]

        except:
            print "Error!  Minor leaders not found, no short lists available"

        # religious rebels
        global ReligiousRebels

        ReligiousRebels = list()

        for idx in range(0, gc.getNumReligionInfos()):
            ReligiousRebels.append(list())

        global BlockedReligiousRebels

        BlockedReligiousRebels = list()

        for idx in range(0, gc.getNumReligionInfos()):
            BlockedReligiousRebels.append(list())

        try:
            iFellowship = CvUtil.findInfoTypeNum(
                gc.getReligionInfo, gc.getNumReligionInfos(),
                'RELIGION_FELLOWSHIP_OF_LEAVES')
            iOrder = CvUtil.findInfoTypeNum(gc.getReligionInfo,
                                            gc.getNumReligionInfos(),
                                            'RELIGION_THE_ORDER')
            iOverlords = CvUtil.findInfoTypeNum(gc.getReligionInfo,
                                                gc.getNumReligionInfos(),
                                                'RELIGION_OCTOPUS_OVERLORDS')
            iKilmorph = CvUtil.findInfoTypeNum(gc.getReligionInfo,
                                               gc.getNumReligionInfos(),
                                               'RELIGION_RUNES_OF_KILMORPH')
            iVeil = CvUtil.findInfoTypeNum(gc.getReligionInfo,
                                           gc.getNumReligionInfos(),
                                           'RELIGION_THE_ASHEN_VEIL')
            iEmpyrean = CvUtil.findInfoTypeNum(gc.getReligionInfo,
                                               gc.getNumReligionInfos(),
                                               'RELIGION_THE_EMPYREAN')
            iEsus = CvUtil.findInfoTypeNum(gc.getReligionInfo,
                                           gc.getNumReligionInfos(),
                                           'RELIGION_COUNCIL_OF_ESUS')

            ReligiousRebels[iFellowship] = [iLjosalfar, iSvartalfar]
            ReligiousRebels[iOrder] = [iBannor, iElohim]
            ReligiousRebels[iOverlords] = [iLanun]
            ReligiousRebels[iKilmorph] = [iKhazad, iLuchuirp]
            ReligiousRebels[iVeil] = [iSheaim]
            ReligiousRebels[iEmpyrean] = [iMalakim, iElohim]
            ReligiousRebels[iEsus] = [iSidar, iSvartalfar]

            BlockedReligiousRebels[iFellowship] = [iGrigori, iIllians]
            BlockedReligiousRebels[iOrder] = [iGrigori, iIllians]
            BlockedReligiousRebels[iOverlords] = [iGrigori, iIllians]
            BlockedReligiousRebels[iKilmorph] = [iGrigori, iIllians]
            BlockedReligiousRebels[iVeil] = [iGrigori, iIllians]
            BlockedReligiousRebels[iEmpyrean] = [iGrigori, iIllians]
            BlockedReligiousRebels[iEsus] = [iGrigori, iIllians]

        except:
            print "Error!  Religions not found, no short lists available"
        # end lfgr

    except:
        print "Error!  Rebel types not found, no short lists available"
示例#26
0
def isTemple(info, iReligion):
	"""
	Returns True if <info> is the Temple for <iReligion>.
	"""
	if not isWorldWonderClass(info.getBuildingClassType()) and info.getSpecialBuildingType() == CvUtil.findInfoTypeNum(GC.getSpecialBuildingInfo,GC.getNumSpecialBuildingInfos(),'SPECIALBUILDING_TEMPLE'):
		return info.getStateReligionHappiness() > 0
	return False
示例#27
0
def getSpawnablePlots(iPlotX,
                      iPlotY,
                      pSpawnPlayer,
                      bLand=True,
                      bIncludePlot=True,
                      bIncludeCities=False,
                      bIncludeForts=False,
                      bSameArea=True,
                      iRange=2,
                      iSpawnPlotOwner=-1,
                      bCheckForEnemy=True,
                      bAtWarPlots=True,
                      bOpenBordersPlots=True):

    spawnablePlots = list()

    gameMap = GC.getMap()
    basePlot = gameMap.plot(iPlotX, iPlotY)

    iFort = CvUtil.findInfoTypeNum(GC.getImprovementInfo,
                                   GC.getNumImprovementInfos(),
                                   RevDefs.sXMLFort)

    try:
        iBaseArea = basePlot.area().getID()
    except AttributeError:
        if (bSameArea): print "WARNING: Passed an arealess plot!"
        iBaseArea = -1
        bSameArea = False
    iBasePlotOwner = basePlot.getOwner()
    iNumPlotsChecked = 0

    for [radius, pPlot] in plotGenerator(basePlot, iRange):

        if (not bIncludePlot and pPlot.getX() == iPlotX
                and pPlot.getY() == iPlotY):
            continue

        if (pPlot.isImpassable()):
            continue

        iNumPlotsChecked += 1

        if (bLand and pPlot.isWater()):
            continue

        if (not bLand and not pPlot.isWater()):
            continue

        if (not bIncludeCities and pPlot.isCity()):
            continue

        if (bSameArea and not iBaseArea == pPlot.area().getID()):
            continue

        if (bCheckForEnemy):
            if (len(
                    getEnemyUnits(pPlot.getX(), pPlot.getY(),
                                  pSpawnPlayer.getID())) > 0):
                continue

        if (not bIncludeForts and pPlot.getImprovementType() == iFort):
            continue

        # When iSpawnPlotOwner >= 0, plot owner must be either iSpawnPlotOwner, iBasePlotOwner, or no one
        if (iSpawnPlotOwner < 0 or pPlot.getOwner() == iSpawnPlotOwner
                or pPlot.getOwner() == iBasePlotOwner
                or pPlot.getOwner() == PlayerTypes.NO_PLAYER):
            spawnablePlots.append([pPlot.getX(), pPlot.getY()])
        elif (bAtWarPlots and GC.getTeam(pSpawnPlayer.getTeam()).isAtWar(
                GC.getPlayer(pPlot.getOwner()).getTeam())):
            spawnablePlots.append([pPlot.getX(), pPlot.getY()])
        elif (bOpenBordersPlots
              and GC.getTeam(pSpawnPlayer.getTeam()).isOpenBorders(
                  GC.getPlayer(pPlot.getOwner()).getTeam())):
            spawnablePlots.append([pPlot.getX(), pPlot.getY()])

    return spawnablePlots
示例#28
0
def updateRevolutionIndices( argsList ) :
	owner,playerType,pCity,bConquest,bTrade = argsList

	newOwnerID = pCity.getOwner()
	newOwner = GC.getPlayer(newOwnerID)
	newOwnerCiv = newOwner.getCivilizationType()
	oldOwnerID = pCity.getPreviousOwner()
	orgOwnerID = pCity.getOriginalOwner()

	if( newOwner.isNPC() ) :
		return

	newRevIdx = 400
	changeRevIdx = -40

	if( bConquest ) :
		# Occupied cities also rack up rev points each turn
		newRevIdx += pCity.getRevolutionIndex()/4
		newRevIdx = min( [newRevIdx, 600] )

		if( pCity.plot().calculateCulturePercent( newOwnerID ) > 90 ) :
			changeRevIdx -= 75
			newRevIdx -= 100
		elif( pCity.plot().calculateCulturePercent( newOwnerID ) > 40 ) :
			changeRevIdx -= 35
			newRevIdx -= 60
		elif( pCity.plot().calculateCulturePercent( newOwnerID ) > 20 ) :
			changeRevIdx -= 30

	elif( bTrade ) :
		newRevIdx += pCity.getRevolutionIndex()/3
		newRevIdx = min( [newRevIdx, 650] )

		if( pCity.plot().calculateCulturePercent( newOwnerID ) > 90 ) :
			newRevIdx -= 50

	else :
		# Probably cultural conversion
		newRevIdx -= 100
		if( pCity.plot().calculateCulturePercent( newOwnerID ) > 50 ) :
			changeRevIdx -= 25


	if( newOwner.isRebel() and newOwnerCiv == RevData.getCityVal(pCity, 'RevolutionCiv') ) :
		changeRevIdx -= 50
		newRevIdx -= 200
	elif( newOwnerID == pCity.getOriginalOwner() ) :
		changeRevIdx -= 25
		newRevIdx -= 100

	if( pCity.getHighestPopulation() < 6 ) :
		changeRevIdx += 20
		newRevIdx -= 50

	changeRevIdx = int(math.floor( cityAcquiredModifier*changeRevIdx + .5 ))

	print "	Revolt - Acquisition of %s by %s reduces rev indices by %d" %(pCity.getName(), newOwner.getCivilizationDescription(0), changeRevIdx)

	for listCity in PyPlayer( newOwnerID ).getCityList() :
		pListCity = listCity.GetCy()
		if not pListCity.getID() == pCity.getID():
			pListCity.changeRevolutionIndex( changeRevIdx )
			revIdxHist = RevData.getCityVal(pListCity,'RevIdxHistory')
			revIdxHist['Events'][0] += changeRevIdx
			RevData.updateCityVal( pListCity, 'RevIdxHistory', revIdxHist )

	print "	Revolt - New rev idx for %s is %d" %(pCity.getName(), newRevIdx)

	pCity.setRevolutionIndex( newRevIdx )
	pCity.setRevIndexAverage( newRevIdx )
	pCity.setRevolutionCounter( acquiredTurns )
	pCity.setReinforcementCounter( 0 )
	RevData.updateCityVal( pCity, 'RevIdxHistory', RevDefs.initRevIdxHistory() )

	if( newOwner.isRebel() ) :
		if( newOwner.getNumCities() > 1 and RevData.revObjectGetVal( newOwner, 'CapitalName' ) == CvUtil.convertToStr(pCity.getName()) ) :
			# Rebel has captured their instigator city, make this their capital
			print "	Revolt - Rebel %s have captured their instigator city, %s!  Moving capital." %(newOwner.getCivilizationDescription(0), pCity.getName())
			if newOwner.isHuman():
				# TODO: support this with a popup question
				pass
			else:
				capitalClass = CvUtil.findInfoTypeNum(GC.getBuildingClassInfo,GC.getNumBuildingClassInfos(),RevDefs.sXMLPalace)
				eCapitalBuilding = GC.getCivilizationInfo(newOwner.getCivilizationType()).getCivilizationBuildings(capitalClass)
				oldCapital = newOwner.getCapitalCity()
				oldCapital.setNumRealBuilding(eCapitalBuilding, 0)
				pCity.setNumRealBuilding(eCapitalBuilding, 1)

		# Ripple effects through other rebellious cities
		for listCity in PyPlayer( oldOwnerID ).getCityList() :
			pListCity = listCity.GetCy()
			reinfCount = pListCity.getReinforcementCounter()
			if reinfCount > 2 and RevData.getCityVal(pListCity, 'RevolutionCiv') == newOwner.getCivilizationType():
				if reinfCount < 5:
					reinfCount = 2
				else:
					reinfCount = reinfCount-2

				print "	Revolt - Accelerating reinforcement in " + pListCity.getName()
				# Setting below two will turn off reinforcement
				if reinfCount < 2: reinfCount = 2
				pListCity.setReinforcementCounter(reinfCount)
示例#29
0
def getHandoverUnitTypes(city, pPlayer, compPlayer=None):

    warriorClass = CvUtil.findInfoTypeNum(GC.getUnitClassInfo,
                                          GC.getNumUnitClassInfos(),
                                          RevDefs.sXMLWarrior)
    iWarrior = GC.getCivilizationInfo(
        pPlayer.getCivilizationType()).getCivilizationUnits(warriorClass)
    workerClass = CvUtil.findInfoTypeNum(GC.getUnitClassInfo,
                                         GC.getNumUnitClassInfos(),
                                         RevDefs.sXMLWorker)
    iWorker = GC.getCivilizationInfo(
        pPlayer.getCivilizationType()).getCivilizationUnits(workerClass)
    iBestDefender = UnitTypes.NO_UNIT
    iCounter = UnitTypes.NO_UNIT
    iAttack = UnitTypes.NO_UNIT
    if compPlayer:
        compPy = PyPlayer(compPlayer.getID())

    for unitClass in xrange(GC.getNumUnitClassInfos()):
        cityUnitType = GC.getCivilizationInfo(
            city.getCivilizationType()).getCivilizationUnits(unitClass)

        if GC.getUnitClassInfo(unitClass).getMaxGlobalInstances(
        ) > 0 or GC.getUnitClassInfo(unitClass).getMaxPlayerInstances(
        ) > 0 or GC.getUnitClassInfo(unitClass).getMaxTeamInstances() > 0:
            continue

        if pPlayer.isNPC():
            playerUnitType = cityUnitType
        else:
            playerUnitType = GC.getCivilizationInfo(
                pPlayer.getCivilizationType()).getCivilizationUnits(unitClass)

        if (playerUnitType < 0 and cityUnitType < 0):
            print "WARNING: Civ types %d and %d have no unit of class type %d" % (
                city.getCivilizationType(), pPlayer.getCivilizationType(),
                unitClass)
            continue

        if (playerUnitType < 0):
            playerUnitType = cityUnitType
        elif (cityUnitType < 0):
            cityUnitType = playerUnitType

        if (GC.getUnitInfo(cityUnitType).getDomainType()
                == DomainTypes.DOMAIN_LAND
                and city.canTrain(cityUnitType, False, False, False, False)):

            unitInfo = GC.getUnitInfo(playerUnitType)
            if (not unitInfo.getPrereqAndTech() == TechTypes.NO_TECH):
                unitTechInfo = GC.getTechInfo(unitInfo.getPrereqAndTech())

                # Defender (Archer,Longbow)
                if unitInfo.getDefaultUnitAIType(
                ) == UnitAITypes.UNITAI_CITY_DEFENSE:
                    if iBestDefender == UnitTypes.NO_UNIT or unitInfo.getCombat(
                    ) >= GC.getUnitInfo(iBestDefender).getCombat():
                        if compPlayer == None:
                            iBestDefender = playerUnitType
                        else:
                            compUnitType = GC.getCivilizationInfo(
                                compPlayer.getCivilizationType(
                                )).getCivilizationUnits(unitClass)
                            if compPy.getUnitsOfType(compUnitType):
                                iBestDefender = playerUnitType
                            elif unitTechInfo.getEra(
                            ) < compPlayer.getCurrentEra():
                                iBestDefender = playerUnitType

                # Counter (Axemen,Phalanx)
                if (unitInfo.getUnitAIType(UnitAITypes.UNITAI_COUNTER)):
                    if ((iCounter == UnitTypes.NO_UNIT)
                            or unitInfo.getCombat() >=
                            GC.getUnitInfo(iCounter).getCombat()):
                        if (compPlayer == None):
                            iCounter = playerUnitType
                        else:
                            compUnitType = GC.getCivilizationInfo(
                                compPlayer.getCivilizationType(
                                )).getCivilizationUnits(unitClass)
                            if len(compPy.getUnitsOfType(compUnitType)) > 1:
                                iCounter = playerUnitType

                # Assault units
                if (unitInfo.getUnitAIType(UnitAITypes.UNITAI_ATTACK)):
                    if ((iAttack == UnitTypes.NO_UNIT) or unitInfo.getCombat()
                            > GC.getUnitInfo(iAttack).getCombat()):
                        if (compPlayer == None):
                            iAttack = playerUnitType
                        else:
                            compUnitID = GC.getCivilizationInfo(
                                compPlayer.getCivilizationType(
                                )).getCivilizationUnits(unitClass)
                            if (len(compPy.getUnitsOfType(compUnitID)) > 1):
                                iAttack = playerUnitType

    if (iBestDefender == UnitTypes.NO_UNIT):
        if (not iCounter == UnitTypes.NO_UNIT):
            iBestDefender = iCounter
        else:
            iBestDefender = iWarrior
    if (iCounter == UnitTypes.NO_UNIT): iCounter = iBestDefender
    if (iAttack == UnitTypes.NO_UNIT): iAttack = iCounter

    return [iWorker, iBestDefender, iCounter, iAttack]
示例#30
0
def isMonastery(info, iReligion):
	"""
	Returns True if <info> is the Monastery for <iReligion>.
	"""
	if not isWorldWonderClass(info.getBuildingClassType()) and info.getSpecialBuildingType() == CvUtil.findInfoTypeNum(GC.getSpecialBuildingInfo, GC.getNumSpecialBuildingInfos(), 'SPECIALBUILDING_MONASTERY'):
		return info.getCommerceModifier(CommerceTypes.COMMERCE_RESEARCH) > 0
	return False