def playerCityLost(CyPlayer, CyCity, bConquest = True): if CyPlayer.isNPC() or CyPlayer.getNumCities() < 1: return revIdxChange = (GAME.getGameTurn() - CyCity.getGameTurnAcquired()) * 100.0 / GC.getGameSpeedInfo(GAME.getGameSpeedType()).getSpeedPercent() revIdxChange += CyCity.getHighestPopulation() revIdxChange *= CyCity.plot().calculateCulturePercent(CyPlayer.getID()) / 100.0 if revIdxChange > 500: revIdxChange = 500 elif revIdxChange < 0: revIdxChange = 0 if revIdxChange > 0: if not bConquest: revIdxChange = revIdxChange/4.0 if CyPlayer.isRebel(): revIdxChange /= 2.0 revIdxChange = int(cityLostModifier*revIdxChange + .5) print "[REV] Loss of %s by %s (%d bConq): %d rev idx change" %(CyCity.getName(), CyPlayer.getCivilizationDescription(0), bConquest, revIdxChange) for cityX in CyPlayer.cities(): cityX.changeRevolutionIndex(revIdxChange) revIdxHist = RevData.getCityVal(cityX,'RevIdxHistory') revIdxHist['Events'][0] += revIdxChange RevData.updateCityVal(cityX, 'RevIdxHistory', revIdxHist)
def onBuildingBuilt(argsList): pCity, iBuildingType = argsList buildingInfo = GC.getBuildingInfo(iBuildingType) if buildingInfo.getMaxGlobalInstances() == 1 and buildingInfo.getPrereqReligion() < 0 and buildingInfo.getProductionCost() > 10: if LOG_DEBUG: print"[REV] World wonder %s build in %s"%(buildingInfo.getDescription(), pCity.getName()) curRevIdx = pCity.getRevolutionIndex() pCity.changeRevolutionIndex(-max([150, curRevIdx / 4])) for cityX in GC.getPlayer(pCity.getOwner()).cities(): curRevIdx = cityX.getRevolutionIndex() iRevIdxChange = -max([75, curRevIdx * 12/100]) cityX.changeRevolutionIndex(iRevIdxChange) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += iRevIdxChange RevData.updateCityVal(pCity, 'RevIdxHistory', revIdxHist) elif buildingInfo.getMaxPlayerInstances() == 1 and buildingInfo.getPrereqReligion() < 0 and buildingInfo.getProductionCost() > 10: if LOG_DEBUG: print "[REV] National wonder %s build in %s"%(buildingInfo.getDescription(), pCity.getName()) curRevIdx = pCity.getRevolutionIndex() pCity.changeRevolutionIndex(-max([80, curRevIdx * 12/100])) for cityX in GC.getPlayer(pCity.getOwner()).cities(): curRevIdx = cityX.getRevolutionIndex() iRevIdxChange = -max([50, curRevIdx * 7/100]) cityX.changeRevolutionIndex(iRevIdxChange) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += iRevIdxChange RevData.updateCityVal(pCity, 'RevIdxHistory', revIdxHist)
def onBuildingBuilt(argsList): pCity, iBuildingType = argsList buildingInfo = GC.getBuildingInfo(iBuildingType) buildingClassInfo = GC.getBuildingClassInfo(buildingInfo.getBuildingClassType()) if( buildingClassInfo.getMaxGlobalInstances() == 1 and buildingInfo.getPrereqReligion() < 0 and buildingInfo.getProductionCost() > 10 ) : if( LOG_DEBUG ) : CvUtil.pyPrint(" Revolt - World wonder %s build in %s"%(buildingInfo.getDescription(),pCity.getName())) curRevIdx = pCity.getRevolutionIndex() pCity.changeRevolutionIndex( -max([150,int(0.25*curRevIdx)]) ) for city in PyPlayer(pCity.getOwner()).getCityList() : listCity = city.GetCy() curRevIdx = listCity.getRevolutionIndex() iRevIdxChange = -max([75,int(0.12*curRevIdx)]) listCity.changeRevolutionIndex( iRevIdxChange ) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += iRevIdxChange RevData.updateCityVal( pCity, 'RevIdxHistory', revIdxHist ) elif( buildingClassInfo.getMaxPlayerInstances() == 1 and buildingInfo.getPrereqReligion() < 0 and buildingInfo.getProductionCost() > 10 ) : if( LOG_DEBUG ) : CvUtil.pyPrint(" Revolt - National wonder %s build in %s"%(buildingInfo.getDescription(),pCity.getName())) curRevIdx = pCity.getRevolutionIndex() pCity.changeRevolutionIndex( -max([80,int(0.12*curRevIdx)]) ) for city in PyPlayer(pCity.getOwner()).getCityList() : listCity = city.GetCy() curRevIdx = listCity.getRevolutionIndex() iRevIdxChange = -max([50,int(0.07*curRevIdx)]) listCity.changeRevolutionIndex( iRevIdxChange ) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += iRevIdxChange RevData.updateCityVal( pCity, 'RevIdxHistory', revIdxHist )
def playerCityLost(CyPlayer, CyCity, bConquest = True): if CyPlayer.isNPC() or CyPlayer.getNumCities() < 1: return iPlayer = CyPlayer.getID() revIdxChange = (GAME.getGameTurn() - CyCity.getGameTurnAcquired())*100.0/GC.getGameSpeedInfo(GAME.getGameSpeedType()).getAnarchyPercent() revIdxChange += CyCity.getHighestPopulation() revIdxChange *= CyCity.plot().calculateCulturePercent(iPlayer)/100.0 if revIdxChange > 500: revIdxChange = 500 elif revIdxChange < 0: revIdxChange = 0 if revIdxChange > 0: if not bConquest: revIdxChange = revIdxChange/4.0 if CyPlayer.isRebel(): revIdxChange /= 2.0 revIdxChange = int(cityLostModifier*revIdxChange + .5) print " Revolt - Loss of %s by %s (%d bConq): %d rev idx change" %(CyCity.getName(), CyPlayer.getCivilizationDescription(0), bConquest, revIdxChange) CyCityX, i = CyPlayer.firstCity(False) while CyCityX: if not CyCityX.isNone() and CyCityX.getOwner() == iPlayer: CyCityX.changeRevolutionIndex(revIdxChange) revIdxHist = RevData.getCityVal(CyCityX,'RevIdxHistory') revIdxHist['Events'][0] += revIdxChange RevData.updateCityVal(CyCityX, 'RevIdxHistory', revIdxHist) CyCityX, i = CyPlayer.nextCity(i, False)
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) iCityID = pCity.getID() for pListCity in newOwner.cities(): if pListCity.getID() != iCityID: 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 "[REV] 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: eCapitalBuilding = GC.getInfoTypeForString(RevDefs.sXMLPalace) oldCapital = newOwner.getCapitalCity() oldCapital.setNumRealBuilding(eCapitalBuilding, 0) pCity.setNumRealBuilding(eCapitalBuilding, 1) # Ripple effects through other rebellious cities for cityX in GC.getPlayer(oldOwnerID).cities(): reinfCount = cityX.getReinforcementCounter() if reinfCount > 2 and RevData.getCityVal(cityX, 'RevolutionCiv') == newOwner.getCivilizationType(): if reinfCount < 5: reinfCount = 2 else: reinfCount -= 2 print "[REV] Accelerating reinforcement in " + cityX.getName() # Setting below two will turn off reinforcement if reinfCount < 2: reinfCount = 2 cityX.setReinforcementCounter(reinfCount)
def onChangeWar(argsList): if argsList[0]: return # War declarations are of no interest iTeam = argsList[1] iRivalTeam = argsList[2] # Check if this is peaceful end to a revolution onTeamList = [] onTeamCivs = [] onRivalTeamList = [] onRivalTeamCivs = [] for i in xrange(MAX_PC_PLAYERS): pPlayer = GC.getPlayer(i) if pPlayer.isAlive(): if pPlayer.getTeam() == iTeam: # On team declaring peace onTeamList.append(pPlayer) onTeamCivs.append(pPlayer.getCivilizationType()) elif pPlayer.getTeam() == iRivalTeam: # On team accepting peace onRivalTeamList.append(pPlayer) onRivalTeamCivs.append(pPlayer.getCivilizationType()) for pPlayer in onTeamList: for pCity in pPlayer.cities(): revCiv = RevData.getCityVal(pCity, "RevolutionCiv") if (revCiv in onRivalTeamCivs and RevData.getCityVal(pCity, "RevolutionTurn") is not None and GAME.getGameTurn() - RevData.getCityVal(pCity, "RevolutionTurn") < 30 ): # City recently rebelled for civ now at peace localIdx = pCity.getLocalRevIndex() revIdx = pCity.getRevolutionIndex() revCnt = pCity.getNumRevolts(pCity.getOwner()) if LOG_DEBUG: print "[REV] Rebels in %s have agreed to peace (%d, %d, %d)"%(pCity.getName(), revIdx, localIdx, revCnt) iDividend = 20 if localIdx < 0: iDividend += 10 if revIdx > RevOpt.getAlwaysViolentThreshold(): iDividend += 10 if revCnt > 2: # Hardened, stubborn populace iDividend -= 5 changeRevIdx = -revIdx * iDividend / 100 pCity.changeRevolutionIndex(changeRevIdx) pCity.setRevolutionIndex(min([pCity.getRevolutionIndex(),RevOpt.getAlwaysViolentThreshold()])) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal(pCity, 'RevIdxHistory', revIdxHist) pCity.setOccupationTimer(0) if LOG_DEBUG: print "[REV] Rev index in %s decreased to %d (from %d)"%(pCity.getName(), pCity.getRevolutionIndex(), revIdx) GC.getTeam(pPlayer.getTeam()).setRebelAgainst(iRivalTeam, False) for pPlayer in onRivalTeamList: for pCity in pPlayer.cities(): revCiv = RevData.getCityVal( pCity, "RevolutionCiv" ) if (revCiv in onTeamCivs and RevData.getCityVal( pCity, "RevolutionTurn" ) is not None and GAME.getGameTurn() - RevData.getCityVal(pCity, "RevolutionTurn") < 30 ): # City recently rebelled for civ now at peace localIdx = pCity.getLocalRevIndex() revIdx = pCity.getRevolutionIndex() revCnt = pCity.getNumRevolts(pCity.getOwner()) if LOG_DEBUG: print "[REV] Rebels in %s have sued for peace" % pCity.getName() iDividend = 20 if localIdx < 0: iDividend += 10 if revIdx > RevOpt.getAlwaysViolentThreshold(): iDividend += 10 if revCnt > 2: # Hardened, stubborn populace iDividend -= 5 changeRevIdx = -revIdx * iDividend / 100 pCity.changeRevolutionIndex( changeRevIdx ) pCity.setRevolutionIndex(min([pCity.getRevolutionIndex(), RevOpt.getAlwaysViolentThreshold()])) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal(pCity, 'RevIdxHistory', revIdxHist) pCity.setOccupationTimer(0) if LOG_DEBUG: print "[REV] Rev index in %s decreased to %d (from %d)"%(pCity.getName(), pCity.getRevolutionIndex(), revIdx) GC.getTeam(pPlayer.getTeam()).setRebelAgainst(iTeam, False)
def onSetPlayerAlive(argsList): if argsList[1] != False: return iPlayerID = argsList[0] pPlayer = GC.getPlayer(iPlayerID) print '[REV] %s are dead, %d cities lost, %d founded a city'%(pPlayer.getCivilizationDescription(0),pPlayer.getCitiesLost(),pPlayer.isFoundedFirstCity()) # Check if this was a put down revolution for iPlayerX in xrange(MAX_PC_PLAYERS): playerX = GC.getPlayer(iPlayerX) if not playerX.isAlive(): continue for pCity in playerX.cities(): revCiv = RevData.getCityVal(pCity, "RevolutionCiv") revTurn = RevData.getCityVal(pCity, "RevolutionTurn") if revCiv == pPlayer.getCivilizationType() and revTurn > 0: if LOG_DEBUG: print "[REV] The dying %s are the rebel type for %s"%(pPlayer.getCivilizationDescription(0), pCity.getName()) if GC.getTeam(pPlayer.getTeam()).isAtWar(pCity.getTeam()): revIdx = pCity.getRevolutionIndex() localIdx = pCity.getLocalRevIndex() revCnt = pCity.getNumRevolts(iPlayerX) if pCity.getReinforcementCounter() > 0: # Put down while still fresh print "Rev - Revolution put down while still actively revolting" iDividend = 30 if localIdx < 0: iDividend += 10 if revIdx > RevOpt.getAlwaysViolentThreshold(): iDividend += 10 if revCnt > 2: # Hardened, stubborn populace iDividend -= 8 changeRevIdx = -revIdx * iDividend / 100 pCity.changeRevolutionIndex(changeRevIdx) pCity.changeRevRequestAngerTimer(-pCity.getRevRequestAngerTimer()) pCity.setRevolutionIndex(min([pCity.getRevolutionIndex(), RevOpt.getAlwaysViolentThreshold()])) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal(pCity, 'RevIdxHistory', revIdxHist) pCity.setReinforcementCounter(0) pCity.setOccupationTimer(0) if LOG_DEBUG: print "[REV] Rev index in %s decreased to %d (from %d)"%(pCity.getName(), pCity.getRevolutionIndex(), revIdx) elif GAME.getGameTurn() - revTurn < 30: # Put down after a while if LOG_DEBUG: print "[REV] Revolution put down after going dormant" iDividend = 20 if localIdx < 0: if LOG_DEBUG: print "[REV] Local conditions are improving" iDividend += 10 if revIdx > RevOpt.getAlwaysViolentThreshold(): iDividend += 10 if revCnt > 2: # Hardened, stubborn populace iDividend -= 5 changeRevIdx = -revIdx * iDividend / 100 pCity.changeRevolutionIndex(changeRevIdx) pCity.changeRevRequestAngerTimer(-pCity.getRevRequestAngerTimer()) pCity.setRevolutionIndex(min([pCity.getRevolutionIndex(),RevOpt.getAlwaysViolentThreshold()])) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal(pCity, 'RevIdxHistory', revIdxHist) pCity.setOccupationTimer(0) if LOG_DEBUG: print "[REV] Rev index in %s decreased to %d (from %d)"%(pCity.getName(), pCity.getRevolutionIndex(), revIdx) if not pPlayer.isFoundedFirstCity(): # Add +1 for this turn? for turnID in xrange(GAME.getGameTurn()): if pPlayer.getAgricultureHistory(turnID) > 0: print '[REV] Setting founded city to True for failed reincarnation of rebel player %d'%(iPlayerID) pPlayer.setFoundedFirstCity(True) break pTeam = GC.getTeam(pPlayer.getTeam()) if endWarsOnDeath and (pTeam.getNumMembers() == 1 or not pTeam.isAlive()): for idx in xrange(MAX_PC_TEAMS): if idx != pTeam.getID() and not GC.getTeam(idx).isMinorCiv() and pTeam.isAtWar(idx): pTeam.makePeace(idx) if pPlayer.isMinorCiv(): print '[REV] %s were minor civ'%(pPlayer.getCivilizationDescription(0)) pTeam.setIsMinorCiv(False, False) if LOG_DEBUG and pPlayer.isRebel(): print "[REV] %s (%d) is no longer a rebel by death"%(pPlayer.getCivilizationDescription(0), iPlayerID) pPlayer.setIsRebel(False) # Appears to be too late, game is already ending before this popup can take effect if iPlayerID == GAME.getActivePlayer() and GAME.getAIAutoPlay(iPlayerID) == 0: try: GAME.setAIAutoPlay(iPlayerID, 1) #ChangePlayer.changeHumanPopup(True) except: pass
def onChangeWar( argsList ): bIsWar = argsList[0] iTeam = argsList[1] iRivalTeam = argsList[2] if( False and LOG_DEBUG ) : if (bIsWar): strStatus = "declared war" else: strStatus = "declared peace" CvUtil.pyPrint('Team %d has %s on Team %d' %(iTeam, strStatus, iRivalTeam)) if( not bIsWar ) : # Check if this is peaceful end to a revolution onTeamList = list() onTeamCivs = list() onRivalTeamList = list() onRivalTeamCivs = list() for i in xrange(MAX_PC_PLAYERS): pPlayer = GC.getPlayer(i) if( pPlayer.getTeam() == iTeam and pPlayer.isAlive() ) : # On team declaring peace onTeamList.append(pPlayer) onTeamCivs.append(pPlayer.getCivilizationType()) elif( pPlayer.getTeam() == iRivalTeam and pPlayer.isAlive() ) : # On team accepting peace onRivalTeamList.append(pPlayer) onRivalTeamCivs.append(pPlayer.getCivilizationType()) for pPlayer in onTeamList : playerPy = PyPlayer(pPlayer.getID()) cityList = playerPy.getCityList() for city in cityList : pCity = city.GetCy() revCiv = RevData.getCityVal( pCity, "RevolutionCiv" ) if( revCiv in onRivalTeamCivs ) : if( not RevData.getCityVal( pCity, "RevolutionTurn" ) == None ) : if( GAME.getGameTurn() - RevData.getCityVal( pCity, "RevolutionTurn" ) < 30 ) : # City recently rebelled for civ now at peace localIdx = pCity.getLocalRevIndex() revIdx = pCity.getRevolutionIndex() revCnt = pCity.getNumRevolts(pCity.getOwner()) if( LOG_DEBUG ) : CvUtil.pyPrint("Rev - Rebels in %s have agreed to peace (%d, %d, %d)"%(pCity.getName(),revIdx,localIdx,revCnt)) frac = .2 if( localIdx < 0 ) : frac += .1 if( revIdx > RevOpt.getAlwaysViolentThreshold() ) : frac += .1 if( revCnt > 2 ) : # Hardened, stubborn populace frac -= .05 changeRevIdx = -int(frac*revIdx) pCity.changeRevolutionIndex( changeRevIdx ) pCity.setRevolutionIndex( min([pCity.getRevolutionIndex(),RevOpt.getAlwaysViolentThreshold()]) ) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal( pCity, 'RevIdxHistory', revIdxHist ) pCity.setOccupationTimer(0) if( LOG_DEBUG ) : CvUtil.pyPrint("Rev index in %s decreased to %d (from %d)"%(pCity.getName(),pCity.getRevolutionIndex(),revIdx)) GC.getTeam(pPlayer.getTeam()).setRebelAgainst( iRivalTeam, False ) for pPlayer in onRivalTeamList : playerPy = PyPlayer(pPlayer.getID()) cityList = playerPy.getCityList() for city in cityList : pCity = city.GetCy() revCiv = RevData.getCityVal( pCity, "RevolutionCiv" ) if( revCiv in onTeamCivs ) : if( not RevData.getCityVal( pCity, "RevolutionTurn" ) == None ) : if( GAME.getGameTurn() - RevData.getCityVal( pCity, "RevolutionTurn" ) < 30 ) : # City recently rebelled for civ now at peace localIdx = pCity.getLocalRevIndex() revIdx = pCity.getRevolutionIndex() revCnt = pCity.getNumRevolts(pCity.getOwner()) if( LOG_DEBUG ) : CvUtil.pyPrint("Rev - Rebels in %s have sued for peace"%(pCity.getName())) frac = .2 if( localIdx < 0 ) : frac += .1 if( revIdx > RevOpt.getAlwaysViolentThreshold() ) : frac += .1 if( revCnt > 2 ) : # Hardened, stubborn populace frac -= .05 changeRevIdx = -int(frac*revIdx) pCity.changeRevolutionIndex( changeRevIdx ) pCity.setRevolutionIndex( min([pCity.getRevolutionIndex(),RevOpt.getAlwaysViolentThreshold()]) ) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal( pCity, 'RevIdxHistory', revIdxHist ) pCity.setOccupationTimer(0) if( LOG_DEBUG ) : CvUtil.pyPrint("Rev index in %s decreased to %d (from %d)"%(pCity.getName(),pCity.getRevolutionIndex(),revIdx)) GC.getTeam(pPlayer.getTeam()).setRebelAgainst( iTeam, False )
def onSetPlayerAlive( argsList ) : iPlayerID = argsList[0] bNewValue = argsList[1] pPlayer = GC.getPlayer( iPlayerID ) if( bNewValue == False ) : print 'Rev - %s are dead, %d cities lost, %d founded a city'%(pPlayer.getCivilizationDescription(0),pPlayer.getCitiesLost(),pPlayer.isFoundedFirstCity()) # Check if this was a put down revolution for i in xrange(MAX_PC_PLAYERS) : playerI = GC.getPlayer(i) if( playerI.isAlive() and playerI.getNumCities() > 0 ) : playerIPy = PyPlayer( i ) cityList = playerIPy.getCityList() for city in cityList : pCity = city.GetCy() revCiv = RevData.getCityVal( pCity, "RevolutionCiv" ) revTurn = RevData.getCityVal( pCity, "RevolutionTurn" ) if( revCiv == pPlayer.getCivilizationType() and revTurn > 0 ) : if( LOG_DEBUG ) : CvUtil.pyPrint("Rev - The dying %s are the rebel type for %s"%(pPlayer.getCivilizationDescription(0),pCity.getName())) if( GC.getTeam(pPlayer.getTeam()).isAtWar(pCity.getOwner()) ) : revIdx = pCity.getRevolutionIndex() localIdx = pCity.getLocalRevIndex() revCnt = pCity.getNumRevolts(pCity.getOwner()) if( pCity.getReinforcementCounter() > 0 ) : # Put down while still fresh print "Rev - Revolution put down while still actively revolting" frac = .3 if localIdx < 0: frac += .1 if revIdx > RevOpt.getAlwaysViolentThreshold(): frac += .1 if( revCnt > 2 ) : # Hardened, stubborn populace frac -= .08 changeRevIdx = -int(frac*revIdx) pCity.changeRevolutionIndex( changeRevIdx ) pCity.changeRevRequestAngerTimer( -pCity.getRevRequestAngerTimer() ) pCity.setRevolutionIndex( min([pCity.getRevolutionIndex(),RevOpt.getAlwaysViolentThreshold()]) ) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal( pCity, 'RevIdxHistory', revIdxHist ) pCity.setReinforcementCounter( 0 ) pCity.setOccupationTimer(0) if( LOG_DEBUG ) : CvUtil.pyPrint("Rev index in %s decreased to %d (from %d)"%(pCity.getName(),pCity.getRevolutionIndex(),revIdx)) elif( GAME.getGameTurn() - revTurn < 30 ) : # Put down after a while if( LOG_DEBUG ) : CvUtil.pyPrint("Rev - Revolution put down after going dormant") frac = .2 if( localIdx < 0 ) : if( LOG_DEBUG ) : CvUtil.pyPrint("Rev - Local conditions are improving") frac += .1 if( revIdx > RevOpt.getAlwaysViolentThreshold() ) : frac += .1 if( revCnt > 2 ) : # Hardened, stubborn populace frac -= .05 changeRevIdx = -int(frac*revIdx) pCity.changeRevolutionIndex( changeRevIdx ) pCity.changeRevRequestAngerTimer( -pCity.getRevRequestAngerTimer() ) pCity.setRevolutionIndex( min([pCity.getRevolutionIndex(),RevOpt.getAlwaysViolentThreshold()]) ) revIdxHist = RevData.getCityVal(pCity,'RevIdxHistory') revIdxHist['Events'][0] += changeRevIdx RevData.updateCityVal( pCity, 'RevIdxHistory', revIdxHist ) pCity.setOccupationTimer(0) if( LOG_DEBUG ) : CvUtil.pyPrint("Rev index in %s decreased to %d (from %d)"%(pCity.getName(),pCity.getRevolutionIndex(),revIdx)) if( not pPlayer.isFoundedFirstCity() ) : # Add +1 for this turn? for turnID in xrange(0,GAME.getGameTurn()) : if( pPlayer.getAgricultureHistory(turnID) > 0 ) : print 'Rev - Setting founded city to True for failed reincarnation of rebel player %d'%(iPlayerID) pPlayer.setFoundedFirstCity( True ) break pTeam = GC.getTeam(pPlayer.getTeam()) if( endWarsOnDeath ) : if( pTeam.getNumMembers() == 1 or not pTeam.isAlive() ) : for idx in xrange(MAX_PC_TEAMS): if( not idx == pTeam.getID() and not GC.getTeam(idx).isMinorCiv() ) : if( pTeam.isAtWar(idx) ) : pTeam.makePeace(idx) if( pPlayer.isMinorCiv() ) : print 'Rev - %s were minor civ'%(pPlayer.getCivilizationDescription(0)) pTeam.setIsMinorCiv(False, False) if( LOG_DEBUG and pPlayer.isRebel() ) : CvUtil.pyPrint("Rev - %s (%d) is no longer a rebel by death"%(pPlayer.getCivilizationDescription(0),pPlayer.getID())) pPlayer.setIsRebel( False ) #------------------------------------------------------------------------------------------------- # Lemmy101 RevolutionMP edit #------------------------------------------------------------------------------------------------- # Appears to be too late, game is already ending before this popup can take effect if( iPlayerID == GAME.getActivePlayer() and GAME.getAIAutoPlay(iPlayerID) == 0 ) : try : GAME.setAIAutoPlay(iPlayerID, 1) #------------------------------------------------------------------------------------------------- # END Lemmy101 RevolutionMP edit #------------------------------------------------------------------------------------------------- #ChangePlayer.changeHumanPopup( True ) except : pass