## Sid Meier's Civilization 4
## Copyright Firaxis Games 2006
##
## CvEventManager
## This class is passed an argsList from CvAppInterface.onEvent
## The argsList can contain anything from mouse location to key info
## The EVENTLIST that are being notified can be found
from CvPythonExtensions import *
import CvUtil
import CvScreensInterface
import CvDebugTools
import CvWBPopups
import PyHelpers
import Popup as PyPopup
import CvCameraControls
import CvTopCivs
import sys
import CvWorldBuilderScreen
import CvAdvisorUtils
import CvTechChooser
import pickle
# BUG - Next War Merge - start
import SdToolkit
SD_MOD_ID = "NextWar"
SD_NUKES_ID = "NumNukes"
# BUG - Next War Merge - end
gc = CyGlobalContext()
localText = CyTranslator()
PyPlayer = PyHelpers.PyPlayer
PyInfo = PyHelpers.PyInfo
# globals
###################################################
g_iNumNukesWarningMessage = 7
g_iNumNukesGameOver = 20
class DiplomacyEventManager:
def __init__(self, [COLOR=Red]eventmanager[/COLOR]):
[COLOR="Green"]eventManager.addEventHandler("OnLoad", self.onLoadGame)[/COLOR]
#################### ON EVENT MAP ######################
#print "EVENTMANAGER INIT"
self.bCtrl = False
self.bShift = False
self.bAlt = False
self.bAllowCheats = False
# OnEvent Enums
self.EventLButtonDown=1
self.EventLcButtonDblClick=2
self.EventRButtonDown=3
self.EventBack=4
self.EventForward=5
self.EventKeyDown=6
self.EventKeyUp=7
self.__LOG_MOVEMENT = 0
self.__LOG_BUILDING = 0
self.__LOG_COMBAT = 0
self.__LOG_CONTACT = 0
self.__LOG_IMPROVEMENT =0
self.__LOG_CITYLOST = 0
self.__LOG_CITYBUILDING = 0
self.__LOG_TECH = 0
self.__LOG_UNITBUILD = 0
self.__LOG_UNITKILLED = 1
self.__LOG_UNITLOST = 0
self.__LOG_UNITPROMOTED = 0
self.__LOG_UNITSELECTED = 0
self.__LOG_UNITPILLAGE = 0
self.__LOG_GOODYRECEIVED = 0
self.__LOG_GREATPERSON = 0
self.__LOG_RELIGION = 0
self.__LOG_RELIGIONSPREAD = 0
self.__LOG_GOLDENAGE = 0
self.__LOG_ENDGOLDENAGE = 0
self.__LOG_WARPEACE = 0
self.__LOG_PUSH_MISSION = 0
###circus hagenbeck start part 1
self.oldcity = [-1,-1]
###circus hagenbeck end part 1
# Next War tracks cities that have been razed
self.iArcologyCityID = -1
## EVENTLIST
self.EventHandlerMap = {
'mouseEvent' : self.onMouseEvent,
'kbdEvent' : self.onKbdEvent,
'ModNetMessage' : self.onModNetMessage,
'Init' : self.onInit,
'Update' : self.onUpdate,
'UnInit' : self.onUnInit,
'OnSave' : self.onSaveGame,
'OnPreSave' : self.onPreSave,
'OnLoad' : self.onLoadGame,
'GameStart' : self.onGameStart,
'GameEnd' : self.onGameEnd,
'plotRevealed' : self.onPlotRevealed,
'plotFeatureRemoved' : self.onPlotFeatureRemoved,
'plotPicked' : self.onPlotPicked,
'nukeExplosion' : self.onNukeExplosion,
'gotoPlotSet' : self.onGotoPlotSet,
'BeginGameTurn' : self.onBeginGameTurn,
'EndGameTurn' : self.onEndGameTurn,
'BeginPlayerTurn' : self.onBeginPlayerTurn,
'EndPlayerTurn' : self.onEndPlayerTurn,
'endTurnReady' : self.onEndTurnReady,
'combatResult' : self.onCombatResult,
'combatLogCalc' : self.onCombatLogCalc,
'combatLogHit' : self.onCombatLogHit,
'improvementBuilt' : self.onImprovementBuilt,
'improvementDestroyed' : self.onImprovementDestroyed,
'routeBuilt' : self.onRouteBuilt,
'firstContact' : self.onFirstContact,
'cityBuilt' : self.onCityBuilt,
'cityRazed' : self.onCityRazed,
'cityAcquired' : self.onCityAcquired,
'cityAcquiredAndKept' : self.onCityAcquiredAndKept,
'cityLost' : self.onCityLost,
'cultureExpansion' : self.onCultureExpansion,
'cityGrowth' : self.onCityGrowth,
'cityDoTurn' : self.onCityDoTurn,
'cityBuildingUnit' : self.onCityBuildingUnit,
'cityBuildingBuilding' : self.onCityBuildingBuilding,
'cityRename' : self.onCityRename,
'cityHurry' : self.onCityHurry,
'selectionGroupPushMission' : self.onSelectionGroupPushMission,
'unitMove' : self.onUnitMove,
'unitSetXY' : self.onUnitSetXY,
'unitCreated' : self.onUnitCreated,
'unitBuilt' : self.onUnitBuilt,
'unitKilled' : self.onUnitKilled,
'unitLost' : self.onUnitLost,
'unitPromoted' : self.onUnitPromoted,
'unitSelected' : self.onUnitSelected,
'UnitRename' : self.onUnitRename,
'unitPillage' : self.onUnitPillage,
'unitSpreadReligionAttempt' : self.onUnitSpreadReligionAttempt,
'unitGifted' : self.onUnitGifted,
'unitBuildImprovement' : self.onUnitBuildImprovement,
'goodyReceived' : self.onGoodyReceived,
'greatPersonBorn' : self.onGreatPersonBorn,
'buildingBuilt' : self.onBuildingBuilt,
'projectBuilt' : self.onProjectBuilt,
'techAcquired' : self.onTechAcquired,
'techSelected' : self.onTechSelected,
'religionFounded' : self.onReligionFounded,
'religionSpread' : self.onReligionSpread,
'religionRemove' : self.onReligionRemove,
'corporationFounded' : self.onCorporationFounded,
'corporationSpread' : self.onCorporationSpread,
'corporationRemove' : self.onCorporationRemove,
'goldenAge' : self.onGoldenAge,
'endGoldenAge' : self.onEndGoldenAge,
'chat' : self.onChat,
'victory' : self.onVictory,
'vassalState' : self.onVassalState,
'changeWar' : self.onChangeWar,
'setPlayerAlive' : self.onSetPlayerAlive,
'playerChangeStateReligion' : self.onPlayerChangeStateReligion,
'playerGoldTrade' : self.onPlayerGoldTrade,
'windowActivation' : self.onWindowActivation,
'gameUpdate' : self.onGameUpdate, # sample generic event
}
################## Events List ###############################
#
# Dictionary of Events, indexed by EventID (also used at popup context id)
# entries have name, beginFunction, applyFunction [, randomization weight...]
#
# Normal events first, random events after
#
################## Events List ###############################
self.Events={
CvUtil.EventEditCityName : ('EditCityName', self.__eventEditCityNameApply, self.__eventEditCityNameBegin),
CvUtil.EventEditCity : ('EditCity', self.__eventEditCityApply, self.__eventEditCityBegin),
CvUtil.EventPlaceObject : ('PlaceObject', self.__eventPlaceObjectApply, self.__eventPlaceObjectBegin),
CvUtil.EventAwardTechsAndGold: ('AwardTechsAndGold', self.__eventAwardTechsAndGoldApply, self.__eventAwardTechsAndGoldBegin),
CvUtil.EventEditUnitName : ('EditUnitName', self.__eventEditUnitNameApply, self.__eventEditUnitNameBegin),
CvUtil.EventWBAllPlotsPopup : ('WBAllPlotsPopup', self.__eventWBAllPlotsPopupApply, self.__eventWBAllPlotsPopupBegin),
CvUtil.EventWBLandmarkPopup : ('WBLandmarkPopup', self.__eventWBLandmarkPopupApply, self.__eventWBLandmarkPopupBegin),
CvUtil.EventWBScriptPopup : ('WBScriptPopup', self.__eventWBScriptPopupApply, self.__eventWBScriptPopupBegin),
CvUtil.EventWBStartYearPopup : ('WBStartYearPopup', self.__eventWBStartYearPopupApply, self.__eventWBStartYearPopupBegin),
CvUtil.EventShowWonder: ('ShowWonder', self.__eventShowWonderApply, self.__eventShowWonderBegin),
}
[COLOR=Blue]
[/COLOR][COLOR=Blue]def onLoadGame(self, argsList):[/COLOR]
CvAdvisorUtils.resetNoLiberateCities()
# BUG - Next War Merge - start
# convert old script data list to SdToolkit for old saves
data = gc.getGame().getScriptData()
if isinstance(data, list):
CvUtil.pyPrint('converting script data: %s' % data)
iNukes = list[0]
gc.getGame().setScriptData("")
SdToolkit.sdSetGlobal(SD_MOD_ID, SD_NUKES_ID, iNukes)
# BUG - Next War Merge - end
return 0
[COLOR=Blue] def onGameStart(self, argsList):[/COLOR]
'Called at the start of the game'
self.initScriptData()
### circus hagenbeck start part 2
if (gc.getGame().getGameTurnYear() <> gc.getDefineINT("START_YEAR")):
for iPlayer in range (gc.getMAX_PLAYERS()):
player = gc.getPlayer(iPlayer)
if player.isAlive():
numbuildings = player.countNumBuildings(gc.getInfoTypeForString("BUILDING_CIRCUS_HAGENBECK"))
if numbuildings>0:
for iCity in range(player.getNumCities()):
pCity = player.getCity(iCity)
if pCity.getNumBuilding(gc.getInfoTypeForString("BUILDING_CIRCUS_HAGENBECK"))>0:
self.oldcity = [iPlayer,iCity]
return
###circus hagenbeck end part 2
# Are we using the scenario file? If so, then show the backstory popup
if (CyMap().plot(0,0).getScriptData() == "Scenario"):
for iPlayer in range(gc.getMAX_PLAYERS()):
player = gc.getPlayer(iPlayer)
if (player.isAlive() and player.isHuman()):
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_TEXT)
szTitle = u"<font=4b>" + localText.getText("TXT_KEY_NEXT_WAR_BACKSTORY_TITLE", ()) + u"</font>"
szBody = u"<font=3>" + localText.getText("TXT_KEY_NEXT_WAR_BACKSTORY_TEXT", ()) + u"</font>"
popupInfo.setText(szTitle + u"\n\n" + szBody)
popupInfo.addPopup(iPlayer)
if (gc.getGame().getGameTurnYear() == gc.getDefineINT("START_YEAR") and not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ADVANCED_START)):
for iPlayer in range(gc.getMAX_PLAYERS()):
player = gc.getPlayer(iPlayer)
if (player.isAlive() and player.isHuman()):
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
popupInfo.setText(u"showDawnOfMan")
popupInfo.addPopup(iPlayer)
else:
CyInterface().setSoundSelectionReady(true)
if gc.getGame().isPbem():
for iPlayer in range(gc.getMAX_PLAYERS()):
player = gc.getPlayer(iPlayer)
if (player.isAlive() and player.isHuman()):
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_DETAILS)
popupInfo.setOption1(true)
popupInfo.addPopup(iPlayer)
CvAdvisorUtils.resetNoLiberateCities()
[COLOR=Blue] def onBeginGameTurn(self, argsList):[/COLOR]
'Called at the beginning of the end of each turn'
iGameTurn = argsList[0]
###circus hagenbeck start part 3
if (CyGame().getTurnYear(iGameTurn)>=1890) and ( iGameTurn % 3 ==0 ):
counter = 0
while True:
counter = counter+1
if counter>=100:break
dice = gc.getGame().getMapRand()
iPlayer = dice.get(gc.getMAX_PLAYERS (), "Players")
pPlayer = gc.getPlayer(iPlayer)
if pPlayer.isNone():continue
if pPlayer.isAlive():
iCity = dice.get(pPlayer.getNumCities () , "Cities" )
pCity = pPlayer.getCity(iCity)
if pCity.isNone():continue
pCity.setNumRealBuilding(gc.getInfoTypeForString("BUILDING_CIRCUSHAGENBECK"),1)
CyInterface().addMessage(iPlayer,false,20,CyTranslator().getText("TXT_KEY_CIRCUS_MOVED",(pCity.getName (),pCity.getName ())),'',0,'Art/Interface/Buttons/General/happy_person.dds',ColorTypes(gc.getInfoTypeForString("COLOR_GREEN")), pCity.getX(), pCity.getY(), True,True)
if self.oldcity <>[-1,-1]:
otherplayer = gc.getPlayer(self.oldcity[0])
othercity = otherplayer.getCity(self.oldcity[1])
if not othercity.isNone():
othercity.setNumRealBuilding(gc.getInfoTypeForString("BUILDING_CIRCUSHAGENBECK"),0)
CyInterface().addMessage(self.oldcity[0],false,20,CyTranslator().getText("TXT_KEY_CIRCUS_LOST",(othercity.getName (),othercity.getName ())),'',0,'Art/Interface/Buttons/General/warning_popup.dds',ColorTypes(gc.getInfoTypeForString("COLOR_RED")), othercity.getX(), othercity.getY(), True,True)
self.oldcity = [iPlayer,iCity]
break
###circus hagenbeck end part 3
CvTopCivs.CvTopCivs().turnChecker(iGameTurn)
if (CyMap().plot(0,0).getScriptData() == "Scenario"):
if iGameTurn!=0:
if iGameTurn%2 == 0:
self.doCheckDepletion()
[COLOR=Blue] def onCityRazed(self, argsList):[/COLOR]
'City Razed'
city, iPlayer = argsList
iOwner = city.findHighestCulture()
# 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)
#Raze the Arcology
owner = PyPlayer(city.getOwner())
razor = PyPlayer(iPlayer)
self.iArcologyCityID = -1
if city.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_ARCOLOGY")) or city.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_ARCOLOGY_SHIELDING")) or city.getNumRealBuilding(gc.getInfoTypeForString("BUILDING_DEFLECTOR_SHIELDING")):
self.iArcologyCityID = city.getID()
CvUtil.pyPrint('Player %d Civilization %s City %s was razed by Player %d'
%(owner.getID(), owner.getCivilizationName(), city.getName(), razor.getID()))
CvUtil.pyPrint("City Razed Event: %s" %(city.getName(),))
[COLOR="Blue"] def onCityDoTurn(self, argsList):[/COLOR]
'City Production'
pCity = argsList[0]
iPlayer = argsList[1]
# no anger defying UN resolutions start #
iGovernmentCivicOption = CvUtil.findInfoTypeNum(gc.getCivicOptionInfo,gc.getNumCivicOptionInfos(),'CIVICOPTION_GOVERNMENT')
iPoliceState = CvUtil.findInfoTypeNum(gc.getCivicInfo,gc.getNumCivicInfos(),'CIVIC_POLICE_STATE')
pPlayer = gc.getPlayer(iPlayer)
iGovernmentCivic = pPlayer.getCivics(iGovernmentCivicOption)
if (iGovernmentCivic == iPoliceState):
pCity.changeDefyResolutionAngerTimer(pCity.getDefyResolutionAngerTimer())
# no anger defying UN resolutions end #
CvAdvisorUtils.cityAdvise(pCity, iPlayer)
####### Next War Functions ######
## Added Fort to doCheckDepletion -- otherwise bonuses worked via forts would never be subject to resource depletion. JKP
[COLOR=Blue] def doCheckDepletion(self):[/COLOR]
self.doCheckWorkedResource("BONUS_ALUMINUM", "IMPROVEMENT_MINE", 880)
self.doCheckWorkedResource("BONUS_ALUMINUM", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_BANANA", "IMPROVEMENT_PLANTATION", 1120)
self.doCheckWorkedResource("BONUS_BANANA", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_CLAM", "IMPROVEMENT_FISHING_BOATS", 880)
self.doCheckWorkedResource("BONUS_COAL", "IMPROVEMENT_MINE", 880)
self.doCheckWorkedResource("BONUS_COAL", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_COPPER", "IMPROVEMENT_MINE", 880)
self.doCheckWorkedResource("BONUS_COPPER", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_CORN", "IMPROVEMENT_FARM", 1120)
self.doCheckWorkedResource("BONUS_CORN", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_COW", "IMPROVEMENT_PASTURE", 1120)
self.doCheckWorkedResource("BONUS_COW", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_CRAB", "IMPROVEMENT_FISHING_BOATS", 1120)
self.doCheckWorkedResource("BONUS_DEER", "IMPROVEMENT_CAMP", 780)
self.doCheckWorkedResource("BONUS_DEER", "IMPROVEMENT_FORT", 780)
self.doCheckWorkedResource("BONUS_DYE", "IMPROVEMENT_PLANTATION", 1120)
self.doCheckWorkedResource("BONUS_DYE", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_FISH", "IMPROVEMENT_FISHING_BOATS", 880)
self.doCheckWorkedResource("BONUS_FUR", "IMPROVEMENT_CAMP", 560)
self.doCheckWorkedResource("BONUS_FUR", "IMPROVEMENT_FORT", 560)
self.doCheckWorkedResource("BONUS_GEMS", "IMPROVEMENT_MINE", 1120)
self.doCheckWorkedResource("BONUS_GEMS", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_GOLD", "IMPROVEMENT_MINE", 880)
self.doCheckWorkedResource("BONUS_GOLD", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_HORSE", "IMPROVEMENT_PASTURE", 1120)
self.doCheckWorkedResource("BONUS_HORSE", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_IRON", "IMPROVEMENT_MINE", 880)
self.doCheckWorkedResource("BONUS_IRON", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_IVORY", "IMPROVEMENT_CAMP", 560)
self.doCheckWorkedResource("BONUS_IVORY", "IMPROVEMENT_FORT", 560)
self.doCheckWorkedResource("BONUS_MARBLE", "IMPROVEMENT_QUARRY", 750)
self.doCheckWorkedResource("BONUS_MARBLE", "IMPROVEMENT_FORT", 750)
self.doCheckWorkedResource("BONUS_OIL", "IMPROVEMENT_WELL", 880)
self.doCheckWorkedResource("BONUS_OIL", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_OIL", "IMPROVEMENT_OFFSHORE_PLATFORM", 880)
self.doCheckWorkedResource("BONUS_PIG", "IMPROVEMENT_PASTURE", 1120)
self.doCheckWorkedResource("BONUS_PIG", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_RICE", "IMPROVEMENT_FARM", 1120)
self.doCheckWorkedResource("BONUS_RICE", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_SILK", "IMPROVEMENT_PLANTATION", 1120)
self.doCheckWorkedResource("BONUS_SILK", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_SILVER", "IMPROVEMENT_MINE", 880)
self.doCheckWorkedResource("BONUS_SILVER", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_SPICES", "IMPROVEMENT_PLANTATION", 1120)
self.doCheckWorkedResource("BONUS_SPICES", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_STONE", "IMPROVEMENT_QUARRY", 750)
self.doCheckWorkedResource("BONUS_STONE", "IMPROVEMENT_FORT", 750)
self.doCheckWorkedResource("BONUS_SUGAR", "IMPROVEMENT_PLANTATION", 1120)
self.doCheckWorkedResource("BONUS_SUGAR", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_URANIUM", "IMPROVEMENT_MINE", 880)
self.doCheckWorkedResource("BONUS_URANIUM", "IMPROVEMENT_FORT", 880)
self.doCheckWorkedResource("BONUS_WHALE", "IMPROVEMENT_WHALING_BOATS", 560)
self.doCheckWorkedResource("BONUS_WHEAT", "IMPROVEMENT_FARM", 1120)
self.doCheckWorkedResource("BONUS_WHEAT", "IMPROVEMENT_FORT", 1120)
self.doCheckWorkedResource("BONUS_WINE", "IMPROVEMENT_WINERY", 1120)
self.doCheckWorkedResource("BONUS_WINE", "IMPROVEMENT_FORT", 1120)
def doCheckWorkedResource(self, bonus, improvement, randomInt):
iBonus = CvUtil.findInfoTypeNum(gc.getBonusInfo, gc.getNumBonusInfos(), bonus)
if (iBonus == -1):
return
lValidPlots = self.getPlotListbyBonus(iBonus)
if len(lValidPlots) == 0:
return
##If you have the requisite improvement (incl. fort) or if the plot is being worked by a City, continue.
for plot in lValidPlots:
P = False
if plot.getImprovementType() == CvUtil.findInfoTypeNum(gc.getImprovementInfo, gc.getNumImprovementInfos(), improvement):
P = True
elif plot.isCity():
P = True
if P == True:
if self.getRandomNumber(randomInt) == 0:
pBonusInfo = gc.getBonusInfo(iBonus)
plot.setBonusType(-1)
szTitle = localText.getText("TEXT_KEY_NEXT_WAR_RESOURCE_DEPLETED_TITLE", ())# (pBonusInfo.getDescription(), plotgetX(), plot.getY()))
#szText = localText.getText("TEXT_KEY_NEXT_WAR_RESOURCE_DEPLETED", (pBonusInfo.getDescription(), plot.getX(), plot.getY()))
#Not sure what the above commented out code for (debugging?) -- it was commented out in PM's original NextWar code. JKP1187
CyInterface().addMessage(plot.getOwner(), False, gc.getEVENT_MESSAGE_TIME(), szTitle, "AS2D_DISCOVERBONUS", InterfaceMessageTypes.MESSAGE_TYPE_MINOR_EVENT, pBonusInfo.getButton(), gc.getInfoTypeForString("COLOR_GREEN"), plot.getX(), plot.getY(), True, True)
else:
return
### Below are additional functions necessary to the activity of the resource depl'n code:
[COLOR=Blue] def getPlotListbyBonus(self, iBonus):[/COLOR]
lPlots = []
totalPlots = gc.getMap().numPlots()
for i in range(totalPlots):
plot = gc.getMap().plotByIndex(i)
iOwner = plot.getOwner()
if (iOwner != -1):
if plot.getBonusType(gc.getPlayer(iOwner).getTeam()) == iBonus:
lPlots.append(plot)
return lPlots
[COLOR=Blue]def getRandomNumber(self, int):[/COLOR]
return gc.getGame().getSorenRandNum(int, "Next War")
# BUG - Next War Merge - start
[COLOR=Blue] def initScriptData(self):[/COLOR]
# Set default script data manually since we need defaults for all values in the array before any functions can be called on them
iDefaultNumNukesFired = 0
SdToolkit.sdSetGlobal(SD_MOD_ID, SD_NUKES_ID, iDefaultNumNukesFired)
[COLOR=Blue] def getGameNumNukes(self):[/COLOR]
return SdToolkit.sdGetGlobal(SD_MOD_ID, SD_NUKES_ID)
[COLOR=Blue] def setGameNumNukes(self, iValue):[/COLOR]
SdToolkit.sdSetGlobal(SD_MOD_ID, SD_NUKES_ID, iValue)
self.checkNukeStuff(iValue)
[COLOR=Blue]def changeGameNumNukes(self, iChange):[/COLOR]
self.setGameNumNukes(self.getGameNumNukes() + iChange)
# BUG - Next War Merge - end