pyfa-org / Pyfa

Python fitting assistant, cross-platform fitting tool for EVE Online
GNU General Public License v3.0
1.61k stars 406 forks source link

Using boosters ends in an Error. #1324

Closed MoTodoka closed 6 years ago

MoTodoka commented 6 years ago

I m fitting a Maelstrom at the moment. After I finished the Fitting, i tried to add some Boosters, to check which ones are worth it. The "Agency Tank Booster" works fine in all variations. but if i try to add an "Agency Damage Booster" (no matter what size) i get this Error:

OS version: Windows-8-6.2.9200 Python: 2.7.10 wxPython: 3.0.2.0 SQLAlchemy: 1.0.5 Logbook: 1.0.0 pyfa version: 1.33.0 Stable - Lifeblood 1.0 pyfa root: C:\Program Files (x86)\pyfa save path: C:\Users\Gerrit.pyfa fs encoding: mbcs

EXCEPTION: 'Booster' object has no attribute 'level'

File "C:\Program Files (x86)\pyfa\library.zip\gui\builtinAdditionPanes\boosterView.py", line 135, in addItem trigger = sFit.addBooster(fitID, event.itemID) File "C:\Program Files (x86)\pyfa\library.zip\service\fit.py", line 356, in addBooster self.recalc(fit) File "C:\Program Files (x86)\pyfa\library.zip\service\fit.py", line 1212, in recalc fit.calculateModifiedAttributes() File "C:\Program Files (x86)\pyfa\library.zip\eos\saveddata\fit.py", line 790, in calculateModifiedAttributes item.calculateModifiedAttributes(self, runTime, False) File "C:\Program Files (x86)\pyfa\library.zip\eos\saveddata\booster.py", line 124, in calculateModifiedAttributes effect.handler(fit, self, ("booster",)) File "C:\Program Files (x86)\pyfa\library.zip\eos\effects\missileskillwarheadupgradeskineticdamagebonus.py", line 11, in handler "kineticDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)

Pyfa is adding the booster, but my ships does less damage (removing skill-bonus?)

My fit (not for discussing the fit. its not finished now - only for recreating that error):

[Maelstrom, solo active shield 650mm]

Gyrostabilizer II Gyrostabilizer II Gyrostabilizer II Fourier Compact Tracking Enhancer Fourier Compact Tracking Enhancer

Warp Scrambler II Heavy Stasis Grappler II Pith X-Type X-Large Shield Booster Adaptive Invulnerability Field II Large Micro Jump Drive Heavy Capacitor Booster II, Navy Cap Booster 800

Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L Dual 650mm Repeating Cannon II, Republic Fleet Phased Plasma L

Large Anti-EM Screen Reinforcer I Large Anti-EM Screen Reinforcer I Large Anti-Thermal Screen Reinforcer I

after restarting pyfa and reopening the fitting pyfa is stacking the same error on the screen, i m using pyfa on 8 times. Screenshot

cant try it with other boosters now. my pyfa is broken. (;

o7 and fly free.

Mo Todoka

ghost commented 6 years ago

I can't do much testing at the moment because I am at work but it looks like in the past missileskillwarheadupgradeskineticdamagebonus.py was only ever being called from the warhead upgrades skill, whereas now it can be called from something that isn't a skill but is actually a booster.

If it's called from the booster then it's been passed a booster object rather than a skill object so when it tries to get the skill.level it fails. A possible fix for this would be to skip the skill level check if it has been called from a booster... will have a look when I get home.

duketwo commented 6 years ago

+1

OS version: Windows-8-6.2.9200 Python: 2.7.10 wxPython: 3.0.2.0 SQLAlchemy: 1.0.5 Logbook: 1.0.0 pyfa version: 1.33.0 Stable - Lifeblood 1.0 pyfa root: C:_portable_sync\apps\pyfa save path: C:_portable_sync\apps\pyfa\saveddata fs encoding: mbcs

EXCEPTION: 'Booster' object has no attribute 'level'

File "C:_portable_sync\apps\pyfa\library.zip\gui\builtinAdditionPanes\boosterView.py", line 135, in addItem trigger = sFit.addBooster(fitID, event.itemID) File "C:_portable_sync\apps\pyfa\library.zip\service\fit.py", line 356, in addBooster self.recalc(fit) File "C:_portable_sync\apps\pyfa\library.zip\service\fit.py", line 1212, in recalc fit.calculateModifiedAttributes() File "C:_portable_sync\apps\pyfa\library.zip\eos\saveddata\fit.py", line 790, in calculateModifiedAttributes item.calculateModifiedAttributes(self, runTime, False) File "C:_portable_sync\apps\pyfa\library.zip\eos\saveddata\booster.py", line 124, in calculateModifiedAttributes effect.handler(fit, self, ("booster",)) File "C:_portable_sync\apps\pyfa\library.zip\eos\effects\missileskillwarheadupgradeskineticdamagebonus.py", line 11, in handler "kineticDamage", skill.getModifiedItemAttr("damageMultiplierBonus") * skill.level)

blitzmann commented 6 years ago

@burnsypet indeed, this is exactly what is happening. Thanks for the bug report guys, this is fixed in 82d50cfa0ddbdfdbdb0e78cb7d4ea0d3ef125c64

I'll try to make a point release tomorrow with all the included fixes of today