Exemple #1
0
def store():
    global g_values, g_iTurn
    g_iTurn = gc.getGame().getGameTurn()
    g_values = getCurrentValuesByTeam()
    data = {SD_VERSION_ID: STORAGE_VERSION, SD_TURN_ID: g_iTurn, SD_VALUES_ID: g_values}
    BugData.getTable(SD_MOD_ID).setData(data)
    BugUtil.debug("SpyUtil - stored: %s", data)
Exemple #2
0
def store():
    global g_values, g_iTurn
    g_iTurn = gc.getGame().getGameTurn()
    g_values = getCurrentValuesByTeam()
    data = {
        SD_VERSION_ID: STORAGE_VERSION,
        SD_TURN_ID: g_iTurn,
        SD_VALUES_ID: g_values
    }
    BugData.getTable(SD_MOD_ID).setData(data)
    BugUtil.debug("SpyUtil - stored: %s", data)
Exemple #3
0
def sdObjectExists(ModID, object):
	if isinstance(object, CyGame):
		if BugData.hasTable(ModID, 'Game'):
			return True
	else:
		cyTable = sdLoad(object)
		if ModID in cyTable:
			return True
	return False
Exemple #4
0
def sdObjectInit(ModID, object, VarDictionary):
	if isinstance(object, CyGame):
		if not BugData.hasTable(ModID, 'Game'):
			sdEntityInit(ModID, 'Game', VarDictionary)
			return 1
	else:
		cyTable = sdLoad(object)
		if ModID not in cyTable:
			cyTable[ModID] = VarDictionary
			object.setScriptData(cPickle.dumps(cyTable))
			return 1
Exemple #5
0
def load():
    global g_values, g_iTurn
    clear()
    data = BugData.getTable(SD_MOD_ID).data
    BugUtil.debug("SpyUtil - loaded: %s", data)
    if SD_VERSION_ID in data:
        if data[SD_VERSION_ID] == 1:
            g_iTurn = data[SD_TURN_ID]
            if g_iTurn != gc.getGame().getGameTurn() - 1:
                BugUtil.warn("SpyUtil - incorrect previous game turn found, ignoring")
            else:
                g_values = data[SD_VALUES_ID]
        elif data[SD_VERSION_ID] > 1:
            BugUtil.warn("SpyUtil - newer format version detected, ignoring")
    else:
        BugUtil.debug("SpyUtil - no data found")
Exemple #6
0
def sdObjectUpdateVal(ModID, object, var, val):

	if isinstance(object, CyGame):
		table = BugData.findTable(ModID, 'Game')
		if table and var in table:
			table[var] = delta
			return True
		return False

	cyTable = sdLoad(object)
	if ModID in cyTable:
		mTable = cyTable[ModID]
		if var in mTable:
			mTable[var] = val
			object.setScriptData(cPickle.dumps(cyTable))
			return True
	return False
Exemple #7
0
def load():
    global g_values, g_iTurn
    clear()
    data = BugData.getTable(SD_MOD_ID).data
    BugUtil.debug("SpyUtil - loaded: %s", data)
    if SD_VERSION_ID in data:
        if data[SD_VERSION_ID] == 1:
            g_iTurn = data[SD_TURN_ID]
            if g_iTurn != gc.getGame().getGameTurn() - 1:
                BugUtil.warn(
                    "SpyUtil - incorrect previous game turn found, ignoring")
            else:
                g_values = data[SD_VALUES_ID]
        elif data[SD_VERSION_ID] > 1:
            BugUtil.warn("SpyUtil - newer format version detected, ignoring")
    else:
        BugUtil.debug("SpyUtil - no data found")
Exemple #8
0
def sdObjectChangeVal(ModID, object, var, delta):
	if isinstance(object, CyGame):
		table = BugData.findTable(ModID, 'Game')
		if table and var in table:
			table[var] += delta
			return True
		return False

	cyTable = sdLoad(object)
	if ModID in cyTable:
		mTable = cyTable[ModID]

		prevVal = sdObjectGetVal(ModID, object, var)
		if not prevVal == None and var in mTable:
			mTable[var] = prevVal + delta
			object.setScriptData(cPickle.dumps(cyTable))
			return True
	return False
