I have a vanilla mod I am working on called the The Great War. The python was written by Jon Shafer, with his permission I have added to the mod. Any way I am trying to get some reinforcement events to work. I have six reinforcement events for Britain, and they all work, except for event number three, which gives me two BASIC_LIGHT_ARTILLERY units, instead of two BRITAIN_BRITISH_MACHINEGUN units like it is supposed to. For some reason it finds artillery instead of machine gun. Here is the code.
Here is reinforcement event three. Why would the BritainBritishMachinegunID not be recognized, and Artiilery is placed on the map at Cherbourg instead?
Here is a list of the units def initValues(self):
If you need all the code to figure this out, please let me know and I will send it.
I backed this file up and I added every WWI unit in my mod to the def initValues(self): list, thinking that would help, but then no reinforcement events worked period. In this case with the original file, they work but it will not recognize BritainBritishMachinegunID,
instead it gives me for some odd reason a BasicLightArtilleryID. I am new to python and don't understand why.
Spoiler :
Code:
# Insert all game turn events here
# return
# print("Turn is: %d" %(iTurn))
if (iTurn == 3 + self.iTurnOffset):#3
self.Aug_1914()
elif (iTurn == 5 + self.iTurnOffset):#5
self.Sep_1914()
elif (iTurn == 11 + self.iTurnOffset):#11
self.Oct_1914()
elif (iTurn == 12 + self.iTurnOffset):#12
self.Oct_1914()
elif (iTurn == 15 + self.iTurnOffset):#15
self.Nov_1914()
elif (iTurn == 17 + self.iTurnOffset):#17
##########################################################################################
####################################### TURN EVENTS #######################################
###########################################################################################
# British send reinforcements to France
def Aug_1914(self):
aiValidCities = [ self.iCHERBOURG, ]
iCityID = self.determineValidCities(self.iBritainID, aiValidCities)
# If valid city exists
if (iCityID > -1):
pPlayer = gc.getPlayer(self.iBritainID)
iUnitType = self.iBasicBritishInfantryID
iCityX = pPlayer.getCity(iCityID).getX()
iCityY = pPlayer.getCity(iCityID).getY()
# Spawn unit
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
# Set event text
self.szEventText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_ONE_DESC", ())
self.szResultText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_ONE_EFFECT", ())
self.displayEventText()
# British send reinforcements to France
def Sep_1914(self):
aiValidCities = [ self.iCHERBOURG, ]
iCityID = self.determineValidCities(self.iBritainID, aiValidCities)
# If valid city exists
if (iCityID > -1):
pPlayer = gc.getPlayer(self.iBritainID)
iUnitType = self.iBasicBritishInfantryID
iCityX = pPlayer.getCity(iCityID).getX()
iCityY = pPlayer.getCity(iCityID).getY()
# Spawn unit
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
# Set event text
self.szEventText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_TWO_DESC", ())
self.szResultText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_TWO_EFFECT", ())
self.displayEventText()
# British send reinforcements to France
def Oct_1914(self):
aiValidCities = [ self.iCHERBOURG, ]
iCityID = self.determineValidCities(self.iBritainID, aiValidCities)
# If valid city exists
if (iCityID > -1):
pPlayer = gc.getPlayer(self.iBritainID)
iUnitType = self.iBritainBritishMachinegunID
iCityX = pPlayer.getCity(iCityID).getX()
iCityY = pPlayer.getCity(iCityID).getY()
# Spawn unit
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_CITY_COUNTER)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_CITY_COUNTER)
# Set event text
self.szEventText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_THREE_DESC", ())
self.szResultText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_THREE_EFFECT", ())
self.displayEventText()
# British send reinforcements to France
def Oct_1914(self):
aiValidCities = [ self.iCHERBOURG, ]
iCityID = self.determineValidCities(self.iBritainID, aiValidCities)
# If valid city exists
if (iCityID > -1):
pPlayer = gc.getPlayer(self.iBritainID)
iUnitType = self.iBasicLightArtilleryID
iCityX = pPlayer.getCity(iCityID).getX()
iCityY = pPlayer.getCity(iCityID).getY()
# Spawn unit
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK_CITY)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK_CITY)
# Set event text
self.szEventText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_FOUR_DESC", ())
self.szResultText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_FOUR_EFFECT", ())
self.displayEventText()
# British send reinforcements to France
def Nov_1914(self):
aiValidCities = [ self.iCHERBOURG, ]
iCityID = self.determineValidCities(self.iBritainID, aiValidCities)
# If valid city exists
if (iCityID > -1):
pPlayer = gc.getPlayer(self.iBritainID)
iUnitType = self.iBasicBritishInfantryID
iCityX = pPlayer.getCity(iCityID).getX()
iCityY = pPlayer.getCity(iCityID).getY()
# Spawn unit
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
# Set event text
self.szEventText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_FIVE_DESC", ())
self.szResultText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_FIVE_EFFECT", ())
self.displayEventText()
# British send reinforcements to France
def Dec_1914(self):
aiValidCities = [ self.iCHERBOURG, ]
iCityID = self.determineValidCities(self.iBritainID, aiValidCities)
# If valid city exists
if (iCityID > -1):
pPlayer = gc.getPlayer(self.iBritainID)
iUnitType = self.iBasicBritishInfantryID
iCityX = pPlayer.getCity(iCityID).getX()
iCityY = pPlayer.getCity(iCityID).getY()
# Spawn unit
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_ATTACK)
# Set event text
self.szEventText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_SIX_DESC", ())
self.szResultText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_SIX_EFFECT", ())
self.displayEventText()
Here is reinforcement event three. Why would the BritainBritishMachinegunID not be recognized, and Artiilery is placed on the map at Cherbourg instead?
Spoiler :
Code:
# British send reinforcements to France
def Oct_1914(self):
aiValidCities = [ self.iCHERBOURG, ]
iCityID = self.determineValidCities(self.iBritainID, aiValidCities)
# If valid city exists
if (iCityID > -1):
pPlayer = gc.getPlayer(self.iBritainID)
iUnitType = self.iBritainBritishMachinegunID
iCityX = pPlayer.getCity(iCityID).getX()
iCityY = pPlayer.getCity(iCityID).getY()
# Spawn unit
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_CITY_COUNTER)
pPlayer.initUnit(iUnitType, iCityX, iCityY, UnitAITypes.UNITAI_CITY_COUNTER)
# Set event text
self.szEventText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_THREE_DESC", ())
self.szResultText = localText.getText("TXT_KEY_WWI_EVENT_BEF_REPLACEMENTS_THREE_EFFECT", ())
self.displayEventText()
Here is a list of the units def initValues(self):
Spoiler :
Code:
def initValues(self):
self.iCavalryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_CAVALRY')#83
self.iBasicLightArtilleryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_LIGHT_ARTILLERY')
self.iAdvancedLightArtilleryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_LIGHT_ARTILLERY')
self.iMachineGunID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_MACHINE_GUN')
self.iTankID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_TANK')
self.iPoisonGasID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_POISON_GAS')
self.iBiplaneID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BIPLANE')
self.iDestroyerID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_DESTROYER')
self.iDreadnaughtID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_DREADNAUGHT')
self.iSubmarineID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_SUBMARINE')
self.iTransportID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_TRANSPORT')
self.iBasicInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_INFANTRY')
self.iAdvancedInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_INFANTRY')
self.iBasicGermanInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_GERMAN_INFANTRY')
self.iAdvancedGermanInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_GERMAN_INFANTRY')
self.iBasicAustroHungarianInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_AUSTRO-HUNGARIAN_INFANTRY')
self.iAdvancedAustroHungarianInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_AUSTRO-HUNGARIAN_INFANTRY')
self.iBasicOttomanInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_OTTOMAN_INFANTRY')
self.iAdvancedOttomanInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_OTTOMAN_INFANTRY')
self.iBasicRussianInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_RUSSIAN_INFANTRY')
self.iAdvancedRussianInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_RUSSIAN_INFANTRY')
self.iBasicFrenchInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_FRENCH_INFANTRY')
self.iAdvancedFrenchInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_FRENCH_INFANTRY')
self.iBasicBritishInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_BRITISH_INFANTRY')
self.iAdvancedBritishInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_BRITISH_INFANTRY')
self.iBasicItalianInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_ITALIAN_INFANTRY')
self.iAdvancedItalianInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_ITALIAN_INFANTRY')
self.iBasicAmericanInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BASIC_AMERICAN_INFANTRY')
self.iAdvancedAmericanInfantryID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_ADVANCED_AMERICAN_INFANTRY')
self.iBritainBritishMachinegunID = CvUtil.findInfoTypeNum(gc.getUnitInfo,gc.getNumUnitInfos(),'WWI_UNIT_BRITAIN_BRITISH_MACHINEGUN')
self.iConscriptionCenterID = CvUtil.findInfoTypeNum(gc.getBuildingInfo,gc.getNumBuildingInfos(),'WWI_BUILDING_CONSCRIPTION_CENTER')#99
self.iMobileAttackDoctrineID = CvUtil.findInfoTypeNum(gc.getTechInfo,gc.getNumTechInfos(),'WWI_TECH_MOBILE_ATTACK_DOCTRINE')
self.iArmoredVehiclesID = CvUtil.findInfoTypeNum(gc.getTechInfo,gc.getNumTechInfos(),'WWI_TECH_ARMORED_VEHICLES')
for iPlayerLoop in range(self.iNumPlayers):
pyPlayer = PyPlayer(iPlayerLoop)
# Loop through player's cities
apCityList = pyPlayer.getCityList()
for pCityLoop in apCityList:
# Initialize City
self.initCity(pCityLoop)
If you need all the code to figure this out, please let me know and I will send it.
I backed this file up and I added every WWI unit in my mod to the def initValues(self): list, thinking that would help, but then no reinforcement events worked period. In this case with the original file, they work but it will not recognize BritainBritishMachinegunID,
instead it gives me for some odd reason a BasicLightArtilleryID. I am new to python and don't understand why.