def onConstruct(self, widget, action, data):
		if not data:
			self.win.setStatus(_('Select technology to construct.'))
			return

		if not self.sourceID:
			self.sourceID = self.planetID

		try:
			self.quantity = int(self.win.vQuantity.text)
		except ValueError:
			self.win.setStatus(_('Specify quantity (1, 2, 3, ...).'))
			return

		try:
			self.win.setStatus(_('Executing START CONSTRUCTION command...'))
			planet = client.get(self.sourceID, noUpdate = 1)
			if self.extraSlot:
				for i in range(1, self.quantity + 1):
					client.cmdProxy.startConstruction(self.sourceID,
						Rules.Tech.ADDSLOT3, 1, self.planetID, False,
						self.win.vReportFin.checked, OID_NONE)
					player = client.getPlayer()
					planet.prodQueue, player.stratRes = client.cmdProxy.startConstruction(self.sourceID,
						data.techID, 1, self.planetID, data.techID < 1000,
						self.win.vReportFin.checked, self.structToDemolish)
			else:
				player = client.getPlayer()
				planet.prodQueue, player.stratRes = client.cmdProxy.startConstruction(self.sourceID,
					data.techID, self.quantity, self.planetID, data.techID < 1000,
					self.win.vReportFin.checked, self.structToDemolish)
			self.win.setStatus(_('Command has been executed.'))
		except GameException, e:
			self.win.setStatus(e.args[0])
			return
Exemplo n.º 2
0
 def onConstruct(self, widget, action, data):
     name = self.win.vName.text
     if not name:
         self.win.setStatus(_("Enter name of the design."))
         return
     # compute
     player = client.getPlayer()
     if self.ctrlID:
         eqIDs = {self.ctrlID: 1}
     else:
         eqIDs = {}
     for eqID in self.eqIDs:
         if self.eqIDs[eqID]:
             eqIDs[eqID] = self.eqIDs[eqID]
     try:
         self.win.setStatus(_("Executing ADD SHIP DESIGN command..."))
         player = client.getPlayer()
         player.shipDesigns, self.selectedDesignID = \
             client.cmdProxy.addShipDesign(player.oid, name, self.hullID, eqIDs)
         self.win.vDuplDesign.enabled = 1
         self.win.setStatus(_('Command has been executed.'))
     except GameException as e:
         self.win.setStatus(_(e.args[0]))
         return
     self.editMode = False
     self.update()
Exemplo n.º 3
0
	def update(self,configUpdated=False):
		self.galaxyRestart(None, None, False)
		player = client.getPlayer()
		turn = client.getTurn()
		self.win.vTurn.text = res.formatTime(turn)
		if configUpdated:
			self.win.vStarMap.updateConfigModes()
		self.win.vStarMap.precompute()
		# center of 1st player star
		if not self.centered:
			player = client.getPlayer()
			if player.planets:
				planet = client.get(player.planets[0])
				self.win.vStarMap.setPos(planet.x, planet.y)
			elif player.fleets:
				fleet = client.get(player.fleets[0])
				self.win.vStarMap.setPos(fleet.x, fleet.y)
			self.centered = 1
			self.refocus() #only fire off when dialog first updated
		# enable/disable construction
		self.win.vConstruction.enabled = Utils.enableConstruction(client)
		# enable/disable diplomacy
		#if player.diplomacyRels:
		self.win.vDiplomacy.enabled = 1
		#else:
		#	self.win.vDiplomacy.enabled = 0
		# highlight messages button?
		self.messagesDlg.update()
		if self.messagesDlg.newMsgs > 0:
			self.win.vMessages.foreground = gdata.sevColors[gdata.MAJ]
		else:
			self.win.vMessages.foreground = None
Exemplo n.º 4
0
 def update(self, configUpdated=False):
     self.galaxyFinishPopup(None, None, False)
     self.alterMenu(None, None, False)
     player = client.getPlayer()
     turn = client.getTurn()
     self.win.vTurn.text = res.formatTime(turn)
     if configUpdated:
         self.win.vStarMap.updateConfigModes()
     self.win.vStarMap.precompute()
     # center of 1st player star
     if not self.centered:
         player = client.getPlayer()
         if player.planets:
             planet = client.get(player.planets[0])
             self.win.vStarMap.setPos(planet.x, planet.y)
         elif player.fleets:
             fleet = client.get(player.fleets[0])
             self.win.vStarMap.setPos(fleet.x, fleet.y)
         self.centered = 1
         self.refocus()  #only fire off when dialog first updated
     # enable/disable construction
     self.win.vConstruction.enabled = Utils.enableConstruction(client)
     # enable/disable diplomacy
     #if player.diplomacyRels:
     self.win.vDiplomacy.enabled = 1
     #else:
     #    self.win.vDiplomacy.enabled = 0
     # highlight messages button?
     self.messagesDlg.update()
     if self.messagesDlg.newMsgs > 0:
         self.win.vMessages.foreground = gdata.sevColors[gdata.MAJ]
     else:
         self.win.vMessages.foreground = None
Exemplo n.º 5
0
	def onScrapConfirmed(self):
		try:
			self.win.setStatus(_('Executing SCRAP FLEET command...'))
			client.db[self.fleetID] = client.cmdProxy.disbandFleet(self.fleetID)
			self.win.setStatus(_('Command has been executed.'))
			client.getPlayer().fleets.remove(self.fleetID)
			del client.db[self.fleetID]
			self.hide()
			gdata.mainGameDlg.update()
			return 0
		except ige.GameException, e:
			self.win.setStatus(_(e.args[0]))
			return 1
Exemplo n.º 6
0
 def onScrapConfirmed(self):
     try:
         self.win.setStatus(_('Executing SCRAP FLEET command...'))
         client.db[self.fleetID] = client.cmdProxy.disbandFleet(
             self.fleetID)
         self.win.setStatus(_('Command has been executed.'))
         client.getPlayer().fleets.remove(self.fleetID)
         del client.db[self.fleetID]
         self.hide()
         gdata.mainGameDlg.update()
         return 0
     except ige.GameException, e:
         self.win.setStatus(_(e.args[0]))
         return 1
Exemplo n.º 7
0
 def onFinishConfirmed(self, imperatorMsg, scenario):
     self.win.setStatus(_('Galaxy finish in progress...'))
     oldMsgHandler = client.cmdProxy.msgHandler
     client.cmdProxy.msgHandler = None
     client.cmdProxy.keepAliveTime = 60 * 60 # do not try to connect to server (one hour)
     if scenario == Const.SCENARIO_SINGLE:
         client.cmdProxy.deleteSingle(client.getPlayer().galaxy)
     elif scenario == Const.SCENARIO_OUTERSPACE:
         client.cmdProxy.finishGalaxyImperator(Const.OID_UNIVERSE, client.getPlayer().galaxy, imperatorMsg)
     else:
         return
     client.db.clear()
     client.cmdProxy.msgHandler = oldMsgHandler
     self.hide()
     self.app.exitLocal()
