示例#1
0
文件: Tester.py 项目: markourm/fall
	def onCityLost(self, argsList):
		'City Lost'
		city = argsList[0]
		player = PyPlayer(city.getOwner())

		CvUtil.pyPrint('City %s was lost by Player %d Civilization %s'
			%(city.getName(), player.getID(), player.getCivilizationName()))
示例#2
0
    def pickHumanHandler( self, iPlayerID, netUserData, popupReturn ) :

        CvUtil.pyPrint('Handling pick human popup')

        if( popupReturn.getButtonClicked() == 0 ):  # if you pressed cancel
            CyInterface().addImmediateMessage("Kill your remaining units if you'd like to see end game screens","")
            return

        toKillPlayer = gc.getActivePlayer()

        newHumanIdx = popupReturn.getSelectedPullDownValue( 1 )
        newPlayer = gc.getPlayer(newHumanIdx)

        # game.setActivePlayer( newHumanIdx, False )
        # newPlayer.setIsHuman(True)

        # CvUtil.pyPrint("You now control the %s"%(newPlayer.getCivilizationDescription(0)))
        # CyInterface().addImmediateMessage("You now control the %s"%(newPlayer.getCivilizationDescription(0)),"")
        
        ChangePlayer.changeHuman( newHumanIdx, toKillPlayer.getID() )

        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)
示例#3
0
def changeHumanHandler( playerID, netUserData, popupReturn ) :
	'Handles changeHuman popup'

	if( popupReturn.getButtonClicked() == 0 ):  # if you pressed cancel
		return

	newHumanIdx = popupReturn.getSelectedPullDownValue( 1 )
	newPlayer = gc.getPlayer(newHumanIdx)
	oldHumanIdx = playerID
	oldPlayer = gc.getPlayer(oldHumanIdx)

	if( newHumanIdx == oldHumanIdx ) :
		if( LOG_DEBUG ) : CvUtil.pyPrint( "   CP : You have selected the same civ, no change")
		CyInterface().addImmediateMessage("You retain control of the %s"%(oldPlayer.getCivilizationDescription(0)),"")
		return


	if( LOG_DEBUG ) : CvUtil.pyPrint( "   CP : You have selected player %d, the %s"%(newHumanIdx, newPlayer.getCivilizationDescription(0)) )

	success = RevUtils.changeHuman( newHumanIdx, oldHumanIdx )

	if( success ) :
		if( LOG_DEBUG ) : CvUtil.pyPrint( "   CP : Number of human players is now %d"%(game.getNumHumanPlayers()) )
		if( LOG_DEBUG ) : CvUtil.pyPrint( "   CP : Active player is now %d"%(game.getActivePlayer()) )
##			for i in range(0,gc.getMAX_CIV_PLAYERS()) :
##				if( LOG_DEBUG ) : CvUtil.pyPrint( "   CP : Player %d is human %d"%(i,gc.getPlayer(i).isHuman()))
		CyInterface().addImmediateMessage("You now control the %s"%(newPlayer.getCivilizationDescription(0)),"")
	else :
		if( LOG_DEBUG ) : CvUtil.pyPrint( "   CP : Error occured, number of human players is now %d"%(game.getNumHumanPlayers()) )
		CyInterface().addImmediateMessage("An error occured in changeHuman ...","")
	def onVictory(self, argsList):
		'Victory'
		iTeam, iVictory = argsList
		if (iVictory >= 0 and iVictory < gc.getNumVictoryInfos()):
			victoryInfo = gc.getVictoryInfo(int(iVictory))
			CvUtil.pyPrint("Victory!  Team %d achieves a %s victory"
				%(iTeam, victoryInfo.getDescription()))
