def __init__(self, customEM): CvUtil.pyPrint(localText.getText("TXT_KEY_REV_MOD_INITIALIZING", ())) self.EventKeyDown = 6 self.customEM = customEM self.RevOpt = RevOpt self.bShowActivePopup = RevOpt.isActivePopup() self.revComponentsText = "" # RevolutionDCM self.titleFormat = "<font=3b><color=250,170,0,255>" self.sectionFormat = "<font=3><color=200,200,0,255>" self.optionFormat = "<font=2><color=0,180,0,255>" self.noneOptionFormat = "<font=2><color=0,0,255,255>" self.helpTextTitle = "<font=3><color=255,255,0,255>" self.helpTextFormat = "<font=2><color=255,255,255,255>" customEM.addEventHandler("kbdEvent", self.onKbdEvent) customEM.addEventHandler("GameStart", self.onGameStart) customEM.addEventHandler("OnLoad", self.onGameLoad) # customEM.addEventHandler( 'Init', self.onInit ) # Determine if game is already running and Python has just been reloaded if game.isFinalInitialized(): # print "Game initialized!" self.onGameLoad(None, bShowPopup=False)
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 #------------------------------------------------------------------------------------------------- # Lemmy101 RevolutionMP edit #------------------------------------------------------------------------------------------------- toKillPlayer = gc.getPlayer(iPlayerID) #------------------------------------------------------------------------------------------------- # END Lemmy101 RevolutionMP edit #------------------------------------------------------------------------------------------------- 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)),"") #------------------------------------------------------------------------------------------------- # Lemmy101 RevolutionMP edit #------------------------------------------------------------------------------------------------- self.doNewHuman(newHumanIdx, toKillPlayer.getID()) self.bLaunchedChangeHumanPopup = False
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 __link__(szLink): if szLink.strip().startswith("http"): CvUtil.pyPrint("Visit link: " + str(szLink)) import webbrowser webbrowser.open(szLink) return return CvScreensInterface.pediaMainScreen.link_orig(szLink)
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 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) + ".")
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))
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 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 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 giveCityCulture( pCity, iPlayer, newCityVal, newPlotVal, overwriteHigher = False, bSilent = False, iPlotBase = 100 ) : # Places this culture value in city and city plot # Places half this value in neighboring plots if( iPlayer < 0 or iPlayer > gc.getBARBARIAN_PLAYER() ) : return if( overwriteHigher or newCityVal > pCity.getCulture(iPlayer) ) : pCity.setCulture( iPlayer, newCityVal, True ) if( LOG_DEBUG and not bSilent) : CvUtil.pyPrint(" Rev - Culture set to %d"%(pCity.getCulture(iPlayer))) if( overwriteHigher or newPlotVal > pCity.plot().getCulture(iPlayer) ) : pCity.plot().setCulture( iPlayer, newPlotVal, True ) gameMap = gc.getMap() if( iPlotBase > 0 ) : culRadius = 2 if( pCity.getCultureLevel() > 2 ) : culRadius = 3 for [radius,pPlot] in plotGenerator( pCity.plot(), culRadius ) : iTotalCulture = pPlot.countTotalCulture() if( radius > 0 and iTotalCulture > 0 ) : # Cultural presence drops off with radius factor = (iPlotBase+game.getSorenRandNum(iPlotBase/8,'Rev: Culture'))/radius newPlotCul = min([newPlotVal, (factor*pPlot.countTotalCulture())/100]) if( overwriteHigher or newPlotCul > pPlot.getCulture(iPlayer) ) : pPlot.setCulture( iPlayer, newPlotCul, True )
def onCityRazed(self, argsList): 'City Razed' city, iPlayer = argsList iOwner = city.findHighestCulture() #Rhye - start bugfix #owner = PyPlayer(city.getOwner()) owner = PyPlayer(city.getOwner()) if (city.getOwner() == iPlayer): if (city.getPreviousOwner() != -1): 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 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
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)
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 CvUtil.pyPrint("%s was finished by Team %d" % (PyInfo.TechnologyInfo(iTechType).getDescription(), iTeam))
def onSetPlayerAlive( self, argsList ) : iPlayerID = argsList[0] bNewValue = argsList[1] if( bNewValue == True and iPlayerID < gc.getMAX_CIV_PLAYERS() ) : pPlayer = gc.getPlayer( iPlayerID ) if( pPlayer.isHuman() or game.getActivePlayer() == iPlayerID ) : if( self.bLeaveHumanName ) : CvUtil.pyPrint(" Name - Leaving name for human player") return [newCivDesc, newCivShort, newCivAdj] = self.nameForNewPlayer( iPlayerID ) newDesc = CvUtil.convertToStr(newCivDesc) newShort = CvUtil.convertToStr(newCivShort) newAdj = CvUtil.convertToStr(newCivAdj) newDesc = remove_diacriticals(newDesc) newShort = remove_diacriticals(newShort) newAdj = remove_diacriticals(newAdj) if( self.LOG_DEBUG ) : CvUtil.pyPrint(" Name - Setting civ name for new civ to %s"%(newDesc)) # Pass to pPlayer seems to require a conversion to 'ascii' pPlayer.setCivName( newDesc, newShort, newAdj )
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()))
def clearOutCity( pCity, pPlayer, pEnemyPlayer ) : ix = pCity.getX() iy = pCity.getY() moveXY = getClosestCityXY( ix, iy, pPlayer.getID(), 25, bIncludeBase = False ) if( moveXY == None ) : if( LOG_DEBUG ) : CvUtil.pyPrint(" Revolt - No nearby cities, just placing not too far away") retreatPlots = getSpawnablePlots( ix, iy, pPlayer, bLand = True, bIncludePlot = False, bIncludeCities = True, bSameArea = True, iRange = 3, iSpawnPlotOwner = pPlayer.getID(), bCheckForEnemy = True ) if( len(retreatPlots) == 0 ) : retreatPlots = getSpawnablePlots( ix, iy, pPlayer, bLand = True, bIncludePlot = False, bIncludeCities = True, bSameArea = False, iRange = 5, iSpawnPlotOwner = -1, bCheckForEnemy = True ) if( len(retreatPlots) > 0 ) : moveXY = retreatPlots[game.getSorenRandNum(len(retreatPlots),'Rev')] if( not moveXY == None ) : moveEnemyUnits2( ix, iy, pEnemyPlayer.getID(), moveXY[0], moveXY[1], bMoveAir = True ) # Handle water units waterUnits = getEnemyUnits( ix, iy, pEnemyPlayer.getID(), domain = DomainTypes.DOMAIN_SEA ) if( len(waterUnits) > 0 ) : retreatPlots = getSpawnablePlots( ix, iy, pPlayer, bLand = False, bIncludePlot = False, bIncludeCities = False, bSameArea = False, iRange = 1, iSpawnPlotOwner = pPlayer.getID(), bCheckForEnemy = True ) if( len(retreatPlots) == 0 ) : retreatPlots = getSpawnablePlots( ix, iy, pPlayer, bLand = False, bIncludePlot = False, bIncludeCities = False, bSameArea = False, iRange = 5, iSpawnPlotOwner = -1, bCheckForEnemy = True ) if( len(retreatPlots) > 0 ) : moveXY = retreatPlots[game.getSorenRandNum(len(retreatPlots),'Rev')] for unit in waterUnits : if( unit.canMoveInto(gc.getMap().plot(moveXY[0],moveXY[1]),False,False,True) ) : if( LOG_DEBUG ) : CvUtil.pyPrint(" Rev - Moving water unit %s (id: %d, player: %d)"%(unit.getName(),unit.getID(),unit.getOwner())) unit.setXY( moveXY[0], moveXY[1], False, False, False )
def setNewNameByCivics( self, iPlayer ) : [newCivDesc, newCivShort, newCivAdj] = self.newNameByCivics( iPlayer ) if( gc.getPlayer(iPlayer).isHuman() or game.getActivePlayer() == iPlayer ) : if( self.bLeaveHumanName ) : CvUtil.pyPrint(" Name - Leaving name for human player") return else : #CvUtil.pyPrint(" Name - Changing name for human player!") pass newDesc = CvUtil.convertToStr(newCivDesc) newShort = CvUtil.convertToStr(newCivShort) newAdj = CvUtil.convertToStr(newCivAdj) newDesc = remove_diacriticals(newDesc) newShort = remove_diacriticals(newShort) newAdj = remove_diacriticals(newAdj) if( not newDesc == gc.getPlayer(iPlayer).getCivilizationDescription(0) ) : szMessage = BugUtil.getText("TXT_KEY_MOD_DCN_NEWCIV_NAME_DESC", newDesc) CyInterface().addMessage(iPlayer, false, gc.getDefineINT("EVENT_MESSAGE_TIME"), szMessage, None, InterfaceMessageTypes.MESSAGE_TYPE_INFO, None, gc.getInfoTypeForString("COLOR_HIGHLIGHT_TEXT"), -1, -1, False, False) if( self.LOG_DEBUG ) : CvUtil.pyPrint(" Name - Setting civ name due to civics to %s"%(newDesc)) gc.getPlayer(iPlayer).setCivName( newDesc, newShort, newAdj ) return
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 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 onCityAcquired(self, argsList): ## Platy Builder ## if CyGame().GetWorldBuilderMode() and not CvPlatyBuilderScreen.bPython: return ## Platy Builder ## 'City Acquired' iPreviousOwner,iNewOwner,pCity,bConquest,bTrade = argsList CvUtil.pyPrint('City Acquired Event: %s' %(pCity.getName()))
def onModNetMessage(self, argsList): 'Called whenever CyMessageControl().sendModNetMessage() is called - this is all for you modders!' iData1, iData2, iData3, iData4, iData5 = argsList print("Modder's net message!") CvUtil.pyPrint( 'onModNetMessage' )
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()))
def onEndGoldenAge(self, argsList): 'End Golden Age' iPlayer = argsList[0] player = PyPlayer(iPlayer) if (not self.__LOG_ENDGOLDENAGE): return CvUtil.pyPrint('Player %d Civilization %s golden age has ended' % (iPlayer, player.getCivilizationName()))
def onUnitSelected(self, argsList): 'Unit Selected' unit = argsList[0] player = PyPlayer(unit.getOwner()) if (not self.__LOG_UNITSELECTED): return CvUtil.pyPrint('%s was selected by Player %d Civilization %s' %(PyInfo.UnitInfo(unit.getUnitType()).getDescription(), player.getID(), player.getCivilizationName()))
def onModNetMessage(self, argsList): 'Called whenever CyMessageControl().sendModNetMessage() is called - this is all for you modders!' iData1, iData2, iData3, iData4, iData5 = argsList print("Modder's net message!") CvUtil.pyPrint('onModNetMessage')
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
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' % (PyInfo.ImprovementInfo(iImprovement).getDescription(), iX, iY))
def onCityBuilt(self, argsList): 'City Built' city = argsList[0] # edead: start comment # if (city.getOwner() == gc.getGame().getActivePlayer()): # self.__eventEditCityNameBegin(city, False) # edead: end CvUtil.pyPrint('City Built Event: %s' % (city.getName()))
def __init__(self): "constructor - set up class vars, AI and User strings" if DebugLogging: CvUtil.pyPrint("Launching Diplomacy") self.iLastResponseID = -1 self.diploScreen = CyDiplomacy()
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' % (PyInfo.ImprovementInfo(iImprovement).getDescription(), iX, iY))
def onEndGoldenAge(self, argsList): 'End Golden Age' iPlayer = argsList[0] player = PyPlayer(iPlayer) if (not self.__LOG_ENDGOLDENAGE): return CvUtil.pyPrint('Player %d Civilization %s golden age has ended' %(iPlayer, player.getCivilizationName()))
def onCorporationRemove(self, argsList): 'Corporation Has been removed from a City' iCorporation, iOwner, pRemoveCity = argsList player = PyPlayer(iOwner) if (not self.__LOG_RELIGIONSPREAD): return CvUtil.pyPrint('%s has been removed from Player %d Civilization %s city of %s' %(gc.getReligionInfo(iReligion).getDescription(), iOwner, player.getCivilizationName(), pRemoveCity.getName()))
def onUnitLost(self, argsList): 'Unit Lost' unit = argsList[0] player = gc.getPlayer(unit.getOwner()) if (not self.__LOG_UNITLOST): return CvUtil.pyPrint('%s was lost by Player %d Civilization %s' %(gc.getUnitInfo(unit.getUnitType()).getDescription(), player.getID(), player.getCivilizationDescription(0)))
def onCityLost(self, argsList): 'City Lost' city = argsList[0] player = PyPlayer(city.getOwner()) if (not self.__LOG_CITYLOST): return CvUtil.pyPrint('City %s was lost by Player %d Civilization %s' %(city.getName(), player.getID(), player.getCivilizationName()))
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)), )
def onCorporationSpread(self, argsList): 'Corporation Has Spread to a City' iCorporation, iOwner, pSpreadCity = argsList player = PyPlayer(iOwner) if (not self.__LOG_RELIGIONSPREAD): return CvUtil.pyPrint('%s has spread to Player %d Civilization %s city of %s' %(gc.getCorporationInfo(iCorporation).getDescription(), iOwner, player.getCivilizationName(), pSpreadCity.getName()))
def onCityLost(self, argsList): 'City Lost' city = argsList[0] player = gc.getPlayer(city.getOwner()) if (not self.__LOG_CITYLOST): return CvUtil.pyPrint('City %s was lost by Player %d Civilization %s' %(city.getName(), player.getID(), player.getCivilizationDescription(0)))
def onGoldenAge(self, argsList): 'Golden Age' iPlayer = argsList[0] player = PyPlayer(iPlayer) if (not self.__LOG_GOLDENAGE): return CvUtil.pyPrint('Player %d Civilization %s has begun a golden age' % (iPlayer, player.getCivilizationName()))
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))
def onUnitLost(self, argsList): 'Unit Lost' unit = argsList[0] player = PyPlayer(unit.getOwner()) if (not self.__LOG_UNITLOST): return CvUtil.pyPrint('%s was lost by Player %d Civilization %s' %(PyInfo.UnitInfo(unit.getUnitType()).getDescription(), player.getID(), player.getCivilizationName()))
def onGreatPersonBorn(self, argsList): 'Unit Promoted' pUnit, iPlayer, pCity = argsList player = PyPlayer(iPlayer) if pUnit.isNone() or pCity.isNone(): return CvUtil.pyPrint('A %s was born for %s in %s' %(pUnit.getName(), player.getCivilizationName(), pCity.getName()))
def onReligionFounded(self, argsList): 'Religion Founded' iReligion, iFounder = argsList player = PyPlayer(iFounder) CvUtil.pyPrint('Player %d Civilization %s has founded %s' %(iFounder, player.getCivilizationName(), gc.getReligionInfo(iReligion).getDescription()))
def testList(): CvUtil.pyPrint( format(2, [ makeTrade(TradeableItems.TRADE_GOLD, 53), makeTrade(TradeableItems.TRADE_MAPS), makeTrade(TradeableItems.TRADE_PEACE, 1), makeTrade(TradeableItems.TRADE_CITY, 1), makeTrade(TradeableItems.TRADE_GOLD_PER_TURN, 6), ]))
def onBeginPlayerTurn(self, argsList): iGameTurn, iPlayer = argsList if gc.getGame().getGameTurn() < getTurnForYear( con.tBirth[gc.getGame().getActivePlayer()]): return player = gc.getPlayer(iPlayer) # edead: start - Verify human player mercenaries if player.isHuman(): mercenaries = sd.getMercenaryData("HiredMercenaries") if mercenaries.has_key(iPlayer): playerMercenaries = mercenaries[iPlayer].copy() for mercenaryName, mercenary in playerMercenaries.iteritems(): if mercenary["iPlacementTurn"] == -1: unit = player.getUnit(mercenary["iUnitID"]) if unit.getID() == -1: del mercenaries[iPlayer][mercenaryName] sd.setMercenaryData("HiredMercenaries", mercenaries) # edead: end # Debug code - start if (g_bDebug): CvUtil.pyPrint(player.getName() + " Gold: " + str(player.getGold()) + " is human: " + str(player.isHuman())) # Debug code - end # Add the mercenaries to the global mercenary pool if the # g_bGameTurnMercenaryCreation is set to false if (not g_bGameTurnMercenaryCreation): objMercenaryUtils.addMercenariesToPool() # if g_bDisplayMercenaryManagerOnBeginPlayerTurn is true the the player is human # then display the mercenary manager screen if (g_bDisplayMercenaryManagerOnBeginPlayerTurn and player.isHuman()): self.mercenaryManager.interfaceScreen() # if the player is not human then run the think method #Rhye - start #objMercenaryUtils.computerPlayerThink(iPlayer) iAIThinkPeriod = g_iAIThinkPeriod if gc.getGame().getGameTurnYear() < 1080 or gc.getGame( ).getGameTurnYear() > 1220: iAIThinkPeriod += 1 # edead: more mercs in 1080-1220 if (player.isAlive() and iPlayer < con.iNumPlayers): # edead if (iPlayer % iAIThinkPeriod == iGameTurn % iAIThinkPeriod): #print ("AI thinking (Mercenaries)", iPlayer) #Rhye objMercenaryUtils.computerPlayerThink(iPlayer) #Rhye - end # Place any mercenaries that might be ready to be placed. objMercenaryUtils.placeMercenaries(iPlayer)
def debug(argsList): printToScr = True printToLog = True message = "%s" % (argsList) if (printToScr): CyInterface().addImmediateMessage(message, "") if (printToLog): CvUtil.pyPrint(message) return 0
def sdEcho(echoString): printToScr = True printToLog = True message = "%s" % (echoString) if (printToScr): CyInterface().addImmediateMessage(message, "") if (printToLog): CvUtil.pyPrint(message) return 0
def onCityBuilt(self, argsList): 'City Built' city = argsList[0] if (city.getOwner() == gc.getGame().getActivePlayer()): self.__eventEditCityNameBegin(city, False) # <advc.007> if (not self.__LOG_CITYBUILT): return # </advc.007> CvUtil.pyPrint('City Built Event: %s' % (city.getName()))
def onGreatPersonBorn(self, argsList): 'Unit Promoted' pUnit, iPlayer, pCity = argsList player = PyPlayer(iPlayer) if pUnit.isNone() or pCity.isNone(): return if (not self.__LOG_GREATPERSON): return CvUtil.pyPrint('A %s was born for %s in %s' %(pUnit.getName(), player.getCivilizationName(), pCity.getName()))
def onCorporationFounded(self, argsList): 'Corporation Founded' iCorporation, iFounder = argsList player = PyPlayer(iFounder) if (not self.__LOG_RELIGION): return CvUtil.pyPrint('Player %d Civilization %s has founded %s' %(iFounder, player.getCivilizationName(), gc.getCorporationInfo(iCorporation).getDescription()))
def onFirstContact(self, argsList): ## Platy Builder ## if CyGame().GetWorldBuilderMode() and not CvPlatyBuilderScreen.bPython: return ## Platy Builder ## 'Contact' iTeamX,iHasMetTeamY = argsList if (not self.__LOG_CONTACT): return CvUtil.pyPrint('Team %d has met Team %d' %(iTeamX, iHasMetTeamY))
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 check_show_ressources(): iPlayer = gc.getGame().getActivePlayer() if (iPlayer != -1 and gc.getPlayer(iPlayer).isOption( PlayerOptionTypes.PLAYEROPTION_MODDER_1) ): CvUtil.pyPrint('toggle resource symbols on') bResourceOn = ControlTypes.CONTROL_RESOURCE_ALL + 1001 CyGame().doControlWithoutWidget(bResourceOn) # Ctrl+r
def onUnitKilled(self, argsList): 'Unit Killed' unit, iAttacker = argsList player = PyPlayer(unit.getOwner()) attacker = PyPlayer(iAttacker) if (not self.__LOG_UNITKILLED): return CvUtil.pyPrint('Player %d Civilization %s Unit %s was killed by Player %d' %(player.getID(), player.getCivilizationName(), PyInfo.UnitInfo(unit.getUnitType()).getDescription(), attacker.getID()))
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) + ".")
def onVassalState(self, argsList): 'Vassal State' iMaster, iVassal, bVassal, bCapitulated = argsList if (bVassal): CvUtil.pyPrint("Team %d becomes a Vassal State of Team %d" %(iVassal, iMaster)) else: CvUtil.pyPrint("Team %d revolts and is no longer a Vassal State of Team %d" %(iVassal, iMaster))
def onImprovementDestroyed(self, argsList): ## Platy Builder ## if CyGame().GetWorldBuilderMode() and not CvPlatyBuilderScreen.bPython: return ## Platy Builder ## 'Improvement Destroyed' iImprovement, iOwner, iX, iY = argsList if (not self.__LOG_IMPROVEMENT): return CvUtil.pyPrint('Improvement %s was Destroyed at %d, %d' %(PyInfo.ImprovementInfo(iImprovement).getDescription(), iX, iY))
def onRouteBuilt(self, argsList): ## Platy Builder ## if CyGame().GetWorldBuilderMode() and not CvPlatyBuilderScreen.bPython: return ## Platy Builder ## '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))