class AbstractAlert(object):
    """Provides a base class and several convenience functions for 
	implementing an alert.

	"""

    gc = CyGlobalContext()

    localText = CyTranslator()

    #config = CvConfigParser.CvConfigParser("Civ IV Gameplay Enhancements Config.ini")

    def __init__(self, eventManager, *args, **kwargs):
        super(AbstractAlert, self).__init__(*args, **kwargs)
class AbstractAlert(object):
    """Provides a base class and several convenience functions for 
    implementing an alert.

    """

    gc = CyGlobalContext()

    localText = CyTranslator()

    def __init__(self, eventManager, *args, **kwargs):
        super(AbstractAlert, self).__init__(*args, **kwargs)

    def _addMessageNoIcon(self, player, message):
        """Displays an on-screen message with no popup icon."""
        self._addMessage(player, message, None, 0, 0)

    def _addMessageAtCity(self, player, message, icon, city):
        """Displays an on-screen message with a popup icon that zooms
        to the given city.

        """
        self._addMessage(player, message, icon, city.getX(), city.getY())

    def _addMessageAtPlot(self, player, message, icon, plot):
        """Displays an on-screen message with a popup icon that zooms
        to the given plot.
        
        """
        self._addMessage(player, message, icon, plot.getX(), plot.getY())

    def _addMessage(self, ePlayer, szString, szIcon, iFlashX, iFlashY):
        """Displays an on-screen message."""
        eventMessageTimeLong = self.gc.getDefineINT("EVENT_MESSAGE_TIME_LONG")
        CyInterface().addMessage(ePlayer, True, eventMessageTimeLong, szString,
                                 None, 0, szIcon, ColorTypes(-1), iFlashX,
                                 iFlashY, True, True)
Exemple #3
0
## Sid Meier's Civilization 4
## Copyright Firaxis Games 2005
##
## Alex Mantzaris / Jesse Smith 09-2005
from CvPythonExtensions import (CyGlobalContext, CyArtFileMgr, CyTranslator,
                                FontTypes, CivilopediaPageTypes, NotifyCode,
                                WidgetTypes, PanelStyles, AttitudeTypes,
                                CyGameTextMgr, InputTypes, LeaderheadAction)
import CvUtil
# import ScreenInput
import CvScreenEnums
# import random

# globals
gc = CyGlobalContext()
ArtFileMgr = CyArtFileMgr()
localText = CyTranslator()


class CvPediaLeader:
    "Civilopedia Screen for Leaders"

    def __init__(self, main):
        self.iLeader = -1
        self.top = main

        self.X_LEADERHEAD_PANE = 10
        self.Y_LEADERHEAD_PANE = 50
        self.W_LEADERHEAD_PANE = 270
        self.H_LEADERHEAD_PANE = 300
Exemple #4
0
## AutoSave
from CvPythonExtensions import CyGlobalContext
GC = CyGlobalContext()
GAME = GC.getGame()
MAP = GC.getMap()

def init():
	import SystemPaths as SP
	global _saveDir, options
	_saveDir = SP.userDir + "\\Saves"
	import BugCore
	options = BugCore.game.AutoSave
	import CvEventInterface
	CvEventInterface.eventManager.addEventHandler("MapRegen", onMapRegen)
	CvEventInterface.eventManager.addEventHandler("endTurnReady", onEndTurnReady)
	CvEventInterface.eventManager.addEventHandler("GameEnd", onGameEnd)

def onMapRegen(argsList):
	autoSave("[Start]", 0)

def onEndTurnReady(argsList):
	iTurn, = argsList
	inter = options.getInterval()
	if inter > 0 and not iTurn % inter:
		autoSave("[Late]", iTurn)

def onGameEnd(argsList):
	autoSave("[End]", argsList[0])