示例#5
0
	def resetName( self, iPlayer, bVerbose = True ) :
		
		pPlayer = gc.getPlayer(iPlayer)
		
		civInfo = gc.getCivilizationInfo(pPlayer.getCivilizationType())
		origDesc  = civInfo.getDescription()
		origShort = civInfo.getShortDescription(0)
		origAdj   = civInfo.getAdjective(0)

		if( not game.isOption(GameOptionTypes.GAMEOPTION_LEAD_ANY_CIV) ) :
			if( not self.bLeaveHumanName or not (pPlayer.isHuman() or game.getActivePlayer() == iPlayer) ) :
				if( pPlayer.getLeaderType() in LeaderCivNames.LeaderCivNames.keys() ) :
					[origDesc,origShort,origAdj] = LeaderCivNames.LeaderCivNames[pPlayer.getLeaderType()]

		newDesc  = CvUtil.convertToStr(origDesc)
		newShort = CvUtil.convertToStr(origShort)
		newAdj   = CvUtil.convertToStr(origAdj)
			
		newDesc = remove_diacriticals(newDesc)
		newShort = remove_diacriticals(newShort)
		newAdj = remove_diacriticals(newAdj)

		if( self.LOG_DEBUG ) :
			CvUtil.pyPrint("  Name - Re-setting civ name for player %d to %s"%(iPlayer,newDesc))
		
		gc.getPlayer(iPlayer).setCivName( newDesc, newShort, newAdj )
	def onUnitPromoted(self, argsList):
		'Unit Promoted'
		pUnit, iPromotion = argsList
		player = gc.getPlayer(pUnit.getOwner())
		if (not self.__LOG_UNITPROMOTED):
			return
		CvUtil.pyPrint('Unit Promotion Event: %s - %s' %(player.getCivilizationDescription(0), pUnit.getName(),))
	def onCityBuildingBuilding(self, argsList):
		'City begins building a Building'
		pCity = argsList[0]
		iBuildingType = argsList[1]
		if (not self.__LOG_CITYBUILDING):
			return
		CvUtil.pyPrint("%s has begun building a %s" %(pCity.getName(),gc.getBuildingInfo(iBuildingType).getDescription()))
	def onImprovementDestroyed(self, argsList):
		'Improvement Destroyed'
		iImprovement, iOwner, iX, iY = argsList
		if (not self.__LOG_IMPROVEMENT):
			return
		CvUtil.pyPrint('Improvement %s was Destroyed at %d, %d'
			%(gc.getImprovementInfo(iImprovement).getDescription(), iX, iY))
	def onRouteBuilt(self, argsList):
		'Route Built'
		iRoute, iX, iY = argsList
		if (not self.__LOG_IMPROVEMENT):
			return
		CvUtil.pyPrint('Route %s was built at %d, %d'
			%(gc.getRouteInfo(iRoute).getDescription(), iX, iY))
	def onCombatLogCalc(self, argsList):
		'Combat Result'
		genericArgs = argsList[0][0]
		cdAttacker = genericArgs[0]
		cdDefender = genericArgs[1]
		iCombatOdds = genericArgs[2]
		CvUtil.combatMessageBuilder(cdAttacker, cdDefender, iCombatOdds)
示例#11
0
	def onTechAcquired(self, argsList):
		'Tech Acquired'
		iTechType, iTeam, iPlayer, bAnnounce = argsList
		# Note that iPlayer may be NULL (-1) and not a refer to a player object

### MyMod
		iFreeUnit = -1
		if iTechType == gc.getInfoTypeForString('TECH_PHILOSOPHY'):
			iFreeUnit = gc.getInfoTypeForString('UNIT_TAOIST_MISSIONARY')
		if iTechType == gc.getInfoTypeForString('TECH_DIVINE_RIGHT'):
			iFreeUnit = gc.getInfoTypeForString('UNIT_ISLAMIC_MISSIONARY')
		if (iPlayer != -1 and iFreeUnit != -1):
			pPlayer = gc.getPlayer(iPlayer)
			if (pPlayer.isAlive()):
				py = PyPlayer(iPlayer)
				if pPlayer.getNumCities() > 0:
					pCity = py.getCityList()[0]
					pPlot = pCity.plot()
					newUnit = pPlayer.initUnit(iFreeUnit, pPlot.getX(), pPlot.getY(), UnitAITypes.UNITAI_MISSIONARY, DirectionTypes.DIRECTION_SOUTH)