Exemple #9
0
def sdSetVal( ModID, entity, var, val ):
	table = BugData.findTable(ModID, entity)
	if table:
		table[var] = val
		return True
	return False
	def _handleOnPreSaveEvent(self, eventType, argsList):
		"""Tells BugData to save all script data after other handlers have been called.
		This won't work as a normal handler because it must be done after other handlers. 
		"""
		self._handleDefaultEvent(eventType, argsList)
		BugData.save()
Exemple #11
0
	def getUnitName(self, sUnitNameConv, pUnit, pCity, bIncrementCounter):

		iPlayer = pUnit.getOwner()
		pPlayer = gc.getPlayer(iPlayer)
		
		zsCiv = pPlayer.getCivilizationAdjective(0)
		zsLeader = pPlayer.getName()
		zsUnitCombat = self.getUnitCombat(pUnit)
		zsUnitDomain = BugUtil.getPlainText("TXT_KEY_BUG_UNIT_NAMING_" + gc.getDomainInfo(pUnit.getDomainType()).getType())
		zsUnit = PyInfo.UnitInfo(pUnit.getUnitType()).getDescription()
		zsCity = pCity.getName()

		#BUGPrint("Civ(%s)" % (zsCiv))
		#BUGPrint("Leader(%s)" % (zsLeader))
		#BUGPrint("Combat(%s)" % (zsUnitCombat))
		#BUGPrint("Domain(%s)" % (zsUnitDomain))
		#BUGPrint("Unit(%s)" % (zsUnit))
		#BUGPrint("City(%s)" % (zsCity))

		zsName = sUnitNameConv

		#if zsName == "":
		#zsName = "^ut^ ^cnt[r]^ Div ^tt1[s][5:7]^ : ^ct^ ^tt2[o][101]^"

		#BUGPrint("UnitNameEM-A [" + zsName + "]")

##  - ^civ4^ - no naming convention, uses standard civ4
#		check if Civ4 naming convention is required
		if not (zsName.find("^civ4^") == -1):
			return ""

##  - ^rd^ - random name
#		check if random naming convention is required
		if not (zsName.find("^rd^") == -1):
			zsRandomName = RandomNameUtils.getRandomName()
			zsName = zsName.replace("^rd^", zsRandomName)


		#BUGPrint("UnitNameEM-B")

##  - ^rc^ - random civ related name
#		check if random civ related naming convention is required
		if not (zsName.find("^rc^") == -1):
			zsRandomName = RandomNameUtils.getRandomCivilizationName(pPlayer.getCivilizationType())
			zsName = zsName.replace("^rc^", zsRandomName)

		#BUGPrint("UnitNameEM-C [" + zsName + "]")

##  - ^ct^ - City
##  - ^cv^ - Civilization
##  - ^ut^ - unit (eg Archer)
##  - ^cb^ - combat type (Melee)
##  - ^dm^ - domain (Water)
##  - ^ld^ - leader
#		replace the fixed items in the naming conv
		zsName = zsName.replace("^ct^", zsCity)
		zsName = zsName.replace("^cv^", zsCiv)
		zsName = zsName.replace("^ut^", zsUnit)
		zsName = zsName.replace("^cb^", zsUnitCombat)
		zsName = zsName.replace("^dm^", zsUnitDomain)
		zsName = zsName.replace("^ld^", zsLeader)

		#BUGPrint("UnitNameEM-D [" + zsName + "]")

#		check if there are any more codes to swap out, return if not
		counters = BugData.getGameData().getTable(SD_MOD_ID)
		while zsName.find("^cnt") != -1:
#			determine what I am counting across
			zsSDKey = self.getCounter(zsName)
			if zsSDKey == "UNIT":		zsSDKey = zsSDKey + zsUnit
			elif zsSDKey == "COMBAT":	zsSDKey = zsSDKey + zsUnitCombat
			elif zsSDKey == "CITY":		zsSDKey = zsSDKey + zsCity
			elif zsSDKey == "UNITCITY": zsSDKey = zsSDKey + zsUnit + zsCity
			elif zsSDKey == "DOMAIN":	zsSDKey = zsSDKey + zsUnitDomain
	
			#BUGPrint("UnitNameEM-E [" + zsSDKey + "]")
	
