diff --git a/config.py b/config.py index 1944695e9..6eace3a98 100644 --- a/config.py +++ b/config.py @@ -24,10 +24,10 @@ saveInRoot = False # Version data -version = "2.0.0b4" +version = "2.0.0b5" tag = "git" -expansionName = "YC120.2" -expansionVersion = "1.2" +expansionName = "YC120.3" +expansionVersion = "1.8" evemonMinVersion = "4081" pyfaPath = None diff --git a/eos/capSim.py b/eos/capSim.py index 9b8ffc305..8b16c3e0f 100644 --- a/eos/capSim.py +++ b/eos/capSim.py @@ -72,7 +72,7 @@ class CapSimulator(object): disable_period = False # Loop over modules, clearing clipSize if applicable, and group modules based on attributes - for (duration, capNeed, clipSize, disableStagger) in self.modules: + for (duration, capNeed, clipSize, disableStagger, reloadTime) in self.modules: if self.scale: duration, capNeed = self.scale_activation(duration, capNeed) @@ -80,24 +80,25 @@ class CapSimulator(object): # a cap booster module. if not self.reload and capNeed > 0: clipSize = 0 + reloadTime = 0 # Group modules based on their properties - if (duration, capNeed, clipSize, disableStagger) in mods: - mods[(duration, capNeed, clipSize, disableStagger)] += 1 + if (duration, capNeed, clipSize, disableStagger, reloadTime) in mods: + mods[(duration, capNeed, clipSize, disableStagger, reloadTime)] += 1 else: - mods[(duration, capNeed, clipSize, disableStagger)] = 1 + mods[(duration, capNeed, clipSize, disableStagger, reloadTime)] = 1 # Loop over grouped modules, configure staggering and push to the simulation state - for (duration, capNeed, clipSize, disableStagger), amount in mods.items(): + for (duration, capNeed, clipSize, disableStagger, reloadTime), amount in mods.items(): if self.stagger and not disableStagger: if clipSize == 0: duration = int(duration / amount) else: - stagger_amount = (duration * clipSize + 10000) / (amount * clipSize) + stagger_amount = (duration * clipSize + reloadTime) / (amount * clipSize) for i in range(1, amount): heapq.heappush(self.state, [i * stagger_amount, duration, - capNeed, 0, clipSize]) + capNeed, 0, clipSize, reloadTime]) else: capNeed *= amount @@ -107,7 +108,7 @@ class CapSimulator(object): if clipSize: disable_period = True - heapq.heappush(self.state, [0, duration, capNeed, 0, clipSize]) + heapq.heappush(self.state, [0, duration, capNeed, 0, clipSize, reloadTime]) if disable_period: self.period = self.t_max @@ -144,7 +145,7 @@ class CapSimulator(object): while 1: activation = pop(state) - t_now, duration, capNeed, shot, clipSize = activation + t_now, duration, capNeed, shot, clipSize, reloadTime = activation if t_now >= t_max: break @@ -180,7 +181,7 @@ class CapSimulator(object): if clipSize: if shot % clipSize == 0: shot = 0 - t_now += 10000 # include reload time + t_now += reloadTime # include reload time activation[0] = t_now activation[3] = shot diff --git a/eos/effects/ammoinfluencecapneed.py b/eos/effects/ammoinfluencecapneed.py index d5110c5f1..b798f0f4b 100644 --- a/eos/effects/ammoinfluencecapneed.py +++ b/eos/effects/ammoinfluencecapneed.py @@ -1,7 +1,7 @@ # ammoInfluenceCapNeed # # Used by: -# Items from category: Charge (478 of 925) +# Items from category: Charge (478 of 928) type = "passive" diff --git a/eos/effects/ammoinfluencerange.py b/eos/effects/ammoinfluencerange.py index 1c7d4ea44..078b2b205 100644 --- a/eos/effects/ammoinfluencerange.py +++ b/eos/effects/ammoinfluencerange.py @@ -1,7 +1,7 @@ # ammoInfluenceRange # # Used by: -# Items from category: Charge (572 of 925) +# Items from category: Charge (572 of 928) type = "passive" diff --git a/eos/effects/ammospeedmultiplier.py b/eos/effects/ammospeedmultiplier.py index 31ebe295b..ac7ada2ad 100644 --- a/eos/effects/ammospeedmultiplier.py +++ b/eos/effects/ammospeedmultiplier.py @@ -3,6 +3,7 @@ # Used by: # Charges from group: Festival Charges (23 of 23) # Charges from group: Interdiction Probe (2 of 2) +# Charges from group: Structure Festival Charges (3 of 3) type = "passive" diff --git a/eos/effects/boosterarmorhppenalty.py b/eos/effects/boosterarmorhppenalty.py index c65338065..63fb57cd1 100644 --- a/eos/effects/boosterarmorhppenalty.py +++ b/eos/effects/boosterarmorhppenalty.py @@ -1,7 +1,7 @@ # boosterArmorHpPenalty # # Used by: -# Implants from group: Booster (12 of 54) +# Implants from group: Booster (12 of 62) type = "boosterSideEffect" # User-friendly name for the side effect diff --git a/eos/effects/boostermaxvelocitypenalty.py b/eos/effects/boostermaxvelocitypenalty.py index c6b7d99e0..b6decaf9f 100644 --- a/eos/effects/boostermaxvelocitypenalty.py +++ b/eos/effects/boostermaxvelocitypenalty.py @@ -1,7 +1,7 @@ # boosterMaxVelocityPenalty # # Used by: -# Implants from group: Booster (12 of 54) +# Implants from group: Booster (12 of 62) type = "boosterSideEffect" # User-friendly name for the side effect diff --git a/eos/effects/boostershieldcapacitypenalty.py b/eos/effects/boostershieldcapacitypenalty.py index 9497300b9..7bc929983 100644 --- a/eos/effects/boostershieldcapacitypenalty.py +++ b/eos/effects/boostershieldcapacitypenalty.py @@ -1,7 +1,7 @@ # boosterShieldCapacityPenalty # # Used by: -# Implants from group: Booster (12 of 54) +# Implants from group: Booster (12 of 62) type = "boosterSideEffect" # User-friendly name for the side effect diff --git a/eos/effects/doomsdayaoebubble.py b/eos/effects/doomsdayaoebubble.py index c4945d697..1eb899ac0 100644 --- a/eos/effects/doomsdayaoebubble.py +++ b/eos/effects/doomsdayaoebubble.py @@ -1,7 +1,7 @@ # doomsdayAOEBubble # # Used by: -# Module: Standup Warp Disruption Burst Projector +# Module: Warp Disruption Burst Projector type = "projected", "active" diff --git a/eos/effects/doomsdaybeamdot.py b/eos/effects/doomsdaybeamdot.py new file mode 100644 index 000000000..b97beb097 --- /dev/null +++ b/eos/effects/doomsdaybeamdot.py @@ -0,0 +1,9 @@ +# doomsdayBeamDOT +# +# Used by: +# Modules named like: Lance (4 of 4) +type = "active" + + +def handler(fit, src, context): + pass diff --git a/eos/effects/doomsdayconedot.py b/eos/effects/doomsdayconedot.py new file mode 100644 index 000000000..3e92fb8f6 --- /dev/null +++ b/eos/effects/doomsdayconedot.py @@ -0,0 +1,9 @@ +# doomsdayConeDOT +# +# Used by: +# Module: Bosonic Field Generator +type = "active" + + +def handler(fit, src, context): + pass diff --git a/eos/effects/doomsdayhog.py b/eos/effects/doomsdayhog.py new file mode 100644 index 000000000..4e0fcc1dd --- /dev/null +++ b/eos/effects/doomsdayhog.py @@ -0,0 +1,9 @@ +# doomsdayHOG +# +# Used by: +# Module: Gravitational Transportation Field Oscillator +type = "active" + + +def handler(fit, src, context): + pass diff --git a/eos/effects/doomsdayslash.py b/eos/effects/doomsdayslash.py new file mode 100644 index 000000000..934766b11 --- /dev/null +++ b/eos/effects/doomsdayslash.py @@ -0,0 +1,9 @@ +# doomsdaySlash +# +# Used by: +# Modules named like: Reaper (4 of 4) +type = "active" + + +def handler(fit, src, context): + pass diff --git a/eos/effects/elitebonusflagcruiserallresistances1.py b/eos/effects/elitebonusflagcruiserallresistances1.py new file mode 100644 index 000000000..5ca4a504d --- /dev/null +++ b/eos/effects/elitebonusflagcruiserallresistances1.py @@ -0,0 +1,20 @@ +# eliteBonusFlagCruiserAllResistances1 +# +# Used by: +# Ship: Monitor +type = "passive" + + +def handler(fit, src, context): + fit.ship.boostItemAttr("explosiveDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("shieldKineticDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("shieldExplosiveDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("armorThermalDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("thermalDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("shieldEmDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("armorExplosiveDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("armorEmDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("shieldThermalDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("kineticDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("armorKineticDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") + fit.ship.boostItemAttr("emDamageResonance", src.getModifiedItemAttr("eliteBonusFlagCruisers1"), skill="Flag Cruisers") diff --git a/eos/effects/highspeedmanuveringcapacitorneedmultiplierpostpercentcapacitorneedlocationshipmodulesrequiringhighspeedmanuvering.py b/eos/effects/highspeedmanuveringcapacitorneedmultiplierpostpercentcapacitorneedlocationshipmodulesrequiringhighspeedmanuvering.py index d2b5f33c2..12ae33b27 100644 --- a/eos/effects/highspeedmanuveringcapacitorneedmultiplierpostpercentcapacitorneedlocationshipmodulesrequiringhighspeedmanuvering.py +++ b/eos/effects/highspeedmanuveringcapacitorneedmultiplierpostpercentcapacitorneedlocationshipmodulesrequiringhighspeedmanuvering.py @@ -9,4 +9,4 @@ type = "passive" def handler(fit, container, context): level = container.level if "skill" in context else 1 fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("High Speed Maneuvering"), - "capacitorNeed", container.getModifiedItemAttr("capacitorNeedMultiplier") * level) + "capacitorNeed", container.getModifiedItemAttr("capNeedBonus") * level) diff --git a/eos/effects/microjumpportaldrive.py b/eos/effects/microjumpportaldrive.py new file mode 100644 index 000000000..1e5a02569 --- /dev/null +++ b/eos/effects/microjumpportaldrive.py @@ -0,0 +1,9 @@ +# microJumpPortalDrive +# +# Used by: +# Module: Micro Jump Field Generator +type = "active" + + +def handler(fit, src, context): + pass diff --git a/eos/effects/missiledmgbonus.py b/eos/effects/missiledmgbonus.py index 3abc18387..d565bdaaf 100644 --- a/eos/effects/missiledmgbonus.py +++ b/eos/effects/missiledmgbonus.py @@ -1,7 +1,7 @@ # missileDMGBonus # # Used by: -# Modules from group: Ballistic Control system (18 of 18) +# Modules from group: Ballistic Control system (20 of 20) type = "passive" diff --git a/eos/effects/missilelauncherspeedmultiplier.py b/eos/effects/missilelauncherspeedmultiplier.py index 9e2a28559..cc339b5ab 100644 --- a/eos/effects/missilelauncherspeedmultiplier.py +++ b/eos/effects/missilelauncherspeedmultiplier.py @@ -1,7 +1,7 @@ # missileLauncherSpeedMultiplier # # Used by: -# Modules from group: Ballistic Control system (18 of 18) +# Modules from group: Ballistic Control system (20 of 20) type = "passive" diff --git a/eos/effects/modulebonusdronedamageamplifier.py b/eos/effects/modulebonusdronedamageamplifier.py index f37ea4a1d..ac7fb062d 100644 --- a/eos/effects/modulebonusdronedamageamplifier.py +++ b/eos/effects/modulebonusdronedamageamplifier.py @@ -2,6 +2,7 @@ # # Used by: # Modules from group: Drone Damage Modules (11 of 11) +# Modules named like: C3 'Hivaa Saitsuo' Ballistic Control System (2 of 2) type = "passive" diff --git a/eos/effects/overloadrofbonus.py b/eos/effects/overloadrofbonus.py index 6248b687d..4d5707173 100644 --- a/eos/effects/overloadrofbonus.py +++ b/eos/effects/overloadrofbonus.py @@ -2,7 +2,7 @@ # # Used by: # Modules from group: Missile Launcher Torpedo (22 of 22) -# Items from market group: Ship Equipment > Turrets & Bays (429 of 861) +# Items from market group: Ship Equipment > Turrets & Bays (429 of 863) # Module: Interdiction Sphere Launcher I type = "overheat" diff --git a/eos/effects/overloadselfdamagebonus.py b/eos/effects/overloadselfdamagebonus.py index 451c95201..a60a741e4 100644 --- a/eos/effects/overloadselfdamagebonus.py +++ b/eos/effects/overloadselfdamagebonus.py @@ -1,7 +1,7 @@ # overloadSelfDamageBonus # # Used by: -# Modules from group: Energy Weapon (101 of 213) +# Modules from group: Energy Weapon (101 of 214) # Modules from group: Hybrid Weapon (105 of 221) # Modules from group: Projectile Weapon (99 of 165) type = "overheat" diff --git a/eos/effects/rolebonusflagcruisermodulefittingreduction.py b/eos/effects/rolebonusflagcruisermodulefittingreduction.py new file mode 100644 index 000000000..2020db2d9 --- /dev/null +++ b/eos/effects/rolebonusflagcruisermodulefittingreduction.py @@ -0,0 +1,17 @@ +# roleBonusFlagCruiserModuleFittingReduction +# +# Used by: +# Ship: Monitor +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ("Propulsion Module", "Micro Jump Drive"), + "power", src.getModifiedItemAttr("flagCruiserFittingBonusPropMods")) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ("Propulsion Module", "Micro Jump Drive"), + "cpu", src.getModifiedItemAttr("flagCruiserFittingBonusPropMods")) + + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ("Target Painter", "Scan Probe Launcher"), + "cpu", src.getModifiedItemAttr("flagCruiserFittingBonusPainterProbes")) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in ("Target Painter", "Scan Probe Launcher"), + "power", src.getModifiedItemAttr("flagCruiserFittingBonusPainterProbes")) diff --git a/eos/effects/rolebonusflagcruisertargetpaintermodifications.py b/eos/effects/rolebonusflagcruisertargetpaintermodifications.py new file mode 100644 index 000000000..7400a0707 --- /dev/null +++ b/eos/effects/rolebonusflagcruisertargetpaintermodifications.py @@ -0,0 +1,12 @@ +# roleBonusFlagCruiserTargetPainterModifications +# +# Used by: +# Ship: Monitor +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Target Painter", "signatureRadiusBonus", + src.getModifiedItemAttr("targetPainterStrengthModifierFlagCruisers")) + fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Target Painter", "maxRange", + src.getModifiedItemAttr("targetPainterRangeModifierFlagCruisers")) diff --git a/eos/effects/shipagilitybonusgc1.py b/eos/effects/shipagilitybonusgc1.py new file mode 100644 index 000000000..6c08d527f --- /dev/null +++ b/eos/effects/shipagilitybonusgc1.py @@ -0,0 +1,9 @@ +# shipAgilityBonusGC1 +# +# Used by: +# Ship: Monitor +type = "passive" + + +def handler(fit, src, context): + fit.ship.boostItemAttr("agility", src.getModifiedItemAttr("shipBonusGC"), skill="Gallente Cruiser") diff --git a/eos/effects/shiparmorhitpointsac1.py b/eos/effects/shiparmorhitpointsac1.py new file mode 100644 index 000000000..853eed5d1 --- /dev/null +++ b/eos/effects/shiparmorhitpointsac1.py @@ -0,0 +1,9 @@ +# shipArmorHitPointsAC1 +# +# Used by: +# Ship: Monitor +type = "passive" + + +def handler(fit, src, context): + fit.ship.boostItemAttr("armorHP", src.getModifiedItemAttr("shipBonusAC"), skill="Amarr Cruiser") diff --git a/eos/effects/shipbonusdronedamagemultiplierrookie.py b/eos/effects/shipbonusdronedamagemultiplierrookie.py index a5e45f38c..23c9a4b5b 100644 --- a/eos/effects/shipbonusdronedamagemultiplierrookie.py +++ b/eos/effects/shipbonusdronedamagemultiplierrookie.py @@ -2,6 +2,7 @@ # # Used by: # Ship: Gnosis +# Ship: Praxis # Ship: Sunesis # Ship: Taipan # Ship: Velator diff --git a/eos/effects/shipbonusdronehitpointsrookie.py b/eos/effects/shipbonusdronehitpointsrookie.py index 27413bed0..3862e2144 100644 --- a/eos/effects/shipbonusdronehitpointsrookie.py +++ b/eos/effects/shipbonusdronehitpointsrookie.py @@ -3,6 +3,7 @@ # Used by: # Variations of ship: Procurer (2 of 2) # Ship: Gnosis +# Ship: Praxis # Ship: Sunesis # Ship: Taipan # Ship: Velator diff --git a/eos/effects/shipbonusheavyassaultmissileemdamagecbc2.py b/eos/effects/shipbonusheavyassaultmissileemdamagecbc2.py new file mode 100644 index 000000000..dc9dfef75 --- /dev/null +++ b/eos/effects/shipbonusheavyassaultmissileemdamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyAssaultMissileEMDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Assault Missiles"), "emDamage", + src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusheavyassaultmissileexplosivedamagecbc2.py b/eos/effects/shipbonusheavyassaultmissileexplosivedamagecbc2.py new file mode 100644 index 000000000..3ea3ea593 --- /dev/null +++ b/eos/effects/shipbonusheavyassaultmissileexplosivedamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyAssaultMissileExplosiveDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Assault Missiles"), "explosiveDamage", + src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusheavyassaultmissilekineticdamagecbc2.py b/eos/effects/shipbonusheavyassaultmissilekineticdamagecbc2.py new file mode 100644 index 000000000..fdb946508 --- /dev/null +++ b/eos/effects/shipbonusheavyassaultmissilekineticdamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyAssaultMissileKineticDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Assault Missiles"), + "kineticDamage", src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusheavyassaultmissilethermaldamagecbc2.py b/eos/effects/shipbonusheavyassaultmissilethermaldamagecbc2.py new file mode 100644 index 000000000..dd3e5b94a --- /dev/null +++ b/eos/effects/shipbonusheavyassaultmissilethermaldamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyAssaultMissileThermalDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Assault Missiles"), + "thermalDamage", src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusheavymissileemdamagecbc2.py b/eos/effects/shipbonusheavymissileemdamagecbc2.py new file mode 100644 index 000000000..a2e53af5a --- /dev/null +++ b/eos/effects/shipbonusheavymissileemdamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyMissileEMDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), + "emDamage", src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusheavymissileexplosivedamagecbc2.py b/eos/effects/shipbonusheavymissileexplosivedamagecbc2.py new file mode 100644 index 000000000..c4a2df83e --- /dev/null +++ b/eos/effects/shipbonusheavymissileexplosivedamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyMissileExplosiveDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), "explosiveDamage", + src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusheavymissilekineticdamagecbc2.py b/eos/effects/shipbonusheavymissilekineticdamagecbc2.py new file mode 100644 index 000000000..f9ef052fa --- /dev/null +++ b/eos/effects/shipbonusheavymissilekineticdamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyMissileKineticDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), "kineticDamage", + src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusheavymissilethermaldamagecbc2.py b/eos/effects/shipbonusheavymissilethermaldamagecbc2.py new file mode 100644 index 000000000..cf22a33c3 --- /dev/null +++ b/eos/effects/shipbonusheavymissilethermaldamagecbc2.py @@ -0,0 +1,10 @@ +# shipBonusHeavyMissileThermalDamageCBC2 +# +# Used by: +# Ship: Drake Navy Issue +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), "thermalDamage", + src.getModifiedItemAttr("shipBonusCBC2"), skill="Caldari Battlecruiser") diff --git a/eos/effects/shipbonusminingdroneamountpercentrookie.py b/eos/effects/shipbonusminingdroneamountpercentrookie.py index bffbe6b81..5cde2c087 100644 --- a/eos/effects/shipbonusminingdroneamountpercentrookie.py +++ b/eos/effects/shipbonusminingdroneamountpercentrookie.py @@ -2,6 +2,7 @@ # # Used by: # Ship: Gnosis +# Ship: Praxis # Ship: Taipan # Ship: Velator type = "passive" diff --git a/eos/effects/shipbonusmissileexplosiondelaypiratefaction2.py b/eos/effects/shipbonusmissileexplosiondelaypiratefaction2.py index e1976dc49..e7634c7ec 100644 --- a/eos/effects/shipbonusmissileexplosiondelaypiratefaction2.py +++ b/eos/effects/shipbonusmissileexplosiondelaypiratefaction2.py @@ -9,4 +9,4 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"), - "explosionDelay", ship.getModifiedItemAttr("shipBonusPirateFaction2")) + "explosionDelay", ship.getModifiedItemAttr("shipBonusRole8")) diff --git a/eos/effects/shipbonusremoterepairrangepiratefaction2.py b/eos/effects/shipbonusremoterepairrangepiratefaction2.py index 551227691..7a8923b45 100644 --- a/eos/effects/shipbonusremoterepairrangepiratefaction2.py +++ b/eos/effects/shipbonusremoterepairrangepiratefaction2.py @@ -7,6 +7,6 @@ type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), - "maxRange", ship.getModifiedItemAttr("shipBonusPirateFaction2")) + "maxRange", ship.getModifiedItemAttr("shipBonusRole8")) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Remote Armor Repair Systems"), - "falloffEffectiveness", ship.getModifiedItemAttr("shipBonusPirateFaction2")) + "falloffEffectiveness", ship.getModifiedItemAttr("shipBonusRole8")) diff --git a/eos/effects/shiplargeweaponsdamagebonus.py b/eos/effects/shiplargeweaponsdamagebonus.py new file mode 100644 index 000000000..a734806d8 --- /dev/null +++ b/eos/effects/shiplargeweaponsdamagebonus.py @@ -0,0 +1,38 @@ +# shipLargeWeaponsDamageBonus +# +# Used by: +# Ship: Praxis +type = "passive" + + +def handler(fit, src, context): + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Hybrid Turret"), "damageMultiplier", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Projectile Turret"), "damageMultiplier", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret"), "damageMultiplier", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), "thermalDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), "emDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), "kineticDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"), "explosiveDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes"), "emDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes"), "kineticDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes"), "explosiveDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes"), "thermalDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Cruise Missiles"), "thermalDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Cruise Missiles"), "explosiveDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Cruise Missiles"), "kineticDamage", + src.getModifiedItemAttr("shipBonusRole7")) + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Cruise Missiles"), "emDamage", + src.getModifiedItemAttr("shipBonusRole7")) diff --git a/eos/effects/shipscanprobestrengthbonuspiratecruiser.py b/eos/effects/shipscanprobestrengthbonuspiratecruiser.py index 79874dbef..c57d3adff 100644 --- a/eos/effects/shipscanprobestrengthbonuspiratecruiser.py +++ b/eos/effects/shipscanprobestrengthbonuspiratecruiser.py @@ -4,10 +4,11 @@ # Ships named like: Stratios (2 of 2) # Ship: Astero # Ship: Gnosis +# Ship: Praxis # Ship: Sunesis type = "passive" def handler(fit, container, context): fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Astrometrics"), - "baseSensorStrength", container.getModifiedItemAttr("shipBonusPirateFaction2")) + "baseSensorStrength", container.getModifiedItemAttr("shipBonusRole8")) diff --git a/eos/effects/shipshieldemresistance1cbc2.py b/eos/effects/shipshieldemresistance1cbc2.py index 83a19ed65..82fe621bc 100644 --- a/eos/effects/shipshieldemresistance1cbc2.py +++ b/eos/effects/shipshieldemresistance1cbc2.py @@ -1,7 +1,8 @@ # shipShieldEmResistance1CBC2 # # Used by: -# Variations of ship: Drake (3 of 3) +# Ship: Drake +# Ship: Nighthawk # Ship: Vulture type = "passive" diff --git a/eos/effects/shipshieldexplosiveresistance1cbc2.py b/eos/effects/shipshieldexplosiveresistance1cbc2.py index 5f5559e19..c3e3846de 100644 --- a/eos/effects/shipshieldexplosiveresistance1cbc2.py +++ b/eos/effects/shipshieldexplosiveresistance1cbc2.py @@ -1,7 +1,8 @@ # shipShieldExplosiveResistance1CBC2 # # Used by: -# Variations of ship: Drake (3 of 3) +# Ship: Drake +# Ship: Nighthawk # Ship: Vulture type = "passive" diff --git a/eos/effects/shipshieldhitpointscc1.py b/eos/effects/shipshieldhitpointscc1.py new file mode 100644 index 000000000..06fdfea96 --- /dev/null +++ b/eos/effects/shipshieldhitpointscc1.py @@ -0,0 +1,9 @@ +# shipShieldHitpointsCC1 +# +# Used by: +# Ship: Monitor +type = "passive" + + +def handler(fit, src, context): + fit.ship.boostItemAttr("shieldCapacity", src.getModifiedItemAttr("shipBonusCC"), skill="Caldari Cruiser") diff --git a/eos/effects/shipshieldkineticresistance1cbc2.py b/eos/effects/shipshieldkineticresistance1cbc2.py index 4fccf027e..8db3ea8be 100644 --- a/eos/effects/shipshieldkineticresistance1cbc2.py +++ b/eos/effects/shipshieldkineticresistance1cbc2.py @@ -1,7 +1,8 @@ # shipShieldKineticResistance1CBC2 # # Used by: -# Variations of ship: Drake (3 of 3) +# Ship: Drake +# Ship: Nighthawk # Ship: Vulture type = "passive" diff --git a/eos/effects/shipshieldthermalresistance1cbc2.py b/eos/effects/shipshieldthermalresistance1cbc2.py index fad8935c7..4268d279f 100644 --- a/eos/effects/shipshieldthermalresistance1cbc2.py +++ b/eos/effects/shipshieldthermalresistance1cbc2.py @@ -1,7 +1,8 @@ # shipShieldThermalResistance1CBC2 # # Used by: -# Variations of ship: Drake (3 of 3) +# Ship: Drake +# Ship: Nighthawk # Ship: Vulture type = "passive" diff --git a/eos/effects/shipsignatureradiusmc1.py b/eos/effects/shipsignatureradiusmc1.py new file mode 100644 index 000000000..e366d23af --- /dev/null +++ b/eos/effects/shipsignatureradiusmc1.py @@ -0,0 +1,9 @@ +# shipSignatureRadiusMC1 +# +# Used by: +# Ship: Monitor +type = "passive" + + +def handler(fit, src, context): + fit.ship.boostItemAttr("signatureRadius", src.getModifiedItemAttr("shipBonusMC"), skill="Minmatar Cruiser") diff --git a/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py index f22439441..aee7b22f9 100644 --- a/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py +++ b/eos/effects/structurewarpscrambleblockmwdwithnpceffect.py @@ -11,8 +11,7 @@ def handler(fit, module, context): fit.ship.increaseItemAttr("warpScrambleStatus", module.getModifiedItemAttr("warpScrambleStrength")) if module.charge is not None and module.charge.ID == 47336: for mod in fit.modules: - if not mod.isEmpty and mod.state > State.ONLINE and ( - mod.item.requiresSkill("High Speed Maneuvering") - or mod.item.requiresSkill("Micro Jump Drive Operation") - ): + if not mod.isEmpty and mod.item.requiresSkill("High Speed Maneuvering") and mod.state > State.ONLINE: + mod.state = State.ONLINE + if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > State.ONLINE: mod.state = State.ONLINE diff --git a/eos/effects/targetattack.py b/eos/effects/targetattack.py index 236a426d8..4f0625c89 100644 --- a/eos/effects/targetattack.py +++ b/eos/effects/targetattack.py @@ -2,7 +2,7 @@ # # Used by: # Drones from group: Combat Drone (74 of 74) -# Modules from group: Energy Weapon (212 of 213) +# Modules from group: Energy Weapon (212 of 214) type = 'active' diff --git a/eos/effects/usemissiles.py b/eos/effects/usemissiles.py index d77c56e3e..57a58372b 100644 --- a/eos/effects/usemissiles.py +++ b/eos/effects/usemissiles.py @@ -15,12 +15,13 @@ def handler(fit, src, context): if src.item.group.name == 'Missile Launcher Bomb': # Bomb Launcher Cooldown Timer moduleReactivationDelay = src.getModifiedItemAttr("moduleReactivationDelay") + speed = src.getModifiedItemAttr("speed") # Void and Focused Void Bombs neutAmount = src.getModifiedChargeAttr("energyNeutralizerAmount") - if moduleReactivationDelay and neutAmount: - fit.addDrain(src, moduleReactivationDelay, neutAmount, 0) + if moduleReactivationDelay and neutAmount and speed: + fit.addDrain(src, speed + moduleReactivationDelay, neutAmount, 0) # Lockbreaker Bombs ecmStrengthBonus = src.getModifiedChargeAttr("scan{0}StrengthBonus".format(fit.scanType)) diff --git a/eos/effects/warpdisruptsphere.py b/eos/effects/warpdisruptsphere.py index 7cddfcb86..22787465b 100644 --- a/eos/effects/warpdisruptsphere.py +++ b/eos/effects/warpdisruptsphere.py @@ -11,7 +11,6 @@ runTime = "early" def handler(fit, module, context): - if "projected" in context: fit.ship.increaseItemAttr("warpScrambleStatus", module.getModifiedItemAttr("warpScrambleStrength")) if module.charge is not None and module.charge.ID == 45010: diff --git a/eos/effects/warpscrambleblockmwdwithnpceffect.py b/eos/effects/warpscrambleblockmwdwithnpceffect.py index 2e075207e..89c97117e 100644 --- a/eos/effects/warpscrambleblockmwdwithnpceffect.py +++ b/eos/effects/warpscrambleblockmwdwithnpceffect.py @@ -21,3 +21,5 @@ def handler(fit, module, context): or mod.item.requiresSkill("High Speed Maneuvering") ): mod.state = State.ONLINE + if not mod.isEmpty and mod.item.requiresSkill("Micro Jump Drive Operation") and mod.state > State.ONLINE: + mod.state = State.ONLINE diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index e453bc7d0..45ad6171d 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -1084,7 +1084,7 @@ class Fit(object): def calculateSustainableTank(self, effective=True): if self.__sustainableTank is None: - if self.capStable: + if self.capStable and not self.factorReload: sustainable = { "armorRepair" : self.extraAttributes["armorRepair"], "shieldRepair": self.extraAttributes["shieldRepair"], @@ -1142,16 +1142,34 @@ class Fit(object): usesCap = False except AttributeError: usesCap = False - # Modules which do not use cap are not penalized based on cap use - if usesCap: - cycleTime = mod.getModifiedItemAttr("duration") - amount = mod.getModifiedItemAttr(groupAttrMap[mod.item.group.name]) + + cycleTime = mod.rawCycleTime + amount = mod.getModifiedItemAttr(groupAttrMap[mod.item.group.name]) + # Normal Repairers + if usesCap and not mod.charge: sustainable[attr] -= amount / (cycleTime / 1000.0) repairers.append(mod) + # Ancillary Armor reps etc + elif usesCap and mod.charge: + if mod.charge.name == "Nanite Repair Paste": + multiplier = mod.getModifiedItemAttr("chargedArmorDamageMultiplier") or 1 + else: + multiplier = 1 + sustainable[attr] -= amount * multiplier / (cycleTime / 1000.0) + repairers.append(mod) + # Ancillary Shield boosters etc + elif not usesCap: + if self.factorReload and mod.charge: + reloadtime = mod.reloadTime + else: + reloadtime = 0.0 + offdutycycle = reloadtime / ((max(mod.numShots, 1) * cycleTime) + reloadtime) + sustainable[attr] -= amount * offdutycycle / (cycleTime / 1000.0) # Sort repairers by efficiency. We want to use the most efficient repairers first repairers.sort(key=lambda _mod: _mod.getModifiedItemAttr( - groupAttrMap[_mod.item.group.name]) / _mod.getModifiedItemAttr("capacitorNeed"), reverse=True) + groupAttrMap[_mod.item.group.name]) * (_mod.getModifiedItemAttr( + "chargedArmorDamageMultiplier") or 1) / _mod.getModifiedItemAttr("capacitorNeed"), reverse=True) # Loop through every module until we're above peak recharge # Most efficient first, as we sorted earlier. @@ -1160,15 +1178,35 @@ class Fit(object): for mod in repairers: if capUsed > totalPeakRecharge: break - cycleTime = mod.cycleTime + + if self.factorReload and mod.charge: + reloadtime = mod.reloadTime + else: + reloadtime = 0.0 + + cycleTime = mod.rawCycleTime capPerSec = mod.capUse + if capPerSec is not None and cycleTime is not None: # Check how much this repper can work sustainability = min(1, (totalPeakRecharge - capUsed) / capPerSec) - - # Add the sustainable amount amount = mod.getModifiedItemAttr(groupAttrMap[mod.item.group.name]) - sustainable[groupStoreMap[mod.item.group.name]] += sustainability * (amount / (cycleTime / 1000.0)) + # Add the sustainable amount + + if not mod.charge: + sustainable[groupStoreMap[mod.item.group.name]] += sustainability * amount / ( + cycleTime / 1000.0) + else: + if mod.charge.name == "Nanite Repair Paste": + multiplier = mod.getModifiedItemAttr("chargedArmorDamageMultiplier") or 1 + else: + multiplier = 1 + ondutycycle = (max(mod.numShots, 1) * cycleTime) / ( + (max(mod.numShots, 1) * cycleTime) + reloadtime) + sustainable[groupStoreMap[ + mod.item.group.name]] += sustainability * amount * ondutycycle * multiplier / ( + cycleTime / 1000.0) + capUsed += capPerSec sustainable["passiveShield"] = self.calculateShieldRecharge() @@ -1186,7 +1224,7 @@ class Fit(object): rechargeRate = self.ship.getModifiedItemAttr("shieldRechargeRate") / 1000.0 return 10 / rechargeRate * sqrt(percent) * (1 - sqrt(percent)) * capacity - def addDrain(self, src, cycleTime, capNeed, clipSize=0): + def addDrain(self, src, cycleTime, capNeed, clipSize=0, reloadTime=0): """ Used for both cap drains and cap fills (fills have negative capNeed) """ energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") @@ -1196,7 +1234,7 @@ class Fit(object): if energyNeutralizerSignatureResolution: capNeed = capNeed * min(1, signatureRadius / energyNeutralizerSignatureResolution) - self.__extraDrains.append((cycleTime, capNeed, clipSize)) + self.__extraDrains.append((cycleTime, capNeed, clipSize, reloadTime)) def removeDrain(self, i): del self.__extraDrains[i] @@ -1214,6 +1252,7 @@ class Fit(object): cycleTime = mod.rawCycleTime or 0 reactivationTime = mod.getModifiedItemAttr("moduleReactivationDelay") or 0 fullCycleTime = cycleTime + reactivationTime + reloadTime = mod.reloadTime if fullCycleTime > 0: capNeed = mod.capUse if capNeed > 0: @@ -1225,11 +1264,11 @@ class Fit(object): disableStagger = mod.hardpoint == Hardpoint.TURRET drains.append((int(fullCycleTime), mod.getModifiedItemAttr("capacitorNeed") or 0, - mod.numShots or 0, disableStagger)) + mod.numShots or 0, disableStagger, reloadTime)) - for fullCycleTime, capNeed, clipSize in self.iterDrains(): + for fullCycleTime, capNeed, clipSize, reloadTime in self.iterDrains(): # Stagger incoming effects for cap simulation - drains.append((int(fullCycleTime), capNeed, clipSize, False)) + drains.append((int(fullCycleTime), capNeed, clipSize, False, reloadTime)) if capNeed > 0: capUsed += capNeed / (fullCycleTime / 1000.0) else: diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index e57ad9110..054828dae 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -337,8 +337,15 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): volley *= self.getModifiedItemAttr("damageMultiplier") or 1 if volley: cycleTime = self.cycleTime + # Some weapons repeat multiple times in one cycle (think doomsdays) + # Get the number of times it fires off + weaponDoT = max( + self.getModifiedItemAttr("doomsdayDamageDuration", 1) / self.getModifiedItemAttr("doomsdayDamageCycleTime", 1), + 1 + ) + self.__volley = volley - self.__dps = volley / (cycleTime / 1000.0) + self.__dps = (volley * weaponDoT) / (cycleTime / 1000.0) return self.__dps, self.__volley @@ -710,7 +717,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): # Module can only fire one shot at a time, think bomb launchers or defender launchers if self.disallowRepeatingAction: - if numShots > 1: + if numShots > 0: """ The actual mechanics behind this is complex. Behavior will be (for 3 ammo): fire, reactivation delay, fire, reactivation delay, fire, max(reactivation delay, reload) @@ -720,12 +727,13 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): Currently would apply to bomb launchers and defender missiles """ - effective_reload_time = ((self.reactivationDelay * (numShots - 1)) + max(raw_reload_time, self.reactivationDelay, 0)) / numShots + effective_reload_time = ((self.reactivationDelay * (numShots - 1)) + max(raw_reload_time, self.reactivationDelay, 0)) else: """ Applies to MJD/MJFG """ effective_reload_time = max(raw_reload_time, self.reactivationDelay, 0) + speed = speed + effective_reload_time else: """ Currently no other modules would have a reactivation delay, so for sanities sake don't try and account for it. @@ -752,7 +760,7 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): @property def disallowRepeatingAction(self): - return self.getModifiedItemAttr("disallowRepeatingAction", 0) + return self.getModifiedItemAttr("disallowRepeatingActivation", 0) @property def reactivationDelay(self): diff --git a/eve.db b/eve.db index 90d9e3b6a..5493b4e20 100644 Binary files a/eve.db and b/eve.db differ diff --git a/gui/builtinAdditionPanes/cargoView.py b/gui/builtinAdditionPanes/cargoView.py index 91b566283..ed5687cfc 100644 --- a/gui/builtinAdditionPanes/cargoView.py +++ b/gui/builtinAdditionPanes/cargoView.py @@ -135,7 +135,7 @@ class CargoView(d.Display): sFit = Fit.getInstance() fit = sFit.getFit(event.fitID) - self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) + # self.Parent.Parent.DisablePage(self, not fit or fit.isStructure) # Clear list and get out if current fitId is None if event.fitID is None and self.lastFitId is not None: diff --git a/gui/builtinContextMenus/amount.py b/gui/builtinContextMenus/amount.py index 6484595eb..ed23e606a 100644 --- a/gui/builtinContextMenus/amount.py +++ b/gui/builtinContextMenus/amount.py @@ -72,6 +72,7 @@ class AmountChanger(wx.Dialog): self.input = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PROCESS_ENTER) self.input.SetValue(str(value)) + self.input.SelectAll() bSizer1.Add(self.input, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 15) @@ -82,7 +83,6 @@ class AmountChanger(wx.Dialog): bSizer1.Add(bSizer3, 0, wx.ALL | wx.EXPAND, 10) self.input.SetFocus() - self.input.SetInsertionPointEnd() self.input.Bind(wx.EVT_CHAR, self.onChar) self.input.Bind(wx.EVT_TEXT_ENTER, self.processEnter) self.SetSizer(bSizer1) diff --git a/gui/builtinViewColumns/misc.py b/gui/builtinViewColumns/misc.py index 5378482ad..668979c1f 100644 --- a/gui/builtinViewColumns/misc.py +++ b/gui/builtinViewColumns/misc.py @@ -76,6 +76,31 @@ class Miscellanea(ViewColumn): stuff.getModifiedItemAttr("boosterDuration") text = "{0} min".format(formatAmount(stuff.getModifiedItemAttr("boosterDuration") / 1000 / 60, 3, 0, 3)) return text, "Booster Duration" + elif itemGroup in ("Super Weapon", "Structure Doomsday Weapon"): + doomsday_duration = stuff.getModifiedItemAttr("doomsdayDamageDuration", 1) + doomsday_dottime = stuff.getModifiedItemAttr("doomsdayDamageCycleTime", 1) + func = stuff.getModifiedItemAttr + + volley = sum( + map( + lambda attr: (func("%sDamage" % attr) or 0), + ("em", "thermal", "kinetic", "explosive") + ) + ) + volley *= stuff.getModifiedItemAttr("damageMultiplier") or 1 + + if volley <= 0: + text = "" + tooltip = "" + elif max(doomsday_duration / doomsday_dottime, 1) > 1: + text = "{0} dmg over {1} s".format(formatAmount(volley * (doomsday_duration / doomsday_dottime), 3, 0, 3), doomsday_duration / 1000) + tooltip = "Raw damage done over time" + else: + text = "{0} dmg".format(formatAmount(volley * (doomsday_duration / doomsday_dottime), 3, 0, 3)) + tooltip = "Raw damage done" + return text, tooltip + + pass elif itemGroup in ("Energy Weapon", "Hybrid Weapon", "Projectile Weapon", "Combat Drone", "Fighter Drone"): trackingSpeed = stuff.getModifiedItemAttr("trackingSpeed") if not trackingSpeed: diff --git a/imgs/renders/45534.png b/imgs/renders/45534.png new file mode 100644 index 000000000..c1aec27af Binary files /dev/null and b/imgs/renders/45534.png differ diff --git a/imgs/renders/47466.png b/imgs/renders/47466.png new file mode 100644 index 000000000..0da4159c9 Binary files /dev/null and b/imgs/renders/47466.png differ diff --git a/service/update.py b/service/update.py index 0d8d38f53..86c56ef83 100644 --- a/service/update.py +++ b/service/update.py @@ -59,8 +59,8 @@ class CheckUpdateThread(threading.Thread): rVersion = Version(release['tag_name']) cVersion = Version(config.version) - # Suppress pre releases - if rVersion.is_prerelease and self.settings.get('prerelease'): + # Suppress pre releases if we're not already on a pre-release (if we are, we want to know about new ones) + if not cVersion.is_prerelease and rVersion.is_prerelease and self.settings.get('prerelease'): continue # Handle use-case of updating to suppressed version