### /MyMod

		# Show tech splash when applicable
		if (iPlayer > -1 and bAnnounce and not CyInterface().noTechSplash()):
			if (gc.getGame().isFinalInitialized() and not gc.getGame().GetWorldBuilderMode()):
				if ((not gc.getGame().isNetworkMultiPlayer()) and (iPlayer == gc.getGame().getActivePlayer())):
					popupInfo = CyPopupInfo()
					popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
					popupInfo.setData1(iTechType)
					popupInfo.setText(u"showTechSplash")
					popupInfo.addPopup(iPlayer)

		if (not self.__LOG_TECH):
			return
		CvUtil.pyPrint('%s was finished by Team %d'
			%(PyInfo.TechnologyInfo(iTechType).getDescription(), iTeam))
	def reportEvent(self, entry, context, argsList):
		'Report an Event to Events.log '
		if (gc.getGame().getActivePlayer() != -1):
			message = "DEBUG Event: %s (%s)" %(entry[0], gc.getActivePlayer().getName())
			CyInterface().addImmediateMessage(message,"")
			CvUtil.pyPrint(message)
		return 0
示例#13
0
	def addUpgradePath(self, graph, unitFrom, unitTo):

		# Check if unit numbers are valid
		if (unitFrom >= 0 and graph.has_key(unitFrom) and unitTo >= 0 and graph.has_key(unitTo)):
			graph[unitFrom].upgradesTo.add(unitTo)
			graph[unitTo].upgradesFrom.add(unitFrom)
			CvUtil.pyPrint(self.unitToString(unitFrom) + localText.getText("TXT_KEY_UNIT_UPGRADES_GRAPH_UPGRADE_TO",()) + self.unitToString(unitTo) + ".")			
	def calculateScore(self,argsList):
		ePlayer = argsList[0]
		bFinal = argsList[1]
		bVictory = argsList[2]
		
		FinalFrontier = CvEventInterface.getEventManager().FinalFrontier
		iMaxPopulation = FinalFrontier.iMaxPopulation
		
		iPopulationScore = CvUtil.getScoreComponent(gc.getPlayer(ePlayer).getPopScore(), gc.getGame().getInitPopulation(), iMaxPopulation, gc.getDefineINT("SCORE_POPULATION_FACTOR"), True, bFinal, bVictory)
		printd("Pop Score Stuff")
		printd(gc.getPlayer(ePlayer).getPopScore())
		printd(gc.getGame().getInitPopulation())
		printd(iMaxPopulation)
		printd(iPopulationScore)
		iPlayerLandScore = gc.getPlayer(ePlayer).getTotalLand()
		iLandScore = CvUtil.getScoreComponent(iPlayerLandScore , gc.getGame().getInitLand(), gc.getGame().getMaxLand(), gc.getDefineINT("SCORE_LAND_FACTOR"), True, bFinal, bVictory)
		printd("Land Score Stuff")
		printd(iPlayerLandScore)
		printd(gc.getGame().getInitLand())
		printd(gc.getGame().getMaxLand())
		printd(iLandScore)
		iTechScore = CvUtil.getScoreComponent(gc.getPlayer(ePlayer).getTechScore(), gc.getGame().getInitTech(), gc.getGame().getMaxTech(), gc.getDefineINT("SCORE_TECH_FACTOR"), True, bFinal, bVictory)
		iWondersScore = CvUtil.getScoreComponent(gc.getPlayer(ePlayer).getWondersScore(), gc.getGame().getInitWonders(), gc.getGame().getMaxWonders(), gc.getDefineINT("SCORE_WONDER_FACTOR"), False, bFinal, bVictory)
		
		iTotalScore = int(iLandScore + iWondersScore + iTechScore + iPopulationScore)
		
		printd("Player %d Score: %d    Pop: %d    Land: %d    Tech: %d    Wonders:    %d" %(ePlayer, iTotalScore, iPopulationScore, iLandScore, iTechScore, iWondersScore))
		
		return iTotalScore
	def onImprovementBuilt(self, argsList):
		'Improvement Built'
		iImprovement, iX, iY = argsList
		if (not self.__LOG_IMPROVEMENT):
			return
		CvUtil.pyPrint('Improvement %s was built at %d, %d'
			%(gc.getImprovementInfo(iImprovement).getDescription(), iX, iY))