#			see if we have already started this counter
			if (not counters.hasTable(zsSDKey)):
				#Since no record create entries
				ziCnt = 0
				ziTT1 = self.getTotal1(zsName)
				ziTT2 = self.getTotal2(zsName)
				counter = counters.getTable(zsSDKey)
			else:
#				get the count values
				counter = counters.getTable(zsSDKey)
				ziCnt = counter["cnt"]
				ziTT1 = counter["tt1"]
				ziTT2 = counter["tt2"]

			#BUGPrint("UnitNameEM-F [" + str(ziCnt) + "] [" + str(ziTT1) + "] [" + str(ziTT2) + "]")

#			increment count, adjust totals if required
			if bIncrementCounter:
				ziCnt = ziCnt + 1
				if (ziCnt > ziTT1
				and ziTT1 > 0):
					ziCnt = 1
					ziTT1 = self.getTotal1(zsName)
					ziTT2 = ziTT2 + 1
#				store the new values
				counter["cnt"] = ziCnt
				counter["tt1"] = ziTT1
				counter["tt2"] = ziTT2

#			swap out the count code items for count value
			zsName = self.swapCountCode(zsName, "^cnt", ziCnt)
			zsName = self.swapCountCode(zsName, "^tt1", ziTT1)
			zsName = self.swapCountCode(zsName, "^tt2", ziTT2)

		return zsName
def sdEntityWipe( ModID, entity ):
	return BugData.deleteTable(ModID)
def sdModSave( ModID, mTable ):
	table = BugData.getTable(ModID)
	table.setData(mTable)
	return 0
def sdDelGlobal( ModID, var ):
	table = BugData.findTable(ModID, GLOBALS_KEY)
	if table and var in table:
		del table[var]
		return True
	return False
def sdGetGlobal( ModID, var ):
	table = BugData.findTable(ModID, GLOBALS_KEY)
	if table and var in table:
		return table[var]
	return None
def sdSetVal( ModID, entity, var, val ):
	table = BugData.findTable(ModID, entity)
	if table:
		table[var] = val
		return True
	return False
Exemple #17
0
def sdGetVal( ModID, entity, var ):
	return BugData.getTable(ModID, entity)[var]
    def handleInput(self, inputClass):
        screen = CyGInterfaceScreen("WBStoredDataScreen",
                                    CvScreenEnums.WB_STOREDDATA)
        global iChange
        global iSelectedCiv
        global bRemove
        global iSelectedMode

        global scriptDict
        global lBools
        global lInts
        global lLists
        global iSelectedList
        global iWarList

        if inputClass.getFunctionName() == "CurrentPage":
            iIndex = screen.getPullDownData(
                "CurrentPage", screen.getSelectedPullDownID("CurrentPage"))
            if iIndex == 8:
                WBReligionScreen.WBReligionScreen().interfaceScreen(
                    self.top.m_iCurrentPlayer)
            elif iIndex == 9:
                WBCorporationScreen.WBCorporationScreen().interfaceScreen(
                    self.top.m_iCurrentPlayer)
            elif iIndex == 10:
                WBGameDataScreen.WBGameDataScreen(self.top).interfaceScreen()
            elif iIndex == 11:
                WBInfoScreen.WBInfoScreen().interfaceScreen(
                    self.top.m_iCurrentPlayer)

        elif inputClass.getFunctionName() == "ChangeBy":
            if bRemove:
                iChange = -screen.getPullDownData(
                    "ChangeBy", screen.getSelectedPullDownID("ChangeBy"))
            else:
                iChange = screen.getPullDownData(
                    "ChangeBy", screen.getSelectedPullDownID("ChangeBy"))

        elif inputClass.getFunctionName() == "ChangeType":
            bRemove = not bRemove
            iChange = -iChange

        elif inputClass.getFunctionName() == "SelectMode":
            iSelectedMode = screen.getPullDownData(
                "SelectMode", screen.getSelectedPullDownID("SelectMode"))
            iSelectedList = 0
            self.loadData()

        elif inputClass.getFunctionName() == "SelectCiv":
            iSelectedCiv = screen.getPullDownData(
                "SelectCiv", screen.getSelectedPullDownID("SelectCiv"))
            self.placeCivButton()
            if iSelectedMode == 1:
                self.loadData()

        elif inputClass.getFunctionName() == "WBDataTable":
            if inputClass.getData1() == 22007:
                item = lBools[inputClass.getData2()]
                if iSelectedMode == 0:
                    data.__dict__[item] = not data.__dict__[item]
                else:
                    data.players[iSelectedCiv].__dict__[
                        item] = not data.players[iSelectedCiv].__dict__[item]
            elif inputClass.getData1() == 22008:
                item = lInts[inputClass.getData2()]
                if iSelectedMode == 0:
                    iValue = data.__dict__[item]
                else:
                    iValue = data.players[iSelectedCiv].__dict__[item]

                iValue += iChange

                if item == "iStabilityLevel":
                    iValue = max(iStabilityCollapsing,
                                 min(iValue, iStabilitySolid))
                elif item == "iFirstNewWorldColony":
                    iValue = iSelectedCiv

                if iSelectedMode == 0:
                    data.__dict__[item] = iValue
                else:
                    data.players[iSelectedCiv].__dict__[item] = iValue
            if iSelectedMode == 0:
                for iPlayer in range(iNumPlayers):
                    if not gc.getPlayer(iPlayer).isAlive(): continue
                    dc.checkName(iPlayer)
            else:
                dc.checkName(iSelectedCiv)
            self.placeDataTable()

        elif inputClass.getFunctionName() == "WBListTable":
            iSelectedList = inputClass.getData2()
            self.placeListTables()

        elif inputClass.getFunctionName() == "WBListTableTwo":
            iItem = inputClass.getData2()
            sList = lLists[iSelectedList]

            if sList == "lWarTrend":
                iWarList = iItem
            elif isinstance(scriptDict[sList][iItem], bool):
                if iSelectedMode == 0:
                    data.__dict__[sList][
                        iItem] = not data.__dict__[sList][iItem]
                else:
                    data.players[iSelectedCiv].__dict__[sList][
                        iItem] = not data.players[iSelectedCiv].__dict__[
                            sList][iItem]
            elif isinstance(scriptDict[sList][iItem], int):
                bCiv = sList in [
                    "lFirstDiscovered", "lWonderBuilder", "lReligionFounder",
                    "lFirstEntered", "lFirstGreatPeople"
                ]
                if bCiv:
                    data.__dict__[sList][iItem] = iSelectedCiv
                else:
                    if sList in ["lGoals", "lEconomyTrend"]:
                        iValue = data.players[iSelectedCiv].__dict__[sList][
                            iItem] + abs(iChange) / iChange
                        iValue = max(-1, min(iValue, 1))
                        data.players[iSelectedCiv].__dict__[sList][
                            iItem] = iValue
                    elif sList == "lHappinessTrend":
                        if bRemove:
                            iValue = -1
                        else:
                            iValue = 1
                        data.players[iSelectedCiv].__dict__[sList][
                            iItem] = iValue
                    else:
                        popup = Popup.PyPopup(
                            7777, EventContextTypes.EVENTCONTEXT_ALL)
                        if iSelectedMode == 0:
                            sText = str(data.__dict__[sList][iItem])
                        else:
                            sText = str(
                                data.players[iSelectedCiv].__dict__[sList]
                                [iItem])
                        popup.setUserData((iItem, -1))
                        popup.createEditBox(sText)
                        popup.launch()
                        return 1
            if iSelectedMode == 0:
                for iPlayer in range(iNumPlayers):
                    if not gc.getPlayer(iPlayer).isAlive(): continue
                    dc.checkName(iPlayer)
            else:
                dc.checkName(iSelectedCiv)
            self.placeListTables()

        elif inputClass.getFunctionName() == "WBListTableThree":
            iItem = inputClass.getData2()
            data.players[iSelectedCiv].__dict__["lWarTrend"][iWarList][
                iItem] += iChange
            self.placeListTables()

        elif inputClass.getFunctionName() == "RestoreBackup":
            BugData.onGameLoad(-1)
            self.loadData()
        elif inputClass.getFunctionName() == "CreateBackup":
            BugData.save()

        return 1
Exemple #19
0
def sdSetGlobal(ModID, var, val):
	BugData.getTable(ModID, 'Global')[var] = val
Exemple #20
0
def sdGetVal(ModID, entity, var):
	table = BugData.findTable(ModID, entity)
	if table:
		if var in table:
			return table[var]
	return None
Exemple #21
0
def sdDelVal( ModID, entity, var ):
	table = BugData.findTable(ModID, entity)
	if table and var in table:
		del table[var]
		return True
	return False
Exemple #22
0
def sdGetGlobal( ModID, var ):
	table = BugData.findTable(ModID, GLOBALS_KEY)
	if table and var in table:
		return table[var]
	return None
def sdGetVal( ModID, entity, var ):
	return BugData.getTable(ModID, entity)[var]
Exemple #24
0
def sdSetGlobal( ModID, var, val ):
	BugData.getTable(ModID, GLOBALS_KEY)[var] = val
def sdDelVal( ModID, entity, var ):
	table = BugData.findTable(ModID, entity)
	if table and var in table:
		del table[var]
		return True
	return False
Exemple #26
0
def sdDelGlobal( ModID, var ):
	table = BugData.findTable(ModID, GLOBALS_KEY)
	if table and var in table:
		del table[var]
		return True
	return False
def sdSetGlobal( ModID, var, val ):
	BugData.getTable(ModID, GLOBALS_KEY)[var] = val
Exemple #28
0
def sdModLoad( ModID ):
	return BugData.getTable(ModID).data
def sdModLoad( ModID ):
	return BugData.getTable(ModID).data
Exemple #30
0
def sdModSave( ModID, mTable ):
	table = BugData.getTable(ModID)
	table.setData(mTable)
	return 0
def sdEntityInit( ModID, entity, eTable ):
	table = BugData.getTable(ModID, entity)
	table.setData(eTable)
	return 0
Exemple #32
0
def sdEntityInit( ModID, entity, eTable ):
	table = BugData.getTable(ModID, entity)
	table.setData(eTable)
	return 0
def sdEntityExists( ModID, entity ):
	return BugData.hasTable(ModID, entity)
Exemple #34
0
def sdEntityWipe( ModID, entity ):
	return BugData.deleteTable(ModID)
Exemple #35
0
    def _handleOnPreSaveEvent(self, eventType, argsList):
        """Tells BugData to save all script data after other handlers have been called.
		This won't work as a normal handler because it must be done after other handlers. 
		"""
        self._handleDefaultEvent(eventType, argsList)
        BugData.save()
Exemple #36
0
def sdEntityExists( ModID, entity ):
	return BugData.hasTable(ModID, entity)
	def getUnitName(self, sUnitNameConv, pUnit, pCity, bIncrementCounter):

		iPlayer = pUnit.getOwner()
		pPlayer = gc.getPlayer(iPlayer)

		zsCiv = pPlayer.getCivilizationAdjective(0)
		zsLeader = pPlayer.getName()
		zsUnitCombat = self.getUnitCombat(pUnit)
		zsUnitDomain = BugUtil.getPlainText("TXT_KEY_BUG_UNIT_NAMING_" + gc.getDomainInfo(pUnit.getDomainType()).getType())
		zsUnit = gc.getUnitInfo(pUnit.getUnitType()).getDescription()
		zsCity = pCity.getName()

		#BUGPrint("Civ(%s)" % (zsCiv))
		#BUGPrint("Leader(%s)" % (zsLeader))
		#BUGPrint("Combat(%s)" % (zsUnitCombat))
		#BUGPrint("Domain(%s)" % (zsUnitDomain))
		#BUGPrint("Unit(%s)" % (zsUnit))
		#BUGPrint("City(%s)" % (zsCity))

		zsName = sUnitNameConv

		#if zsName == "":
		#zsName = "^ut^ ^cnt[r]^ Div ^tt1[s][5:7]^ : ^ct^ ^tt2[o][101]^"

		#BUGPrint("UnitNameEM-A [" + zsName + "]")

##  - ^civ4^ - no naming convention, uses standard civ4
#		check if Civ4 naming convention is required
		if not (zsName.find("^civ4^") == -1):
			return ""

##  - ^rd^ - random name
#		check if random naming convention is required
		if not (zsName.find("^rd^") == -1):
			zsRandomName = RandomNameUtils.getRandomName()
			zsName = zsName.replace("^rd^", zsRandomName)


		#BUGPrint("UnitNameEM-B")