def save(type, prefix, iTurn):
Exemple #5
0
def writeLog():
    import SystemPaths as SP
    import CvUtil
    GC = CyGlobalContext()
    MAP = GC.getMap()
    GAME = GC.getGame()
    iPlayer = GAME.getActivePlayer()
    szName = CvUtil.convertToStr(GC.getActivePlayer().getName())
    szName = SP.userDir + "\\Logs\\%s - Player %d - Turn %d OOSLog.txt" % (
        szName, iPlayer, GAME.getGameTurn())
    pFile = open(szName, "w")

    SEP = "-----------------------------------------------------------------\n"

    # Backup current language
    iLanguage = GAME.getCurrentLanguage()
    # Force english language for logs
    GAME.setCurrentLanguage(0)

    # Global data
    pFile.write(2 * SEP + "\tGLOBALS\n" + 2 * SEP + "\n")

    pFile.write("Last MapRand Value: %d\n" % GAME.getMapRand().getSeed())
    pFile.write("Last SorenRand Value: %d\n" % GAME.getSorenRand().getSeed())

    pFile.write("Total num cities: %d\n" % GAME.getNumCities())
    pFile.write("Total population: %d\n" % GAME.getTotalPopulation())
    pFile.write("Total Deals: %d\n" % GAME.getNumDeals())

    pFile.write("Total owned plots: %d\n" % MAP.getOwnedPlots())
    pFile.write("Total num areas: %d\n\n\n" % MAP.getNumAreas())

    # Player data
    for iPlayer in xrange(GC.getMAX_PLAYERS()):
        pPlayer = GC.getPlayer(iPlayer)
        if pPlayer.isEverAlive():

            pFile.write(2 * SEP + "%s player %d: %s\n" %
                        (['NPC', 'Human'][pPlayer.isHuman()], iPlayer,
                         CvUtil.convertToStr(pPlayer.getName())))
            pFile.write(
                "  Civilization: %s\n" %
                CvUtil.convertToStr(pPlayer.getCivilizationDescriptionKey()))
            pFile.write("  Alive: %s\n" % pPlayer.isAlive())

            pFile.write(2 * SEP + "\n\nBasic data:\n-----------\n")

            pFile.write("Player %d Score: %d\n" %
                        (iPlayer, GAME.getPlayerScore(iPlayer)))
            pFile.write("Player %d Population: %d\n" %
                        (iPlayer, pPlayer.getTotalPopulation()))
            pFile.write("Player %d Total Land: %d\n" %
                        (iPlayer, pPlayer.getTotalLand()))
            pFile.write("Player %d Gold: %d\n" % (iPlayer, pPlayer.getGold()))
            pFile.write("Player %d Assets: %d\n" %
                        (iPlayer, pPlayer.getAssets()))
            pFile.write("Player %d Power: %d\n" %
                        (iPlayer, pPlayer.getPower()))
            pFile.write("Player %d Num Cities: %d\n" %
                        (iPlayer, pPlayer.getNumCities()))
            pFile.write("Player %d Num Units: %d\n" %
                        (iPlayer, pPlayer.getNumUnits()))
            pFile.write("Player %d Num Selection Groups: %d\n" %
                        (iPlayer, pPlayer.getNumSelectionGroups()))
            pFile.write("Player %d Difficulty: %d\n" %
                        (iPlayer, pPlayer.getHandicapType()))
            pFile.write(
                "Player %d State Religion: %s\n" %
                (iPlayer, CvUtil.convertToStr(pPlayer.getStateReligionKey())))
            pFile.write("Player %d Culture: %d\n" %
                        (iPlayer, pPlayer.getCulture()))

            pFile.write("\n\nYields:\n-------\n")

            for iYield in xrange(YieldTypes.NUM_YIELD_TYPES):
                pFile.write("Player %d %s Total Yield: %d\n" %
                            (iPlayer,
                             CvUtil.convertToStr(
                                 GC.getYieldInfo(iYield).getDescription()),
                             pPlayer.calculateTotalYield(iYield)))

            pFile.write("\n\nCommerce:\n---------\n")

            for iCommerce in xrange(CommerceTypes.NUM_COMMERCE_TYPES):
                pFile.write(
                    "Player %d %s Total Commerce: %d\n" %
                    (iPlayer,
                     CvUtil.convertToStr(
                         GC.getCommerceInfo(iCommerce).getDescription()),
                     pPlayer.getCommerceRate(CommerceTypes(iCommerce))))

            pFile.write("\n\nCity event history:\n-----------\n")

            if pPlayer.getNumCities():
                pCity, i = pPlayer.firstCity(False)
                while pCity:
                    bFirst = True
                    for iEvent in xrange(GC.getNumEventInfos()):
                        if pCity.isEventOccured(iEvent):
                            if bFirst:
                                pFile.write(
                                    "City: %s\n" %
                                    CvUtil.convertToStr(pCity.getName()))
                                bFirst = False
                            pFile.write("\t" + CvUtil.convertToStr(
                                GC.getEventInfo(iEvent).getDescription()) +
                                        "\n")
                    pCity, i = pPlayer.nextCity(i, False)

            pFile.write("\n\nCity Info:\n----------\n")

            if pPlayer.getNumCities():
                pCity, i = pPlayer.firstCity(False)
                while pCity:
                    pFile.write("City: %s\n" %
                                CvUtil.convertToStr(pCity.getName()))
                    pFile.write("X: %d, Y: %d\n" %
                                (pCity.getX(), pCity.getY()))
                    pFile.write("Population: %d\n" % (pCity.getPopulation()))
                    pFile.write("Buildings: %d\n" %
                                (pCity.getNumRealBuildings()))
                    pFile.write("Improved Plots: %d\n" %
                                (pCity.countNumImprovedPlots()))
                    pFile.write("Tiles Worked: %d, Specialists: %d\n" %
                                (pCity.getWorkingPopulation(),
                                 pCity.getSpecialistPopulation()))
                    pFile.write("Great People: %d\n" %
                                pCity.getNumGreatPeople())
                    pFile.write("Good Health: %d, Bad Health: %d\n" %
                                (pCity.goodHealth(), pCity.badHealth(False)))
                    pFile.write("Happy Level: %d, Unhappy Level: %d\n" %
                                (pCity.happyLevel(), pCity.unhappyLevel(0)))
                    pFile.write("Food: %d\n" % pCity.getFood())
                    pCity, i = pPlayer.nextCity(i, False)
            else:
                pFile.write("No Cities")

            pFile.write("\n\nBonus Info:\n-----------\n")

            for iBonus in xrange(GC.getNumBonusInfos()):
                szTemp = CvUtil.convertToStr(
                    GC.getBonusInfo(iBonus).getDescription())
                pFile.write(
                    "Player %d, %s, Number Available: %d\n" %
                    (iPlayer, szTemp, pPlayer.getNumAvailableBonuses(iBonus)))
                pFile.write("Player %d, %s, Import: %d\n" %
                            (iPlayer, szTemp, pPlayer.getBonusImport(iBonus)))
                pFile.write("Player %d, %s, Export: %d\n\n" %
                            (iPlayer, szTemp, pPlayer.getBonusExport(iBonus)))

            pFile.write("\n\nImprovement Info:\n-----------------\n")

            for iImprovement in xrange(GC.getNumImprovementInfos()):
                pFile.write(
                    "Player %d, %s, Improvement count: %d\n" %
                    (iPlayer,
                     CvUtil.convertToStr(
                         GC.getImprovementInfo(iImprovement).getDescription()),
                     pPlayer.getImprovementCount(iImprovement)))

            pFile.write("\n\nBuilding Info:\n--------------------\n")

            for iBuilding in xrange(GC.getNumBuildingInfos()):
                pFile.write(
                    "Player %d, %s, Building class count plus making: %d\n" %
                    (iPlayer,
                     CvUtil.convertToStr(
                         GC.getBuildingInfo(iBuilding).getDescription()),
                     pPlayer.getBuildingCountPlusMaking(iBuilding)))

            pFile.write("\n\nUnit Class Info:\n--------------------\n")

            for iUnit in xrange(GC.getNumUnitInfos()):
                pFile.write(
                    "Player %d, %s, Unit class count plus training: %d\n" %
                    (iPlayer,
                     CvUtil.convertToStr(
                         GC.getUnitInfo(iUnit).getDescription()),
                     pPlayer.getUnitCountPlusMaking(iUnit)))

            pFile.write("\n\nUnitAI Types Info:\n------------------\n")

            for iUnitAIType in xrange(int(UnitAITypes.NUM_UNITAI_TYPES)):
                pFile.write(
                    "Player %d, %s, Unit AI Type count: %d\n" %
                    (iPlayer, GC.getUnitAIInfo(iUnitAIType).getType(),
                     pPlayer.AI_totalUnitAIs(UnitAITypes(iUnitAIType))))

            pFile.write("\n\nCity Religions:\n-----------\n")

            if pPlayer.getNumCities():
                pCity, i = pPlayer.firstCity(False)
                while pCity:
                    bFirst = True
                    for iReligion in xrange(GC.getNumReligionInfos()):
                        if pCity.isHasReligion(iReligion):
                            if bFirst:
                                pFile.write(
                                    "City: %s\n" %
                                    CvUtil.convertToStr(pCity.getName()))
                                bFirst = False
                            pFile.write("\t" + CvUtil.convertToStr(
                                GC.getReligionInfo(iReligion).getDescription())
                                        + "\n")
                    pCity, i = pPlayer.nextCity(i, False)

            pFile.write("\n\nCity Corporations:\n-----------\n")

            if pPlayer.getNumCities():
                pCity, i = pPlayer.firstCity(False)
                while pCity:
                    bFirst = True
                    for iCorporation in xrange(GC.getNumCorporationInfos()):
                        if pCity.isHasCorporation(iCorporation):
                            if bFirst:
                                pFile.write(
                                    "City: %s\n" %
                                    CvUtil.convertToStr(pCity.getName()))
                                bFirst = False
                            pFile.write("\t" + CvUtil.convertToStr(
                                GC.getCorporationInfo(
                                    iCorporation).getDescription()) + "\n")
                    pCity, i = pPlayer.nextCity(i, False)

            pFile.write("\n\nUnit Info:\n----------\n")

            if pPlayer.getNumUnits():
                for pUnit in pPlayer.units():
                    pFile.write("Player %d, Unit ID: %d, %s\n" %
                                (iPlayer, pUnit.getID(),
                                 CvUtil.convertToStr(pUnit.getName())))
                    pFile.write(
                        "X: %d, Y: %d\nDamage: %d\n" %
                        (pUnit.getX(), pUnit.getY(), pUnit.getDamage()))
                    pFile.write("Experience: %d\nLevel: %d\n" %
                                (pUnit.getExperience(), pUnit.getLevel()))
                    bFirst = True
                    for j in xrange(GC.getNumPromotionInfos()):
                        if pUnit.isHasPromotion(j):
                            if bFirst:
                                pFile.write("Promotions:\n")
                                bFirst = False
                            pFile.write("\t" + CvUtil.convertToStr(
                                GC.getPromotionInfo(j).getDescription()) +
                                        "\n")
                    bFirst = True
                    for j in xrange(GC.getNumUnitCombatInfos()):
                        if pUnit.isHasUnitCombat(j):
                            if bFirst:
                                pFile.write("UnitCombats:\n")
                                bFirst = False
                            pFile.write("\t" + CvUtil.convertToStr(
                                GC.getUnitCombatInfo(j).getDescription()) +
                                        "\n")
            else:
                pFile.write("No Units")
            # Space at end of player's info
            pFile.write("\n\n")
    # Close file
    pFile.close()

    # Restore current language
    GAME.setCurrentLanguage(iLanguage)
