I didn't write this code, and the person who either wrote it or copied it from somewhere and modified it has not responded to a private message.
It is supposed to create a civ with a city which is determined through a random event. When I select the option which results in this happening, however, nothing happens.
It is supposed to create a civ with a city which is determined through a random event. When I select the option which results in this happening, however, nothing happens.
Code:
def applyCivilWar(argsList):
kTriggeredData = argsList[1]
DeclareWar = True
dice = gc.getGame().getMapRand()
lAlive = []
del lAlive[:]
iMaxCiv = gc.getMAX_CIV_PLAYERS()
for i in range(iMaxCiv):
pPlayer = gc.getPlayer(i)
lAlive.append(pPlayer.getCivilizationType())
lAlive.append(-1)
iAllCivs = gc.getNumPlayableCivilizationInfos()
pPlayer = gc.getPlayer(kTriggeredData.ePlayer)
iDerivative = gc.getCivilizationInfo(pPlayer.getCivilizationType()).getDerivativeCiv()
if not iDerivative in lAlive:
iNewCiv = iDerivative
else:
lNotAlive = []
del lNotAlive[:]
for i in range (iAllCivs):
if i in lAlive:
continue
lNotAlive.append(i)
iTempCiv = dice.get(len(lNotAlive), "Civil War Civilization")
iNewCiv = lNotAlive[iTempCiv]
CurCiv = gc.getCivilizationInfo(iNewCiv)
NumLeaders = CurCiv.getNumLeaders()
LeaderNum = dice.get(NumLeaders, "Civil War Leader")
LeaderCounter = 0
for iLeaders in range(gc.getNumLeaderHeadInfos()):
if CurCiv.isLeaders(iLeaders):
if NumLeaders==1:
NewLeaderID = iLeaders
break
else:
if LeaderCounter == LeaderNum:
NewLeaderID = iLeaders
break
LeaderCounter += 1
# Find ID for new civ
iNewID = -1
for iID in range(iMaxCiv):
pTestPlayer = gc.getPlayer(iID)
if not pTestPlayer.isAlive():
iNewID = iID
break
else:
return false
# Add the player to the game
CyGame().addPlayer(iNewID, NewLeaderID, iNewCiv)
pNewPlayer = gc.getPlayer(iNewID)
pNewTeam = gc.getTeam(pNewPlayer.getTeam())
pPlayer = gc.getPlayer(kTriggeredData.ePlayer)
pCity = pPlayer.getCity(kTriggeredData.iCityId)
pTriggerTeam = gc.getTeam(pPlayer.getTeam())
# Give new team open borders tech (for unit handover)
iMaxTech = gc.getNumTechInfos()
for OBtech in range(iMaxTech):
pTech = gc.getTechInfo(OBtech)
if pTech.isOpenBordersTrading():
pNewTeam.setHasTech(OBtech, True, iNewID, false, false)
break
pNewTeam.signOpenBorders(pTriggerTeam.getID())
# Remove open borders tech
pNewTeam.setHasTech(OBtech, false, iNewID, false, false)
# Add techs to new player
iMaxTech = gc.getNumTechInfos()
for counter in range(iMaxTech):
if (pTriggerTeam.isHasTech(counter) == True) and (pNewTeam.isHasTech(counter) == false):
pNewTeam.setHasTech(counter, True, iNewID, false, false)
# Hand over cities
iX = pCity.getX()
iY = pCity.getY()
pNewPlayer.acquireCity(pCity, false, true)
# Hand over units
pPlot = CyMap().plot(iX, iY)
iMaxNumUnits = pPlot.getNumUnits()
for iUnits in range(iMaxNumUnits, -1, -1):
pUnit = pPlot.getUnit(iUnits)
if pUnit.getOwner() == pPlayer.getID():
pUnit.doCommand(CommandTypes.COMMAND_GIFT, -1, -1)
for i in range(2):
pNewPlayer.initUnit(pCity.getConscriptUnit(), iX, iY, UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION)
# Declare war
if DeclareWar:
pNewTeam.declareWar(pTriggerTeam.getID(), false, WarPlanTypes.WARPLAN_LIMITED)
return True