Exemplo n.º 8
0
 def _processProdQueue(self, planet):
     player = client.getPlayer()
     if planet.prodQueue and planet.effProdProd > 0:
         index = 0
         totalProd = 0
         for task in planet.prodQueue:
             if task.isShip:
                 tech = player.shipDesigns[task.techID]
             else:
                 tech = client.getFullTechInfo(task.techID)
             prodFirst, prodNext = self._getTaskProd(task, tech, planet.oid)
             if index == 0:
                 constrInfo = tech.name
                 etc = math.ceil(float(prodFirst) / planet.effProdProd)
             totalProd += prodFirst + prodNext
             index += 1
         etc = res.formatTime(etc)
         totalEtc = res.formatTime(math.ceil(float(totalProd) / planet.effProdProd))
     elif planet.prodQueue:
         task = planet.prodQueue[0]
         if task.isShip:
             tech = player.shipDesigns[task.techID]
         else:
             tech = client.getTechInfo(task.techID)
         constrInfo = tech.name
         etc = _('N/A')
         totalEtc = _("N/A")
     else:
         constrInfo = _("-")
         etc = "-"
         totalEtc = _("-")
     return constrInfo, etc, totalEtc
Exemplo n.º 9
0
    def showItems(self):
        items = []
        selected = None
        player = client.getPlayer()
        for techID in player.techs:
            tech = client.getTechInfo(techID)
            if getattr(tech, self.techType) == 0:
                continue
            if self.techSubtype and tech.subtype not in self.techSubtype:
                continue
            # skip equipment not suitable for this hull
            if tech.minHull > self.hullType:
                continue
            if tech.maxHull < self.hullType:
                continue

            techType = self.getTechType(tech)
            if self.typeFilter & techType == 0:
                continue

            item = ui.Item(tech.name,
                           tData=sequip.getLongDescr(techID),
                           techID=techID,
                           tType=typeText[techType])

            if techID == self.selected:
                selected = item

            items.append(item)
        self.win.vList.items = items
        self.win.vList.itemsChanged()
        self.win.vList.selectItem(selected)
Exemplo n.º 10
0
    def _researchContext(self, tech):
        player = client.getPlayer()

        descr = []
        improvement = player.techs.get(self.techID, 0)
        if hasattr(tech, 'researchMod'):
            prefix = _('Improvement') if improvement else _('Research')
            descr.append(
                _('%s costs: %d') %
                (prefix, Utils.getTechRCost(player, self.techID)))
            descr.append('')
        # requires
        if tech.researchRequires and improvement == 0:
            descr.append(_('Research requires:'))
            for tmpTechID, improvement in tech.researchRequires:
                tmpTech = client.getTechInfo(tmpTechID)
                descr.append(
                    _(' - %s improvement %d (TL%d)') %
                    (tmpTech.name, improvement, tmpTech.level))
            if hasattr(tech, "researchReqSRes"):
                for stratRes in tech.researchReqSRes:
                    descr.append(
                        _(" - %s (strategic resource)") %
                        (gdata.stratRes[stratRes]))
            descr.append('')
        if hasattr(tech, "researchDisables") and tech.researchDisables:
            descr.append(_("Research disables:"))
            for tmpTechID in tech.researchDisables:
                tmpTech = client.getTechInfo(tmpTechID)
                descr.append(_(" - %s (TL%d)") % (tmpTech.name, tmpTech.level))
            descr.append('')
        return descr
    def show(self):
        player = client.getPlayer()

        self.fleetsByDesign = {}
        self.fleetCountsByDesign = {}
        items = []
        for designID in player.shipDesigns:
            spec = player.shipDesigns[designID]
            fleets = {}
            fleetCounts = {}
            for fleetID in player.fleets:
                fleet = client.get(fleetID)
                count = 0
                for tmpDesignID, hp, shieldHP, exp in fleet.ships:
                    if tmpDesignID == designID:
                        count += 1
                        fleets[fleet] = 1
                fleetCounts[fleetID] = count
            self.fleetsByDesign[designID] = fleets.keys()
            self.fleetCountsByDesign[designID] = fleetCounts
            item = ui.Item(spec.name,
                           tDesignID=designID,
                           tShipsCount=len(fleets.keys()))
            items.append(item)
        self.win.vDesigns.items = items
        self.win.vDesigns.itemsChanged()
Exemplo n.º 12
0
    def display(self, objID):
        player = client.getPlayer()
        text = []
        if hasattr(player, "buoys") and objID in player.buoys:
            label = _("Private buoy text")
            if player.buoys[objID][1] == Const.BUOY_TO_ALLY:
                label = u"%s%s:" % (label, _(" (visible to allies)"))
            else:
                label = u"%s:" % label
            text.append(label)
            text.extend(player.buoys[objID][0].split("\n"))
            text.append("")

        if hasattr(player, "alliedBuoys") and objID in player.alliedBuoys:
            text.append(_("Buoy texts from allies:"))
            for buoy in player.alliedBuoys[objID]:
                text.extend(buoy[0].split("\n"))
                text.append(_('(Author: %s)') % buoy[2])  #owner's name
                text.append("")

        self.win.vText.text = text
        self.win.show()
        # register for updates
        if self not in gdata.updateDlgs:
            gdata.updateDlgs.append(self)
Exemplo n.º 13
0
    def _processResearchQueue(self):
        player = client.getPlayer()

        items = []
        index = 0
        queued = []
        totalSci = 0
        for task in player.rsrchQueue:
            queued.append(task.techID)
            item, taskSci = self._processResearchQueueTask(task)
            item.index = index
            items.append(item)
            totalSci += taskSci
            index += 1
        totalSci = math.ceil(float(totalSci) / player.effSciPoints)
        self.win.vRQueue.items = items
        self.win.vRQueue.itemsChanged()
        self.win.vRQueueTop.enabled = 0
        self.win.vRQueueUp.enabled = 0
        self.win.vRQueueDown.enabled = 0
        self.win.vRQueueAbort.enabled = 0
        self.win.vRQueueRepat.enabled = 0
        self.win.vRQueueRepat.pressed = 0
        self.win.vRQueueInfo.enabled = 0
        self.win.vRTotal.text = res.formatTime(totalSci) if totalSci else _(
            "N/A")
        return queued
Exemplo n.º 14
0
    def alterMenu(self, widget, action, data):
        """ Update menu according to current situation, being different in singleplayer
        or when player is imperator of competitive galaxy, or player has no rights to
        finish galaxy at all.
        """
        if client.db != None:
            player = client.getPlayer()
            galaxy = client.get(player.galaxy)
            # player can restart (finish) it's own singleplayer galaxy anytime
            if galaxy.scenario == Const.SCENARIO_SINGLE:
                # depends on state of galaxy
                if not galaxy.timeEnabled:
                    self.systemMenu.items[7].text = _("Resume galaxy")
                else:
                    self.systemMenu.items[7].text = _("Pause galaxy")
                self.systemMenu.items[7].action = "onToggleTime"
                self.systemMenu.items[6].enabled = True
                self.systemMenu.items[7].enabled = True

            elif galaxy.scenario == Const.SCENARIO_OUTERSPACE:
                # standard behavior
                if player.imperator > 2:
                    # player is imperator for more than two weeks - has right to finish galaxy
                    self.systemMenu.items[6].enabled = True
                else:
                    # no right to finish galaxy
                    self.systemMenu.items[6].enabled = False
                # you cannot resign when time is stopped
                if galaxy.timeEnabled:
                    self.systemMenu.items[7].enabled = True
                else:
                    self.systemMenu.items[7].enabled = False
Exemplo n.º 15
0
 def onConstruct(self, widget, action, data):
     planet = client.get(self.planetID, noUpdate = 1)
     player = client.getPlayer()
     if not self.techID:
         self.win.setStatus(_('Select technology to construct.'))
         return
     if not self.targetID:
         self.win.setStatus(_('Select planet to construct on.'))
         return
     try:
         self.quantity = int(self.win.vQuantity.text)
     except ValueError:
         self.win.setStatus(_('Specify quantity (1, 2, 3, ...).'))
         return
     # government centers have additional query and if confirmed, another round of this function is called
     if self.techID < 1000:
         tech = player.shipDesigns[self.techID]
     else:
         tech = client.getTechInfo(self.techID)
     if not getattr(tech, 'govPwr', 0) == 0 and not self.govTransferConfirm:
         # confirm dialog doesn't send through parameters, so we have to save them
         self.govTransferData = (widget, action, data)
         self.confirmDlg.display(_("Do you want to issue relocation of your government?"),
             _("Yes"), _("No"), self.onGovTransferConfirmed)
     else:
         try:
             self.win.setStatus(_('Executing START CONSTRUCTION command...'))
             planet.prodQueue, player.stratRes = client.cmdProxy.startConstruction(self.planetID,
                 self.techID, self.quantity, self.targetID, self.techID < 1000,
                 self.win.vReportFin.checked, self.structToDemolish)
             self.win.setStatus(_('Command has been executed.'))
         except GameException, e:
             self.win.setStatus(e.args[0])
             return
Exemplo n.º 16
0
 def onStats(self, widget, action, data):
     url = 'http://%s/%s/galaxy%d.html' % (
         gdata.config.game.server,
         gdata.config.game.lastgameid,
         client.getPlayer().galaxy,
     )
     webbrowser.open(url, new = 1)
Exemplo n.º 17
0
	def show(self):
		# orig fleet
		items = []
		player = client.getPlayer()

		grouped = {None: self.origShips}
		self.groupShips(grouped, self.checks)
		self.appendShips(grouped, items, player, self.checks)

		self.win.vOShips.items = items
		self.win.vOShips.itemsChanged()
		self.win.vOShips.selectItem(None)
		self.win.vOEn.text = str(self.origEn)
		self.win.vOEnMax.text = _('/ %d') % self.origEnMax

		# new fleet
		items = []

		grouped = {None: self.newShips}
		self.groupShips(grouped, self.Nchecks)
		self.appendShips(grouped, items, player, self.Nchecks)

		self.win.vNShips.items = items
		self.win.vNShips.itemsChanged()
		self.win.vNShips.selectItem(None)
		self.win.vNEn.text = str(self.newEn)
		self.win.vNEnMax.text = _('/ %d') % self.newEnMax
Exemplo n.º 18
0
    def showItems(self):
        items = []
        selected = None
        player = client.getPlayer()
        for techID in player.techs:
            tech = client.getTechInfo(techID)
            if getattr(tech, self.techType) == 0:
                continue
            if self.techSubtype and tech.subtype not in self.techSubtype:
                continue
            # skip equipment not suitable for this hull
            if tech.minHull > self.hullType:
                continue
            if tech.maxHull < self.hullType:
                continue

            techType = self.getTechType(tech)
            if self.typeFilter & techType == 0:
                continue

            item = ui.Item(tech.name, tData = sequip.getLongDescr(techID), techID = techID,
                            tType = typeText[techType])

            if techID == self.selected:
                selected = item

            items.append(item)
        self.win.vList.items = items
        self.win.vList.itemsChanged()
        self.win.vList.selectItem(selected)
Exemplo n.º 19
0
def groupShipsByDesign(ships):
	player = client.getPlayer()
	retShips = {}
	for ship in ships:
		appendToDict(retShips, ship[0], ship)

	return retShips
Exemplo n.º 20
0
def groupShipsByDesign(ships):
    player = client.getPlayer()
    retShips = {}
    for ship in ships:
        appendToDict(retShips, ship[0], ship)

    return retShips
Exemplo n.º 21
0
    def _showShips(self):
        items = []
        player = client.getPlayer()

        for designID in player.shipDesigns.keys():
            tech = player.shipDesigns[designID]
            if not self._filterShipSize(tech) or not self._filterShipMilitary(
                    tech):
                continue

            if tech.upgradeTo != Const.OID_NONE:
                # skip ships that are set to upgrade
                continue
            if self.prodProd > 0:
                etc = res.formatTime(
                    math.ceil(float(tech.buildProd) / self.prodProd))
            else:
                etc = _("N/A")
            item = ui.Item(tech.name,
                           tLevel=tech.level,
                           tProd=tech.buildProd,
                           techID=designID,
                           tIsShip=1,
                           tETC=etc)
            items.append(item)
        return items
Exemplo n.º 22
0
 def onRTaskAbortConfirmed(self):
     self.win.setStatus(_('Executing ABORT RESEARCH command...'))
     player = client.getPlayer()
     index = self.win.vRQueue.items.index(self.win.vRQueue.selection[0])
     player.rsrchQueue = client.cmdProxy.abortResearch(player.oid, index)
     self.update()
     self.win.setStatus(_('Command has been executed.'))
Exemplo n.º 23
0
    def onConstruct(self, widget, action, data):
        if not self.techID:
            self.win.setStatus(_('Select technology to construct.'))
            return
        try:
            self.quantity = int(self.win.vQuantity.text)
        except ValueError:
            self.win.setStatus(_('Specify quantity (1, 2, 3, ...).'))
            return
        try:
            self.win.setStatus(_('Executing START CONSTRUCTION command...'))
            player = client.getPlayer()

            player.prodQueues[
                self.
                queue], player.stratRes = client.cmdProxy.startGlobalConstruction(
                    self.playerID, self.techID, self.quantity,
                    self.techID < 1000, self.win.vReportFin.checked,
                    self.queue)
            self.win.setStatus(_('Command has been executed.'))
        except GameException as e:
            self.win.setStatus(e.args[0])
            return
        self.hide()
        self.caller.update()
Exemplo n.º 24
0
    def display(self, objID):
        player = client.getPlayer()
        text = []
        if hasattr(player, "buoys") and objID in player.buoys:
            label = _("Private buoy text")
            if player.buoys[objID][1] == BUOY_TO_ALLY:
                label = u"%s%s:" % (label, _(" (visible to allies)"))
            else:
                label = u"%s:" % label
            text.append(label)
            text.extend(player.buoys[objID][0].split("\n"))
            text.append("")

        if hasattr(player, "alliedBuoys") and objID in player.alliedBuoys:
            text.append(_("Buoy texts from allies:"))
            for buoy in player.alliedBuoys[objID]:
                text.extend(buoy[0].split("\n"))
                text.append(_('(Author: %s)') % buoy[2]) #owner's name
                text.append("")

        self.win.vText.text = text
        self.win.show()
        # register for updates
        if self not in gdata.updateDlgs:
            gdata.updateDlgs.append(self)
Exemplo n.º 25
0
    def alterMenu(self, widget, action, data):
        """ Update menu according to current situation, being different in singleplayer
        or when player is imperator of competitive galaxy, or player has no rights to
        finish galaxy at all.
        """
        if client.db != None:
            player = client.getPlayer()
            galaxy = client.get(player.galaxy)
            # player can restart (finish) it's own singleplayer galaxy anytime
            if galaxy.scenario == Const.SCENARIO_SINGLE:
                # depends on state of galaxy
                if not galaxy.timeEnabled:
                    self.systemMenu.items[7].text = _("Resume galaxy")
                else:
                    self.systemMenu.items[7].text = _("Pause galaxy")
                self.systemMenu.items[7].action = "onToggleTime"
                self.systemMenu.items[6].enabled = True
                self.systemMenu.items[7].enabled = True

            elif galaxy.scenario == Const.SCENARIO_OUTERSPACE:
                # standard behavior
                if player.imperator > 2:
                    # player is imperator for more than two weeks - has right to finish galaxy
                    self.systemMenu.items[6].enabled = True
                else:
                    # no right to finish galaxy
                    self.systemMenu.items[6].enabled = False
                # you cannot resign when time is stopped
                if galaxy.timeEnabled:
                    self.systemMenu.items[7].enabled = True
                else:
                    self.systemMenu.items[7].enabled = False
Exemplo n.º 26
0
 def onPactChange(self, widget, action, data):
     citem = self.win.vContacts.selection[0]
     pitem = self.win.vPacts.selection[0]
     pactState = pitem.tPactState
     if widget.data == "ENABLE":
         pactState = Const.PACT_INACTIVE
     elif widget.data == "DISABLE":
         pactState = Const.PACT_OFF
     if widget.data == "CONDSRESET":
         conditions = [pitem.tPactID]
     else:
         conditions = []
         for item in self.win.vConditions.selection:
             conditions.append(item.tPactID)
     try:
         self.win.setStatus(
             _('Executing CHANGE PACT CONDITIONS command...'))
         player = client.getPlayer()
         player.diplomacyRels = client.cmdProxy.changePactCond(
             player.oid, citem.tContactID, pitem.tPactID, pactState,
             conditions)
         self.win.setStatus(_('Command has been executed.'))
     except ige.GameException, e:
         self.win.setStatus(e.args[0])
         return
Exemplo n.º 27
0
 def display(self, faultID, text):
     self.win.title = _('Unhandled exception: %s') % faultID
     self.faultID = faultID
     # add more informations
     more = [""]
     more.append("--- ADDITIONAL DATA ---")
     more.append(
         "GMT date: %s" %
         time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()))
     more.append("OS: %s" % os.name)
     more.append("Platform: %s" % sys.platform)
     more.append("OSCI version %s" % versionString)
     more.append("Pygame version %s" % pygame.version.ver)
     more.append("Python %s" % sys.version)
     try:
         more.append("turn: %d" % client.getTurn())
         more.append("player: %s [%d]" %
                     (client.getPlayer().name, client.getPlayerID()))
     except AttributeError:
         pass
     text = text + "\n".join(more)
     #
     self.excText = text
     # dialog
     self.win.vText.text = text.split("\n")
     self.win.vSend.enabled = 1
     self.win.show()
Exemplo n.º 28
0
    def show(self):
        player = client.getPlayer()

        self.buildingsCount = {}
        self.buildingsPos = {}
        for planetID in player.planets:
            planet = client.get(planetID)
            if hasattr(planet, "slots"):
                for struct in planet.slots:
                    techID = struct[STRUCT_IDX_TECHID]
                    if not techID in self.buildingsCount:
                        self.buildingsCount[techID] = 1
                    else:
                        self.buildingsCount[
                            techID] = self.buildingsCount[techID] + 1
                    if not techID in self.buildingsPos:
                        self.buildingsPos[techID] = {planetID: 1}
                    else:
                        planetList = self.buildingsPos[techID]
                        if not planetID in planetList:
                            planetList[planetID] = 1
                        else:
                            planetList[planetID] = planetList[planetID] + 1

        items = []
        for techID in self.buildingsCount:
            tech = client.getTechInfo(techID)
            items.append(
                ui.Item(tech.name,
                        tStructCount=self.buildingsCount[techID],
                        techID=techID))

        self.win.vStructures.items = items
        self.win.vStructures.itemsChanged()
Exemplo n.º 29
0
    def showDesigns(self):
        player = client.getPlayer()
        # check if highlighted ship design exists
        if self.highlightedDesignID not in player.shipDesigns:
            self.highlightedDesignID = None
        # designs
        highlighted = None
        items = []
        for designID in player.shipDesigns:
            spec = player.shipDesigns[designID]

            countInService = self._getNumberInFleets(designID)
            countInBuild = self._getNumberInBuild(designID)

            # ui list item
            hullTech = client.getFullTechInfo(spec.hullID)
            item = ui.Item(spec.name,
                           tDesignID=designID,
                           tClass="%s/%s%d" %
                           (_(gdata.shipClasses[spec.combatClass][:1].upper()),
                            _("TL"), hullTech.level),
                           tNumber=countInService,
                           tInBuild=countInBuild)
            if spec.upgradeTo:
                item.foreground = gdata.sevColors[gdata.NONE]
            if designID == self.highlightedDesignID:
                highlighted = item
            items.append(item)
        self.win.vDesigns.items = items
        self.win.vDesigns.itemsChanged()
        self.win.vDesigns.highlightItem(highlighted, 0)
Exemplo n.º 30
0
    def show(self):
        # orig fleet
        items = []
        player = client.getPlayer()

        grouped = {None: self.origShips}
        self.groupShips(grouped, self.checks)
        self.appendShips(grouped, items, player, self.checks)

        self.win.vOShips.items = items
        self.win.vOShips.itemsChanged()
        self.win.vOShips.selectItem(None)
        self.win.vOEn.text = str(self.origEn)
        self.win.vOEnMax.text = _('/ %d') % self.origEnMax

        # new fleet
        items = []

        grouped = {None: self.newShips}
        self.groupShips(grouped, self.Nchecks)
        self.appendShips(grouped, items, player, self.Nchecks)

        self.win.vNShips.items = items
        self.win.vNShips.itemsChanged()
        self.win.vNShips.selectItem(None)
        self.win.vNEn.text = str(self.newEn)
        self.win.vNEnMax.text = _('/ %d') % self.newEnMax
Exemplo n.º 31
0
	def show(self):
		player = client.getPlayer()

		self.buildingsCount = {}
		self.buildingsPos = {}
		for planetID in player.planets:
			planet = client.get(planetID)
			if hasattr(planet, "slots"):
				for struct in planet.slots:
					techID = struct[STRUCT_IDX_TECHID]
					if not techID in self.buildingsCount:
						self.buildingsCount[techID] = 1
					else:
						self.buildingsCount[techID] = self.buildingsCount[techID] + 1
					if not techID in self.buildingsPos:
						self.buildingsPos[techID] = {planetID: 1}
					else:
						planetList = self.buildingsPos[techID]
						if not planetID in planetList:
							planetList[planetID] = 1
						else:
							planetList[planetID] = planetList[planetID] + 1

		items = []
		for techID in self.buildingsCount:
			tech = client.getTechInfo(techID)
			items.append(ui.Item(tech.name, tStructCount = self.buildingsCount[techID], techID = techID))

		self.win.vStructures.items = items
		self.win.vStructures.itemsChanged()
Exemplo n.º 32
0
    def showSlots(self):
        # techs
        items = []
        techs = {}
        if self.showStructures:
            player = client.getPlayer()
            target = client.get(self.targetID, noUpdate=1)
            if hasattr(target, 'slots') and target.owner == player.oid:
                if len(target.slots) < target.plSlots:
                    item = ui.Item(_("Free slot"), techID=0)
                    items.append(item)
                for struct in target.slots:
                    if not struct[Const.STRUCT_IDX_TECHID] in techs:
                        techs[struct[Const.STRUCT_IDX_TECHID]] = 1
                    else:
                        techs[struct[Const.STRUCT_IDX_TECHID]] += 1
                for tech in techs.keys():
                    techInfo = client.getTechInfo(tech)
                    item = ui.Item("%s (%d)" % (techInfo.name, techs[tech]),
                                   techID=tech)
                    items.append(item)

        self.win.vTSlots.items = items
        self.win.vTSlots.itemsChanged()
        self.structToDemolish = Const.OID_NONE
Exemplo n.º 33
0
    def _showStructures(self, prodProd):
        items = []

        for techID in client.getPlayer().techs.keys():
            tech = client.getTechInfo(techID)
            if not tech.isStructure or tech.level not in self.showLevels or \
               (tech.isStructure and not self._filterStructure(tech)):
                continue

            if prodProd > 0:
                etc = math.ceil(float(tech.buildProd) / prodProd)
                if self.sourceID != self.planetID:
                    etc *= Rules.buildOnAnotherPlanetMod
                etc = res.formatTime(etc)
            else:
                etc = _("N/A")

            item = ui.Item(
                etc,
                techID=techID,
                tIsShip=0,
                name=tech.name,
                tl=tech.level,
                subtype=tech.subtype,
                icons=((res.getTechImg(techID), ui.ALIGN_N), ),
                font="small-bold",
                align=ui.ALIGN_S,
                tooltipTitle=_("Details"),
                tooltip="%s, %d %s, %s %d" %
                (tech.name, tech.buildProd, _("CP"), _("TL"), tech.level),
                statustip="%s, %d %s, %s %d" %
                (tech.name, tech.buildProd, _("CP"), _("TL"), tech.level))
            self.maxTechLevel = max(self.maxTechLevel, tech.level)
            items.append(item)
        return items
Exemplo n.º 34
0
 def onStats(self, widget, action, data):
     url = 'http://%s/%s/galaxy%d.html' % (
         gdata.config.game.server,
         gdata.config.game.lastgameid,
         client.getPlayer().galaxy,
     )
     webbrowser.open(url, new=1)
Exemplo n.º 35
0
	def onRTaskAbortConfirmed(self):
		self.win.setStatus(_('Executing ABORT RESEARCH command...'))
		player = client.getPlayer()
		index = self.win.vRQueue.items.index(self.win.vRQueue.selection[0])
		player.rsrchQueue = client.cmdProxy.abortResearch(player.oid, index)
		self.update()
		self.win.setStatus(_('Command has been executed.'))
Exemplo n.º 36
0
 def calcDesign(self, designID, count=1, addHP=True):
     player = client.getPlayer()
     spec = player.shipDesigns[designID]
     size = spec.combatClass
     eqIDs = spec.weaponIDs  #equipment list
     for eqID in eqIDs:
         tech = client.getFullTechInfo(eqID)
         if tech.subtype == "seq_wpn":
             try:
                 level = player.techs[eqID]
             except:
                 level = 1  #tech not researched
             improvement = Rules.techImprEff[level]
             dmgMin = tech.weaponDmgMin * tech.weaponROF
             dmgMax = tech.weaponDmgMax * tech.weaponROF
             weaponclass = tech.weaponClass
             if self.showOnlyShieldPiercing and not tech.weaponIgnoreShield:
                 continue
             if size == 0:
                 self.sm_min[weaponclass] += int(count * dmgMin *
                                                 improvement)
                 self.sm_max[weaponclass] += int(count * dmgMax *
                                                 improvement)
             elif size == 1:
                 self.med_min[weaponclass] += int(count * dmgMin *
                                                  improvement)
                 self.med_max[weaponclass] += int(count * dmgMax *
                                                  improvement)
             elif size == 2:
                 self.lg_min[weaponclass] += int(count * dmgMin *
                                                 improvement)
                 self.lg_max[weaponclass] += int(count * dmgMax *
                                                 improvement)
     if addHP:
         if size == 0:
             self.sm['num'] += count
             self.sm['hp'] += spec.maxHP * count
             self.sm['sh'] += spec.shieldHP * count
         elif size == 1:
             self.med['num'] += count
             self.med['hp'] += spec.maxHP * count
             self.med['sh'] += spec.shieldHP * count
         elif size == 2:
             self.lg['num'] += count
             self.lg['hp'] += spec.maxHP * count
             self.lg['sh'] += spec.shieldHP * count
     if size == 0:
         self.sm['catt'] += spec.combatAtt * count
         self.sm['cdef'] += spec.combatDef * count
         self.sm['mdef'] += spec.missileDef * count
     elif size == 1:
         self.med['catt'] += spec.combatAtt * count
         self.med['cdef'] += spec.combatDef * count
         self.med['mdef'] += spec.missileDef * count
     elif size == 2:
         self.lg['catt'] += spec.combatAtt * count
         self.lg['cdef'] += spec.combatDef * count
         self.lg['mdef'] += spec.missileDef * count
     return size
Exemplo n.º 37
0
 def onFinishConfirmed(self, imperatorMsg, scenario):
     self.win.setStatus(_('Galaxy finish in progress...'))
     oldMsgHandler = client.cmdProxy.msgHandler
     client.cmdProxy.msgHandler = None
     client.cmdProxy.keepAliveTime = 60 * 60  # do not try to connect to server (one hour)
     if scenario == Const.SCENARIO_SINGLE:
         client.cmdProxy.deleteSingle(client.getPlayer().galaxy)
     elif scenario == Const.SCENARIO_OUTERSPACE:
         client.cmdProxy.finishGalaxyImperator(Const.OID_UNIVERSE,
                                               client.getPlayer().galaxy,
                                               imperatorMsg)
     else:
         return
     client.db.clear()
     client.cmdProxy.msgHandler = oldMsgHandler
     self.hide()
     self.app.exitLocal()
Exemplo n.º 38
0
    def show(self):
        player = client.getPlayer()

        items = []
        for planetID in client.db.keys():
            planet = client.get(planetID, noUpdate=1)
            # skip non-planets
            if not hasattr(planet, "type") or planet.type != Const.T_PLANET:
                continue
            if not self._shallShow(planet, player):
                continue
            # fill in data
            ownerID = getattr(planet, 'owner', Const.OID_NONE)
            if hasattr(planet, 'owner') and planet.owner == player.oid:
                constrInfo, etc, totalEtc = self._processProdQueue(planet)
            else:
                constrInfo = '?'
                etc = '?'
                totalEtc = '?'
            # used slots
            try:
                freeSlots = planet.plSlots - len(planet.slots)
            except AttributeError:
                freeSlots = '?'
            # morale
            try:
                morale = int(planet.morale)
            except AttributeError:
                morale = "?"

            plType = gdata.planetTypes[getattr(planet, 'plType', None)]
            # list item
            item = ui.Item(getattr(planet, 'name', res.getUnknownName()),
                           tPlType=_(plType),
                           tPlBio=getattr(planet, 'plBio', '?'),
                           tPlMin=getattr(planet, 'plMin', '?'),
                           tPlEn=getattr(planet, 'plEn', '?'),
                           tChangeBio=getattr(planet, 'changeBio', '?'),
                           tChangeEn=getattr(planet, 'changeEn', '?'),
                           tETC=etc,
                           tTotalETC=totalEtc,
                           tConstrInfo=constrInfo,
                           tFree=freeSlots,
                           tMorale=morale,
                           tSpace=getattr(planet, 'plSlots', '?'),
                           tDiam=getattr(planet, 'plDiameter', 0) / 1000,
                           tProd=getattr(planet, 'effProdProd', '?'),
                           tSci=getattr(planet, 'effProdSci', '?'),
                           tPlanetID=planetID,
                           foreground=res.getPlayerColor(ownerID))
            items.append(item)
        self.win.vPlanets.items = items
        self.win.vPlanets.itemsChanged()
        # buttons
        self.win.vMine.pressed = self.showMine
        self.win.vOtherPlayers = self.showOtherPlayers
        self.win.vColonizable = self.showColonizable
        self.win.vUncolonizable = self.showUncolonizable
Exemplo n.º 39
0
 def onSelectKTech(self, widget, action, data):
     techID = self.win.vKTechs.selection[0].techID
     player = client.getPlayer()
     if techID in player.obsoleteTechs:
         self.win.vObs.enabled = 0
         self.win.vUnObs.enabled = 1
     else:
         self.win.vUnObs.enabled = 0
         self.win.vObs.enabled = 1
Exemplo n.º 40
0
 def onAbstain(self, widget, action, data):
     try:
         self.win.setStatus(_('Executing ELECT command...'))
         player = client.getPlayer()
         player.voteFor = client.cmdProxy.setVoteFor(player.oid, Const.OID_NONE)
         self.win.setStatus(_('Command has been executed.'))
     except ige.GameException, e:
         self.win.setStatus(e.args[0])
         return
Exemplo n.º 41
0
 def moveShipsToLeft(self, ships):
     for ship in ships:
         self.newShips.remove(ship)
         self.origShips.append(ship)
         # move fuel to the new fleet
         tech = client.getPlayer().shipDesigns[ship[0]]
         avail = min(self.origEn, tech.storEn)
         self.newEn -= avail
         self.origEn += avail
Exemplo n.º 42
0
 def show(self):
     self.player = client.getPlayer()
     self.vPQueues = [
         self.win.vPQueue0, self.win.vPQueue1, self.win.vPQueue2,
         self.win.vPQueue3, self.win.vPQueue4
     ]
     #
     for queueNo in xrange(self.queueNo):
         self.showProdQueue(queueNo)
Exemplo n.º 43
0
 def _getNumberInFleets(self, designID):
     count = 0
     for fleetID in client.getPlayer().fleets:
         fleet = client.get(fleetID)
         count += len([
             designID for tmpDesignID, hp, shieldHP, exp in fleet.ships
             if tmpDesignID == designID
         ])
     return count