Exemple #6
0
    def interfaceScreen(self, iTech):

        self.EXIT_TEXT = localText.getText("TXT_KEY_SCREEN_CONTINUE", ())
        self.nTechs = CyGlobalContext().getNumTechInfos()
        self.iTech = iTech
        self.nWidgetCount = 0

        # Create screen

        screen = self.getScreen()

        techInfo = CyGlobalContext().getTechInfo(self.iTech)

        screen.setSound(techInfo.getSound())
        screen.showScreen(PopupStates.POPUPSTATE_IMMEDIATE, False)
        screen.enableWorldSounds( False )

#       screen.setHelpTextArea(self.W_HELP_AREA, FontTypes.SMALL_FONT, self.X_UNIT_PANE, self.Y_UNIT_PANE, self.Z_HELP_AREA, 1, CyArtFileMgr().getInterfaceArtInfo("POPUPS_BACKGROUND_TRANSPARENT").getPath(), True, True, CvUtil.FONT_LEFT_JUSTIFY, 0 )
#       screen.addDDSGFC( "TechSplashBackground", CyArtFileMgr().getInterfaceArtInfo("TEMP_BG").getPath(), 0, 0, self.W_SCREEN, self.H_SCREEN, WidgetTypes.WIDGET_GENERAL, -1, -1 )
        screen.showWindowBackground( False )
        screen.setDimensions(screen.centerX(0), screen.centerY(0), self.W_SCREEN, self.H_SCREEN)

        # Create panels

        # Main Panel
        szMainPanel = "TechSplashMainPanel"
        screen.addPanel( szMainPanel, "", "", True, True,
            self.X_MAIN_PANEL, self.Y_MAIN_PANEL, self.W_MAIN_PANEL, self.H_MAIN_PANEL, PanelStyles.PANEL_STYLE_MAIN )

        # Top Panel
        szHeaderPanel = "TechSplashHeaderPanel"
        screen.addPanel( szHeaderPanel, "", "", True, True,
            self.X_UPPER_PANEL, self.Y_UPPER_PANEL, self.W_UPPER_PANEL, self.H_UPPER_PANEL, PanelStyles.PANEL_STYLE_DAWNBOTTOM )
        screen.setStyle(szHeaderPanel, "Panel_DawnBottom_Style")

        # Icon Panel
        szIconPanel = "IconPanel"
        screen.addPanel( szIconPanel, "", "", True, True,
            self.X_ICON_PANEL, self.Y_ICON_PANEL, self.W_UPPER_PANEL-(self.iMarginSpace * 2), self.H_UPPER_PANEL-(self.iMarginSpace * 4), PanelStyles.PANEL_STYLE_MAIN_TAN15 )
        screen.setStyle(szIconPanel, "Panel_TechDiscover_Style")

        # Icon Panel
        szIconPanel = "IconPanelGlow"
        screen.addPanel( szIconPanel, "", "", True, True,
            self.X_ICON_PANEL, self.Y_ICON_PANEL, self.W_ICON_PANEL, self.H_ICON_PANEL, PanelStyles.PANEL_STYLE_MAIN_TAN15 )
        screen.setStyle(szIconPanel, "Panel_TechDiscoverGlow_Style")

        # Bottom Panel
        szTextPanel = "TechSplashTextPanel"
        screen.addPanel( szTextPanel, "", "", True, True,
            self.X_LOWER_PANEL+self.iMarginSpace, self.Y_LOWER_PANEL, self.W_LOWER_PANEL-(self.iMarginSpace * 2), self.H_LOWER_PANEL, PanelStyles.PANEL_STYLE_MAIN )
        screen.setStyle(szTextPanel, "Panel_TanT_Style")

        # Exit Button
        screen.setButtonGFC("Exit", localText.getText("TXT_KEY_SCREEN_CONTINUE", ()), "", self.X_EXIT, self.Y_EXIT, self.W_EXIT , self.H_EXIT, WidgetTypes.WIDGET_CLOSE_SCREEN, -1, -1, ButtonStyles.BUTTON_STYLE_STANDARD )

        # Special Panel
        szSpecialPanel = "TechSplashSpecialPanel"
        screen.addPanel( szSpecialPanel, "", "", True, True,
                self.X_SPECIAL_PANEL+self.iMarginSpace, self.Y_SPECIAL_PANEL, self.W_SPECIAL_PANEL-(self.iMarginSpace * 2), self.H_SPECIAL_PANEL, PanelStyles.PANEL_STYLE_IN )
        screen.setStyle(szSpecialPanel, "Panel_Black25_Style")

