MCPcopy Index your code
hub / github.com/pyfa-org/Pyfa / Skill

Class Skill

eos/saveddata/character.py:314–461  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

312
313
314class Skill(HandledItem):
315 def __init__(self, character, item, level=0, ro=False, learned=True):
316 self.character = character
317 self.__item = item if not isinstance(item, int) else None
318 self.itemID = item.ID if not isinstance(item, int) else item
319 self.__level = level if learned else None
320 self.commandBonus = 0
321 self.build(ro)
322
323 @reconstructor
324 def init(self):
325 self.build(False)
326 self.__item = None
327
328 def build(self, ro):
329 self.__ro = ro
330 self.__suppressed = False
331 self.activeLevel = self.__level
332
333 def saveLevel(self):
334 self.__level = self.activeLevel
335
336 if self in self.character.dirtySkills:
337 self.character.dirtySkills.remove(self)
338
339 def revert(self):
340 self.activeLevel = self.__level
341
342 @property
343 def isDirty(self):
344 return self.__level != self.activeLevel
345
346 @property
347 def learned(self):
348 return self.activeLevel is not None
349
350 @property
351 def level(self):
352 # @todo: there is a phantom bug that keep popping up about skills not having a character... See #1234
353 # Remove this at some point when the cause can be determined.
354 if self.character:
355 # Ensure that All 5/0 character have proper skill levels (in case database gets corrupted)
356 if self.character.name == "All 5":
357 self.activeLevel = self.__level = 5
358 elif self.character.name == "All 0":
359 self.activeLevel = self.__level = 0
360 elif self.character.alphaClone:
361 return min(self.activeLevel or 0, self.character.alphaClone.getSkillLevel(self) or 0)
362
363 return self.activeLevel or 0
364
365 def setLevel(self, level, persist=False, ignoreRestrict=False):
366
367 if level is not None and (level < 0 or level > 5):
368 raise ValueError(str(level) + " is not a valid value for level")
369
370 if hasattr(self, "_Skill__ro") and self.__ro is True:
371 raise ReadOnlyException()

Callers 7

runMethod · 0.90
__init__Method · 0.85
initMethod · 0.85
apiUpdateCharSheetMethod · 0.85
getSkillMethod · 0.85
__deepcopy__Method · 0.85
__deepcopy__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected