Quantcast
Channel: Civilization Fanatics' Forums
Viewing all articles
Browse latest Browse all 12856

[PYTHON] Code not working

$
0
0
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.
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


Viewing all articles
Browse latest Browse all 12856