#---Eingefügt START - kann komplett gelöscht werden-----------------
        # Allows PanelSIR
        panelNameSIR = "SIR"
        screen.addPanel( panelNameSIR, "", "", False, True,
                                 self.X_ALLOWS_PANELSIR+self.iMarginSpace, self.Y_ALLOWS_PANELSIR, self.W_ALLOWS_PANELSIR-(self.iMarginSpace * 2), self.H_ALLOWS_PANELSIR, PanelStyles.PANEL_STYLE_IN )
        screen.setStyle(panelNameSIR, "Panel_Black25_Style")
#---Eingefügt ENDE -------------------------------------------------

        # Allows Panel
        panelName = self.getNextWidgetName()
        screen.addPanel( panelName, "", "", False, True,
                                 self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL, self.W_ALLOWS_PANEL-(self.iMarginSpace * 2), self.H_ALLOWS_PANEL, PanelStyles.PANEL_STYLE_IN )
        screen.setStyle(panelName, "Panel_Black25_Style")

#---Eingefügt START - kann komplett gelöscht werden-----------------
        # Allows Panel2
        panelName2 = "SIR2"
        screen.addPanel( panelName2, "", "", False, True,
                                 self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL2, self.W_ALLOWS_PANEL-(self.iMarginSpace * 2), self.H_ALLOWS_PANEL, PanelStyles.PANEL_STYLE_IN )
        screen.setStyle(panelName2, "Panel_Black25_Style")

        # Allows Panel3
        panelName3 = "SIR3"
        screen.addPanel( panelName3, "", "", False, True,
                                 self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL3, self.W_ALLOWS_PANEL-(self.iMarginSpace * 2), self.H_ALLOWS_PANEL, PanelStyles.PANEL_STYLE_IN )
        screen.setStyle(panelName3, "Panel_Black25_Style")
#---Eingefügt ENDE -------------------------------------------------

        # Add Contents

        # Title
        szTech = techInfo.getDescription()
        screen.setLabel(self.getNextWidgetName(), "Background", u"<font=4>" + szTech.upper() + u"</font>", CvUtil.FONT_CENTER_JUSTIFY,
            self.X_TITLE, self.Y_TITLE, self.Z_CONTROLS, FontTypes.GAME_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1 )

        # Tech Icon
        screen.addDDSGFC(self.getNextWidgetName(), techInfo.getButton(), self.X_ICON, self.Y_ICON, self.W_ICON, self.H_ICON, WidgetTypes.WIDGET_PEDIA_JUMP_TO_TECH, self.iTech, -1 )

        # Tech Quote
        szTechQuote = techInfo.getQuote()
        iTextOffset = 0
        if TechWindowOpt.isShowCivilopediaText():
            szTechQuote += "\n\n" + techInfo.getCivilopedia()
        else:
            iTextOffset = 20
        screen.addMultilineText( "Text", szTechQuote,
                        self.X_QUOTE, self.Y_QUOTE + iTextOffset, self.W_QUOTE, self.H_QUOTE - iTextOffset, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)

        # Special
        szSpecialTitle = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_SPECIAL_ABILITIES", ()) + u"</font>"
        szSpecialTitleWidget = "SpecialTitle"
        screen.setText(szSpecialTitleWidget, "", szSpecialTitle, CvUtil.FONT_LEFT_JUSTIFY,
                   self.X_SPECIAL_PANEL+self.iMarginSpace, self.Y_SPECIAL_PANEL - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)

        listName = self.getNextWidgetName()

        szSpecialText = CyGameTextMgr().getTechHelp(self.iTech, True, False, False, True, -1)[1:]
        screen.addMultilineText(listName, szSpecialText, self.X_SPECIAL_PANEL+10, self.Y_SPECIAL_PANEL+5, self.W_SPECIAL_PANEL-20, self.H_SPECIAL_PANEL-20, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)

