diff --git a/eos/effects.py b/eos/effects.py index 20ddd5244..ad2a6f77a 100644 --- a/eos/effects.py +++ b/eos/effects.py @@ -6540,23 +6540,6 @@ class Effect2160(BaseEffect): skill='Command Ships', **kwargs) -class Effect2161(BaseEffect): - """ - eliteBonusCommandShipHybridOptimalCS1 - - Used by: - Ship: Vulture - """ - - type = 'passive' - - @staticmethod - def handler(fit, ship, context, projectionRange, **kwargs): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), - 'maxRange', ship.getModifiedItemAttr('eliteBonusCommandShips1'), - skill='Command Ships', **kwargs) - - class Effect2179(BaseEffect): """ shipBonusDroneHitpointsGC2 @@ -11795,23 +11778,6 @@ class Effect3766(BaseEffect): skill='Interceptors', **kwargs) -class Effect3767(BaseEffect): - """ - eliteBonusCommandShipsHeavyMissileExplosionVelocityCS2 - - Used by: - Ship: Claymore - """ - - type = 'passive' - - @staticmethod - def handler(fit, ship, context, projectionRange, **kwargs): - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles'), - 'aoeVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), - skill='Command Ships', **kwargs) - - class Effect3771(BaseEffect): """ armorHPBonusAddPassive @@ -19585,9 +19551,9 @@ class Effect5342(BaseEffect): shipArmorRepairing1GBC2 Used by: - Variations of ship: Myrmidon (2 of 2) Ship: Astarte Ship: Brutix + Ship: Myrmidon """ type = 'passive' @@ -19670,7 +19636,7 @@ class Effect5351(BaseEffect): shipShieldBoost1MBC1 Used by: - Variations of ship: Cyclone (2 of 2) + Ship: Cyclone Ship: Sleipnir """ @@ -20823,23 +20789,6 @@ class Effect5497(BaseEffect): 'speed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), skill='Command Ships', **kwargs) -class Effect5498(BaseEffect): - """ - eliteBonusCommandShipsHeavyAssaultMissileExplosionVelocityCS2 - - Used by: - Ship: Claymore - """ - - type = 'passive' - - @staticmethod - def handler(fit, ship, context, projectionRange, **kwargs): - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Assault Missiles'), - 'aoeVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), - skill='Command Ships', **kwargs) - - class Effect5499(BaseEffect): """ eliteBonusCommandShipsHeavyAssaultMissileExplosionRadiusCS2 @@ -20891,26 +20840,9 @@ class Effect5501(BaseEffect): skill='Command Ships', **kwargs) -class Effect5502(BaseEffect): - """ - eliteBonusCommandShipMediumHybridTrackingCS1 - - Used by: - Ship: Eos - """ - - type = 'passive' - - @staticmethod - def handler(fit, ship, context, projectionRange, **kwargs): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Medium Hybrid Turret'), - 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips1'), - skill='Command Ships', **kwargs) - - class Effect5503(BaseEffect): """ - eliteBonusCommandShipHeavyDroneTrackingCS2 + eliteBonusCommandShipDroneTrackingCS2 Used by: Ship: Eos @@ -20920,28 +20852,11 @@ class Effect5503(BaseEffect): @staticmethod def handler(fit, ship, context, projectionRange, **kwargs): - fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), + fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), 'trackingSpeed', ship.getModifiedItemAttr('eliteBonusCommandShips2'), skill='Command Ships', **kwargs) -class Effect5504(BaseEffect): - """ - eliteBonusCommandShipHeavyDroneVelocityCS2 - - Used by: - Ship: Eos - """ - - type = 'passive' - - @staticmethod - def handler(fit, ship, context, projectionRange, **kwargs): - fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Heavy Drone Operation'), - 'maxVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), - skill='Command Ships', **kwargs) - - class Effect5505(BaseEffect): """ eliteBonusCommandShipMediumHybridRoFCS1 @@ -32068,7 +31983,7 @@ class Effect6783(BaseEffect): Used by: Ships from group: Carrier (4 of 4) Ships from group: Combat Battlecruiser (14 of 14) - Ships from group: Command Ship (8 of 8) + Ships from group: Command Ship (4 of 8) Ships from group: Force Auxiliary (6 of 6) Ships from group: Supercarrier (6 of 6) Ships from group: Titan (7 of 7) @@ -36848,3 +36763,90 @@ class Effect8066(BaseEffect): def handler(fit, implant, context, projectionRange, **kwargs): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill('Vorton Projector Operation'), 'damageMultiplier', implant.getModifiedItemAttr('damageMultiplierBonus'), **kwargs) + + +class Effect8068(BaseEffect): + """ + shipShieldResistanceBonusMBC1 + + Used by: + Ship: Claymore + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') + for damageType in damageTypes: + fit.ship.boostItemAttr(f'shield{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusMBC1'), + skill='Minmatar Battlecruiser', **kwargs) + + +class Effect8070(BaseEffect): + """ + eliteBonusCommandShipsHeavyHAMvelocityCS2 + + Used by: + Ship: Claymore + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill('Heavy Missiles') or + mod.charge.requiresSkill('Heavy Assault Missiles'), + 'maxVelocity', ship.getModifiedItemAttr('eliteBonusCommandShips2'), + skill='Command Ships', **kwargs) + + +class Effect8071(BaseEffect): + """ + eliteBonusCommandShipDroneRangeCS1 + + Used by: + Ship: Eos + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill('Drones'), + 'maxRange', ship.getModifiedItemAttr('eliteBonusCommandShips1'), + skill='Command Ships', **kwargs) + + +class Effect8072(BaseEffect): + """ + shipArmorResistanceBonusGBC2 + + Used by: + Ship: Eos + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + damageTypes = ('Em', 'Explosive', 'Kinetic', 'Thermal') + for damageType in damageTypes: + fit.ship.boostItemAttr(f'armor{damageType}DamageResonance', ship.getModifiedItemAttr('shipBonusGBC2'), + skill='Gallente Battlecruiser', **kwargs) + + +class Effect8073(BaseEffect): + """ + eliteBonusCommandShipShieldHPCS1 + + Used by: + Ship: Vulture + """ + + type = 'passive' + + @staticmethod + def handler(fit, ship, context, projectionRange, **kwargs): + fit.ship.boostItemAttr('shieldCapacity', ship.getModifiedItemAttr('eliteBonusCommandShips1'), + skill='Command Ships', **kwargs) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index dacdcc3fb..614e53fa5 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -755,6 +755,8 @@ class Fit: if warfareBuffID == 79: # AOE_Beacon_bioluminescence_cloud self.ship.boostItemAttr("signatureRadius", value, stackingPenalties=True) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "signatureRadius", value, stackingPenalties=True) if warfareBuffID == 80: # AOE_Beacon_caustic_cloud_local_repair self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"), @@ -777,7 +779,11 @@ class Fit: if warfareBuffID == 90: # Weather_electric_storm_EM_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}EmDamageResonance".format(tankType), value) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "{}EmDamageResonance".format(tankType), value) self.ship.boostItemAttr("emDamageResonance", value) # for hull + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "emDamageResonance", value) #for hull if warfareBuffID == 92: # Weather_electric_storm_capacitor_recharge_bonus self.ship.boostItemAttr("rechargeRate", value, stackingPenalties=True) @@ -785,32 +791,54 @@ class Fit: if warfareBuffID == 93: # Weather_xenon_gas_explosive_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}ExplosiveDamageResonance".format(tankType), value) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "{}ExplosiveDamageResonance".format(tankType), value) self.ship.boostItemAttr("explosiveDamageResonance", value) # for hull + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "explosiveDamageResonance", value) # for hull if warfareBuffID == 94: # Weather_xenon_gas_shield_hp_bonus - self.ship.boostItemAttr("shieldCapacity", value) # for hull + self.ship.boostItemAttr("shieldCapacity", value) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "shieldCapacity", value) if warfareBuffID == 95: # Weather_infernal_thermal_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}ThermalDamageResonance".format(tankType), value) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "{}ThermalDamageResonance".format(tankType), value) self.ship.boostItemAttr("thermalDamageResonance", value) # for hull + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "thermalDamageResonance", value) # for hull if warfareBuffID == 96: # Weather_infernal_armor_hp_bonus - self.ship.boostItemAttr("armorHP", value) # for hull + self.ship.boostItemAttr("armorHP", value) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "armorHP", value) if warfareBuffID == 97: # Weather_darkness_turret_range_penalty self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), "maxRange", value, stackingPenalties=True) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "maxRange", value, stackingPenalties=True) self.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), "falloff", value, stackingPenalties=True) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "falloff", value, stackingPenalties=True) if warfareBuffID == 98: # Weather_darkness_velocity_bonus self.ship.boostItemAttr("maxVelocity", value) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "maxVelocity", value) if warfareBuffID == 99: # Weather_caustic_toxin_kinetic_resistance_penalty for tankType in ("shield", "armor"): self.ship.boostItemAttr("{}KineticDamageResonance".format(tankType), value) + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "{}KineticDamageResonance".format(tankType), value) self.ship.boostItemAttr("kineticDamageResonance", value) # for hull + self.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), + "kineticDamageResonance", value) # for hull if warfareBuffID == 100: # Weather_caustic_toxin_scan_resolution_bonus self.ship.boostItemAttr("scanResolution", value, stackingPenalties=True) diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 8b55e849f..657360c16 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -563,7 +563,10 @@ class FittingView(d.Display): if sFit.serviceFittingOptions["rackSlots"]: # flag to know when to add blanks, based on previous slot - slotDivider = None if sFit.serviceFittingOptions["rackLabels"] else self.mods[0].slot + if sFit.serviceFittingOptions["rackLabels"] or len(self.mods) == 0: + slotDivider = None + else: + slotDivider = self.mods[0].slot # first loop finds where slot dividers must go before modifying self.mods for i, mod in enumerate(self.mods): diff --git a/gui/chrome_tabs.py b/gui/chrome_tabs.py index 27b660770..94144594e 100644 --- a/gui/chrome_tabs.py +++ b/gui/chrome_tabs.py @@ -403,6 +403,10 @@ class _TabRenderer: width = max(width, self.min_width) height = max(height, self.min_height) + cur_width, cur_height = self.tab_size + if (width == cur_width) and (height == cur_height): + return + self.tab_size = (width, height) self.InitTab() @@ -976,9 +980,6 @@ class _TabsContainer(wx.Panel): sel_tab = self.tabs.index(tab) self.Parent.SetSelection(sel_tab) - wx.PostEvent(self.Parent, PageChanged(self.tabs.index(old_sel_tab), - self.tabs.index(tab))) - return True return False diff --git a/gui/mainFrame.py b/gui/mainFrame.py index ba00ca29e..2509ba5c4 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -111,8 +111,6 @@ class OpenFitsThread(threading.Thread): self.start() def run(self): - time.sleep(0.5) # Give GUI some time to finish drawing - # `startup` tells FitSpawner that we are loading fits are startup, and # has 3 values: # False = Set as default in FitSpawner itself, never set here diff --git a/requirements.txt b/requirements.txt index 1b61854f0..0454586d5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ wxPython == 4.0.6 logbook >= 1.0.0 -matplotlib >= 3.1.2 +matplotlib == 3.2.2 python-dateutil requests >= 2.0.0 sqlalchemy >= 1.3.0 diff --git a/service/jargon/defaults.yaml b/service/jargon/defaults.yaml index 5895f522a..0a134a8a4 100644 --- a/service/jargon/defaults.yaml +++ b/service/jargon/defaults.yaml @@ -809,11 +809,11 @@ damp: - 'sd-\d00' sd: - '(^| )sd' # Checking only beginning of a word to remove unwanted spam - - 'remote sensor dampener' + - 'sensor dampener' - '(targeting range|scan resolution) dampening script' rsd: - 'rsd' - - 'remote sensor dampener' + - 'sensor dampener' - 'sd-\d00' - '(targeting range|scan resolution) dampening script' diff --git a/staticdata/fsd_binary/dogmaeffects.0.json b/staticdata/fsd_binary/dogmaeffects.0.json index bbca2b3a2..b5be604dd 100644 --- a/staticdata/fsd_binary/dogmaeffects.0.json +++ b/staticdata/fsd_binary/dogmaeffects.0.json @@ -47807,7 +47807,7 @@ "disallowAutoRepeat": 0, "effectCategory": 0, "effectID": 5503, - "effectName": "eliteBonusCommandShipHeavyDroneTrackingCS2", + "effectName": "eliteBonusCommandShipDroneTrackingCS2", "electronicChance": 0, "isAssistance": 0, "isOffensive": 0, @@ -47819,7 +47819,7 @@ "modifiedAttributeID": 160, "modifyingAttributeID": 999, "operation": 6, - "skillTypeID": 3441 + "skillTypeID": 3436 } ], "propulsionChance": 0, @@ -85200,5 +85200,167 @@ "propulsionChance": 0, "published": 0, "rangeChance": 0 + }, + "8068": { + "disallowAutoRepeat": 0, + "effectCategory": 0, + "effectID": 8068, + "effectName": "shipShieldResistanceBonusMBC1", + "electronicChance": 0, + "isAssistance": 0, + "isOffensive": 0, + "isWarpSafe": 0, + "modifierInfo": [ + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 271, + "modifyingAttributeID": 748, + "operation": 6 + }, + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 274, + "modifyingAttributeID": 748, + "operation": 6 + }, + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 272, + "modifyingAttributeID": 748, + "operation": 6 + }, + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 273, + "modifyingAttributeID": 748, + "operation": 6 + } + ], + "propulsionChance": 0, + "published": 0, + "rangeChance": 0 + }, + "8070": { + "disallowAutoRepeat": 0, + "effectCategory": 0, + "effectID": 8070, + "effectName": "eliteBonusCommandShipsHeavyHAMvelocityCS2", + "electronicChance": 0, + "isAssistance": 0, + "isOffensive": 0, + "isWarpSafe": 0, + "modifierInfo": [ + { + "domain": "charID", + "func": "OwnerRequiredSkillModifier", + "modifiedAttributeID": 37, + "modifyingAttributeID": 999, + "operation": 6, + "skillTypeID": 3324 + }, + { + "domain": "charID", + "func": "OwnerRequiredSkillModifier", + "modifiedAttributeID": 37, + "modifyingAttributeID": 999, + "operation": 6, + "skillTypeID": 25719 + } + ], + "propulsionChance": 0, + "published": 0, + "rangeChance": 0 + }, + "8071": { + "disallowAutoRepeat": 0, + "effectCategory": 0, + "effectID": 8071, + "effectName": " eliteBonusCommandShipDroneRangeCS1", + "electronicChance": 0, + "isAssistance": 0, + "isOffensive": 0, + "isWarpSafe": 0, + "modifierInfo": [ + { + "domain": "charID", + "func": "OwnerRequiredSkillModifier", + "modifiedAttributeID": 54, + "modifyingAttributeID": 1000, + "operation": 6, + "skillTypeID": 3436 + } + ], + "propulsionChance": 0, + "published": 0, + "rangeChance": 0 + }, + "8072": { + "disallowAutoRepeat": 0, + "effectCategory": 0, + "effectID": 8072, + "effectName": "shipArmorResistanceBonusGBC2", + "electronicChance": 0, + "isAssistance": 0, + "isOffensive": 0, + "isWarpSafe": 0, + "modifierInfo": [ + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 267, + "modifyingAttributeID": 746, + "operation": 6 + }, + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 270, + "modifyingAttributeID": 746, + "operation": 6 + }, + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 268, + "modifyingAttributeID": 746, + "operation": 6 + }, + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 269, + "modifyingAttributeID": 746, + "operation": 6 + } + ], + "propulsionChance": 0, + "published": 0, + "rangeChance": 0 + }, + "8073": { + "disallowAutoRepeat": 0, + "effectCategory": 0, + "effectID": 8073, + "effectName": "eliteBonusCommandShipShieldHPCS1", + "electronicChance": 0, + "isAssistance": 0, + "isOffensive": 0, + "isWarpSafe": 0, + "modifierInfo": [ + { + "domain": "shipID", + "func": "ItemModifier", + "modifiedAttributeID": 263, + "modifyingAttributeID": 1000, + "operation": 6 + } + ], + "propulsionChance": 0, + "published": 0, + "rangeChance": 0 } } \ No newline at end of file diff --git a/staticdata/fsd_binary/requiredskillsfortypes.0.json b/staticdata/fsd_binary/requiredskillsfortypes.0.json index ec6f9ddb4..dca349835 100644 --- a/staticdata/fsd_binary/requiredskillsfortypes.0.json +++ b/staticdata/fsd_binary/requiredskillsfortypes.0.json @@ -16683,5 +16683,35 @@ }, "54657": { "3402": 1 + }, + "55927": { + "3402": 1 + }, + "55928": { + "3402": 1 + }, + "55929": { + "3402": 1 + }, + "55942": { + "3402": 1 + }, + "55943": { + "3402": 1 + }, + "55944": { + "3402": 1 + }, + "55945": { + "3402": 1 + }, + "55946": { + "3402": 1 + }, + "55947": { + "3402": 1 + }, + "55977": { + "3402": 1 } } \ No newline at end of file diff --git a/version.yml b/version.yml index 073f51e38..97f405e70 100644 --- a/version.yml +++ b/version.yml @@ -1 +1 @@ -version: v2.23.0 +version: v2.24.1