示例#16
0
	def addUpgradePath(self, graph, unitFrom, unitTo):

		# Check if unit numbers are valid
		if (unitFrom >= 0 and graph.has_key(unitFrom) and unitTo >= 0 and graph.has_key(unitTo)):
			graph[unitFrom].upgradesTo.add(unitTo)
			graph[unitTo].upgradesFrom.add(unitFrom)
			CvUtil.pyPrint(self.unitToString(unitFrom) + " upgrades to " + self.unitToString(unitTo) + ".")			
示例#17
0
	def onFirstContact(self, argsList):
		'Contact'
		iTeamX,iHasMetTeamY = argsList
		if (not self.__LOG_CONTACT):
			return
		CvUtil.pyPrint('Team %d has met Team %d' %(iTeamX, iHasMetTeamY))
示例#18
0
def init():
    import sys
    import CvUtil
    sys.stderr = CvUtil.RedirectError()
    sys.excepthook = CvUtil.myExceptHook
    sys.stdout = CvUtil.RedirectDebug()
示例#19
0
	def onNukeExplosion(self, argsList):
		'Nuke Explosion'
		pPlot, pNukeUnit = argsList
		CvUtil.pyPrint('Nuke detonated at %d, %d'
			%(pPlot.getX(), pPlot.getY()))
示例#20
0
	def onCityAcquiredAndKept(self, argsList):
		'City Acquired and Kept'
		iOwner,pCity = argsList
		CvUtil.pyPrint('City Acquired and Kept Event: %s' %(pCity.getName()))
示例#21
0
	def onCultureExpansion(self, argsList):
		'City Culture Expansion'
		pCity = argsList[0]
		iPlayer = argsList[1]
		CvUtil.pyPrint("City %s's culture has expanded" %(pCity.getName(),))
示例#22
0
	def onCityAcquired(self, argsList):
		'City Acquired'
		iPreviousOwner,iNewOwner,pCity,bConquest,bTrade = argsList
		CvUtil.pyPrint('City Acquired Event: %s' %(pCity.getName()))
示例#23
0
	def onCityBuilt(self, argsList):
		'City Built'
		city = argsList[0]
		if (city.getOwner() == gc.getGame().getActivePlayer()):
			self.__eventEditCityNameBegin(city, False)	
		CvUtil.pyPrint('City Built Event: %s' %(city.getName()))
示例#24
0
	def onSetPlayerAlive(self, argsList):
		'Set Player Alive Event'
		iPlayerID = argsList[0]
		bNewValue = argsList[1]
		CvUtil.pyPrint("Player %d's alive status set to: %d" %(iPlayerID, int(bNewValue)))
示例#25
0
	def onTechSelected(self, argsList):
		'Tech Selected'
		iTechType, iPlayer = argsList
		if (not self.__LOG_TECH):
			return
		CvUtil.pyPrint('%s was selected by Player %d' %(PyInfo.TechnologyInfo(iTechType).getDescription(), iPlayer))
示例#26
0
	def onGoodyReceived(self, argsList):
		'Goody received'
		iPlayer, pPlot, pUnit, iGoodyType = argsList
		if (not self.__LOG_GOODYRECEIVED):
			return
		CvUtil.pyPrint('%s received a goody' %(gc.getPlayer(iPlayer).getCivilizationDescription(0)),)
示例#27
0
	def onUnInit(self, argsList):
		'Called when Civ shuts down'
		CvUtil.pyPrint('OnUnInit')
示例#28
0
	def onPlotPicked(self, argsList):
		'Plot Picked'
		pPlot = argsList[0]
		CvUtil.pyPrint('Plot was picked at %d, %d'
			%(pPlot.getX(), pPlot.getY()))
示例#29
0
## CvOverlayScreenUtils
##
## Controls the Strategy Overlay and provides as-yet unused sign overlay.
##
## Copyright (c) 2008 The BUG Mod.
##
## Author: Del69, EmperorFool

from CvPythonExtensions import *
import CvDotMapOverlayScreen
import BugUtil
import CvUtil

## Constants

STRATEGY_OVERLAY_SCREEN = CvUtil.getNewScreenID()
#GROUP_SIGNTXT = 0

## Globals

gc = CyGlobalContext()
keys = None