Exemplo n.º 44
0
	def onDeleteAll(self, widget, action, data):
		self.win.setStatus(_('Executing DELETE ALL MESSAGES command...'))
		player = client.getPlayer()
		messages = client.cmdProxy.deleteAllMessages(player.oid)
		# update related objects
		player.messages = messages
		# update client
		self.win.setStatus(_('Command has been executed.'))
		self.update()
Exemplo n.º 45
0
	def moveShipsToLeft(self, ships):
		for ship in ships:
			self.newShips.remove(ship)
			self.origShips.append(ship)
			# move fuel to the new fleet
			tech = client.getPlayer().shipDesigns[ship[0]]
			avail = min(self.origEn, tech.storEn)
			self.newEn -= avail
			self.origEn += avail
Exemplo n.º 46
0
 def galaxyFinishButton(self, widget, action, data):
     player = client.getPlayer()
     galaxy = client.get(player.galaxy)
     if galaxy.scenario == Const.SCENARIO_OUTERSPACE and player.imperator > 2:
         localTime = time.time()
         gdata.config.game.lastGalaxyFinishShown = str(localTime)
         self.galaxyFinishDlg.display(finishAction = self.onFinishConfirmedOuterspace)
     elif galaxy.scenario == Const.SCENARIO_SINGLE:
         self.confirmDlg.display(_('Are you really really sure you want to finish this single player galaxy of yours? You won\'t be able to get back.'), _('Finish'), _('No'), confirmAction = self.onFinishConfirmedSingle)
Exemplo n.º 47
0
    def _showProjects(self):
        items = []
        for techID in client.getPlayer().techs.keys():
            tech = client.getTechInfo(techID)
            if tech.level not in self.showLevels or not tech.isProject:
                continue
            items.append(self._processNonShips(tech))

        return items
Exemplo n.º 48
0
 def onSelectKTech(self, widget, action, data):
     techID = self.win.vKTechs.selection[0].techID
     player = client.getPlayer()
     if techID in player.obsoleteTechs:
         self.win.vObs.enabled = 0
         self.win.vUnObs.enabled = 1
     else:
         self.win.vUnObs.enabled = 0
         self.win.vObs.enabled = 1
Exemplo n.º 49
0
	def splitShip(self):
		designID = self.sendShips[self.sendShipIndex]
		ships = []
		for ship in self.fleet.ships:
			if ship[0] == designID:
				ships = [ship]
				break
		if len(ships) == 0:
			self.win.setStatus(_("No ships left of the class %s" % client.getPlayer().shipDesigns[designID].name))
			return False
		#there is only one ship left in the original fleet
		if len(self.fleet.ships) == 1:
			return self.fleet
		#split the ship off the fleet; note: storeEn = self.fleet.storEn will result in max energy for the new fleet
		newfleet, self.fleet, fleets = client.cmdProxy.splitFleet(self.fleet.oid,ships,self.fleet.storEn)
		client.getPlayer().fleets = fleets
		client.db[newfleet.oid] = newfleet
		client.db[self.fleet.oid] = self.fleet
		return newfleet
	def onScrap(self, widget, action, data):
		# count number of ships using this design
		count = 0
		for fleetID in client.getPlayer().fleets:
			fleet = client.get(fleetID)
			for designID, hp, shieldHP, exp in fleet.ships:
				if designID == self.selectedDesignID:
					count += 1
		self.confirmDlg.display(_('Deletion of this design dismantle %d ship(s). Are you sure to scrap it?') % count, _('Yes'),
			_('No'), confirmAction = self.onScrapConfirmed)
Exemplo n.º 51
0
	def onRestartConfirmed(self, imperatorMsg):
		self.win.setStatus(_('Galaxy restart in progress...'))
		oldMsgHandler = client.cmdProxy.msgHandler
		client.cmdProxy.msgHandler = None
		client.cmdProxy.keepAliveTime = 60 * 60 # do not try to connect to server (one hour)
		client.cmdProxy.restartGalaxy(OID_UNIVERSE, client.getPlayer().galaxies[0], imperatorMsg)
		client.db.clear()
		client.cmdProxy.msgHandler = oldMsgHandler
		self.hide()
		self.app.exit()
Exemplo n.º 52
0
    def onConstruct(self, widget, action, data):
        if not data:
            self.win.setStatus(_('Select technology to construct.'))
            return

        if not self.sourceID:
            self.sourceID = self.planetID

        try:
            self.quantity = int(self.win.vQuantity.text)
        except ValueError:
            self.win.setStatus(_('Specify quantity (1, 2, 3, ...).'))
            return
        # government centers have additional query and if confirmed, another round of this function is called
        tech = client.getTechInfo(data.techID)
        if tech.govPwr and not self.govTransferConfirm:
            # confirm dialog doesn't send through parameters, so we have to save them
            self.govTransferData = (widget, action, data)
            self.confirmDlg.display(_("Do you want to issue relocation of your government?"),
                _("Yes"), _("No"), self.onGovTransferConfirmed)
        else:
            try:
                self.win.setStatus(_('Executing START CONSTRUCTION command...'))
                planet = client.get(self.sourceID, noUpdate = 1)
                player = client.getPlayer()
                if self.extraSlot:
                    # check required special resources, if not available, do not continue
                    # (without check, server start slot expansion but not the tech)
                    specialResources = player.stratRes
                    for sr in tech.buildSRes:
                        if specialResources.get(sr, 0) < self.quantity:
                            self.win.setStatus(_('You do not own required strategic resource(s)'))
                            return
                        else:
                            specialResources[sr] = specialResources.get(sr, 0) - self.quantity
                    for i in range(1, self.quantity + 1):
                        # as we need two slots instead of one, check whether is task queue short
                        # enough (ie 8 tasks max)
                        if len(planet.prodQueue) > 8:
                            self.win.setStatus(_('Queue is full'))
                            return
                        client.cmdProxy.startConstruction(self.sourceID,
                            Rules.Tech.ADDSLOT3, 1, self.planetID, False,
                            self.win.vReportFin.checked, OID_NONE)
                        planet.prodQueue, player.stratRes = client.cmdProxy.startConstruction(self.sourceID,
                            data.techID, 1, self.planetID, data.techID < 1000,
                            self.win.vReportFin.checked, self.structToDemolish)
                else:
                        planet.prodQueue, player.stratRes = client.cmdProxy.startConstruction(self.sourceID,
                        data.techID, self.quantity, self.planetID, data.techID < 1000,
                        self.win.vReportFin.checked, self.structToDemolish)
                self.win.setStatus(_('Command has been executed.'))
            except GameException, e:
                self.win.setStatus(e.args[0])
                return