#---Eingefügt START - kann komplett gelöscht werden --------------
        # Allows -> LeadsTo
        szAllowsTitleDescSIR = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_LEADS_TO", ()) + ":" + u"</font>"
        szAllowsTitleWidgetSIR = "AllowsTitleSIR"
        screen.setText(szAllowsTitleWidgetSIR, "", szAllowsTitleDescSIR, CvUtil.FONT_LEFT_JUSTIFY,
                   self.X_ALLOWS_PANELSIR+self.iMarginSpace, self.Y_ALLOWS_PANELSIR - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)

        for j in xrange(CyGlobalContext().getNumTechInfos()):
            for k in xrange(CyGlobalContext().getDefineINT("NUM_OR_TECH_PREREQS")):
                iPrereq = CyGlobalContext().getTechInfo(j).getPrereqOrTechs(k)
                if (iPrereq == self.iTech):
                        screen.attachImageButton( panelNameSIR, "", CyGlobalContext().getTechInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_DERIVED_TECH, j, self.iTech, False )
            for k in xrange(CyGlobalContext().getDefineINT("NUM_AND_TECH_PREREQS")):
                iPrereq = CyGlobalContext().getTechInfo(j).getPrereqAndTechs(k)
                if (iPrereq == self.iTech):
                        screen.attachImageButton( panelNameSIR, "", CyGlobalContext().getTechInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_DERIVED_TECH, j, self.iTech, False )

#---Eingefügt ENDE ------------------------------------------------
        # Allows
        # szAllowsTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_ALLOWS", ()) + ":" + u"</font>"
        # szAllowsTitleWidget = "AllowsTitle"
        # screen.setText(szAllowsTitleWidget, "", szAllowsTitleDesc, CvUtil.FONT_LEFT_JUSTIFY,
        #          self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)

        # Units Enabled
        szUnitsTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_UNITS_ENABLED", ()) + ":" + u"</font>"
        szUnitsTitleWidget = "UnitsTitle"
        screen.setText(szUnitsTitleWidget, "", szUnitsTitleDesc, CvUtil.FONT_LEFT_JUSTIFY,
                   self.X_ALLOWS_PANEL + self.iMarginSpace, self.Y_ALLOWS_PANEL - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)

        for j in xrange( CyGlobalContext().getNumUnitClassInfos() ):
            eLoopUnit = CyGlobalContext().getCivilizationInfo(CyGlobalContext().getGame().getActiveCivilizationType()).getCivilizationUnits(j)
            if (eLoopUnit != -1):
                if (isTechRequiredForUnit(self.iTech, eLoopUnit)):
                        screen.attachImageButton( panelName, "", CyGlobalContext().getUnitInfo(eLoopUnit).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM,
                                  WidgetTypes.WIDGET_PEDIA_JUMP_TO_UNIT, eLoopUnit, 1, False )

        # Buildings Enabled
        szBuildingsTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_BUILDINGS_ENABLED", ()) + ":" + u"</font>"
        szBuildingsTitleWidget = "BuildingsTitle"
        screen.setText(szBuildingsTitleWidget, "", szBuildingsTitleDesc, CvUtil.FONT_LEFT_JUSTIFY,
                   self.X_ALLOWS_PANEL + self.iMarginSpace, self.Y_ALLOWS_PANEL2 - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)

        for j in xrange(CyGlobalContext().getNumBuildingClassInfos()):
            bTechFound = 0
            eLoopBuilding = CyGlobalContext().getCivilizationInfo(CyGlobalContext().getGame().getActiveCivilizationType()).getCivilizationBuildings(j)
            if (eLoopBuilding != -1):
                if (isTechRequiredForBuilding(self.iTech, eLoopBuilding)):
                        screen.attachImageButton( panelName2, "", CyGlobalContext().getBuildingInfo(eLoopBuilding).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM,
                                  WidgetTypes.WIDGET_PEDIA_JUMP_TO_BUILDING, eLoopBuilding, 1, False )

        # Improvements
        szImprovesTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_CATEGORY_IMPROVEMENT", ()) + ":" + u"</font>"
        szImprovesTitleWidget = "ImprovesTitle"
        screen.setText(szImprovesTitleWidget, "", szImprovesTitleDesc, CvUtil.FONT_LEFT_JUSTIFY,
                   self.X_ALLOWS_PANEL + self.iMarginSpace, self.Y_ALLOWS_PANEL3 - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)

        for j in xrange(CyGlobalContext().getNumProjectInfos()):
            bTechFound = 0
            if (isTechRequiredForProject(self.iTech, j)):
                screen.attachImageButton( panelName3, "", CyGlobalContext().getProjectInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM,
                              WidgetTypes.WIDGET_PEDIA_JUMP_TO_PROJECT, j, 1, False )

        for j in xrange(CyGlobalContext().getNumPromotionInfos()):
            if (CyGlobalContext().getPromotionInfo(j).getTechPrereq() == self.iTech):
                screen.attachImageButton( panelName3, "", CyGlobalContext().getPromotionInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM,
                              WidgetTypes.WIDGET_PEDIA_JUMP_TO_PROMOTION, j, 1, False )

#---Eingefügt START - kann komplett gelöscht werden --------------

        # Improvements
        for j in xrange(CyGlobalContext().getNumBuildInfos()):
                bTechFound = 0;
                if (CyGlobalContext().getBuildInfo(j).getTechPrereq() == -1):
                    bTechFound = 0
                    for k in xrange(CyGlobalContext().getNumFeatureInfos()):
                        if (CyGlobalContext().getBuildInfo(j).getFeatureTech(k) == self.iTech):
                            bTechFound = 1
                else:
                    if (CyGlobalContext().getBuildInfo(j).getTechPrereq() == self.iTech):
                        bTechFound = 1

                if (bTechFound == 1):
                    if (CyGlobalContext().getBuildInfo(j).getImprovement() == -1):
                        screen.attachImageButton( panelName3, "", CyGlobalContext().getBuildInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_HELP_IMPROVEMENT, j, 1, False )
                    else:
                        screen.attachImageButton( panelName3, "", CyGlobalContext().getBuildInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_IMPROVEMENT, CyGlobalContext().getBuildInfo(j).getImprovement(), 1, False )

        # Bonuses
        for j in xrange(CyGlobalContext().getNumBonusInfos()):
            if (CyGlobalContext().getBonusInfo(j).getTechReveal() == self.iTech):
                screen.attachImageButton( panelName3, "", CyGlobalContext().getBonusInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM,
                              WidgetTypes.WIDGET_PEDIA_JUMP_TO_BONUS, j, 1, False )

        # Civic
        for j in xrange(CyGlobalContext().getNumCivicInfos()):
            if (CyGlobalContext().getCivicInfo(j).getTechPrereq() == self.iTech):
                screen.attachImageButton( panelName3, "", CyGlobalContext().getCivicInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM,
                              WidgetTypes.WIDGET_PEDIA_JUMP_TO_CIVIC, j, 1, False )
    def create(self, screen):
        self.createTab(screen)
        panel = self.createMainPanel(screen)
        left, center, right = self.addThreeColumnLayout(
            screen, panel, panel, True)

        GC = CyGlobalContext()
        GAME = GC.getGame()
        bCanAdjustSettings = not GAME.isGameMultiPlayer(
        ) or GAME.getActivePlayer() == 0

        #Flexible Difficulty
        self.addLabel(screen, left, "RoMSettings__FlexibleDifficulty")

        screen.setEnabled(
            self.addCheckbox(screen, left,
                             "RoMSettings__EnableFlexibleDifficulty"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addTextDropdown(screen, left, left,
                                 "RoMSettings__FlexibleDifficultyMinimumDiff",
                                 False, "LAYOUT_LEFT"), bCanAdjustSettings)
        screen.setEnabled(
            self.addTextDropdown(screen, left, left,
                                 "RoMSettings__FlexibleDifficultyMaximumDiff",
                                 False, "LAYOUT_LEFT"), bCanAdjustSettings)
        screen.setEnabled(
            self.addIntDropdown(
                screen, left, left,
                "RoMSettings__FlexibleDifficultyTurnIncrements", False,
                "LAYOUT_LEFT"), bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, left,
                             "RoMSettings__FlexibleDifficultyAI"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addTextDropdown(screen, left, left,
                                 "RoMSettings__CurrentDifficulty", False,
                                 "LAYOUT_LEFT"), bCanAdjustSettings)

        self.addTextDropdown(
            screen, left, left, "RoMSettings__PlayerColor", False,
            "LAYOUT_LEFT"
        )  # This might be OOS safe, but I'm not sure... Toffer.

        #Reset Settings
        self.addSpacer(screen, left, "")
        self.addCheckbox(screen, left, "RoMSettings__RoMReset")

        #City Management
        self.addLabel(screen, center, "RoMSettings__CityManagement")

        screen.setEnabled(
            self.addIntDropdown(screen, center, center,
                                "RoMSettings__MaxBombardDefense", False,
                                "LAYOUT_LEFT"), bCanAdjustSettings)

        self.addCheckbox(screen, center, "RoMSettings__ShowCoastalBuildings")
        self.addCheckbox(screen, center, "RoMSettings__HideObsoleteBuildings")
        self.addCheckbox(screen, center, "RoMSettings__HideReplacedBuildings")
        self.addCheckbox(screen, center,
                         "RoMSettings__HideUnconstructableBuildings")
        self.addCheckbox(screen, center, "RoMSettings__HideUntrainableUnits")

        #Empire Management
        self.addLabel(screen, center, "RoMSettings__EmpireManagement")

        self.addCheckbox(screen, center, "RoMSettings__ShowCivTraits")

        self.addCheckbox(screen, center, "RoMSettings__HideUnavailableBuilds")

        if GAME.isOption(GameOptionTypes.GAMEOPTION_REVOLUTION):
            self.addCheckbox(screen, center, "RoMSettings__ShowRevCivics")

        if GAME.isOption(GameOptionTypes.GAMEOPTION_PERSONALIZED_MAP):
            self.addCheckbox(screen, center, "RoMSettings__UseLandmarkNames")

        self.addCheckbox(screen, center, "RoMSettings__EventImages")

        screen.setEnabled(
            self.addCheckbox(screen, center, "RoMSettings__StrategicEvents"),
            bCanAdjustSettings)

        self.addCheckbox(screen, center,
                         "RoMSettings__IgnoreDisabledBuildingAlerts")
        self.addCheckbox(screen, center, "RoMSettings__NoProductionPopup")

        screen.setEnabled(
            self.addCheckbox(screen, center,
                             "RoMSettings__InfrastructureIgnoresImprovements"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, center, "RoMSettings__CanNotClaimOcean"),
            bCanAdjustSettings)

        self.addCheckbox(screen, center, "RoMSettings__NoFriendlyPillaging")

        #Game Settings
        self.addLabel(screen, right, "RoMSettings__GameSettings")

        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__DefenderWithdraw"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__DepletionMod"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right,
                             "RoMSettings__BetterAirInterception"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right,
                             "RoMSettings__BattlefieldPromotions"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__ImprovedXP"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__WarPrizes"),
            bCanAdjustSettings)

        if GC.getInfoTypeForStringWithHiddenAssert(
                "VICTORY_TOTAL") > 0 and GAME.isVictoryValid(
                    GC.getInfoTypeForString("VICTORY_TOTAL")):
            screen.setEnabled(
                self.addCheckbox(screen, right, "RoMSettings__MercyRule"),
                bCanAdjustSettings)

        screen.setEnabled(
            self.addCheckbox(screen, right,
                             "RoMSettings__RealisiticDiplomacy"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__NoStorms"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right,
                             "RoMSettings__MultipleReligionSpread"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__TelepathicReligion"),
            bCanAdjustSettings)

        screen.setEnabled(
            self.addIntDropdown(screen, right, right,
                                "RoMSettings__MaxRebaseRange"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addIntDropdown(screen, right, right,
                                "RoMSettings__MaxUnitsPerTile"),
            bCanAdjustSettings)

        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__TerrainDamage"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__AllowTerraforming"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__Reforestation"),
            bCanAdjustSettings)
        screen.setEnabled(
            self.addCheckbox(screen, right, "RoMSettings__SeaTunnels"),
            bCanAdjustSettings)

        if GAME.isOption(GameOptionTypes.GAMEOPTION_REALISTIC_CORPORATIONS):
            screen.setEnabled(
                self.addCheckbox(screen, right,
                                 "RoMSettings__NoAutoCorporationFounding"),
                bCanAdjustSettings)

        if GAME.isGameMultiPlayer():
            self.addCheckbox(screen, right,
                             "RoMSettings__PlayWaitingAlertSound")
            self.addIntDropdown(screen, right, right,
                                "RoMSettings__PlayWaitingAlertSoundTimer")
Exemple #8
0
### Imports
from CvPythonExtensions import (CyGlobalContext, CyInterface, CyTranslator,
                                DirectionTypes, ColorTypes, UnitAITypes,
                                CyPopupInfo, ButtonPopupTypes, CyAudioGame,
                                plotXY, GameOptionTypes)
# import CvEventInterface
import CvUtil
import PyHelpers

# TODO remove
# DEBUG code for Python 3 linter
# unicode = str
# xrange = range

### Defines
gc = CyGlobalContext()
PyPlayer = PyHelpers.PyPlayer

bMultiPlayer = False
bGoodyHuts = True
bBarbForts = True
bRageBarbs = False
if gc.getGame().isGameMultiPlayer(): bMultiPlayer = True
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_GOODY_HUTS):
    bGoodyHuts = False
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_BARBARIANS):
    bBarbForts = False
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_RAGING_BARBARIANS):
    bRageBarbs = True

								ButtonPopupTypes, plotXY, plotDirection,
								GameOptionTypes)
# import CvEventInterface
import CvUtil
import PAE_Barbaren
import PAE_Lists as L

import PyHelpers

# TODO remove
# DEBUG code for Python 3 linter
# unicode = str
# xrange = range

### Defines
gc = CyGlobalContext()
PyPlayer = PyHelpers.PyPlayer

bMultiPlayer = gc.getGame().isGameMultiPlayer()
bGoodyHuts = not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_GOODY_HUTS)
bBarbForts = not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_BARBARIANS)
bRageBarbs = gc.getGame().isOption(GameOptionTypes.GAMEOPTION_RAGING_BARBARIANS)
# PAE VI: kein Treibgut mehr erstellen, es gibt eh soviel durch Seeschlachten
bFlotsam = False # activates flotsam after a certain tech



lNumHistoryTexts = {
	-3480: 4,
	-3000: 5,
	-2680: 4,
Exemple #10
0
                                CyCity, YieldTypes, TradeData, GameOptionTypes)
import BugUtil
# import GameUtil
import PlayerUtil
import CvUtil

# TODO remove
# DEBUG code for Python 3 linter
# unicode = str
# xrange = range

# Mod BUG - Mac Support - start
BugUtil.fixSets(globals())
# Mod BUG - Mac Support - end

gc = CyGlobalContext()

CORP_BONUSES = {}

DOMESTIC_TRADE = 0
DOMESTIC_OVERSEAS_TRADE = 1
FOREIGN_TRADE = 2
FOREIGN_OVERSEAS_TRADE = 3

MAX_TRADE_ROUTES = gc.getDefineINT("MAX_TRADE_ROUTES")
FRACTIONAL_TRADE = False
TRADE_PROFIT_FUNC = None

TRADE_FORMATS = {}

## Trading Partners
Exemple #11
0
def setup():
    global RebelTypeList
    RebelTypeList = list()

    GC = CyGlobalContext()

    for idx in range(0, GC.getNumCivilizationInfos()):
        RebelTypeList.append(list())

    try:
        iArabia = GC.getInfoTypeForString('CIVILIZATION_ARABIA')
        iAssyria = GC.getInfoTypeForString('CIVILIZATION_ASSYRIA')
        iAztec = GC.getInfoTypeForString('CIVILIZATION_AZTEC')
        iBabylon = GC.getInfoTypeForString('CIVILIZATION_BABYLON')
        iByzantium = GC.getInfoTypeForString('CIVILIZATION_BYZANTIUM')
        iCarthage = GC.getInfoTypeForString('CIVILIZATION_CARTHAGE')
        iCelt = GC.getInfoTypeForString('CIVILIZATION_CELT')
        iChina = GC.getInfoTypeForString('CIVILIZATION_CHINA')
        iEgypt = GC.getInfoTypeForString('CIVILIZATION_EGYPT')
        iEngland = GC.getInfoTypeForString('CIVILIZATION_ENGLAND')
        iEthiopia = GC.getInfoTypeForString('CIVILIZATION_ETHIOPIA')
        iFrance = GC.getInfoTypeForString('CIVILIZATION_FRANCE')
        iGermany = GC.getInfoTypeForString('CIVILIZATION_GERMANY')
        iGreece = GC.getInfoTypeForString('CIVILIZATION_GREECE')
        iHittites = GC.getInfoTypeForString('CIVILIZATION_HITTITES')
        iHolyRoman = GC.getInfoTypeForString('CIVILIZATION_HOLY_ROMAN')
        iInca = GC.getInfoTypeForString('CIVILIZATION_INCA')
        iIndia = GC.getInfoTypeForString('CIVILIZATION_INDIA')
        iIroquois = GC.getInfoTypeForString('CIVILIZATION_IROQUOIS')
        iJapan = GC.getInfoTypeForString('CIVILIZATION_JAPAN')
        iKhmer = GC.getInfoTypeForString('CIVILIZATION_KHMER')
        iKorea = GC.getInfoTypeForString('CIVILIZATION_KOREA')
        iMali = GC.getInfoTypeForString('CIVILIZATION_MALI')
        iMaya = GC.getInfoTypeForString('CIVILIZATION_MAYA')
        iMongol = GC.getInfoTypeForString('CIVILIZATION_MONGOL')
        iNativeAmerica = GC.getInfoTypeForString('CIVILIZATION_NATIVE_AMERICA')
        iNetherlands = GC.getInfoTypeForString('CIVILIZATION_NETHERLANDS')
        iOttoman = GC.getInfoTypeForString('CIVILIZATION_OTTOMAN')
        iPersia = GC.getInfoTypeForString('CIVILIZATION_PERSIA')
        iPortugal = GC.getInfoTypeForString('CIVILIZATION_PORTUGAL')
        iRome = GC.getInfoTypeForString('CIVILIZATION_ROME')
        iRussia = GC.getInfoTypeForString('CIVILIZATION_RUSSIA')
        iSiam = GC.getInfoTypeForString('CIVILIZATION_SIAM')
        iSpain = GC.getInfoTypeForString('CIVILIZATION_SPAIN')
        iSumeria = GC.getInfoTypeForString('CIVILIZATION_SUMERIA')
        iUnitedStates = GC.getInfoTypeForString('CIVILIZATION_UNITED_STATES')
        iViking = GC.getInfoTypeForString('CIVILIZATION_VIKING')
        iZulu = GC.getInfoTypeForString('CIVILIZATION_ZULU')
    except:
        print "Error! Civ not found. -RebelTypes.py"