overlayScreen = CvDotMapOverlayScreen.CvDotMapOverlayScreen(
    STRATEGY_OVERLAY_SCREEN)


def showOverlayScreen():
    """
    Shows the Overlay Screen from CvDotMapOverlayScreen.py
    """
示例#30
0
	def onPreSave(self, argsList):
		"called before a game is actually saved"
		CvUtil.pyPrint('OnPreSave')
示例#31
0
def writeLog():
    playername = CvUtil.convertToStr(
        gc.getPlayer(gc.getGame().getActivePlayer()).getName())
    szNewFilename = BugPath.getRootDir() + "\\Logs\\" + "OOSLog - %s - " % (
        playername) + "Turn %s" % (gc.getGame().getGameTurn()) + ".txt"
    pFile = open(szNewFilename, "w")

    # Backup current language
    iLanguage = CyGame().getCurrentLanguage()
    # Force english language for logs
    CyGame().setCurrentLanguage(0)

    #
    # Global data
    #
    pFile.write(SEPERATOR)
    pFile.write(SEPERATOR)

    pFile.write("  GLOBALS  \n")

    pFile.write(SEPERATOR)
    pFile.write(SEPERATOR)
    pFile.write("\n\n")

    pFile.write("Next Map Rand Value: %d\n" %
                CyGame().getMapRand().get(10000, "OOS Log"))
    pFile.write("Next Soren Rand Value: %d\n" %
                CyGame().getSorenRand().get(10000, "OOS Log"))

    pFile.write("Total num cities: %d\n" % CyGame().getNumCities())
    pFile.write("Total population: %d\n" % CyGame().getTotalPopulation())
    pFile.write("Total Deals: %d\n" % CyGame().getNumDeals())

    pFile.write("Total owned plots: %d\n" % CyMap().getOwnedPlots())
    pFile.write("Total num areas: %d\n" % CyMap().getNumAreas())

    pFile.write("\n\n")

    #
    # Player data
    #
    iPlayer = 0
    for iPlayer in range(gc.getMAX_PLAYERS()):
        pPlayer = gc.getPlayer(iPlayer)
        if (pPlayer.isEverAlive()):
            pFile.write(SEPERATOR)
            pFile.write(SEPERATOR)

            pFile.write("  PLAYER %d: %s  \n" %
                        (iPlayer, CvUtil.convertToStr(pPlayer.getName())))
            pFile.write(
                "  Civilizations: %s  \n" %
                (CvUtil.convertToStr(pPlayer.getCivilizationDescriptionKey())))

            pFile.write(SEPERATOR)
            pFile.write(SEPERATOR)
            pFile.write("\n\n")

            pFile.write("Basic data:\n")
            pFile.write("-----------\n")
            pFile.write("Player %d Score: %d\n" %
                        (iPlayer, gc.getGame().getPlayerScore(iPlayer)))

            pFile.write("Player %d Population: %d\n" %
                        (iPlayer, pPlayer.getTotalPopulation()))
            pFile.write("Player %d Total Land: %d\n" %
                        (iPlayer, pPlayer.getTotalLand()))
            pFile.write("Player %d Gold: %d\n" % (iPlayer, pPlayer.getGold()))
            pFile.write("Player %d Assets: %d\n" %
                        (iPlayer, pPlayer.getAssets()))
            pFile.write("Player %d Power: %d\n" %
                        (iPlayer, pPlayer.getPower()))
            pFile.write("Player %d Num Cities: %d\n" %
                        (iPlayer, pPlayer.getNumCities()))
            pFile.write("Player %d Num Units: %d\n" %
                        (iPlayer, pPlayer.getNumUnits()))
            pFile.write("Player %d Num Selection Groups: %d\n" %
                        (iPlayer, pPlayer.getNumSelectionGroups()))
            pFile.write("Player %d Difficulty: %d\n" %
                        (iPlayer, pPlayer.getHandicapType()))

            pFile.write("\n\n")

            pFile.write("Yields:\n")
            pFile.write("-------\n")
            for iYield in range(int(YieldTypes.NUM_YIELD_TYPES)):
                pFile.write("Player %d %s Total Yield: %d\n" %
                            (iPlayer, gc.getYieldInfo(iYield).getDescription(),
                             pPlayer.calculateTotalYield(iYield)))

            pFile.write("\n\n")

            pFile.write("Commerce:\n")
            pFile.write("---------\n")
            for iCommerce in range(int(CommerceTypes.NUM_COMMERCE_TYPES)):
                pFile.write(
                    "Player %d %s Total Commerce: %d\n" %
                    (iPlayer, gc.getCommerceInfo(iCommerce).getDescription(),
                     pPlayer.getCommerceRate(CommerceTypes(iCommerce))))

            pFile.write("\n\n")

            pFile.write("Bonus Info:\n")
            pFile.write("-----------\n")
            for iBonus in range(gc.getNumBonusInfos()):
                pFile.write("Player %d, %s, Number Available: %d\n" %
                            (iPlayer, gc.getBonusInfo(iBonus).getDescription(),
                             pPlayer.getNumAvailableBonuses(iBonus)))
                pFile.write("Player %d, %s, Import: %d\n" %
                            (iPlayer, gc.getBonusInfo(iBonus).getDescription(),
                             pPlayer.getBonusImport(iBonus)))
                pFile.write("Player %d, %s, Export: %d\n" %
                            (iPlayer, gc.getBonusInfo(iBonus).getDescription(),
                             pPlayer.getBonusExport(iBonus)))
                pFile.write("\n")

            pFile.write("\n\n")

            pFile.write("Improvement Info:\n")
            pFile.write("-----------------\n")
            for iImprovement in range(gc.getNumImprovementInfos()):
                pFile.write(
                    "Player %d, %s, Improvement count: %d\n" %
                    (iPlayer,
                     CvUtil.convertToStr(
                         gc.getImprovementInfo(iImprovement).getDescription()),
                     pPlayer.getImprovementCount(iImprovement)))

            pFile.write("\n\n")

            pFile.write("Building Class Info:\n")
            pFile.write("--------------------\n")
            for iBuildingClass in range(gc.getNumBuildingClassInfos()):
                pFile.write(
                    "Player %d, %s, Building class count plus building: %d\n" %
                    (iPlayer,
                     CvUtil.convertToStr(
                         gc.getBuildingClassInfo(
                             iBuildingClass).getDescription()),
                     pPlayer.getBuildingClassCountPlusMaking(iBuildingClass)))

            pFile.write("\n\n")

            pFile.write("Unit Class Info:\n")
            pFile.write("--------------------\n")
            for iUnitClass in range(gc.getNumUnitClassInfos()):
                pFile.write(
                    "Player %d, %s, Unit class count plus training: %d\n" %
                    (iPlayer,
                     CvUtil.convertToStr(
                         gc.getUnitClassInfo(iUnitClass).getDescription()),
                     pPlayer.getUnitClassCountPlusMaking(iUnitClass)))

            pFile.write("\n\n")

            pFile.write("UnitAI Types Info:\n")
            pFile.write("------------------\n")
            for iUnitAIType in range(int(UnitAITypes.NUM_UNITAI_TYPES)):
                pFile.write(
                    "Player %d, %s, Unit AI Type count: %d\n" %
                    (iPlayer, gc.getUnitAIInfo(iUnitAIType).getDescription(),
                     pPlayer.AI_totalUnitAIs(UnitAITypes(iUnitAIType))))

            pFile.write("\n\n")

            pFile.write("City Info:\n")
            pFile.write("----------\n")
            iNumCities = pPlayer.getNumCities()

            if (iNumCities == 0):
                pFile.write("No Cities")
            else:
                pLoopCityTuple = pPlayer.firstCity(False)
                while (pLoopCityTuple[0] != None):
                    pCity = pLoopCityTuple[0]
                    #pFile.write("Player %d, City ID: %d, %s, Plot Radius: %d\n" % (iPlayer, pCity.getID(), CvUtil.convertToStr(pCity.getName()), pCity.getPlotRadius() ))

                    pFile.write("X: %d, Y: %d\n" %
                                (pCity.getX(), pCity.getY()))
                    pFile.write("Founded: %d\n" % pCity.getGameTurnFounded())
                    pFile.write("Population: %d\n" % pCity.getPopulation())
                    pFile.write("Buildings: %d\n" % pCity.getNumBuildings())
                    pFile.write("Improved Plots: %d\n" %
                                pCity.countNumImprovedPlots())
                    pFile.write("Producing: %s\n" % pCity.getProductionName())
                    pFile.write(
                        "%d Tiles Worked, %d Specialists, %d Great People\n" %
                        (pCity.getWorkingPopulation(),
                         pCity.getSpecialistPopulation(),
                         pCity.getNumGreatPeople()))

                    pLoopCityTuple = pPlayer.nextCity(pLoopCityTuple[1], False)
                    pFile.write("\n")

            pFile.write("\n\n")

            pFile.write("Unit Info:\n")
            pFile.write("----------\n")
            iNumUnits = pPlayer.getNumUnits()

            if (iNumUnits == 0):
                pFile.write("No Units")
            else:
                pLoopUnitTuple = pPlayer.firstUnit(False)
                while (pLoopUnitTuple[0] != None):
                    pUnit = pLoopUnitTuple[0]
                    pFile.write("Player %d, Unit ID: %d, %s\n" %
                                (iPlayer, pUnit.getID(),
                                 CvUtil.convertToStr(pUnit.getName())))
                    pFile.write("X: %d, Y: %d\n" %
                                (pUnit.getX(), pUnit.getY()))
                    pFile.write("Damage: %d\n" % pUnit.getDamage())
                    #pFile.write("Experience: %d\n" % pUnit.getExperienceTimes100() )
                    pFile.write("Experience: %d\n" % pUnit.getExperience())
                    pFile.write("Level: %d\n" % pUnit.getLevel())
                    pFile.write("Promotions:\n")
                    for j in range(gc.getNumPromotionInfos()):
                        if (pUnit.isHasPromotion(j)):
                            pFile.write("%s\n" % (CvUtil.convertToStr(
                                gc.getPromotionInfo(j).getDescription())))

                    pLoopUnitTuple = pPlayer.nextUnit(pLoopUnitTuple[1], False)
                    pFile.write("\n")

            # Space at end of player's info
            pFile.write("\n\n")

    # Restore current language
    CyGame().setCurrentLanguage(iLanguage)

    # Close file

    pFile.close()
