diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index c05119843..9c28f77e6 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -1508,16 +1508,17 @@ class Fit(object): return True def __deepcopy__(self, memo=None): - copy_ship = Fit() + fitCopy = Fit() # Character and owner are not copied - copy_ship.character = self.__character - copy_ship.owner = self.owner - copy_ship.ship = deepcopy(self.ship) - copy_ship.name = "%s copy" % self.name - copy_ship.damagePattern = self.damagePattern - copy_ship.targetResists = self.targetResists - copy_ship.implantLocation = self.implantLocation - copy_ship.notes = self.notes + fitCopy.character = self.__character + fitCopy.owner = self.owner + fitCopy.ship = deepcopy(self.ship) + fitCopy.mode = deepcopy(self.mode) + fitCopy.name = "%s copy" % self.name + fitCopy.damagePattern = self.damagePattern + fitCopy.targetResists = self.targetResists + fitCopy.implantLocation = self.implantLocation + fitCopy.notes = self.notes toCopy = ( "modules", @@ -1531,7 +1532,7 @@ class Fit(object): "projectedFighters") for name in toCopy: orig = getattr(self, name) - c = getattr(copy_ship, name) + c = getattr(fitCopy, name) for i in orig: c.append(deepcopy(i)) @@ -1541,22 +1542,22 @@ class Fit(object): eos.db.saveddata_session.refresh(fit) for fit in self.commandFits: - copy_ship.commandFitDict[fit.ID] = fit + fitCopy.commandFitDict[fit.ID] = fit forceUpdateSavedata(fit) - copyCommandInfo = fit.getCommandInfo(copy_ship.ID) + copyCommandInfo = fit.getCommandInfo(fitCopy.ID) originalCommandInfo = fit.getCommandInfo(self.ID) copyCommandInfo.active = originalCommandInfo.active forceUpdateSavedata(fit) for fit in self.projectedFits: - copy_ship.projectedFitDict[fit.ID] = fit + fitCopy.projectedFitDict[fit.ID] = fit forceUpdateSavedata(fit) - copyProjectionInfo = fit.getProjectionInfo(copy_ship.ID) + copyProjectionInfo = fit.getProjectionInfo(fitCopy.ID) originalProjectionInfo = fit.getProjectionInfo(self.ID) copyProjectionInfo.active = originalProjectionInfo.active forceUpdateSavedata(fit) - return copy_ship + return fitCopy def __repr__(self): return "Fit(ID={}, ship={}, name={}) at {}".format( diff --git a/eos/saveddata/mode.py b/eos/saveddata/mode.py index 0db461d69..86bf229cd 100644 --- a/eos/saveddata/mode.py +++ b/eos/saveddata/mode.py @@ -55,3 +55,12 @@ class Mode(ItemAttrShortcut, HandledItem): for effect in self.item.effects.values(): if effect.runTime == runTime and effect.activeByDefault: effect.handler(fit, self, context=("module",)) + + def __deepcopy__(self, memo): + copy = Mode(self.item) + return copy + + def __repr__(self): + return "Mode(ID={}, name={}) at {}".format( + self.item.ID, self.item.name, hex(id(self)) + )