feat:改造特效伤害

This commit is contained in:
2026-07-06 01:29:18 +08:00
parent a072ecac52
commit 91eed49d28
6 changed files with 1451 additions and 1439 deletions
+12
View File
@@ -1,6 +1,7 @@
import importlib
from collections.abc import Sequence
from functools import cache
import re
from sqlalchemy.orm import Session
from database.models import EmblemData, OathData, OathSuitData, OathSuitSkillData, PrimerData, EquData, SuitData, EnchantData, JadeData
from database.connect import get_db_engine as get_engine
@@ -42,6 +43,7 @@ class Equ:
Attack: list[float] | float
Buffer: list[float] | float
max_adaptation: int
effectDamage: list[float]
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
@@ -128,6 +130,8 @@ class Equipments:
setattr(item, attr, value)
equ_dict = {k: v for k, v in item.__dict__.items() if not k.startswith('_')}
equ_dict['max_adaptation'] = max_adaptation
effect_damage = re.findall(r'(?:伤害量|攻击力) : ([\d,]+)%', equ_dict.get('detail', '') if equ_dict.get('detail', '') else '')
equ_dict['effectDamage'] = [float(i.replace(',', '')) for i in effect_damage] if effect_damage else []
equ = Equ(**equ_dict)
self.equs.append(equ)
self.equ_dict[equ.id] = equ
@@ -171,6 +175,8 @@ class Equipments:
suit['Attack'] = 0 if i - 1 >= len(attacks) else attacks[i - 1]
buffers = parse_to_number_list(suit['Buffer'], [0])
suit['Buffer'] = 0 if i - 1 >= len(buffers) else buffers[i - 1]
effect_damage = re.findall(r'(?:伤害量|攻击力) : ([\d,]+)%', suit.get('value', '') if suit.get('value', '') else '')
suit['effectDamage'] = [float(i.replace(',', '')) for i in effect_damage] if effect_damage else []
suit_obj = Suit(**suit)
self.suits.append(suit_obj)
self.suit_dict.setdefault(str(suit['suitId']), []).append(suit_obj)
@@ -256,8 +262,11 @@ class Equipments:
buffers = parse_to_number_list(skill['Buffer'], [0])
skill['Buffer'] = 0 if i - 1 >= len(buffers) else buffers[i - 1]
skill['level'] = i
effect_damage = re.findall(r'(?:伤害量|攻击力) : ([\d,]+)%', skill.get('value', '') if skill.get('value', '') else '')
skill['effectDamage'] = [float(i.replace(',', '')) for i in effect_damage] if effect_damage else []
skill_obj = OathSuitSkill(**skill)
skill_list.append(skill_obj)
for item in db_list:
lvs = len(item.point.split(','))
suits = {k: v for k, v in item.__dict__.items() if not k.startswith('_')}
@@ -365,6 +374,7 @@ class Oath:
max_adaptation: int
itemType: str
itemDetailType: str
effectDamage: list[float]
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
@@ -399,6 +409,7 @@ class OathSuitSkill:
value: str
bufferValue: str
level: int
effectDamage: list[float]
def __init__(self, **kwargs):
for key in ['SkillAttack', 'Attack', 'Buffer']:
@@ -421,6 +432,7 @@ class OathSuit:
imageUrl: str
SkillAttack: float
Attack: float
Buffer: float
skills: list[OathSuitSkill]
def __init__(self, **kwargs):