示例#32
0
	def onInit(self, argsList):
		'Called when Civ starts up'
		CvUtil.pyPrint( 'OnInit' )
示例#33
0
	def onCityGrowth(self, argsList):
		'City Population Growth'
		pCity = argsList[0]
		iPlayer = argsList[1]
		CvUtil.pyPrint("%s has grown" %(pCity.getName(),))
示例#34
0
##-------------------------------------------------------------------

from CvPythonExtensions import *
import CvMainInterface
import CvUtil
import Popup as PyPopup
import BugCore
import BugUtil
import PlayerUtil
import SdToolKit

SD_MOD_ID = "Reminders"
SD_QUEUES_ID = "queues"
SD_QUEUE_ID = "queue"  # old format saves a single queue

STORE_EVENT_ID = CvUtil.getNewEventID("Reminder.Store")
RECALL_EVENT_ID = CvUtil.getNewEventID("Reminder.Recall")
RECALL_AGAIN_EVENT_ID = CvUtil.getNewEventID("Reminder.RecallAgain")

gc = CyGlobalContext()

ReminderOpt = BugCore.game.Reminder
g_eventMgr = None

g_reminders = None

# Used to display flashing end-of-turn text
g_turnReminderTexts = None

# Used to receive network messages
g_hasNetMessage = hasattr(CyPlayer, "addReminder")
    def onCityAcquired(self, argsList):
        iOwnerOld, iOwnerNew, CyCity, bConquest, bTrade = argsList
        if not bConquest: return

        iBasePercent = g_iBasePercent
        iPopPercent = g_iPopPercent
        if iBasePercent < 1 and iPopPercent < 1: return

        CyPlayerN = GC.getPlayer(iOwnerNew)
        if CyPlayerN.isNPC(): return

        if iPopPercent < 0:
            iPopPercent = 0
        elif iPopPercent > 100:
            iPopPercent = 100

        CyPlayerO = GC.getPlayer(iOwnerOld)
        CyTeamO = GC.getTeam(CyPlayerO.getTeam())
        CyTeamN = GC.getTeam(CyPlayerN.getTeam())

        bCheckPrereq = g_bCheckPrereq
        aList = []
        iTechsBehind = 0
        for iTech in range(GC.getNumTechInfos()):
            # Continue if the conquering team does have the tech
            if CyTeamN.isHasTech(iTech):
                continue
            # Continue if the old team doesn't have the tech
            if not CyTeamO.isHasTech(iTech):
                continue
            iTechsBehind += 1
            # Continue if the conquerer cannot research the technology
            if bCheckPrereq and not CyPlayerN.canResearch(iTech, False):
                continue
            # Append the technology to the possible technology list
            iCost = CyTeamN.getResearchCost(iTech)
            iProgress = CyTeamN.getResearchProgress(iTech)
            iRemaining = iCost - iProgress - 1
            if not iRemaining:
                continue
            # Append the technology to the possible technology list
            aList.append((iTech, iCost, iRemaining))

        if aList:

            iBasePercent += iTechsBehind
            charBeaker = GC.getCommerceInfo(
                CommerceTypes.COMMERCE_RESEARCH).getChar()
            iPopulation = CyCity.getPopulation() + 1
            fForce = (1 + iTechsBehind / 10.0) * iPopulation / (
                CyPlayerO.getTotalPopulation() + iPopulation)

            iMax = (iPopulation * iPopPercent)
            iCount = 0
            iLen = len(aList)
            szTxt = ""
            while iLen:
                iTech, iCost, iRemaining = aList.pop(
                    GAME.getSorenRandNum(iLen, "random"))
                iLen -= 1
                # Get the total number of technology points that will be transfered to the new city owner
                fTemp = 0
                if iPopPercent:
                    for i in xrange(iPopulation):
                        fTemp += 100 * (1.0 + GAME.getSorenRandNum(
                            iPopPercent, "TechConquest")) / iMax

                fPercent = iBasePercent + fTemp * fForce

                iBeakers = int(iCost * fPercent / (20 * (iCount + 5)))

                if iBeakers < 1: continue
                if iBeakers > iRemaining:
                    iBeakers = iRemaining

                # Increase the research progress for the new city owner
                CyTeamN.changeResearchProgress(iTech, iBeakers, iOwnerNew)

                szTxt += "\n\t" + GC.getTechInfo(iTech).getDescription(
                ) + u" <-> %i%c" % (iBeakers, charBeaker)
                iCount += 1

            if iOwnerNew == GAME.getActivePlayer():

                if iCount:  # Inform the player they got some new technology points
                    szTxt = TRNSLTR.getText(
                        "TXT_KEY_ENHANCED_TECH_CONQUEST_SUCESS",
                        ()) % (CyCity.getName(), szTxt)
                else:  # Inform the player they didn't get any new technologies
                    szTxt = TRNSLTR.getText(
                        "TXT_KEY_ENHANCED_TECH_CONQUEST_FAIL",
                        ()) + " %s" % (CyCity.getName())

                artPath = GC.getCivilizationInfo(
                    CyPlayerO.getCivilizationType()).getButton()
                CvUtil.sendMessage(szTxt, iOwnerNew, 20,
                                   artPath, ColorTypes(12), CyCity.getX(),
                                   CyCity.getY(), True, True)
示例#36
0
##
## 10. return name
##-------------------------------------------------------------------

from CvPythonExtensions import *
import CvUtil
import BugUtil
import BugCore
import Roman
import RandomNameUtils
import random
import Popup as PyPopup
import BugData

SD_MOD_ID = "UnitCnt"
RENAME_EVENT_ID = CvUtil.getNewEventID()

gc = CyGlobalContext()
localText = CyTranslator()

UnitNamingOpt = BugCore.game.UnitNaming

phonetic_array = [
    'Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot', 'Golf', 'Hotel',
    'India', 'Juliet', 'Kilo', 'Lima', 'Mike', 'November', 'Oscar', 'Papa',
    'Quebec', 'Romeo', 'Sierra', 'Tango', 'Uniform', 'Victor', 'Whiskey',
    'Xray', 'Yankee', 'Zulu'
]

greek_array = [
    'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta',