From f737f292e3e6a4d913af2fbe3973825ba11a0bbf Mon Sep 17 00:00:00 2001 From: blitzmann Date: Wed, 1 Jul 2015 13:34:19 -0400 Subject: [PATCH] Refine appending projected modules. Ensure that module can actually be projected, and also ensure that we only have 1 system effect running at a time. Invalid modules are removed at earliest opportunity as we are later accessing attributes that may not be there for corrupted data. --- eos/effectHandlerHelpers.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/eos/effectHandlerHelpers.py b/eos/effectHandlerHelpers.py index 8c7f87e2d..0266df4ea 100644 --- a/eos/effectHandlerHelpers.py +++ b/eos/effectHandlerHelpers.py @@ -272,9 +272,28 @@ class HandledImplantBoosterList(HandledList): class HandledProjectedModList(HandledList): def append(self, proj): + if proj.isInvalid: + # we must include it before we remove it. doing it this way ensures + # rows and relationships in databse are removed as well + HandledList.append(self, proj) + self.remove(proj) + proj.projected = True + isSystemEffect = proj.item.group.name == "Effect Beacon" + + if isSystemEffect: + # remove other system effects - only 1 per fit plz + oldEffect = next((m for m in self if m.item.group.name == "Effect Beacon"), None) + + if oldEffect: + self.remove(oldEffect) + HandledList.append(self, proj) + # Remove non-projectable modules + if not proj.item.isType("projected") and not isSystemEffect: + self.remove(proj) + class HandledProjectedDroneList(HandledDroneList): def append(self, proj): proj.projected = True