Skip to content

Commit

Permalink
Merge pull request #99 from blitzmann/issue-63
Browse files Browse the repository at this point in the history
Fixes #63
  • Loading branch information
DarkFenX committed Jun 2, 2014
2 parents 5a1e391 + b783f06 commit 2ea0c57
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
27 changes: 14 additions & 13 deletions eos/saveddata/fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -319,17 +319,8 @@ def calculateModifiedAttributes(self, targetFit=None, withBoosters=False, dirtyS
else:
c = chain((self.character, self.ship), self.drones, self.boosters, self.appliedImplants, self.modules,
self.projectedDrones, self.projectedModules)

for item in c:
# Registering the item about to affect the fit allows us to track "Affected By" relations correctly
if item is not None:
self.register(item)
item.calculateModifiedAttributes(self, runTime, False)
if forceProjected is True:
targetFit.register(item)
item.calculateModifiedAttributes(targetFit, runTime, True)

if self.gangBoosts is not None:
#print self.gangBoosts
contextMap = {Skill: "skill",
Ship: "ship",
Module: "module",
Expand All @@ -344,17 +335,27 @@ def calculateModifiedAttributes(self, targetFit=None, withBoosters=False, dirtyS
(effect.isType("active") and thing.state >= State.ACTIVE):
# Run effect, and get proper bonuses applied
try:
effect.handler(targetFit, thing, context)
effect.handler(self, thing, context)
except:
pass
else:
# Run effect, and get proper bonuses applied
try:
effect.handler(targetFit, thing, context)
effect.handler(self, thing, context)
except:
pass

for item in c:
# Registering the item about to affect the fit allows us to track "Affected By" relations correctly
if item is not None:
self.register(item)
item.calculateModifiedAttributes(self, runTime, False)
if forceProjected is True:
targetFit.register(item)
item.calculateModifiedAttributes(targetFit, runTime, True)

for fit in self.projectedFits:
fit.calculateModifiedAttributes(self, dirtyStorage=dirtyStorage)
fit.calculateModifiedAttributes(self, withBoosters=withBoosters, dirtyStorage=dirtyStorage)

def fill(self):
"""
Expand Down
15 changes: 12 additions & 3 deletions service/fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,11 @@ def switchFit(self, fitID):
eos.db.commit()
self.recalc(fit, withBoosters=True)

def getFit(self, fitID):
def getFit(self, fitID, projected = False):
''' Gets fit from database, and populates fleet data.
Projected is a recursion flag that is set to reduce recursions into projected fits
'''
if fitID is None:
return None
fit = eos.db.getFit(fitID)
Expand All @@ -233,8 +237,13 @@ def getFit(self, fitID):
fit.fleet = None
else:
fit.fleet = f
self.recalc(fit, withBoosters=True)
fit.fill()

if not projected:
for fitP in fit.projectedFits:
self.getFit(fitP.ID, projected = True)
self.recalc(fit, withBoosters=True)
fit.fill()

eos.db.commit()
fit.inited = True
return fit
Expand Down

0 comments on commit 2ea0c57

Please sign in to comment.