Exemplo n.º 53
0
	def onDeleteSelectedShipConfirmed(self):
		if self.win.vShips.selection:
			item = self.win.vShips.selection[0]
		try:
			self.win.setStatus(_('Executing SCRAP SHIP command...'))
			client.db[self.fleetID] = client.cmdProxy.removeShips(self.fleetID,
				[item.tSpec])
			self.win.setStatus(_('Command has been executed.'))
			if not client.get(self.fleetID, noUpdate = 1).ships:
				# remove fleet
				client.getPlayer().fleets.remove(self.fleetID)
				del client.db[self.fleetID]
				self.hide()
			else:
				self.update()
			gdata.mainGameDlg.update()
			return 0
		except ige.GameException, e:
			self.win.setStatus(_(e.args[0]))
			return 1
Exemplo n.º 54
0
 def onVoteFor(self, widget, action, data):
     citem = self.win.vContacts.selection[0]
     try:
         self.win.setStatus(_('Executing ELECT command...'))
         player = client.getPlayer()
         player.voteFor = client.cmdProxy.setVoteFor(player.oid,
             citem.tContactID)
         self.win.setStatus(_('Command has been executed.'))
     except ige.GameException, e:
         self.win.setStatus(e.args[0])
         return
Exemplo n.º 55
0
	def onSelectContact(self, widget, action, data):
		player = client.getPlayer()
		items = []
		for contactID in player.diplomacyRels:
			contact = client.get(contactID)
			item = ui.Item(contact.name, tRecipientID = contactID)
			items.append(item)

		self.cwin.vContacts.items = items
		self.cwin.vContacts.itemsChanged()
		self.cwin.show()
Exemplo n.º 56
0
 def onRTaskRepeat(self, widget, action, data):
     self.win.setStatus(_('Executing EDIT RESEARCH command...'))
     player = client.getPlayer()
     index = self.win.vRQueue.items.index(self.win.vRQueue.selection[0])
     repeat = not self.win.vRQueue.selection[0].tImproveToMax
     # execute command
     player.rsrchQueue = client.cmdProxy.editResearch(player.oid, index, repeat)
     self.update()
     self.win.vRQueue.selectItem(self.win.vRQueue.items[index])
     self.win.setStatus(_('Command has been executed.'))
     self.onSelectRQueueTech(widget, action, None)
Exemplo n.º 57
0
 def onChangeQtyConfirmed(self):
     if self.changeQtyDlg.quantity != None:
         try:
             self.win.setStatus(_('Executing CHANGE TASK command...'))
             player = client.getPlayer()
             player.prodQueues[self.activeQueue], player.stratRes = client.cmdProxy.changeGlobalConstruction(self.playerID, self.activeQueue, self.activeIndex, self.changeQtyDlg.quantity)
             self.win.setStatus(_('Command has been executed.'))
             self.win.vTaskQuantity.text = player.prodQueues[self.activeQueue][self.activeIndex].quantity
             self.win.vTaskConstPoints.text = player.prodQueues[self.activeQueue][self.activeIndex].const
         except GameException, e:
             self.win.setStatus(e.args[0])
             return
Exemplo n.º 58
0
	def onDelete(self, widget, action, data):
		messages = []
		for item in self.win.vMessages.selection:
			messages.append(item.message)
		self.win.setStatus(_('Executing DELETE MESSAGES command...'))
		player = client.getPlayer()
		messages = client.cmdProxy.deleteMessages(player.oid, messages)
		# update related objects
		player.messages = messages
		# update client
		self.win.setStatus(_('Command has been executed.'))
		self.update()
Exemplo n.º 59
0
 def onRedirectOFF(self, widget, action, data):
     self.win.setStatus(_('Executing REDIRECT FLEETS OFF command...'))
     player = client.getPlayer()
     try:
         player.shipRedirections = client.cmdProxy.redirectShips(player.oid,
             self.systemID,    Const.OID_NONE)
         self.win.setStatus(_('Command has been executed.'))
         gdata.mainGameDlg.update()
         self.caller.update()
         self.hide()
     except GameException, e:
         self.win.setStatus(e.args[0])
Exemplo n.º 60
0
	def calcDesign(self,designID,count=1,addHP=True):
		player = client.getPlayer()
		spec = player.shipDesigns[designID]
		size = spec.combatClass
		eqIDs = spec.weaponIDs #equipment list
		for eqID in eqIDs:
			tech = client.getFullTechInfo(eqID)
			if tech.subtype == "seq_wpn":
				try:
					level = player.techs[eqID]
				except:
					level = 1 #tech not researched
				improvement = Rules.techImprEff[level]
				dmgMin = tech.weaponDmgMin * tech.weaponROF
				dmgMax = tech.weaponDmgMax * tech.weaponROF
				weaponclass = tech.weaponClass
				if self.showOnlyShieldPiercing and not tech.weaponIgnoreShield:
					continue
				if size==0:
					self.sm_min[weaponclass] += int(count * dmgMin * improvement)
					self.sm_max[weaponclass] += int(count * dmgMax * improvement)
				elif size==1:
					self.med_min[weaponclass] += int(count * dmgMin * improvement)
					self.med_max[weaponclass] += int(count * dmgMax * improvement)
				elif size==2:
					self.lg_min[weaponclass] += int(count * dmgMin * improvement)
					self.lg_max[weaponclass] += int(count * dmgMax * improvement)
		if addHP:
			if size==0:
				self.sm['num'] += count
				self.sm['hp'] += spec.maxHP*count
				self.sm['sh'] += spec.shieldHP*count
			elif size==1:
				self.med['num'] += count
				self.med['hp'] += spec.maxHP*count
				self.med['sh'] += spec.shieldHP*count
			elif size==2:
				self.lg['num'] += count
				self.lg['hp'] += spec.maxHP*count
				self.lg['sh'] += spec.shieldHP*count
		if size==0:
			self.sm['catt'] += spec.combatAtt*count
			self.sm['cdef'] += spec.combatDef*count
			self.sm['mdef'] += spec.missileDef*count
		elif size==1:
			self.med['catt'] += spec.combatAtt*count
			self.med['cdef'] += spec.combatDef*count
			self.med['mdef'] += spec.missileDef*count
		elif size==2:
			self.lg['catt'] += spec.combatAtt*count
			self.lg['cdef'] += spec.combatDef*count
			self.lg['mdef'] += spec.missileDef*count
		return size