From 53f589284b8eb554b79cd27cd8a2ba126e90139e Mon Sep 17 00:00:00 2001 From: blitzmann Date: Mon, 8 May 2017 19:47:55 -0400 Subject: [PATCH] Implement hard constraints for All 5/0 characters with respect to skills and sec status --- eos/db/saveddata/character.py | 1 + eos/saveddata/character.py | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/eos/db/saveddata/character.py b/eos/db/saveddata/character.py index 599f079b3..c87817541 100644 --- a/eos/db/saveddata/character.py +++ b/eos/db/saveddata/character.py @@ -46,6 +46,7 @@ mapper(Character, characters_table, properties={ "_Character__alphaCloneID": characters_table.c.alphaCloneID, "savedName" : characters_table.c.name, + "_Character__secStatus": characters_table.c.secStatus, "_Character__owner" : relation( User, backref="characters"), diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index 7febd82c2..1ac23f222 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -45,7 +45,7 @@ class Character(object): self.__skillIdMap = {} self.dirtySkills = set() self.alphaClone = None - self.secStatus = 0.0 + self.__secStatus = 0.0 if initSkills: for item in self.getSkillList(): @@ -130,6 +130,18 @@ class Character(object): def ro(self): return self == self.getAll0() or self == self.getAll5() + @property + def secStatus(self): + if self.name == "All 5": + self.__secStatus = 5.00 + elif self.name == "All 0": + self.__secStatus = 0.00 + return self.__secStatus + + @secStatus.setter + def owner(self, sec): + self.__secStatus = sec + @property def owner(self): return self.__owner @@ -321,7 +333,12 @@ class Skill(HandledItem): @property def level(self): - if self.character.alphaClone: + # Ensure that All 5/0 character have proper skill levels (in case database gets corrupted) + if self.character.name == "All 5": + self.activeLevel = self.__level = 5 + elif self.character.name == "All 0": + self.activeLevel = self.__level = 0 + elif self.character.alphaClone: return min(self.activeLevel, self.character.alphaClone.getSkillLevel(self)) or 0 return self.activeLevel or 0