Get skill limits working
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Column, String, Integer, Table, ForeignKey
|
||||
from sqlalchemy.orm import relation, mapper
|
||||
from sqlalchemy.orm import relation, mapper, synonym
|
||||
|
||||
from eos.db import gamedata_meta
|
||||
from eos.types import AlphaClone, AlphaCloneSkill
|
||||
@@ -36,7 +36,8 @@ alphacloneskskills_table = Table("alphaCloneSkills", gamedata_meta,
|
||||
|
||||
mapper(AlphaClone, alphaclones_table,
|
||||
properties={
|
||||
"_AlphaClone__skills": relation(
|
||||
"ID": synonym("alphaCloneID"),
|
||||
"skills": relation(
|
||||
AlphaCloneSkill,
|
||||
cascade="all,delete-orphan",
|
||||
backref="clone")
|
||||
|
||||
@@ -24,7 +24,7 @@ import eos.config
|
||||
from eos.db import gamedata_session
|
||||
from eos.db.gamedata.metaGroup import metatypes_table, items_table
|
||||
from eos.db.util import processEager, processWhere
|
||||
from eos.types import Item, Category, Group, MarketGroup, AttributeInfo, MetaData, MetaGroup
|
||||
from eos.types import Item, Category, Group, MarketGroup, AttributeInfo, MetaData, MetaGroup, AlphaClone
|
||||
|
||||
configVal = getattr(eos.config, "gamedataCache", None)
|
||||
if configVal is True:
|
||||
@@ -97,6 +97,18 @@ def getItem(lookfor, eager=None):
|
||||
return item
|
||||
|
||||
|
||||
@cachedQuery(1, "lookfor")
|
||||
def getAlphaClone(lookfor, eager=None):
|
||||
if isinstance(lookfor, int):
|
||||
if eager is None:
|
||||
item = gamedata_session.query(AlphaClone).get(lookfor)
|
||||
else:
|
||||
item = gamedata_session.query(AlphaClone).options(*processEager(eager)).filter(AlphaClone.ID == lookfor).first()
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
return item
|
||||
|
||||
|
||||
groupNameMap = {}
|
||||
|
||||
|
||||
|
||||
@@ -445,7 +445,18 @@ class Category(EqBase):
|
||||
|
||||
|
||||
class AlphaClone(EqBase):
|
||||
pass
|
||||
@reconstructor
|
||||
def init(self):
|
||||
self.skillCache = {}
|
||||
|
||||
for x in self.skills:
|
||||
self.skillCache[x.typeID] = x
|
||||
|
||||
def getSkillLevel(self, skill):
|
||||
if skill.item.ID in self.skillCache:
|
||||
return self.skillCache[skill.item.ID].level
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
class AlphaCloneSkill(EqBase):
|
||||
|
||||
@@ -109,10 +109,14 @@ class Character(object):
|
||||
|
||||
@reconstructor
|
||||
def init(self):
|
||||
|
||||
self.__skillIdMap = {}
|
||||
for skill in self.__skills:
|
||||
self.__skillIdMap[skill.itemID] = skill
|
||||
self.dirtySkills = set()
|
||||
|
||||
if self.alphaClone:
|
||||
self.alphaClone = eos.db.getAlphaClone(self.alphaClone)
|
||||
|
||||
def apiUpdateCharSheet(self, skills):
|
||||
del self.__skills[:]
|
||||
@@ -294,6 +298,9 @@ class Skill(HandledItem):
|
||||
|
||||
@property
|
||||
def level(self):
|
||||
if self.character.alphaClone:
|
||||
return min(self.activeLevel, self.character.alphaClone.getSkillLevel(self)) or 0
|
||||
|
||||
return self.activeLevel or 0
|
||||
|
||||
@level.setter
|
||||
|
||||
Reference in New Issue
Block a user