From c1356906bbf85a5cffdaa566c28a209fcd2143c4 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Fri, 5 Jun 2020 23:36:39 +0300 Subject: [PATCH] Add ship effects --- eos/effects.py | 110 ++++++++++++++++++++++++- gui/builtinMarketBrowser/marketTree.py | 3 +- service/market.py | 2 +- 3 files changed, 111 insertions(+), 4 deletions(-) diff --git a/eos/effects.py b/eos/effects.py index 3b329b248..cc2d88b46 100644 --- a/eos/effects.py +++ b/eos/effects.py @@ -1633,7 +1633,7 @@ class Effect581(BaseEffect): @staticmethod def handler(fit, container, context, projectionRange, **kwargs): level = container.level if 'skill' in context else 1 - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery'), + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Vorton Projector Operation'), 'cpu', container.getModifiedItemAttr('cpuNeedBonus') * level, **kwargs) @@ -4898,7 +4898,9 @@ class Effect1638(BaseEffect): @staticmethod def handler(fit, skill, context, projectionRange, **kwargs): fit.modules.filteredItemBoost( - lambda mod: mod.item.requiresSkill('Gunnery') or mod.item.requiresSkill('Missile Launcher Operation'), + lambda mod: (mod.item.requiresSkill('Gunnery') or + mod.item.requiresSkill('Missile Launcher Operation') or + mod.item.requiresSkill('Vorton Projector Operation')), 'power', skill.getModifiedItemAttr('powerNeedBonus') * skill.level, **kwargs) @@ -36373,3 +36375,107 @@ class Effect8029(BaseEffect): fit.modules.filteredItemForce( lambda mod: mod.item.group.name == 'Capacitor Booster', attr, ship.getModifiedItemAttr('shipBonusRole7'), **kwargs) + + +class Effect8047(BaseEffect): + """ + shipBonusUF1shieldResistance + + Used by: + Ship: Skybreaker + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + for type in ('kinetic', 'thermal', 'explosive', 'em'): + fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), + ship.getModifiedItemAttr('shipBonusUF1'), + skill='EDENCOM Frigate', **kwargs) + + +class Effect8048(BaseEffect): + """ + shipBonusUF2damage + + Used by: + Ship: Skybreaker + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + fit.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill('Small Vorton Projector'), 'damageMultiplier', + ship.getModifiedItemAttr('shipBonusUF2'), skill='EDENCOM Frigate', **kwargs) + + +class Effect8052(BaseEffect): + """ + shipBonusUC2ShieldResistance + + Used by: + Ship: Stormbringer + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + for type in ('kinetic', 'thermal', 'explosive', 'em'): + fit.ship.boostItemAttr('shield%sDamageResonance' % type.capitalize(), + ship.getModifiedItemAttr('shipBonusUC2'), + skill='EDENCOM Cruiser', **kwargs) + + +class Effect8053(BaseEffect): + """ + shipBonusUC1maxRange + + Used by: + Ship: Stormbringer + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + fit.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill('Medium Vorton Projector'), 'maxRange', + ship.getModifiedItemAttr('shipBonusUC1'), skill='EDENCOM Cruiser', **kwargs) + + +class Effect8054(BaseEffect): + """ + shipBonusUB1upwellDamage + + Used by: + Ship: Thunderchild + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + fit.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'damageMultiplier', + ship.getModifiedItemAttr('shipBonusUB1'), skill='EDENCOM Battleship', **kwargs) + + +class Effect8056(BaseEffect): + """ + shipBonusUB2upwellROF + + Used by: + Ship: Thunderchild + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + fit.modules.filteredItemBoost( + lambda mod: mod.item.requiresSkill('Large Vorton Projector'), 'speed', + ship.getModifiedItemAttr('shipBonusUB2'), skill='EDENCOM Battleship', **kwargs) diff --git a/gui/builtinMarketBrowser/marketTree.py b/gui/builtinMarketBrowser/marketTree.py index 5fe3cc83e..d715bd2d7 100644 --- a/gui/builtinMarketBrowser/marketTree.py +++ b/gui/builtinMarketBrowser/marketTree.py @@ -60,7 +60,8 @@ class MarketTree(wx.TreeCtrl): # If market should have items but it doesn't, do not show it if sMkt.marketGroupValidityCheck(childMktGrp) is False: continue - iconId = self.addImage(sMkt.getIconByMarketGroup(childMktGrp)) + icon = sMkt.getIconByMarketGroup(childMktGrp) + iconId = -1 if icon is None else self.addImage(icon) try: childId = self.AppendItem(root, childMktGrp.name, iconId, data=childMktGrp.ID) except (KeyboardInterrupt, SystemExit): diff --git a/service/market.py b/service/market.py index 0a4b391fe..b41f2e452 100644 --- a/service/market.py +++ b/service/market.py @@ -794,7 +794,7 @@ class Market: except KeyError: return "" - return item.iconID if item.icon else "" + return item.iconID if getattr(item, "icon", None) else "" elif self.getMarketGroupChildren(mg) > 0: kids = self.getMarketGroupChildren(mg) mktGroups = self.getIconByMarketGroup(kids)