Shiggs713
Immortal
I'm trying to recreate the score victory how it is in the Rise of Rome mod that came with Warlords. I got everything to load up, I don't get any python exceptions or crashes or anything like that, but its just not doing anything. I must be missing something or have overlooked something so here is what I've done so far.
in BugEventManager.py (my main one)
then over in my AmericanCivilWarEventManager I have this;
this is basically the pieces of the RiseOfRomeEventManager that I thought I needed, and edited to my needs. There are new improvements and resources to provide the said victory points, and they are on the plots I have listed. There may be a problem with that initial if statement for onGameStart, I'm not sure but just so you know, I'm using calendar_weeks, and the game turn is 8 on game start, with a game year of 1861, so that it starts: Week 1, March 1861. Its scenario only.
Also the points are not setting to zero for everyone at gamestart like I want them to.
and the cvRiseOfRomeGameUtils
I know thats screwball having cvRiseofRomeGameUtil and AmericanCivilWarEventManager importing each other, but thats how RoR was so thats how I put it. I guess I could change cvRiseofRomeGameUtil to cvACWGameUtil but I didn't think it would make a difference really. I also have a feeling I may need to merge cvRiseofRomeGameUtil.py into the bugGameUtil maybe. Thanks for any help,
Shiggs
in BugEventManager.py (my main one)
Code:
...
import InputUtil
import types
import MongolCamp
import WinterModEventManager
[COLOR="Blue"]import AmericanCivilWarEventManager[/COLOR]
# BUG - Mac Support - start
BugUtil.fixSets(globals())
...
Code:
...
# --> INSERT EVENT HANDLER INITIALIZATION HERE <--
MongolCamp.MongolCamp(self)
WinterModEventManager.WinterModEventManager(self)
[COLOR="Blue"]AmericanCivilWarEventManager.AmericanCivilWarEventManager(self)[/COLOR]
# add new core events; see unused sample handlers below for argument lists
self.addEvent("PreGameStart")
self.addEvent("BeginActivePlayerTurn")
...
then over in my AmericanCivilWarEventManager I have this;
Code:
# American Civil War
# Civilization 4 (c) 2005 Firaxis Games
from CvPythonExtensions import *
import CvUtil
import CvRiseOfRomeGameUtils
import CvAdvisorUtils
import CvScreensInterface
import CvWBPopups
import pickle
import PyHelpers
import Popup as PyPopup
import CvTopCivs
import sys
gc = CyGlobalContext()
localText = CyTranslator()
PyPlayer = PyHelpers.PyPlayer
PyInfo = PyHelpers.PyInfo
# globals
###################################################
class AmericanCivilWarEventManager:
def __init__(self, eventManager):
eventManager.addEventHandler("BeginGameTurn", self.onGameStart)
#self.gameUtils = CvGameUtils.CvGameUtils()
# private
# Boolean
def onGameStart(self, argsList):
'Called at the start of the game'
if (gc.getGame().getGameTurnYear() == gc.getDefineINT("START_YEAR")):
for iPlayer in range(gc.getMAX_PLAYERS()):
player = gc.getPlayer(iPlayer)
if (player.isAlive() and player.isHuman()):
if player.getCivilizationType() == CvUtil.findInfoTypeNum(gc.getCivilizationInfo,gc.getNumCivilizationInfos(),"CIVILIZATION_AMERICA"):
self.__doClearPlot(83,54)
if player.getCivilizationType() == CvUtil.findInfoTypeNum(gc.getCivilizationInfo,gc.getNumCivilizationInfos(),"CIVILIZATION_CONFEDERATES"):
self.__doClearPlot(77,41)
if player.getCivilizationType() == CvUtil.findInfoTypeNum(gc.getCivilizationInfo,gc.getNumCivilizationInfos(),"CIVILIZATION_MEXICO"):
self.__doClearPlot(32,15)
if player.getCivilizationType() == CvUtil.findInfoTypeNum(gc.getCivilizationInfo,gc.getNumCivilizationInfos(),"CIVILIZATION_ENGLAND"):
self.__doClearPlot(81,67)
if player.getCivilizationType() == CvUtil.findInfoTypeNum(gc.getCivilizationInfo,gc.getNumCivilizationInfos(),"CIVILIZATION_FRANCE"):
self.__doClearPlot(59,15)
if player.getCivilizationType() == CvUtil.findInfoTypeNum(gc.getCivilizationInfo,gc.getNumCivilizationInfos(),"CIVILIZATION_SPAIN"):
self.__doClearPlot(87,19)
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
popupInfo.setText(u"showDawnOfMan")
popupInfo.addPopup(iPlayer)
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)
if gc.getGame().isGameMultiPlayer():
self.__doClearPlot(26,23)
self.__doClearPlot(13,39)
self.__doClearPlot(23,10)
self.__doClearPlot(52,3)
self.__doClearPlot(41,18)
for i in range(8):
self.setPlayerScore(i, 0)
def onBeginPlayerTurn(self, argsList):
'Called at the beginning of a players turn'
iGameTurn, iPlayer = argsList
if iPlayer == 0 and iGameTurn == 9:
if not (gc.getGame().isGameMultiPlayer()):
self.doPopup("TXT_KEY_ROR_SCORING_POPUP")
def onEndPlayerTurn(self, argsList):
'Called at the end of a players turn'
iGameTurn, iPlayer = argsList
pyPlayer = gc.getPlayer(iPlayer)
if pyPlayer.getScriptData == "":
self.setPlayerScore(iPlayer, 0)
score = self.getPlayerScore(iPlayer)
if pyPlayer.getCapitalCity().hasBonus(CvUtil.findInfoTypeNum(gc.getBonusInfo, gc.getNumBonusInfos(),"BONUS_VICTORY_UNION")):
score = score + 10
if pyPlayer.getCapitalCity().hasBonus(CvUtil.findInfoTypeNum(gc.getBonusInfo, gc.getNumBonusInfos(),"BONUS_VICTORY_CONFEDERATE")):
score = score + 10
if pyPlayer.getCapitalCity().hasBonus(CvUtil.findInfoTypeNum(gc.getBonusInfo, gc.getNumBonusInfos(),"BONUS_VICTORY_BRITISH")):
score = score + 10
if pyPlayer.getCapitalCity().hasBonus(CvUtil.findInfoTypeNum(gc.getBonusInfo, gc.getNumBonusInfos(),"BONUS_VICTORY_FRENCH")):
score = score + 10
if pyPlayer.getCapitalCity().hasBonus(CvUtil.findInfoTypeNum(gc.getBonusInfo, gc.getNumBonusInfos(),"BONUS_VICTORY_MEXICAN")):
score = score + 10
if pyPlayer.getCapitalCity().hasBonus(CvUtil.findInfoTypeNum(gc.getBonusInfo, gc.getNumBonusInfos(),"BONUS_VICTORY_SPANISH")):
score = score + 10
self.setPlayerScore(iPlayer, score)
if (gc.getGame().getElapsedGameTurns() == 1):
if (gc.getPlayer(iPlayer).isHuman()):
if (gc.getPlayer(iPlayer).canRevolution(0)):
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_CHANGECIVIC)
popupInfo.addPopup(iPlayer)
CvAdvisorUtils.resetAdvisorNags()
CvAdvisorUtils.endTurnFeats(iPlayer)
def __doClearPlot(self, x, y):
gc.getMap().plot(x, y).setBonusType(-1)
gc.getMap().plot(x, y).setImprovementType(-1)
def doPopup(self, text):
popup = PyPopup.PyPopup()
popup.setBodyString(localText.getText(text, ()))
popup.launch()
#################### TRIGGERED EVENTS ##################
def getPlayerScore(self, iPlayer):
pPlayer = gc.getPlayer(iPlayer)
if (pPlayer.getScriptData() == ""):
return 0
# Load Script Data - Score
szScriptData = pickle.loads(pPlayer.getScriptData())
iScore = szScriptData[0]
return iScore
def setPlayerScore(self, iPlayer, iValue):
pPlayer = gc.getPlayer(iPlayer)
szScriptData=[0]
# Save Script Data - Score
szScriptData[0] = iValue
pPlayer.setScriptData(pickle.dumps(szScriptData))
def calculateScore(self,argsList):
ePlayer = argsList[0]
bFinal = argsList[1]
bVictory = argsList[2]
pyPlayer = gc.getPlayer(ePlayer)
print("pyPlayer.getScriptData()")
print(pyPlayer.getScriptData())
if (pyPlayer.getScriptData() == ""):
setPlayerScore(ePlayer, 0)
if gc.getGame().isGameMultiPlayer():
iPopulationScore = CvUtil.getScoreComponent(gc.getPlayer(ePlayer).getPopScore(), gc.getGame().getInitPopulation(), gc.getGame().getMaxPopulation(), gc.getDefineINT("SCORE_POPULATION_FACTOR"), True, bFinal, bVictory)
iLandScore = CvUtil.getScoreComponent(gc.getPlayer(ePlayer).getLandScore(), gc.getGame().getInitLand(), gc.getGame().getMaxLand(), gc.getDefineINT("SCORE_LAND_FACTOR"), True, bFinal, bVictory)
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)
return int(iPopulationScore + iLandScore + iWondersScore + iTechScore)
else:
iSinglePlayerScore = getPlayerScore(ePlayer)
return iSinglePlayerScore
Also the points are not setting to zero for everyone at gamestart like I want them to.
and the cvRiseOfRomeGameUtils
Code:
## Sid Meier's Civilization 4
## Copyright Firaxis Games 2005
##
## Implementaion of miscellaneous game functions
import CvUtil
import AmericanCivilWarEventManager
import CvEventManager
import CvScreensInterface
from CvPythonExtensions import *
import CvWBPopups
import PyHelpers
import Popup as PyPopup
import CvCameraControls
import CvTopCivs
import sys
# globals
gc = CyGlobalContext()
class CvGameUtils:
"Miscellaneous game functions"
def __init__(self):
return
def isVictoryTest(self):
if ( gc.getGame().getElapsedGameTurns() > 10 ):
return True
else:
return False
def isPlayerResearch(self, argsList):
ePlayer = argsList[0]
return True
def getExtraCost(self, argsList):
ePlayer = argsList[0]
return 0
def createBarbarianCities(self):
return False
def createBarbarianUnits(self):
return False
def skipResearchPopup(self,argsList):
ePlayer = argsList[0]
return False
def showTechChooserButton(self,argsList):
ePlayer = argsList[0]
return True
def getFirstRecommendedTech(self,argsList):
ePlayer = argsList[0]
return TechTypes.NO_TECH
def getSecondRecommendedTech(self,argsList):
ePlayer = argsList[0]
eFirstTech = argsList[1]
return TechTypes.NO_TECH
def skipProductionPopup(self,argsList):
pCity = argsList[0]
return False
def showExamineCityButton(self,argsList):
pCity = argsList[0]
return True
def getRecommendedUnit(self,argsList):
pCity = argsList[0]
return UnitTypes.NO_UNIT
def getRecommendedBuilding(self,argsList):
pCity = argsList[0]
return BuildingTypes.NO_BUILDING
def updateColoredPlots(self):
return False
def isActionRecommended(self,argsList):
pUnit = argsList[0]
iAction = argsList[1]
return False
def cannotHandleAction(self,argsList):
pPlot = argsList[0]
iAction = argsList[1]
bTestVisible = argsList[2]
return False
def cannotSelectionListMove(self,argsList):
pPlot = argsList[0]
bAlt = argsList[1]
bShift = argsList[2]
bCtrl = argsList[3]
return False
def cannotSelectionListGameNetMessage(self,argsList):
eMessage = argsList[0]
iData2 = argsList[1]
iData3 = argsList[2]
iData4 = argsList[3]
iFlags = argsList[4]
bAlt = argsList[5]
bShift = argsList[6]
return False
def cannotDoControl(self,argsList):
eControl = argsList[0]
return False
def canResearch(self,argsList):
ePlayer = argsList[0]
eTech = argsList[1]
bTrade = argsList[2]
return False
def cannotResearch(self,argsList):
ePlayer = argsList[0]
eTech = argsList[1]
bTrade = argsList[2]
return False
def canDoCivic(self,argsList):
ePlayer = argsList[0]
eCivic = argsList[1]
return False
def cannotDoCivic(self,argsList):
ePlayer = argsList[0]
eCivic = argsList[1]
return False
def canTrain(self,argsList):
pCity = argsList[0]
eUnit = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
return False
def cannotTrain(self,argsList):
pCity = argsList[0]
eUnit = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
return False
def canConstruct(self,argsList):
pCity = argsList[0]
eBuilding = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
bIgnoreCost = argsList[4]
return False
def cannotConstruct(self,argsList):
pCity = argsList[0]
eBuilding = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
bIgnoreCost = argsList[4]
return False
def canCreate(self,argsList):
pCity = argsList[0]
eProject = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
return False
def cannotCreate(self,argsList):
pCity = argsList[0]
eProject = argsList[1]
bContinue = argsList[2]
bTestVisible = argsList[3]
return False
def canMaintain(self,argsList):
pCity = argsList[0]
eProcess = argsList[1]
bContinue = argsList[2]
return False
def cannotMaintain(self,argsList):
pCity = argsList[0]
eProcess = argsList[1]
bContinue = argsList[2]
return False
def AI_chooseTech(self,argsList):
ePlayer = argsList[0]
bFree = argsList[1]
return TechTypes.NO_TECH
def AI_chooseProduction(self,argsList):
pCity = argsList[0]
return False
def AI_unitUpdate(self,argsList):
pUnit = argsList[0]
return False
def AI_doWar(self,argsList):
eTeam = argsList[0]
return False
def AI_doDiplo(self,argsList):
ePlayer = argsList[0]
return False
def calculateScore(self,argsList):
ePlayer = argsList[0]
bFinal = argsList[1]
bVictory = argsList[2]
pyPlayer = gc.getPlayer(ePlayer)
print("pyPlayer.getScriptData()")
print(pyPlayer.getScriptData())
if (pyPlayer.getScriptData() == ""):
CvRiseOfRomeEventManager.CvRiseOfRomeEventManager().setPlayerScore(ePlayer, 0)
if gc.getGame().isGameMultiPlayer():
iPopulationScore = CvUtil.getScoreComponent(gc.getPlayer(ePlayer).getPopScore(), gc.getGame().getInitPopulation(), gc.getGame().getMaxPopulation(), gc.getDefineINT("SCORE_POPULATION_FACTOR"), True, bFinal, bVictory)
iLandScore = CvUtil.getScoreComponent(gc.getPlayer(ePlayer).getLandScore(), gc.getGame().getInitLand(), gc.getGame().getMaxLand(), gc.getDefineINT("SCORE_LAND_FACTOR"), True, bFinal, bVictory)
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)
return int(iPopulationScore + iLandScore + iWondersScore + iTechScore)
else:
iSinglePlayerScore = CvRiseOfRomeEventManager.CvRiseOfRomeEventManager().getPlayerScore(ePlayer)
return iSinglePlayerScore
def doHolyCity(self):
return False
def doHolyCityTech(self,argsList):
eTeam = argsList[0]
ePlayer = argsList[1]
eTech = argsList[2]
bFirst = argsList[3]
return False
def doGold(self,argsList):
ePlayer = argsList[0]
return False
def doResearch(self,argsList):
ePlayer = argsList[0]
return False
def doGoody(self,argsList):
ePlayer = argsList[0]
pPlot = argsList[1]
pUnit = argsList[2]
return False
def doGrowth(self,argsList):
pCity = argsList[0]
return False
def doProduction(self,argsList):
pCity = argsList[0]
return False
def doCulture(self,argsList):
pCity = argsList[0]
return False
def doPlotCulture(self,argsList):
pCity = argsList[0]
bUpdate = argsList[1]
return False
def doReligion(self,argsList):
pCity = argsList[0]
return False
def doGreatPeople(self,argsList):
pCity = argsList[0]
return False
def doMeltdown(self,argsList):
pCity = argsList[0]
return False
def doReviveActivePlayer(self,argsList):
"allows you to perform an action after an AIAutoPlay"
iPlayer = argsList[0]
return False
def doPillageGold(self, argsList):
"controls the gold result of pillaging"
pPlot = argsList[0]
pUnit = argsList[1]
iPillageGold = 0
iPillageGold = CyGame().getSorenRandNum(gc.getImprovementInfo(pPlot.getImprovementType()).getPillageGold(), "Pillage Gold 1")
iPillageGold += CyGame().getSorenRandNum(gc.getImprovementInfo(pPlot.getImprovementType()).getPillageGold(), "Pillage Gold 2")
iPillageGold += (pUnit.getPillageChange() * iPillageGold) / 100
return iPillageGold
def doCityCaptureGold(self, argsList):
"controls the gold result of capturing a city"
pOldCity = argsList[0]
iCaptureGold = 0
iCaptureGold += gc.getDefineINT("BASE_CAPTURE_GOLD")
iCaptureGold += (pOldCity.getPopulation() * gc.getDefineINT("CAPTURE_GOLD_PER_POPULATION"))
iCaptureGold += CyGame().getSorenRandNum(gc.getDefineINT("CAPTURE_GOLD_RAND1"), "Capture Gold 1")
iCaptureGold += CyGame().getSorenRandNum(gc.getDefineINT("CAPTURE_GOLD_RAND2"), "Capture Gold 2")
if (gc.getDefineINT("CAPTURE_GOLD_MAX_TURNS") > 0):
iCaptureGold *= cyIntRange((CyGame().getGameTurn() - pOldCity.getGameTurnAcquired()), 0, gc.getDefineINT("CAPTURE_GOLD_MAX_TURNS"))
iCaptureGold /= gc.getDefineINT("CAPTURE_GOLD_MAX_TURNS")
return iCaptureGold
g_GameUtils = CvGameUtils()
Shiggs