# Format is:
# RebelTypeList[iHomeland] = [iRebel1, iRebel2, iRebel3]
    try:
        RebelTypeList[iArabia] = [
            iEgypt, iPersia, iOttoman, iBabylon, iSumeria, iAssyria
        ]
        RebelTypeList[iAssyria] = [
            iPersia, iBabylon, iSumeria, iHittites, iEgypt, iArabia
        ]
        RebelTypeList[iAztec] = [
            iInca, iSpain, iNativeAmerica, iMaya, iIroquois
        ]
        RebelTypeList[iBabylon] = [
            iSumeria, iPersia, iGreece, iEgypt, iArabia, iAssyria, iHittites
        ]
        RebelTypeList[iByzantium] = [
            iGreece, iRome, iOttoman, iHolyRoman, iHittites
        ]
        RebelTypeList[iCarthage] = [iRome, iGreece, iMali, iSpain]
        RebelTypeList[iCelt] = [iFrance, iEngland, iGermany, iSpain]
        RebelTypeList[iChina] = [
            iKorea, iMongol, iIndia, iJapan, iKhmer, iSiam
        ]
        RebelTypeList[iEgypt] = [
            iBabylon, iArabia, iPersia, iGreece, iEthiopia, iAssyria, iHittites
        ]
        RebelTypeList[iEngland] = [
            iUnitedStates, iIndia, iZulu, iNetherlands, iCelt
        ]
        RebelTypeList[iEthiopia] = [iEgypt, iMali, iZulu, iArabia]
        RebelTypeList[iFrance] = [iGermany, iCelt, iEngland, iMali, iHolyRoman]
        RebelTypeList[iGermany] = [
            iFrance, iRussia, iViking, iHolyRoman, iNetherlands
        ]
        RebelTypeList[iGreece] = [
            iRome, iPersia, iCarthage, iOttoman, iHittites
        ]
        RebelTypeList[iHittites] = [
            iAssyria, iEgypt, iPersia, iOttoman, iByzantium, iGreece, iBabylon
        ]
        RebelTypeList[iHolyRoman] = [iGermany, iFrance, iSpain, iByzantium]
        RebelTypeList[iInca] = [
            iAztec, iSpain, iMaya, iNativeAmerica, iIroquois
        ]
        RebelTypeList[iIndia] = [iPersia, iSiam, iChina, iEngland, iKhmer]
        RebelTypeList[iIroquois] = [
            iNativeAmerica, iAztec, iMaya, iInca, iUnitedStates
        ]
        RebelTypeList[iJapan] = [iKorea, iChina, iMongol, iKhmer, iSiam]
        RebelTypeList[iKhmer] = [iSiam, iIndia, iChina, iMongol, iJapan]
        RebelTypeList[iKorea] = [iJapan, iChina, iMongol, iKhmer]
        RebelTypeList[iMali] = [iCarthage, iEgypt, iFrance, iZulu, iEthiopia]
        RebelTypeList[iMaya] = [
            iAztec, iInca, iSpain, iNativeAmerica, iIroquois
        ]
        RebelTypeList[iMongol] = [iChina, iRussia, iPersia, iKorea, iSiam]
        RebelTypeList[iNativeAmerica] = [
            iIroquois, iAztec, iMaya, iUnitedStates, iInca
        ]
        RebelTypeList[iNetherlands] = [
            iPortugal, iGermany, iEngland, iUnitedStates
        ]
        RebelTypeList[iOttoman] = [
            iPersia, iGreece, iGermany, iArabia, iByzantium, iHittites
        ]
        RebelTypeList[iPersia] = [
            iOttoman, iIndia, iMongol, iGreece, iSumeria, iBabylon, iAssyria,
            iHittites
        ]
        RebelTypeList[iPortugal] = [iSpain, iFrance, iNetherlands]
        RebelTypeList[iRome] = [iGreece, iCarthage, iCelt, iEgypt, iByzantium]
        RebelTypeList[iRussia] = [iViking, iGermany, iMongol, iPersia]
        RebelTypeList[iSiam] = [iKhmer, iIndia, iChina, iMongol, iJapan]
        RebelTypeList[iSpain] = [iPortugal, iArabia, iAztec, iInca, iHolyRoman]
        RebelTypeList[iSumeria] = [
            iBabylon, iOttoman, iGreece, iPersia, iAssyria
        ]
        RebelTypeList[iUnitedStates] = [
            iEngland, iAztec, iNativeAmerica, iIroquois
        ]
        RebelTypeList[iViking] = [iRussia, iGermany, iEngland, iUnitedStates]
        RebelTypeList[iZulu] = [iMali, iArabia, iEgypt, iEthiopia]
    except:
        print "Error!  Rebel types not found, no short lists available"