##  - ^rc^ - random civ related name
#		check if random civ related naming convention is required
		if not (zsName.find("^rc^") == -1):
			zsRandomName = RandomNameUtils.getRandomCivilizationName(pPlayer.getCivilizationType())
			zsName = zsName.replace("^rc^", zsRandomName)

		#BUGPrint("UnitNameEM-C [" + zsName + "]")

##  - ^ct^ - City
##  - ^cv^ - Civilization
##  - ^ut^ - unit (eg Archer)
##  - ^cb^ - combat type (Melee)
##  - ^dm^ - domain (Water)
##  - ^ld^ - leader
#		replace the fixed items in the naming conv
		zsName = zsName.replace("^ct^", zsCity)
		zsName = zsName.replace("^cv^", zsCiv)
		zsName = zsName.replace("^ut^", zsUnit)
		zsName = zsName.replace("^cb^", zsUnitCombat)
		zsName = zsName.replace("^dm^", zsUnitDomain)
		zsName = zsName.replace("^ld^", zsLeader)

		#BUGPrint("UnitNameEM-D [" + zsName + "]")

#		check if there are any more codes to swap out, return if not
		counters = BugData.getGameData().getTable(SD_MOD_ID)
		while zsName.find("^cnt") != -1:
#			determine what I am counting across
			zsSDKey = self.getCounter(zsName)
			if zsSDKey == "UNIT":		zsSDKey = zsSDKey + zsUnit
			elif zsSDKey == "COMBAT":	zsSDKey = zsSDKey + zsUnitCombat
			elif zsSDKey == "CITY":		zsSDKey = zsSDKey + zsCity
			elif zsSDKey == "UNITCITY": zsSDKey = zsSDKey + zsUnit + zsCity
			elif zsSDKey == "DOMAIN":	zsSDKey = zsSDKey + zsUnitDomain

			#BUGPrint("UnitNameEM-E [" + zsSDKey + "]")

#			see if we have already started this counter
			if (not counters.hasTable(zsSDKey)):
				#Since no record create entries
				ziCnt = 0
				ziTT1 = self.getTotal1(zsName)
				ziTT2 = self.getTotal2(zsName)
				counter = counters.getTable(zsSDKey)
			else:
#				get the count values
				counter = counters.getTable(zsSDKey)
				ziCnt = counter["cnt"]
				ziTT1 = counter["tt1"]
				ziTT2 = counter["tt2"]

			#BUGPrint("UnitNameEM-F [" + str(ziCnt) + "] [" + str(ziTT1) + "] [" + str(ziTT2) + "]")

#			increment count, adjust totals if required
			if bIncrementCounter:
				ziCnt = ziCnt + 1
				if (ziCnt > ziTT1
				and ziTT1 > 0):
					ziCnt = 1
					ziTT1 = self.getTotal1(zsName)
					ziTT2 = ziTT2 + 1
#				store the new values
				counter["cnt"] = ziCnt
				counter["tt1"] = ziTT1
				counter["tt2"] = ziTT2

