diff --git a/README.md b/README.md index 762cbac58..340eec53f 100644 --- a/README.md +++ b/README.md @@ -9,31 +9,31 @@ pyfa, short for **py**thon **f**itting **a**ssistant, allows you to create, experiment with, and save ship fittings without being in game. Open source and written in Python, it is available on any platform where Python 2.x and wxWidgets are available, including Windows, Mac OS X, and Linux. ## Latest Version and Changelogs -The latest version along with release notes can always be found on the projects [Releases](https://github.com/DarkFenX/Pyfa/releases) page. pyfa will notify you if you are running an outdated version. +The latest version along with release notes can always be found on the project's [Releases](https://github.com/DarkFenX/Pyfa/releases) page. pyfa will notify you if you are running an outdated version. -## Installing -Windows and OS X users are supplied self-contained builds of pyfa that can be run without additional software. An `.exe` installer is also available for the Windows builds. There is no self-contained package for Linux users, which are expected to run pyfa through their distributions Python interpreter. However, there are a number of third-party packages available that handle the dependencies and updates for pyfa (for example, [pyfa for Arch Linux](https://aur.archlinux.org/packages/pyfa/)). Please check your distributions repositories. +## Installation +Windows and OS X users are supplied self-contained builds of pyfa on the [latest releases](https://github.com/pyfa-org/Pyfa/releases/latest) page. An `.exe` installer is also available for Windows builds. Linux users can run pyfa using their distribution's Python interpreter. There is no official self-contained package for Linux, however, there are a number of third-party packages available through distribution-specific repositories. -### Requirements +### Linux Distro-specific Packages +The following is a list of pyfa packages available for certain distributions. Please note that these packages are maintained by third-parties and are not evaluated by the pyfa developers. + +* Debian/Ubuntu/derivitives: https://github.com/AdamMajer/Pyfa/releases +* Arch: https://aur.archlinux.org/packages/pyfa/ +* openSUSE: https://build.opensuse.org/package/show/home:rmk2/pyfa +* FreeBSD: http://www.freshports.org/games/pyfa/ (see [#484](https://github.com/pyfa-org/Pyfa/issues/484) for instructions) + +### Dependencies If you wish to help with development or simply need to run pyfa through a Python interpreter, the following software is required: * Python 2.7 * `wxPython` 2.8/3.0 * `sqlalchemy` >= 0.6 * `dateutil` -* `matplotlib` (for some Linux distributions, you may need to install separate wxPython bindings, such as `python-matplotlib-wx`) +* `matplotlib` (for some Linux distributions you may need to install separate wxPython bindings such as `python-matplotlib-wx`) * `requests` -### Linux Distro-specific Packages -The following is a list of pyfa packages available for certain distros. Please note that these packages are maintained by third-parties and are not evaluated by the pyfa developers. - -* Debian/Ubuntu/derivitives: https://github.com/AdamMajer/Pyfa/releases -* Arch: https://aur.archlinux.org/packages/pyfa/ -* openSUSE: https://build.opensuse.org/package/show/home:rmk2/pyfa -* FreeBSD: http://www.freshports.org/games/pyfa/ (see #484 for instructions) - ## Bug Reporting -The preferred method of reporting bugs is through the projects GitHub Issues interface. Alternatively, posting a report in the pyfa thread on the official EVE Online forums is acceptable. Guidelines for bug reporting can be found on [this wiki page](https://github.com/DarkFenX/Pyfa/wiki/Bug-Reporting). +The preferred method of reporting bugs is through the project's [GitHub Issues interface](https://github.com/pyfa-org/Pyfa/issues). Alternatively, posting a report in the [pyfa thread](http://forums.eveonline.com/default.aspx?g=posts&t=247609) on the official EVE Online forums is acceptable. Guidelines for bug reporting can be found on [this wiki page](https://github.com/DarkFenX/Pyfa/wiki/Bug-Reporting). ## License pyfa is licensed under the GNU GPL v3.0, see LICENSE @@ -46,12 +46,10 @@ pyfa is licensed under the GNU GPL v3.0, see LICENSE * [EVE Online website](http://www.eveonline.com/) ## Contacts: -* Kadesh Priestess - * GitHub: @DarkFenX - * [TweetFleet Slack](https://www.fuzzwork.co.uk/tweetfleet-slack-invites/): @kadesh * Sable Blitzmann * GitHub: @blitzmann * [TweetFleet Slack](https://www.fuzzwork.co.uk/tweetfleet-slack-invites/): @blitzmann + * [Gitter chat](https://gitter.im/pyfa-org/Pyfa): @ blitzmann * Email: sable.blitzmann@gmail.com ## CCP Copyright Notice diff --git a/config.py b/config.py index 7586a2902..6b10b521b 100644 --- a/config.py +++ b/config.py @@ -18,10 +18,10 @@ debug = False saveInRoot = False # Version data -version = "1.19.2" +version = "1.20.2" tag = "git" -expansionName = "February 2016" -expansionVersion = "1.1" +expansionName = "March 2016" +expansionVersion = "1.3" evemonMinVersion = "4081" pyfaPath = None @@ -60,7 +60,7 @@ def __createDirs(path): if not os.path.exists(path): os.makedirs(path) -def defPaths(): +def defPaths(customSavePath): global debug global pyfaPath global savePath @@ -87,8 +87,11 @@ def defPaths(): else: savePath = getattr(configforced, "savePath", None) if savePath is None: - savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")), + if customSavePath is None: # customSavePath is not overriden + savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")), sys.getfilesystemencoding()) + else: + savePath = customSavePath __createDirs(savePath) diff --git a/eos/effectHandlerHelpers.py b/eos/effectHandlerHelpers.py index eca4d6437..7f19c4382 100644 --- a/eos/effectHandlerHelpers.py +++ b/eos/effectHandlerHelpers.py @@ -131,6 +131,10 @@ class HandledModuleList(HandledList): self.remove(mod) return + # fix for #529, where a module may be in incorrect state after CCP changes mechanics of module + if not mod.isValidState(mod.state): + mod.state = eos.types.State.ONLINE + mod.position = len(self) HandledList.append(self, mod) if mod.isInvalid: diff --git a/eos/effects/ammoinfluencecapneed.py b/eos/effects/ammoinfluencecapneed.py index 6b7b958dc..ea49d1f40 100644 --- a/eos/effects/ammoinfluencecapneed.py +++ b/eos/effects/ammoinfluencecapneed.py @@ -1,7 +1,7 @@ # ammoInfluenceCapNeed # # Used by: -# Items from category: Charge (458 of 833) +# Items from category: Charge (458 of 851) type = "passive" def handler(fit, module, context): # Dirty hack to work around cap charges setting cap booster diff --git a/eos/effects/ammoinfluencerange.py b/eos/effects/ammoinfluencerange.py index f40b9e94c..8aae01faa 100644 --- a/eos/effects/ammoinfluencerange.py +++ b/eos/effects/ammoinfluencerange.py @@ -1,7 +1,7 @@ # ammoInfluenceRange # # Used by: -# Items from category: Charge (559 of 833) +# Items from category: Charge (559 of 851) type = "passive" def handler(fit, module, context): module.multiplyItemAttr("maxRange", module.getModifiedChargeAttr("weaponRangeMultiplier")) \ No newline at end of file diff --git a/eos/effects/armorallrepairsystemsamountbonuspassive.py b/eos/effects/armorallrepairsystemsamountbonuspassive.py index 315064b2e..18623844f 100644 --- a/eos/effects/armorallrepairsystemsamountbonuspassive.py +++ b/eos/effects/armorallrepairsystemsamountbonuspassive.py @@ -2,6 +2,7 @@ # # Used by: # Implants named like: Exile Booster (4 of 4) +# Implant: Antipharmakon Kosybo type = "passive" def handler(fit, booster, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems") or mod.item.requiresSkill("Capital Repair Systems"), diff --git a/eos/effects/boosterarmorhppenalty.py b/eos/effects/boosterarmorhppenalty.py index 0d3a3ea05..836b419da 100644 --- a/eos/effects/boosterarmorhppenalty.py +++ b/eos/effects/boosterarmorhppenalty.py @@ -1,7 +1,7 @@ # boosterArmorHpPenalty # # Used by: -# Implants from group: Booster (12 of 37) +# Implants from group: Booster (12 of 42) type = "boosterSideEffect" def handler(fit, booster, context): fit.ship.boostItemAttr("armorHP", booster.getModifiedItemAttr("boosterArmorHPPenalty")) diff --git a/eos/effects/boosterarmorrepairamountpenalty.py b/eos/effects/boosterarmorrepairamountpenalty.py index 4e3bb0738..06f365339 100644 --- a/eos/effects/boosterarmorrepairamountpenalty.py +++ b/eos/effects/boosterarmorrepairamountpenalty.py @@ -1,7 +1,7 @@ # boosterArmorRepairAmountPenalty # # Used by: -# Implants from group: Booster (9 of 37) +# Implants from group: Booster (9 of 42) type = "boosterSideEffect" def handler(fit, booster, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit", diff --git a/eos/effects/boostermaxvelocitypenalty.py b/eos/effects/boostermaxvelocitypenalty.py index 6a2be21a3..23f3ca1bc 100644 --- a/eos/effects/boostermaxvelocitypenalty.py +++ b/eos/effects/boostermaxvelocitypenalty.py @@ -1,7 +1,7 @@ # boosterMaxVelocityPenalty # # Used by: -# Implants from group: Booster (12 of 37) +# Implants from group: Booster (12 of 42) type = "boosterSideEffect" def handler(fit, booster, context): fit.ship.boostItemAttr("maxVelocity", booster.getModifiedItemAttr("boosterMaxVelocityPenalty")) diff --git a/eos/effects/boostershieldcapacitypenalty.py b/eos/effects/boostershieldcapacitypenalty.py index 642036e3d..7ba52d68d 100644 --- a/eos/effects/boostershieldcapacitypenalty.py +++ b/eos/effects/boostershieldcapacitypenalty.py @@ -1,7 +1,7 @@ # boosterShieldCapacityPenalty # # Used by: -# Implants from group: Booster (12 of 37) +# Implants from group: Booster (12 of 42) type = "boosterSideEffect" def handler(fit, booster, context): fit.ship.boostItemAttr("shieldCapacity", booster.getModifiedItemAttr("boosterShieldCapacityPenalty")) diff --git a/eos/effects/boosterturretoptimalrangepenalty.py b/eos/effects/boosterturretoptimalrangepenalty.py index 9881cf501..8bdebc804 100644 --- a/eos/effects/boosterturretoptimalrangepenalty.py +++ b/eos/effects/boosterturretoptimalrangepenalty.py @@ -1,7 +1,7 @@ # boosterTurretOptimalRangePenalty # # Used by: -# Implants from group: Booster (9 of 37) +# Implants from group: Booster (9 of 42) type = "boosterSideEffect" def handler(fit, booster, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), diff --git a/eos/effects/capacitorcapacitybonus.py b/eos/effects/capacitorcapacitybonus.py index 69fd71ab7..a5f3846ae 100644 --- a/eos/effects/capacitorcapacitybonus.py +++ b/eos/effects/capacitorcapacitybonus.py @@ -1,7 +1,7 @@ # capacitorCapacityBonus # # Used by: -# Modules from group: Capacitor Battery (27 of 27) +# Modules from group: Capacitor Battery (22 of 22) type = "passive" def handler(fit, ship, context): fit.ship.increaseItemAttr("capacitorCapacity", ship.getModifiedItemAttr("capacitorBonus")) \ No newline at end of file diff --git a/eos/effects/capitallauncherskillcitadelemdamage.py b/eos/effects/capitallauncherskillcitadelemdamage.py index 9d7264e3d..d36dc2786 100644 --- a/eos/effects/capitallauncherskillcitadelemdamage.py +++ b/eos/effects/capitallauncherskillcitadelemdamage.py @@ -2,9 +2,9 @@ # # Used by: # Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) -# Skill: Citadel Torpedoes +# Skill: XL Torpedoes type = "passive" def handler(fit, container, context): level = container.level if "skill" in context else 1 - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Torpedoes"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Torpedoes"), "emDamage", container.getModifiedItemAttr("damageMultiplierBonus") * level) diff --git a/eos/effects/capitallauncherskillcitadelexplosivedamage.py b/eos/effects/capitallauncherskillcitadelexplosivedamage.py index 9c1ddd450..42afaf2c3 100644 --- a/eos/effects/capitallauncherskillcitadelexplosivedamage.py +++ b/eos/effects/capitallauncherskillcitadelexplosivedamage.py @@ -2,9 +2,9 @@ # # Used by: # Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) -# Skill: Citadel Torpedoes +# Skill: XL Torpedoes type = "passive" def handler(fit, container, context): level = container.level if "skill" in context else 1 - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Torpedoes"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Torpedoes"), "explosiveDamage", container.getModifiedItemAttr("damageMultiplierBonus") * level) diff --git a/eos/effects/capitallauncherskillcitadelkineticdamage.py b/eos/effects/capitallauncherskillcitadelkineticdamage.py index d09c5b92f..cffdb9adf 100644 --- a/eos/effects/capitallauncherskillcitadelkineticdamage.py +++ b/eos/effects/capitallauncherskillcitadelkineticdamage.py @@ -2,9 +2,9 @@ # # Used by: # Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) -# Skill: Citadel Torpedoes +# Skill: XL Torpedoes type = "passive" def handler(fit, container, context): level = container.level if "skill" in context else 1 - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Torpedoes"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Torpedoes"), "kineticDamage", container.getModifiedItemAttr("damageMultiplierBonus") * level) diff --git a/eos/effects/capitallauncherskillcitadelthermaldamage.py b/eos/effects/capitallauncherskillcitadelthermaldamage.py index ee7f3ca98..eb288a00b 100644 --- a/eos/effects/capitallauncherskillcitadelthermaldamage.py +++ b/eos/effects/capitallauncherskillcitadelthermaldamage.py @@ -2,9 +2,9 @@ # # Used by: # Implants named like: Hardwiring Zainou 'Sharpshooter' ZMX (6 of 6) -# Skill: Citadel Torpedoes +# Skill: XL Torpedoes type = "passive" def handler(fit, container, context): level = container.level if "skill" in context else 1 - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Torpedoes"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Torpedoes"), "thermalDamage", container.getModifiedItemAttr("damageMultiplierBonus") * level) diff --git a/eos/effects/capitallauncherskillcruisecitadelemdamage1.py b/eos/effects/capitallauncherskillcruisecitadelemdamage1.py index 8f63b2f85..a6fbc2b97 100644 --- a/eos/effects/capitallauncherskillcruisecitadelemdamage1.py +++ b/eos/effects/capitallauncherskillcruisecitadelemdamage1.py @@ -1,8 +1,8 @@ # capitalLauncherSkillCruiseCitadelEmDamage1 # # Used by: -# Skill: Citadel Cruise Missiles +# Skill: XL Cruise Missiles type = "passive" def handler(fit, skill, context): - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Cruise Missiles"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Cruise Missiles"), "emDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) diff --git a/eos/effects/capitallauncherskillcruisecitadelexplosivedamage1.py b/eos/effects/capitallauncherskillcruisecitadelexplosivedamage1.py index 6b526b2fd..e11517a1b 100644 --- a/eos/effects/capitallauncherskillcruisecitadelexplosivedamage1.py +++ b/eos/effects/capitallauncherskillcruisecitadelexplosivedamage1.py @@ -1,8 +1,8 @@ # capitalLauncherSkillCruiseCitadelExplosiveDamage1 # # Used by: -# Skill: Citadel Cruise Missiles +# Skill: XL Cruise Missiles type = "passive" def handler(fit, skill, context): - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Cruise Missiles"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Cruise Missiles"), "explosiveDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) diff --git a/eos/effects/capitallauncherskillcruisecitadelkineticdamage1.py b/eos/effects/capitallauncherskillcruisecitadelkineticdamage1.py index 3216299f7..f5c8f193c 100644 --- a/eos/effects/capitallauncherskillcruisecitadelkineticdamage1.py +++ b/eos/effects/capitallauncherskillcruisecitadelkineticdamage1.py @@ -1,8 +1,8 @@ # capitalLauncherSkillCruiseCitadelKineticDamage1 # # Used by: -# Skill: Citadel Cruise Missiles +# Skill: XL Cruise Missiles type = "passive" def handler(fit, skill, context): - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Cruise Missiles"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Cruise Missiles"), "kineticDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) diff --git a/eos/effects/capitallauncherskillcruisecitadelthermaldamage1.py b/eos/effects/capitallauncherskillcruisecitadelthermaldamage1.py index 42c4feeec..c0795f587 100644 --- a/eos/effects/capitallauncherskillcruisecitadelthermaldamage1.py +++ b/eos/effects/capitallauncherskillcruisecitadelthermaldamage1.py @@ -1,8 +1,8 @@ # capitalLauncherSkillCruiseCitadelThermalDamage1 # # Used by: -# Skill: Citadel Cruise Missiles +# Skill: XL Cruise Missiles type = "passive" def handler(fit, skill, context): - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Cruise Missiles"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Cruise Missiles"), "thermalDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level) diff --git a/eos/effects/damagecontrol.py b/eos/effects/damagecontrol.py index 83107e12b..c1cccd267 100644 --- a/eos/effects/damagecontrol.py +++ b/eos/effects/damagecontrol.py @@ -1,7 +1,7 @@ # damageControl # # Used by: -# Modules from group: Damage Control (14 of 14) +# Modules from group: Damage Control (17 of 17) type = "passive" def handler(fit, module, context): for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): diff --git a/eos/effects/decreasetargetspeed.py b/eos/effects/decreasetargetspeed.py index 30dd9ba3f..d19823d8d 100644 --- a/eos/effects/decreasetargetspeed.py +++ b/eos/effects/decreasetargetspeed.py @@ -2,7 +2,6 @@ # # Used by: # Drones from group: Stasis Webifying Drone (3 of 3) -# Modules from group: Stasis Web (19 of 19) type = "active", "projected" def handler(fit, module, context): if "projected" not in context: diff --git a/eos/effects/dronedamagebonusonline.py b/eos/effects/dronedamagebonusonline.py index b5d3b7f66..9c601f710 100644 --- a/eos/effects/dronedamagebonusonline.py +++ b/eos/effects/dronedamagebonusonline.py @@ -1,7 +1,7 @@ # droneDamageBonusOnline # # Used by: -# Modules from group: Drone Damage Modules (10 of 10) +# Modules from group: Drone Damage Modules (11 of 11) type = "passive" def handler(fit, module, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), diff --git a/eos/effects/dronetrackingcomputerbonus.py b/eos/effects/dronetrackingcomputerbonus.py index e5cf2a975..95751303e 100644 --- a/eos/effects/dronetrackingcomputerbonus.py +++ b/eos/effects/dronetrackingcomputerbonus.py @@ -1,7 +1,7 @@ # droneTrackingComputerBonus # # Used by: -# Modules from group: Drone Tracking Modules (8 of 8) +# Modules from group: Drone Tracking Modules (10 of 10) type = "active" def handler(fit, module, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), diff --git a/eos/effects/dronetrackingenhancerbonus.py b/eos/effects/dronetrackingenhancerbonus.py index a67023f50..4d97c4fab 100644 --- a/eos/effects/dronetrackingenhancerbonus.py +++ b/eos/effects/dronetrackingenhancerbonus.py @@ -1,7 +1,7 @@ # droneTrackingEnhancerBonus # # Used by: -# Modules from group: Drone Tracking Enhancer (9 of 9) +# Modules from group: Drone Tracking Enhancer (10 of 10) type = "passive" def handler(fit, module, context): fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"), diff --git a/eos/effects/ecmburst.py b/eos/effects/ecmburst.py index 8ee8a14ad..050379d88 100644 --- a/eos/effects/ecmburst.py +++ b/eos/effects/ecmburst.py @@ -1,7 +1,7 @@ # ecmBurst # # Used by: -# Modules from group: ECM Burst (7 of 7) +# Modules from group: Burst Jammer (11 of 11) type = "active" def handler(fit, module, context): pass \ No newline at end of file diff --git a/eos/effects/energymanagementcapacitorbonuspostpercentcapacitylocationshipgroupcapacitorcapacitybonus.py b/eos/effects/energymanagementcapacitorbonuspostpercentcapacitylocationshipgroupcapacitorcapacitybonus.py index 31aee89e7..b031f9de1 100644 --- a/eos/effects/energymanagementcapacitorbonuspostpercentcapacitylocationshipgroupcapacitorcapacitybonus.py +++ b/eos/effects/energymanagementcapacitorbonuspostpercentcapacitylocationshipgroupcapacitorcapacitybonus.py @@ -4,6 +4,7 @@ # Implants named like: Inherent Implants 'Squire' Capacitor Management EM (6 of 6) # Implants named like: Mindflood Booster (4 of 4) # Modules named like: Semiconductor Memory Cell (8 of 8) +# Implant: Antipharmakon Aeolis # Implant: Genolution Core Augmentation CA-1 # Skill: Capacitor Management type = "passive" diff --git a/eos/effects/energyweapondamagemultiply.py b/eos/effects/energyweapondamagemultiply.py index a0d4efa08..ab5ae1f9a 100644 --- a/eos/effects/energyweapondamagemultiply.py +++ b/eos/effects/energyweapondamagemultiply.py @@ -1,7 +1,7 @@ # energyWeaponDamageMultiply # # Used by: -# Modules from group: Heat Sink (25 of 25) +# Modules from group: Heat Sink (18 of 18) # Modules named like: QA Multiship Module Players (4 of 4) # Module: QA Damage Module type = "passive" diff --git a/eos/effects/energyweaponspeedmultiply.py b/eos/effects/energyweaponspeedmultiply.py index ba81693e5..da0f1c841 100644 --- a/eos/effects/energyweaponspeedmultiply.py +++ b/eos/effects/energyweaponspeedmultiply.py @@ -1,7 +1,7 @@ # energyWeaponSpeedMultiply # # Used by: -# Modules from group: Heat Sink (25 of 25) +# Modules from group: Heat Sink (18 of 18) type = "passive" def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Energy Weapon", diff --git a/eos/effects/ewskillecmburstfalloffbonus.py b/eos/effects/ewskillecmburstfalloffbonus.py deleted file mode 100644 index b56d7035c..000000000 --- a/eos/effects/ewskillecmburstfalloffbonus.py +++ /dev/null @@ -1,8 +0,0 @@ -# ewSkillEcmBurstFalloffBonus -# -# Used by: -# Skill: Frequency Modulation -type = "passive" -def handler(fit, skill, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Burst Jammer", - "falloffEffectiveness", skill.getModifiedItemAttr("falloffBonus") * skill.level) diff --git a/eos/effects/ewtargetpaint.py b/eos/effects/ewtargetpaint.py index 6215732fc..1f13ea821 100644 --- a/eos/effects/ewtargetpaint.py +++ b/eos/effects/ewtargetpaint.py @@ -1,7 +1,6 @@ # ewTargetPaint # # Used by: -# Modules from group: Target Painter (9 of 9) # Drones named like: TP (3 of 3) type = "projected", "active" def handler(fit, container, context): diff --git a/eos/effects/ewtesteffectjam.py b/eos/effects/ewtesteffectjam.py index 4e4976d28..e3863a3e7 100644 --- a/eos/effects/ewtesteffectjam.py +++ b/eos/effects/ewtesteffectjam.py @@ -1,7 +1,6 @@ # ewTestEffectJam # # Used by: -# Modules from group: ECM (44 of 44) # Drones named like: EC (3 of 3) type = "projected", "active" def handler(fit, module, context): diff --git a/eos/effects/gunneryfalloffbonusonline.py b/eos/effects/gunneryfalloffbonusonline.py index 9fcf5d120..4aad761b3 100644 --- a/eos/effects/gunneryfalloffbonusonline.py +++ b/eos/effects/gunneryfalloffbonusonline.py @@ -1,7 +1,7 @@ # gunneryFalloffBonusOnline # # Used by: -# Modules from group: Tracking Enhancer (17 of 17) +# Modules from group: Tracking Enhancer (10 of 10) # Module: QA Damage Module type = "passive" def handler(fit, module, context): diff --git a/eos/effects/gunnerymaxrangebonusonline.py b/eos/effects/gunnerymaxrangebonusonline.py index 3cb3d0618..80742dd39 100644 --- a/eos/effects/gunnerymaxrangebonusonline.py +++ b/eos/effects/gunnerymaxrangebonusonline.py @@ -1,7 +1,7 @@ # gunneryMaxRangeBonusOnline # # Used by: -# Modules from group: Tracking Enhancer (17 of 17) +# Modules from group: Tracking Enhancer (10 of 10) # Module: QA Damage Module type = "passive" def handler(fit, module, context): diff --git a/eos/effects/gunnerymaxrangefallofftrackingspeedbonus.py b/eos/effects/gunnerymaxrangefallofftrackingspeedbonus.py index fdc95e816..6569508c2 100644 --- a/eos/effects/gunnerymaxrangefallofftrackingspeedbonus.py +++ b/eos/effects/gunnerymaxrangefallofftrackingspeedbonus.py @@ -1,7 +1,7 @@ # gunneryMaxRangeFalloffTrackingSpeedBonus # # Used by: -# Modules from group: Tracking Computer (14 of 14) +# Modules from group: Tracking Computer (11 of 11) type = "active" def handler(fit, module, context): for attr in ("maxRange", "falloff", "trackingSpeed"): diff --git a/eos/effects/gunnerytrackingspeedbonusonline.py b/eos/effects/gunnerytrackingspeedbonusonline.py index 03469b881..d75d1de83 100644 --- a/eos/effects/gunnerytrackingspeedbonusonline.py +++ b/eos/effects/gunnerytrackingspeedbonusonline.py @@ -1,7 +1,7 @@ # gunneryTrackingSpeedBonusOnline # # Used by: -# Modules from group: Tracking Enhancer (17 of 17) +# Modules from group: Tracking Enhancer (10 of 10) # Module: QA Damage Module type = "passive" def handler(fit, module, context): diff --git a/eos/effects/hybridweapondamagemultiply.py b/eos/effects/hybridweapondamagemultiply.py index f5ed32553..092540734 100644 --- a/eos/effects/hybridweapondamagemultiply.py +++ b/eos/effects/hybridweapondamagemultiply.py @@ -1,7 +1,7 @@ # hybridWeaponDamageMultiply # # Used by: -# Modules from group: Magnetic Field Stabilizer (20 of 20) +# Modules from group: Magnetic Field Stabilizer (12 of 12) # Modules named like: QA Multiship Module Players (4 of 4) # Module: QA Damage Module type = "passive" diff --git a/eos/effects/hybridweaponspeedmultiply.py b/eos/effects/hybridweaponspeedmultiply.py index 17cd377f0..fa327ff96 100644 --- a/eos/effects/hybridweaponspeedmultiply.py +++ b/eos/effects/hybridweaponspeedmultiply.py @@ -1,7 +1,7 @@ # hybridWeaponSpeedMultiply # # Used by: -# Modules from group: Magnetic Field Stabilizer (20 of 20) +# Modules from group: Magnetic Field Stabilizer (12 of 12) type = "passive" def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Hybrid Weapon", diff --git a/eos/effects/missilebombardmentmaxflighttimebonuspostpercentexplosiondelayownercharmodulesrequiringmissilelauncheroperation.py b/eos/effects/missilebombardmentmaxflighttimebonuspostpercentexplosiondelayownercharmodulesrequiringmissilelauncheroperation.py index 2576aa361..b0ffc617f 100644 --- a/eos/effects/missilebombardmentmaxflighttimebonuspostpercentexplosiondelayownercharmodulesrequiringmissilelauncheroperation.py +++ b/eos/effects/missilebombardmentmaxflighttimebonuspostpercentexplosiondelayownercharmodulesrequiringmissilelauncheroperation.py @@ -3,6 +3,7 @@ # Used by: # Implants named like: Zainou 'Deadeye' Missile Bombardment MB (6 of 6) # Modules named like: Rocket Fuel Cache Partition (8 of 8) +# Implant: Antipharmakon Toxot # Skill: Missile Bombardment type = "passive" def handler(fit, container, context): diff --git a/eos/effects/missiledmgbonus.py b/eos/effects/missiledmgbonus.py index b1d9b77fc..f2604350b 100644 --- a/eos/effects/missiledmgbonus.py +++ b/eos/effects/missiledmgbonus.py @@ -1,7 +1,7 @@ # missileDMGBonus # # Used by: -# Modules from group: Ballistic Control system (21 of 21) +# Modules from group: Ballistic Control system (17 of 17) # Modules named like: QA Multiship Module Players (4 of 4) type = "passive" def handler(fit, container, context): diff --git a/eos/effects/missilelauncherspeedmultiplier.py b/eos/effects/missilelauncherspeedmultiplier.py index 80ad29338..021bd7240 100644 --- a/eos/effects/missilelauncherspeedmultiplier.py +++ b/eos/effects/missilelauncherspeedmultiplier.py @@ -1,7 +1,7 @@ # missileLauncherSpeedMultiplier # # Used by: -# Modules from group: Ballistic Control system (21 of 21) +# Modules from group: Ballistic Control system (17 of 17) type = "passive" def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Missile Launcher Operation"), diff --git a/eos/effects/modifyenergywarfareresistance.py b/eos/effects/modifyenergywarfareresistance.py index 3c1400dc2..c1aa2c7c9 100644 --- a/eos/effects/modifyenergywarfareresistance.py +++ b/eos/effects/modifyenergywarfareresistance.py @@ -1,3 +1,7 @@ +# modifyEnergyWarfareResistance +# +# Used by: +# Modules from group: Capacitor Battery (22 of 22) type = "passive" def handler(fit, module, context): fit.ship.boostItemAttr("energyWarfareResistance", diff --git a/eos/effects/neutattackreflect.py b/eos/effects/neutattackreflect.py deleted file mode 100644 index a093c3588..000000000 --- a/eos/effects/neutattackreflect.py +++ /dev/null @@ -1,8 +0,0 @@ -# neutAttackReflect -# -# Used by: -# Modules from group: Capacitor Battery (27 of 27) -type = "passive" -def handler(fit, module, context): - fit.ship.boostItemAttr("neutReflector", module.getModifiedItemAttr("capAttackReflector"), - stackingPenalties = True) diff --git a/eos/effects/neutreflectamount.py b/eos/effects/neutreflectamount.py deleted file mode 100644 index 1ed409b6b..000000000 --- a/eos/effects/neutreflectamount.py +++ /dev/null @@ -1,7 +0,0 @@ -# neutReflectAmount -# -# Used by: -# Modules from group: Capacitor Battery (27 of 27) -type = "passive" -def handler(fit, module, context): - fit.ship.boostItemAttr("neutReflectAmount", module.getModifiedItemAttr("neutReflectAmountBonus")) diff --git a/eos/effects/nosattackreflect.py b/eos/effects/nosattackreflect.py deleted file mode 100644 index db0ae58e4..000000000 --- a/eos/effects/nosattackreflect.py +++ /dev/null @@ -1,8 +0,0 @@ -# nosAttackReflect -# -# Used by: -# Modules from group: Capacitor Battery (27 of 27) -type = "passive" -def handler(fit, module, context): - fit.ship.boostItemAttr("nosReflector", module.getModifiedItemAttr("capAttackReflector"), - stackingPenalties = True) diff --git a/eos/effects/nosreflectamount.py b/eos/effects/nosreflectamount.py deleted file mode 100644 index a286f5a59..000000000 --- a/eos/effects/nosreflectamount.py +++ /dev/null @@ -1,7 +0,0 @@ -# nosReflectAmount -# -# Used by: -# Modules from group: Capacitor Battery (27 of 27) -type = "passive" -def handler(fit, module, context): - fit.ship.boostItemAttr("nosReflectAmount", module.getModifiedItemAttr("nosReflectAmountBonus")) diff --git a/eos/effects/overloadrofbonus.py b/eos/effects/overloadrofbonus.py index 4cfc38d2f..fd8623e2b 100644 --- a/eos/effects/overloadrofbonus.py +++ b/eos/effects/overloadrofbonus.py @@ -1,13 +1,9 @@ # overloadRofBonus # # Used by: -# Modules from group: Energy Weapon (100 of 187) -# Modules from group: Hybrid Weapon (110 of 202) -# Modules from group: Missile Launcher Citadel (4 of 4) -# Modules from group: Missile Launcher Heavy (12 of 12) -# Modules from group: Missile Launcher Rocket (15 of 15) -# Modules from group: Projectile Weapon (60 of 146) -# Modules named like: Launcher (125 of 138) +# Modules from group: Missile Launcher Torpedo (22 of 22) +# Items from market group: Ship Equipment > Turrets & Bays (397 of 767) +# Module: Interdiction Sphere Launcher I type = "overheat" def handler(fit, module, context): module.boostItemAttr("speed", module.getModifiedItemAttr("overloadRofBonus")) diff --git a/eos/effects/overloadselfeccmstrenghtbonus.py b/eos/effects/overloadselfeccmstrenghtbonus.py deleted file mode 100644 index 32c158d36..000000000 --- a/eos/effects/overloadselfeccmstrenghtbonus.py +++ /dev/null @@ -1,10 +0,0 @@ -# overloadSelfECCMStrenghtBonus -# -# Used by: -# Modules from group: ECCM (44 of 44) -# Modules from group: Projected ECCM (7 of 7) -type = "overheat" -def handler(fit, module, context): - for scanType in ("Gravimetric", "Magnetometric", "Radar", "Ladar"): - module.boostItemAttr("scan%sStrengthPercent" % scanType, - module.getModifiedItemAttr("overloadECCMStrenghtBonus")) diff --git a/eos/effects/overloadselfecmstrenghtbonus.py b/eos/effects/overloadselfecmstrenghtbonus.py index 846db2e3c..e8ee74567 100644 --- a/eos/effects/overloadselfecmstrenghtbonus.py +++ b/eos/effects/overloadselfecmstrenghtbonus.py @@ -1,8 +1,8 @@ # overloadSelfECMStrenghtBonus # # Used by: -# Modules from group: ECM (44 of 44) -# Modules from group: ECM Burst (7 of 7) +# Modules from group: Burst Jammer (11 of 11) +# Modules from group: ECM (39 of 39) type = "overheat" def handler(fit, module, context): if "projected" not in context: diff --git a/eos/effects/overloadselfpainterbonus.py b/eos/effects/overloadselfpainterbonus.py index cbb2c41cb..11f9a96a9 100644 --- a/eos/effects/overloadselfpainterbonus.py +++ b/eos/effects/overloadselfpainterbonus.py @@ -1,7 +1,7 @@ # overloadSelfPainterBonus # # Used by: -# Modules from group: Target Painter (9 of 9) +# Modules from group: Target Painter (8 of 8) type = "overheat" def handler(fit, module, context): module.boostItemAttr("signatureRadiusBonus", module.getModifiedItemAttr("overloadPainterStrengthBonus") or 0) diff --git a/eos/effects/overloadselfrangebonus.py b/eos/effects/overloadselfrangebonus.py index 86afe7fb5..9250b48c0 100644 --- a/eos/effects/overloadselfrangebonus.py +++ b/eos/effects/overloadselfrangebonus.py @@ -1,7 +1,8 @@ # overloadSelfRangeBonus # # Used by: -# Modules from group: Stasis Web (19 of 19) +# Modules from group: Stasis Grappler (7 of 7) +# Modules from group: Stasis Web (18 of 18) # Modules from group: Warp Scrambler (38 of 39) type = "overheat" def handler(fit, module, context): diff --git a/eos/effects/overloadselfsensormodulebonus.py b/eos/effects/overloadselfsensormodulebonus.py index f5a4e0d5a..303bebdf3 100644 --- a/eos/effects/overloadselfsensormodulebonus.py +++ b/eos/effects/overloadselfsensormodulebonus.py @@ -2,8 +2,8 @@ # # Used by: # Modules from group: Remote Sensor Booster (8 of 8) -# Modules from group: Remote Sensor Damper (8 of 8) -# Modules from group: Sensor Booster (12 of 12) +# Modules from group: Sensor Booster (16 of 16) +# Modules from group: Sensor Dampener (6 of 6) type = "overheat" def handler(fit, module, context): module.boostItemAttr("maxTargetRangeBonus", module.getModifiedItemAttr("overloadSensorModuleStrengthBonus")) diff --git a/eos/effects/overloadselftrackingmodulebonus.py b/eos/effects/overloadselftrackingmodulebonus.py index 1d5385df6..8269d377f 100644 --- a/eos/effects/overloadselftrackingmodulebonus.py +++ b/eos/effects/overloadselftrackingmodulebonus.py @@ -1,9 +1,8 @@ # overloadSelfTrackingModuleBonus # # Used by: -# Modules from group: Drone Tracking Modules (8 of 8) -# Modules from group: Remote Tracking Computer (10 of 10) -# Modules from group: Tracking Computer (14 of 14) +# Modules from group: Drone Tracking Modules (10 of 10) +# Modules named like: Tracking Computer (19 of 19) # Variations of module: Tracking Disruptor I (6 of 6) type = "overheat" def handler(fit, module, context): diff --git a/eos/effects/projectileweapondamagemultiply.py b/eos/effects/projectileweapondamagemultiply.py index a6dfb93c7..c0ea83334 100644 --- a/eos/effects/projectileweapondamagemultiply.py +++ b/eos/effects/projectileweapondamagemultiply.py @@ -1,7 +1,7 @@ # projectileWeaponDamageMultiply # # Used by: -# Modules from group: Gyrostabilizer (20 of 20) +# Modules from group: Gyrostabilizer (12 of 12) # Modules named like: QA Multiship Module Players (4 of 4) # Module: QA Damage Module type = "passive" diff --git a/eos/effects/projectileweaponspeedmultiply.py b/eos/effects/projectileweaponspeedmultiply.py index 21da9d628..805fbf3fe 100644 --- a/eos/effects/projectileweaponspeedmultiply.py +++ b/eos/effects/projectileweaponspeedmultiply.py @@ -1,7 +1,7 @@ # projectileWeaponSpeedMultiply # # Used by: -# Modules from group: Gyrostabilizer (20 of 20) +# Modules from group: Gyrostabilizer (12 of 12) type = "passive" def handler(fit, module, context): fit.modules.filteredItemMultiply(lambda mod: mod.item.group.name == "Projectile Weapon", diff --git a/eos/effects/remoteecmfalloff.py b/eos/effects/remoteecmfalloff.py index ff841419e..9945eb020 100644 --- a/eos/effects/remoteecmfalloff.py +++ b/eos/effects/remoteecmfalloff.py @@ -1,3 +1,7 @@ +# remoteECMFalloff +# +# Used by: +# Modules from group: ECM (39 of 39) type = "projected", "active" def handler(fit, module, context): if "projected" in context: diff --git a/eos/effects/targetmissiledisruptorhostile.py b/eos/effects/remoteguidancedisruptfalloff.py similarity index 95% rename from eos/effects/targetmissiledisruptorhostile.py rename to eos/effects/remoteguidancedisruptfalloff.py index 9a21fdb6a..20abfa9d6 100644 --- a/eos/effects/targetmissiledisruptorhostile.py +++ b/eos/effects/remoteguidancedisruptfalloff.py @@ -1,4 +1,4 @@ -# targetMissileDisruptorHostile +# remoteGuidanceDisruptFalloff # # Used by: # Variations of module: Guidance Disruptor I (6 of 6) diff --git a/eos/effects/remotesensorboostfalloff.py b/eos/effects/remotesensorboostfalloff.py index 1f503247e..1453fe2bc 100644 --- a/eos/effects/remotesensorboostfalloff.py +++ b/eos/effects/remotesensorboostfalloff.py @@ -1,3 +1,7 @@ +# remoteSensorBoostFalloff +# +# Used by: +# Modules from group: Remote Sensor Booster (8 of 8) type= "projected", "active" def handler(fit, module, context): if "projected" not in context: diff --git a/eos/effects/remotesensordampfalloff.py b/eos/effects/remotesensordampfalloff.py index 8b57f1231..a1ac27bd9 100644 --- a/eos/effects/remotesensordampfalloff.py +++ b/eos/effects/remotesensordampfalloff.py @@ -1,3 +1,7 @@ +# remoteSensorDampFalloff +# +# Used by: +# Modules from group: Sensor Dampener (6 of 6) type= "projected", "active" def handler(fit, module, context): if "projected" not in context: diff --git a/eos/effects/remotetargetpaintfalloff.py b/eos/effects/remotetargetpaintfalloff.py index 3d8c84a3f..9d4e31a4a 100644 --- a/eos/effects/remotetargetpaintfalloff.py +++ b/eos/effects/remotetargetpaintfalloff.py @@ -1,3 +1,7 @@ +# remoteTargetPaintFalloff +# +# Used by: +# Modules from group: Target Painter (8 of 8) type = "projected", "active" def handler(fit, container, context): if "projected" in context: diff --git a/eos/effects/remotetrackingassistfalloff.py b/eos/effects/remotetrackingassistfalloff.py index 24780926a..6bd6ba72c 100644 --- a/eos/effects/remotetrackingassistfalloff.py +++ b/eos/effects/remotetrackingassistfalloff.py @@ -1,3 +1,7 @@ +# remoteTrackingAssistFalloff +# +# Used by: +# Modules from group: Remote Tracking Computer (8 of 8) type= "projected", "active" def handler(fit, module, context): if "projected" in context: diff --git a/eos/effects/targetgunnerymaxrangeandtrackingspeedandfalloffbonushostile.py b/eos/effects/remotetrackingdisruptfalloff.py similarity index 93% rename from eos/effects/targetgunnerymaxrangeandtrackingspeedandfalloffbonushostile.py rename to eos/effects/remotetrackingdisruptfalloff.py index fa4092ecb..25c507841 100644 --- a/eos/effects/targetgunnerymaxrangeandtrackingspeedandfalloffbonushostile.py +++ b/eos/effects/remotetrackingdisruptfalloff.py @@ -1,4 +1,4 @@ -# targetGunneryMaxRangeAndTrackingSpeedAndFalloffBonusHostile +# remoteTrackingDisruptFalloff # # Used by: # Variations of module: Tracking Disruptor I (6 of 6) diff --git a/eos/effects/remotewebifierfalloff.py b/eos/effects/remotewebifierfalloff.py index 05009bfe4..a2e3e9cda 100644 --- a/eos/effects/remotewebifierfalloff.py +++ b/eos/effects/remotewebifierfalloff.py @@ -1,3 +1,8 @@ +# remoteWebifierFalloff +# +# Used by: +# Modules from group: Stasis Grappler (7 of 7) +# Modules from group: Stasis Web (18 of 18) type = "active", "projected" def handler(fit, module, context): if "projected" not in context: return diff --git a/eos/effects/scanstrengthbonuspercentactivate.py b/eos/effects/scanstrengthbonuspercentactivate.py index 7a652b614..50b7b50ba 100644 --- a/eos/effects/scanstrengthbonuspercentactivate.py +++ b/eos/effects/scanstrengthbonuspercentactivate.py @@ -1,7 +1,6 @@ # scanStrengthBonusPercentActivate # # Used by: -# Modules from group: ECCM (44 of 44) # Module: QA ECCM type = "active" def handler(fit, module, context): diff --git a/eos/effects/scanstrengthbonuspercentonline.py b/eos/effects/scanstrengthbonuspercentonline.py index c8f392151..0dc5400fa 100644 --- a/eos/effects/scanstrengthbonuspercentonline.py +++ b/eos/effects/scanstrengthbonuspercentonline.py @@ -1,7 +1,7 @@ # scanStrengthBonusPercentOnline # # Used by: -# Modules from group: Sensor Backup Array (72 of 72) +# Modules from group: Signal Amplifier (7 of 7) type = "passive" def handler(fit, module, context): for type in ("Gravimetric", "Magnetometric", "Radar", "Ladar"): diff --git a/eos/effects/scanstrengthtargetpercentbonus.py b/eos/effects/scanstrengthtargetpercentbonus.py deleted file mode 100644 index 5b3f9aa4a..000000000 --- a/eos/effects/scanstrengthtargetpercentbonus.py +++ /dev/null @@ -1,11 +0,0 @@ -# scanStrengthTargetPercentBonus -# -# Used by: -# Modules from group: Projected ECCM (7 of 7) -type = "projected", "active" -def handler(fit, module, context): - if "projected" not in context: return - for type in ("Gravimetric", "Magnetometric", "Radar", "Ladar"): - fit.ship.boostItemAttr("scan%sStrength" % type, - module.getModifiedItemAttr("scan%sStrengthPercent" % type), - stackingPenalties = True) diff --git a/eos/effects/scriptsensorboostermaxtargetrangebonusbonus.py b/eos/effects/scriptsensorboostermaxtargetrangebonusbonus.py index 4327e4583..1eb7b7b6b 100644 --- a/eos/effects/scriptsensorboostermaxtargetrangebonusbonus.py +++ b/eos/effects/scriptsensorboostermaxtargetrangebonusbonus.py @@ -1,7 +1,7 @@ # scriptSensorBoosterMaxTargetRangeBonusBonus # # Used by: -# Charges from group: Sensor Booster Script (2 of 2) +# Charges from group: Sensor Booster Script (3 of 3) # Charges from group: Sensor Dampener Script (2 of 2) type = "passive" def handler(fit, module, context): diff --git a/eos/effects/scriptsensorboosterscanresolutionbonusbonus.py b/eos/effects/scriptsensorboosterscanresolutionbonusbonus.py index 743dc0753..2372aa055 100644 --- a/eos/effects/scriptsensorboosterscanresolutionbonusbonus.py +++ b/eos/effects/scriptsensorboosterscanresolutionbonusbonus.py @@ -1,7 +1,7 @@ # scriptSensorBoosterScanResolutionBonusBonus # # Used by: -# Charges from group: Sensor Booster Script (2 of 2) +# Charges from group: Sensor Booster Script (3 of 3) # Charges from group: Sensor Dampener Script (2 of 2) type = "passive" def handler(fit, module, context): diff --git a/eos/effects/scriptsensorboostersensorstrengthbonusbonus.py b/eos/effects/scriptsensorboostersensorstrengthbonusbonus.py index 294600120..f0f6500a6 100644 --- a/eos/effects/scriptsensorboostersensorstrengthbonusbonus.py +++ b/eos/effects/scriptsensorboostersensorstrengthbonusbonus.py @@ -1,3 +1,7 @@ +# scriptSensorBoosterSensorStrengthBonusBonus +# +# Used by: +# Charges from group: Sensor Booster Script (3 of 3) type = "active" def handler(fit, module, context): for scanType in ("Gravimetric", "Magnetometric", "Radar", "Ladar"): diff --git a/eos/effects/sensorboosteractivepercentage.py b/eos/effects/sensorboosteractivepercentage.py index eaf23f58c..c6e61424f 100644 --- a/eos/effects/sensorboosteractivepercentage.py +++ b/eos/effects/sensorboosteractivepercentage.py @@ -1,7 +1,7 @@ # sensorBoosterActivePercentage # # Used by: -# Modules from group: Sensor Booster (12 of 12) +# Modules from group: Sensor Booster (16 of 16) type = "active" def handler(fit, module, context): fit.ship.boostItemAttr("maxTargetRange", module.getModifiedItemAttr("maxTargetRangeBonus"), diff --git a/eos/effects/shieldboostamplifierpassivebooster.py b/eos/effects/shieldboostamplifierpassivebooster.py index 9e7d3ea4e..b0b98b09c 100644 --- a/eos/effects/shieldboostamplifierpassivebooster.py +++ b/eos/effects/shieldboostamplifierpassivebooster.py @@ -2,6 +2,7 @@ # # Used by: # Implants named like: Blue Pill Booster (5 of 5) +# Implant: Antipharmakon Thureo type = "passive" def handler(fit, container, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation") or mod.item.requiresSkill("Capital Shield Operation"), diff --git a/eos/effects/shipbonusdreadcitadelcruiserofc1.py b/eos/effects/shipbonusdreadcitadelcruiserofc1.py index 34f6d176c..3d815d693 100644 --- a/eos/effects/shipbonusdreadcitadelcruiserofc1.py +++ b/eos/effects/shipbonusdreadcitadelcruiserofc1.py @@ -4,5 +4,5 @@ # Ship: Phoenix type = "passive" def handler(fit, ship, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Citadel Cruise Missiles"), + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Cruise Missiles"), "speed", ship.getModifiedItemAttr("dreadnoughtShipBonusC1"), skill="Caldari Dreadnought") diff --git a/eos/effects/shipbonusdreadcitadeltorprofc1.py b/eos/effects/shipbonusdreadcitadeltorprofc1.py index 095344f10..74ac8e7fa 100644 --- a/eos/effects/shipbonusdreadcitadeltorprofc1.py +++ b/eos/effects/shipbonusdreadcitadeltorprofc1.py @@ -4,5 +4,5 @@ # Ship: Phoenix type = "passive" def handler(fit, ship, context): - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Citadel Torpedoes"), + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("XL Torpedoes"), "speed", ship.getModifiedItemAttr("dreadnoughtShipBonusC1"), skill="Caldari Dreadnought") diff --git a/eos/effects/shipbonusremotetrackingcomputerfalloffgc2.py b/eos/effects/shipbonusremotetrackingcomputerfalloffgc2.py index 19a946193..621e5f2e9 100644 --- a/eos/effects/shipbonusremotetrackingcomputerfalloffgc2.py +++ b/eos/effects/shipbonusremotetrackingcomputerfalloffgc2.py @@ -1,3 +1,7 @@ +# shipBonusRemoteTrackingComputerFalloffGC2 +# +# Used by: +# Ship: Oneiros type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer", diff --git a/eos/effects/shipbonusremotetrackingcomputerfalloffmc.py b/eos/effects/shipbonusremotetrackingcomputerfalloffmc.py index adaab06de..ffc402d88 100644 --- a/eos/effects/shipbonusremotetrackingcomputerfalloffmc.py +++ b/eos/effects/shipbonusremotetrackingcomputerfalloffmc.py @@ -1,3 +1,7 @@ +# shipBonusRemoteTrackingComputerFalloffMC +# +# Used by: +# Ship: Scimitar type = "passive" def handler(fit, ship, context): fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Tracking Computer", diff --git a/eos/effects/shipmaxlockedtargetsbonusaddonline.py b/eos/effects/shipmaxlockedtargetsbonusaddonline.py index 3eba78070..69d7e48cb 100644 --- a/eos/effects/shipmaxlockedtargetsbonusaddonline.py +++ b/eos/effects/shipmaxlockedtargetsbonusaddonline.py @@ -1,7 +1,7 @@ # shipMaxLockedTargetsBonusAddOnline # # Used by: -# Modules from group: Signal Amplifier (11 of 11) +# Modules from group: Signal Amplifier (7 of 7) type = "passive" def handler(fit, module, context): fit.ship.increaseItemAttr("maxLockedTargets", module.getModifiedItemAttr("maxLockedTargetsBonus")) diff --git a/eos/effects/shipmaxtargetrangebonusonline.py b/eos/effects/shipmaxtargetrangebonusonline.py index b3994fea0..48a6d92e1 100644 --- a/eos/effects/shipmaxtargetrangebonusonline.py +++ b/eos/effects/shipmaxtargetrangebonusonline.py @@ -1,7 +1,7 @@ # shipMaxTargetRangeBonusOnline # # Used by: -# Modules from group: Signal Amplifier (11 of 11) +# Modules from group: Signal Amplifier (7 of 7) type = "passive" def handler(fit, module, context): fit.ship.boostItemAttr("maxTargetRange", module.getModifiedItemAttr("maxTargetRangeBonus"), diff --git a/eos/effects/shipscanresolutionbonusonline.py b/eos/effects/shipscanresolutionbonusonline.py index e4b7924e8..280cd188e 100644 --- a/eos/effects/shipscanresolutionbonusonline.py +++ b/eos/effects/shipscanresolutionbonusonline.py @@ -1,7 +1,7 @@ # shipScanResolutionBonusOnline # # Used by: -# Modules from group: Signal Amplifier (11 of 11) +# Modules from group: Signal Amplifier (7 of 7) # Module: QA Damage Module type = "passive" def handler(fit, module, context): diff --git a/eos/effects/siegemodeeffect6.py b/eos/effects/siegemodeeffect6.py index 1bd9b9728..f94a2b25d 100644 --- a/eos/effects/siegemodeeffect6.py +++ b/eos/effects/siegemodeeffect6.py @@ -18,12 +18,12 @@ def handler(fit, module, context): #Missiles for type in ("kinetic", "thermal", "explosive", "em"): - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Torpedoes") or \ - mod.charge.requiresSkill("Citadel Cruise Missiles"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Torpedoes") or \ + mod.charge.requiresSkill("XL Cruise Missiles"), "%sDamage" % type, module.getModifiedItemAttr("damageMultiplierBonus")) - fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Citadel Torpedoes") or \ - mod.charge.requiresSkill("Citadel Cruise Missiles"), + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Torpedoes") or \ + mod.charge.requiresSkill("XL Cruise Missiles"), "aoeVelocity", module.getModifiedItemAttr("aoeVelocityBonus")) #Shield Boosters diff --git a/eos/effects/targetgunnerymaxrangefallofftrackingspeedbonusassistance.py b/eos/effects/targetgunnerymaxrangefallofftrackingspeedbonusassistance.py deleted file mode 100644 index 7626282c2..000000000 --- a/eos/effects/targetgunnerymaxrangefallofftrackingspeedbonusassistance.py +++ /dev/null @@ -1,16 +0,0 @@ -# targetGunneryMaxRangeFalloffTrackingSpeedBonusAssistance -# -# Used by: -# Modules from group: Remote Tracking Computer (10 of 10) -type= "projected", "active" -def handler(fit, module, context): - if "projected" in context: - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), - "trackingSpeed", module.getModifiedItemAttr("trackingSpeedBonus"), - stackingPenalties = True) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), - "maxRange", module.getModifiedItemAttr("maxRangeBonus"), - stackingPenalties = True) - fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Gunnery"), - "falloff", module.getModifiedItemAttr("falloffBonus"), - stackingPenalties = True) diff --git a/eos/effects/targetmaxtargetrangeandscanresolutionbonusassistance.py b/eos/effects/targetmaxtargetrangeandscanresolutionbonusassistance.py deleted file mode 100644 index aafbf7e0a..000000000 --- a/eos/effects/targetmaxtargetrangeandscanresolutionbonusassistance.py +++ /dev/null @@ -1,13 +0,0 @@ -# targetMaxTargetRangeAndScanResolutionBonusAssistance -# -# Used by: -# Modules from group: Remote Sensor Booster (8 of 8) -type= "projected", "active" -def handler(fit, module, context): - if "projected" not in context: - return - - fit.ship.boostItemAttr("maxTargetRange", module.getModifiedItemAttr("maxTargetRangeBonus"), - stackingPenalties = True) - fit.ship.boostItemAttr("scanResolution", module.getModifiedItemAttr("scanResolutionBonus"), - stackingPenalties = True) diff --git a/eos/effects/targetmaxtargetrangeandscanresolutionbonushostile.py b/eos/effects/targetmaxtargetrangeandscanresolutionbonushostile.py deleted file mode 100644 index 51457a6c0..000000000 --- a/eos/effects/targetmaxtargetrangeandscanresolutionbonushostile.py +++ /dev/null @@ -1,12 +0,0 @@ -# targetMaxTargetRangeAndScanResolutionBonusHostile -# -# Used by: -# Modules from group: Remote Sensor Damper (8 of 8) -type= "projected", "active" -def handler(fit, module, context): - if "projected" not in context: - return - fit.ship.boostItemAttr("maxTargetRange", module.getModifiedItemAttr("maxTargetRangeBonus"), - stackingPenalties = True) - fit.ship.boostItemAttr("scanResolution", module.getModifiedItemAttr("scanResolutionBonus"), - stackingPenalties = True) diff --git a/eos/effects/trackingspeedbonuspassiverequiringgunnerytrackingspeedbonus.py b/eos/effects/trackingspeedbonuspassiverequiringgunnerytrackingspeedbonus.py index 4fb0e1466..d5c94a064 100644 --- a/eos/effects/trackingspeedbonuspassiverequiringgunnerytrackingspeedbonus.py +++ b/eos/effects/trackingspeedbonuspassiverequiringgunnerytrackingspeedbonus.py @@ -3,6 +3,7 @@ # Used by: # Implants named like: Drop Booster (4 of 4) # Implants named like: Eifyr and Co. 'Gunslinger' Motion Prediction MR (6 of 6) +# Implant: Antipharmakon Iokira # Implant: Ogdin's Eye Coordination Enhancer # Skill: Motion Prediction type = "passive" diff --git a/eos/effects/usemissiles.py b/eos/effects/usemissiles.py index e4fe779de..57fe05555 100644 --- a/eos/effects/usemissiles.py +++ b/eos/effects/usemissiles.py @@ -1,9 +1,9 @@ # useMissiles # # Used by: -# Modules from group: Missile Launcher Citadel (4 of 4) # Modules from group: Missile Launcher Heavy (12 of 12) # Modules from group: Missile Launcher Rocket (15 of 15) +# Modules from group: XL Missile Launcher (4 of 4) # Modules named like: Launcher (138 of 138) type = 'active' def handler(fit, module, context): diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index ecb7f926d..611478a6d 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -823,7 +823,8 @@ class Fit(object): return 10 / rechargeRate * sqrt(percent) * (1 - sqrt(percent)) * capacity def addDrain(self, cycleTime, capNeed, clipSize=0): - resistance = self.ship.getModifiedItemAttr("energyWarfareResistance") or 1 + """ Used for both cap drains and cap fills (fills have negative capNeed) """ + resistance = self.ship.getModifiedItemAttr("energyWarfareResistance") or 1 if capNeed > 0 else 1 self.__extraDrains.append((cycleTime, capNeed * resistance, clipSize)) def removeDrain(self, i): diff --git a/eos/saveddata/module.py b/eos/saveddata/module.py index 1f5e84ec1..6ea98bfec 100644 --- a/eos/saveddata/module.py +++ b/eos/saveddata/module.py @@ -416,10 +416,10 @@ class Module(HandledItem, HandledCharge, ItemAttrShortcut, ChargeAttrShortcut): # Check this only if we're told to do so if hardpointLimit: if self.hardpoint == Hardpoint.TURRET: - if fit.ship.getModifiedItemAttr('turretSlotsLeft') - fit.getHardpointsUsed(Hardpoint.TURRET) < 1: + if (fit.ship.getModifiedItemAttr('turretSlotsLeft') or 0) - fit.getHardpointsUsed(Hardpoint.TURRET) < 1: return False elif self.hardpoint == Hardpoint.MISSILE: - if fit.ship.getModifiedItemAttr('launcherSlotsLeft') - fit.getHardpointsUsed(Hardpoint.MISSILE) < 1: + if (fit.ship.getModifiedItemAttr('launcherSlotsLeft')or 0) - fit.getHardpointsUsed(Hardpoint.MISSILE) < 1: return False return True diff --git a/eve.db b/eve.db index ffc1a069d..0bb9841e8 100644 Binary files a/eve.db and b/eve.db differ diff --git a/gui/builtinContextMenus/changeAffectingSkills.py b/gui/builtinContextMenus/changeAffectingSkills.py index 3bc4c1e7d..fecd77234 100644 --- a/gui/builtinContextMenus/changeAffectingSkills.py +++ b/gui/builtinContextMenus/changeAffectingSkills.py @@ -28,10 +28,12 @@ class ChangeAffectingSkills(ContextMenu): fitID = self.mainFrame.getActiveFit() sFit = service.Fit.getInstance() self.stuff = sFit.getFit(fitID).ship + cont = sFit.getFit(fitID).ship.itemModifiedAttributes + elif srcContext == "fittingCharge": + cont = selection[0].chargeModifiedAttributes else: - self.stuff = selection[0] + cont = selection[0].itemModifiedAttributes - cont = self.stuff.itemModifiedAttributes skills = set() for attrName in cont.iterAfflictions(): diff --git a/gui/builtinStatsViews/priceViewFull.py b/gui/builtinStatsViews/priceViewFull.py index ea7d53340..593a2ab8e 100644 --- a/gui/builtinStatsViews/priceViewFull.py +++ b/gui/builtinStatsViews/priceViewFull.py @@ -23,7 +23,6 @@ from gui import builtinStatsViews from gui.bitmapLoader import BitmapLoader from gui.utils.numberFormatter import formatAmount import service -import locale class PriceViewFull(StatsView): name = "priceViewFull" @@ -107,15 +106,15 @@ class PriceViewFull(StatsView): if self._cachedShip != shipPrice: self.labelPriceShip.SetLabel("%s ISK" % formatAmount(shipPrice, 3, 3, 9, currency=True)) - self.labelPriceShip.SetToolTip(wx.ToolTip(locale.format('%.2f', shipPrice, 1))) + self.labelPriceShip.SetToolTip(wx.ToolTip('{:,.2f}'.format(shipPrice))) self._cachedShip = shipPrice if self._cachedFittings != modPrice: self.labelPriceFittings.SetLabel("%s ISK" % formatAmount(modPrice, 3, 3, 9, currency=True)) - self.labelPriceFittings.SetToolTip(wx.ToolTip(locale.format('%.2f', modPrice, 1))) + self.labelPriceFittings.SetToolTip(wx.ToolTip('{:,.2f}'.format(modPrice))) self._cachedFittings = modPrice if self._cachedTotal != (shipPrice+modPrice): self.labelPriceTotal.SetLabel("%s ISK" % formatAmount(shipPrice + modPrice, 3, 3, 9, currency=True)) - self.labelPriceTotal.SetToolTip(wx.ToolTip(locale.format('%.2f', (shipPrice + modPrice), 1))) + self.labelPriceTotal.SetToolTip(wx.ToolTip('{:,.2f}'.format(shipPrice + modPrice))) self._cachedTotal = shipPrice + modPrice self.panel.Layout() diff --git a/gui/builtinStatsViews/targetingMiscViewFull.py b/gui/builtinStatsViews/targetingMiscViewFull.py index d2916f317..af6a195ad 100644 --- a/gui/builtinStatsViews/targetingMiscViewFull.py +++ b/gui/builtinStatsViews/targetingMiscViewFull.py @@ -22,7 +22,6 @@ from gui.statsView import StatsView from gui import builtinStatsViews from gui.utils.numberFormatter import formatAmount import locale - try: from collections import OrderedDict except ImportError: @@ -201,17 +200,15 @@ class TargetingMiscViewFull(StatsView): label.SetToolTip(wx.ToolTip("Type: %s" % (fit.scanType))) elif labelName == "labelFullAlignTime": alignTime = "Align:\t%.3fs"%mainValue - mass = "Mass:\t%skg"%locale.format('%d', fit.ship.getModifiedItemAttr("mass"), 1) + mass = 'Mass:\t{:,.0f}kg'.format(fit.ship.getModifiedItemAttr("mass")) agility = "Agility:\t%.3fx"%fit.ship.getModifiedItemAttr("agility") label.SetToolTip(wx.ToolTip("%s\n%s\n%s" % (alignTime, mass, agility))) elif labelName == "labelFullCargo": tipLines = [] - tipLines.append(u"Cargohold: %sm\u00B3 / %sm\u00B3"% ( - locale.format('%.2f', fit.cargoBayUsed, 1), - locale.format('%.2f', newValues["main"], 1))) + tipLines.append(u"Cargohold: {:,.2f}m\u00B3 / {:,.2f}m\u00B3".format(fit.cargoBayUsed, newValues["main"])) for attrName, tipAlias in cargoNamesOrder.items(): if newValues[attrName] > 0: - tipLines.append(u"%s: %sm\u00B3"% (tipAlias, locale.format('%.2f', newValues[attrName], 1))) + tipLines.append(u"{}: {:,.2f}m\u00B3".format(tipAlias, newValues[attrName])) label.SetToolTip(wx.ToolTip(u"\n".join(tipLines))) else: label.SetToolTip(wx.ToolTip("%.1f" % mainValue)) @@ -237,12 +234,10 @@ class TargetingMiscViewFull(StatsView): # if you add stuff to cargo, the capacity doesn't change and thus it is still cached # This assures us that we force refresh of cargo tooltip tipLines = [] - tipLines.append(u"Cargohold: %sm\u00B3 / %sm\u00B3"% ( - locale.format('%.2f', fit.cargoBayUsed, 1), - locale.format('%.2f', cachedCargo["main"], 1))) + tipLines.append(u"Cargohold: {:,.2f}m\u00B3 / {:,.2f}m\u00B3".format(fit.cargoBayUsed, cachedCargo["main"])) for attrName, tipAlias in cargoNamesOrder.items(): if cachedCargo[attrName] > 0: - tipLines.append(u"%s: %sm\u00B3"% (tipAlias, locale.format('%.2f', cachedCargo[attrName], 1))) + tipLines.append(u"{}: {:,.2f}m\u00B3".format(tipAlias, cachedCargo[attrName])) label.SetToolTip(wx.ToolTip(u"\n".join(tipLines))) else: label.SetToolTip(wx.ToolTip("")) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index ba49622eb..4c0d39ba7 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -116,12 +116,10 @@ class MainFrame(wx.Frame): def getInstance(cls): return cls.__instance if cls.__instance is not None else MainFrame() - def __init__(self): - self.title="pyfa %s%s - Python Fitting Assistant"%(config.version, "" if config.tag.lower() != 'git' else " (git)") + def __init__(self, title): + self.title=title wx.Frame.__init__(self, None, wx.ID_ANY, self.title) - self.locale = wx.Locale(wx.LANGUAGE_ENGLISH) - MainFrame.__instance = self #Load stored settings (width/height/maximized..) diff --git a/gui/utils/exportHtml.py b/gui/utils/exportHtml.py index ee3bcf05c..d7e25c04a 100644 --- a/gui/utils/exportHtml.py +++ b/gui/utils/exportHtml.py @@ -52,9 +52,17 @@ class exportHtmlThread(threading.Thread):