#			swap out the count code items for count value
			zsName = self.swapCountCode(zsName, "^cnt", ziCnt)
			zsName = self.swapCountCode(zsName, "^tt1", ziTT1)
			zsName = self.swapCountCode(zsName, "^tt2", ziTT2)

		return zsName
	def handleInput(self, inputClass):
		screen = CyGInterfaceScreen("WBStoredDataScreen", CvScreenEnums.WB_STOREDDATA)
		global iChange
		global iSelectedCiv
		global bRemove
		global iSelectedMode

		global scriptDict
		global lBools
		global lInts
		global lLists
		global iSelectedList
		global iWarList

		if inputClass.getFunctionName() == "CurrentPage":
			iIndex = screen.getPullDownData("CurrentPage", screen.getSelectedPullDownID("CurrentPage"))
			if iIndex == 8:
				WBReligionScreen.WBReligionScreen().interfaceScreen(self.top.m_iCurrentPlayer)
			elif iIndex == 9:
				WBCorporationScreen.WBCorporationScreen().interfaceScreen(self.top.m_iCurrentPlayer)
			elif iIndex == 10:
				WBGameDataScreen.WBGameDataScreen(self.top).interfaceScreen()
			elif iIndex == 11:
				WBInfoScreen.WBInfoScreen().interfaceScreen(self.top.m_iCurrentPlayer)

		elif inputClass.getFunctionName() == "ChangeBy":
			if bRemove:
				iChange = -screen.getPullDownData("ChangeBy", screen.getSelectedPullDownID("ChangeBy"))
			else:
				iChange = screen.getPullDownData("ChangeBy", screen.getSelectedPullDownID("ChangeBy"))

		elif inputClass.getFunctionName() == "ChangeType":
			bRemove = not bRemove
			iChange = -iChange

		elif inputClass.getFunctionName() == "SelectMode":
			iSelectedMode = screen.getPullDownData("SelectMode", screen.getSelectedPullDownID("SelectMode"))
			iSelectedList = 0
			self.loadData()

		elif inputClass.getFunctionName() == "SelectCiv":
			iSelectedCiv = screen.getPullDownData("SelectCiv", screen.getSelectedPullDownID("SelectCiv"))
			self.placeCivButton()
			if iSelectedMode == 1:
				self.loadData()

		elif inputClass.getFunctionName() == "WBDataTable":
			if inputClass.getData1() == 22007:
				item = lBools[inputClass.getData2()]
				if iSelectedMode == 0:
					data.__dict__[item] = not data.__dict__[item]
				else:
					data.players[iSelectedCiv].__dict__[item] = not data.players[iSelectedCiv].__dict__[item]
			elif inputClass.getData1() == 22008:
				item = lInts[inputClass.getData2()]
				if iSelectedMode == 0:
					iValue = data.__dict__[item]
				else:
					iValue = data.players[iSelectedCiv].__dict__[item]

				iValue += iChange

				if item == "iStabilityLevel":
					iValue = max(iStabilityCollapsing, min(iValue, iStabilitySolid))

				if iSelectedMode == 0:
					data.__dict__[item] = iValue
				else:
					data.players[iSelectedCiv].__dict__[item] = iValue
			self.placeDataTable()

		elif inputClass.getFunctionName() == "WBListTable":
			iSelectedList = inputClass.getData2()
			self.placeListTables()

		elif inputClass.getFunctionName() == "WBListTableTwo":
			iItem = inputClass.getData2()
			sList = lLists[iSelectedList]

			if sList == "lWarTrend":
				iWarList = iItem
			elif isinstance(scriptDict[sList][iItem], bool):
				if iSelectedMode == 0:
					data.__dict__[sList][iItem] = not data.__dict__[sList][iItem]
				else:
					data.players[iSelectedCiv].__dict__[sList][iItem] = not data.players[iSelectedCiv].__dict__[sList][iItem]
			elif isinstance(scriptDict[sList][iItem], int):
				bCiv = sList in ["lFirstDiscovered", "lWonderBuilder", "lReligionFounder", "lFirstEntered"]
				if bCiv:
					data.__dict__[sList][iItem] = iSelectedCiv
				else:
					if sList in ["lGoals", "lEconomyTrend"]:
						iValue = data.players[iSelectedCiv].__dict__[sList][iItem] + abs(iChange) / iChange
						iValue = max(-1, min(iValue, 1))
						data.players[iSelectedCiv].__dict__[sList][iItem] = iValue
					elif sList == "lHappinessTrend":
						if bRemove:
							iValue = -1
						else:
							iValue = 1
						data.players[iSelectedCiv].__dict__[sList][iItem] = iValue
					else:
						popup = Popup.PyPopup(7777, EventContextTypes.EVENTCONTEXT_ALL)
						if iSelectedMode == 0:
							sText = str(data.__dict__[sList][iItem])
						else:
							sText = str(data.players[iSelectedCiv].__dict__[sList][iItem])
						popup.setUserData((iItem, -1))
						popup.createEditBox(sText)
						popup.launch()
						return 1
			self.placeListTables()


		elif inputClass.getFunctionName() == "WBListTableThree":
			iItem = inputClass.getData2()
			data.players[iSelectedCiv].__dict__["lWarTrend"][iWarList][iItem] += iChange
			self.placeListTables()

		elif inputClass.getFunctionName() == "RestoreBackup":
			BugData.onGameLoad(-1)
			self.loadData()
		elif inputClass.getFunctionName() == "CreateBackup":
			BugData.save()

		return 1