diff --git a/backend/api/core/Auth.py b/backend/api/core/Auth.py index b8e72c0e..f1fefd92 100644 --- a/backend/api/core/Auth.py +++ b/backend/api/core/Auth.py @@ -10,12 +10,10 @@ from api.core.exception import ResponseException class AlterState: - def __init__(self, value: str, token: str, charcater: Character, equVersion: str,time: int): - self.value = value - try: - self.alter = get_adv_info(value)["class"] - except Exception: - raise ResponseException(f'无效的职业{value}') + def __init__(self, alter: str, token: str, charcater: Character, equVersion: str,time: int): + if alter is None: + raise ResponseException('无效的职业') + self.alter = alter self.token = token self.origin = self.alter.split('.')[-1] self.character = charcater diff --git a/backend/api/core/Redis.py b/backend/api/core/Redis.py index c3b06e95..0fffcf76 100644 --- a/backend/api/core/Redis.py +++ b/backend/api/core/Redis.py @@ -10,7 +10,6 @@ def get_redis_info(redis, key, fun,without_gzip=False): else: info = json.loads(gzip_unzip(redis.get(key))) except Exception as ex: - print(ex) info = None if info is None: info = fun() diff --git a/backend/api/dp.py b/backend/api/dp.py index 0f1e182c..015886f3 100644 --- a/backend/api/dp.py +++ b/backend/api/dp.py @@ -5,16 +5,18 @@ from sqlalchemy.orm import Session from fastapi import Depends, Header from api.core.exception import ResponseException +from core.character.adventure import get_adv_info from database.connect import get_db, get_redis from api.core.Auth import AlterState import base64 import json +from api.core.Redis import get_redis_info SessionDep = Annotated[Session, Depends(get_db)] RedisDep = Annotated[Redis, Depends(get_redis)] -def alterToken(alter_token: Optional[str] = Header(None)): +def alterToken(redis:RedisDep,alter_token: Optional[str] = Header(None)): if alter_token is not None: try: decoded_bytes = base64.b64decode(alter_token) @@ -23,7 +25,8 @@ def alterToken(alter_token: Optional[str] = Header(None)): # 6小时过期 if (int(time.time() * 1000) - alter['time']) / (60 * 60 * 1000) > 6: raise ResponseException('登录过期或无效Token,请刷新后重试') - return AlterState(alter['alter'], alter_token, {}, alter['equVersion'], alter['time']) + alterData = get_redis_info(redis, f'dcalc:adventure:{alter['alter']}', lambda : get_adv_info(alter['alter'])) + return AlterState(alterData["class"], alter_token, {}, alter['equVersion'], alter['time']) except (base64.binascii.Error, json.JSONDecodeError): raise ResponseException('登录过期或无效Token,请刷新后重试') else: diff --git a/backend/core/abstract/character.py b/backend/core/abstract/character.py index 369f95e8..0dda9685 100644 --- a/backend/core/abstract/character.py +++ b/backend/core/abstract/character.py @@ -1,9 +1,117 @@ -from typing import Any, Literal -from collections.abc import Mapping +from abc import ABC, abstractmethod +from typing import Any, Literal, Mapping +class CharacterProperty(ABC): + """ + 抽象类,用于定义Character的接口和属性 + """ -class CharacterProperty: - def SetStatus( + # region 角色属性 + STR: float + """力量""" + + INT: float + """智力""" + + Spirit: float + """精神""" + + Vitality: float + """体力""" + + AtkP: float + """物理攻击力""" + + PAtkP: float + """物理攻击力%""" + + AtkM: float + """魔法攻击力""" + + PAtkM: float + """魔法攻击力%""" + + AtkI: float + """独立攻击力""" + + PAtkI: float + """独立攻击力%""" + + ElementA: dict[str, float] + """属性攻击""" + + ElementIncrease: float + """属性增幅""" + + ElementDB: dict[str, float] + """属性强化数值""" + + ElementR: dict[str, float] + """属性抗性数值""" + + CriticalM: float + """魔法暴击""" + + CriticalP: float + """物理暴击""" + + SkillAttack: float + """技能攻击力""" + + SpeedA: float + """攻击速度""" + + SpeedM: float + """移动速度""" + + SpeedR: float + """施放速度""" + + Hit: float + """命中率""" + + Abnormal: dict[str, bool] + """敌人异常状态""" + + MonsterInfo: dict[str, float] + """怪物信息""" + + jade_effect: Any + """辟邪玉加成""" + + Buffer: float + """增益量""" + + BufferP: float + """增益量%""" + + Attack: float + """攻击强化""" + + AttackP: float + """攻击强化%""" + + # endregion + + # region 职业属性 + 实际名称: str + 名称: str + 角色: str + 角色类型: str + 职业: str + 武器选项: list[str] + 输出类型选项: list[str] + 防具精通属性: list[str] + 输出类型: str + # endregion + + @abstractmethod + def SetBaseStatus(self) -> None: + """设角色基础属性""" + pass + + @abstractmethod + def SetStatus( self, 力量=0, 智力=0, @@ -43,8 +151,7 @@ class CharacterProperty: 攻击强化P=0, 增益量=0, 增益量P=0, - **kwargs: Mapping[ - Literal[ + **kwargs: Mapping[Literal[ 'STR', 'INT', 'AtkP', @@ -79,8 +186,52 @@ class CharacterProperty: 'Spirit', 'Vitality', 'EquEffectRatio', - ], - Any, - ], + ], Any], ) -> None: - pass + """设置角色属性""" + pass + + @abstractmethod + def AddElementDB(self, element: str, value: float, type: int = 0) -> None: + """增加属性强化""" + pass + + @abstractmethod + def AddSkillLv(self, min: int, max: int, lv: int, type=-1) -> None: + """增加技能等级""" + pass + + @abstractmethod + def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None: + """设置技能CD""" + pass + + @abstractmethod + def SetSkillCDRecover(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None: + """设置技能CD恢复""" + pass + + @abstractmethod + def SetSkillRation(self, min=1, max=100, ratio=0, type=0) -> None: + """设置技能倍率""" + pass + + @abstractmethod + def GetSkillByName(self, name) -> Any: + """通过技能名获取技能""" + pass + + @abstractmethod + def GetSkillByID(self, id: str) -> Any: + """通过技能ID获取技能""" + pass + + @abstractmethod + def GetSkillNames(self, type: Literal['active', 'passive', 'all'] = 'all', damage: Literal[True, False, 'all'] = 'all') -> list[str]: + """获取技能名字""" + pass + + @abstractmethod + def calc(self, setInfo: dict[str, dict]) -> dict: + """计算角色属性""" + pass diff --git a/backend/core/basic/character.py b/backend/core/basic/character.py index 49c111ef..937b2d8f 100644 --- a/backend/core/basic/character.py +++ b/backend/core/basic/character.py @@ -3,6 +3,7 @@ import importlib from typing import Any, Literal, Mapping, Union from uuid import uuid1 +from core.abstract.character import CharacterProperty from core.basic.property import CharacterInfo from core.basic.skill import Skill @@ -29,7 +30,7 @@ class Jade: self.SkillAttack = 0.0 -class Character: +class Character(CharacterProperty): # region 角色属性 STR: float @@ -132,9 +133,7 @@ class Character: max_point = 0 """套装效果点数""" - # region 角色属性 buffer: bool = False - # endregion # region 职业属性 实际名称: str = '' @@ -223,7 +222,7 @@ class Character: # 角色四维 temp = 获取基础属性(self.角色, self.职业) for index, i in enumerate([get_key_by_value(i) for i in ['力量', '体力', '智力', '精神']]): - setattr(self, i, temp[index]) + setattr(self, i, getattr(self,i) + temp[index]) # 角色属性抗性 pass # 角色异常抗性 @@ -360,9 +359,9 @@ class Character: """ for skill in self.skills: if min <= skill.learnLv <= max: - type = 'all' if type == -1 else ('active' if type == 1 else 'passive') - if type == 'all' or skill.type == type: - skill.lv += 1 + skillType = 'all' if type == -1 else ('active' if type == 1 else 'passive') + if (skillType == 'all' or skill.type == skillType) and skill.lv > 0: + skill.lv += lv def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None: """ @@ -462,8 +461,9 @@ class Character: info['equips'] = equs info['suits'] = suits info['stones'] = stones - info['enchants'] = equInfos.enchants - info['emblems'] = equInfos.emblems + key = '辅助' if self.buffer else '输出' + info['enchants'] = list(filter(lambda x: key in x["categorize"], equInfos.enchants)) + info['emblems'] = list(filter(lambda x: key in x["categorize"], equInfos.emblems)) info['avatar'] = equInfos.funs.get_dress_list(skill_clothes) info['jades'] = equInfos.jades info['sundry'] = equInfos.funs.sundryList @@ -690,8 +690,9 @@ class Character: reinforce = self.charEquipInfo[part].reinforce if equ is None: continue - value = 精通计算(115, equ.rarity, reinforce, equ.itemDetailType, self.防具类型) + for key in self.防具精通属性: + value = 精通计算(115, equ.rarity, reinforce, equ.itemDetailType, self.防具类型,self.buffer,key) key = get_key_by_value(key) setattr(self, key, getattr(self, key) + value) # 115增幅强化品级固定史诗 @@ -788,92 +789,26 @@ class Character: suit = self.calc_suits() # 部位效果计算 self.calc_equs() - - # print(suit) - # effects = get_equipment(self.equVersion).funs - # for effect in equ_effect: - # func = effects.equ_func_list.get(str(effect), None) - # if func is not None: - # func(self) - # for effect in suits_effect: - # func = effects.suit_func_list.get(str(effect), None) - # if func is not None: - # func(self) - # 徽章计算 - # 附魔计算 - - # 技能计算 skillInfos = [] - for i in self.skills: - if i.damage and i.lv > 0: - for mode in i.mode: - temp = i.skillInfo(mode) - skillInfos.append( - { - 'name': i.name, - 'icon': i.icon, - 'lv': i.lv, - 'data': temp[0], - 'ratio': temp[1], - 'cd': temp[2], - 'mode': mode, - } - ) - ratios = self.calc_damage_ration() - ratio_char_skill = ratios[0] * ratios[1] * ratios[2] * ratios[3] * ratios[4] * ratios[5] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000 - ratuio_equ_skill = ratios[0] * ratios[1] * ratios[3] * ratios[4] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000 - for i in skillInfos: - i['damage'] = ratio_char_skill * i['data'] * i['ratio'] / 100 - for i in self.equ_effect: - skillInfos.append( - { - 'name': i.name, - 'icon': i.icon, - 'lv': 0, - 'data': i.data, - 'ratio': 10.0, - 'cd': i.cd, - 'damage': ratuio_equ_skill * i.data * 10 * self.EquEffectRatio / 100, - 'mode':'' - } - ) - attrs = [] - if self.输出类型 == '物理百分比': - attrs.extend(['STR', 'AtkP']) - if self.输出类型 == '魔法百分比': - attrs.extend(['INT', 'AtkM']) - if self.输出类型 == '物理固伤': - attrs.extend(['STR', 'AtkI']) - if self.输出类型 == '魔法固伤': - attrs.extend(['INT', 'AtkI']) - info = [] - attrs.extend(['Attack', 'AttackP', 'SkillAttack','EquEffectRatio', 'ElementDB']) - for attr in attrs: - temp = getattr(CharacterInfo, attr) - if attr.startswith('Atk'): - info.append({'name': temp.name, 'value': temp.value(getattr(self, attr) * getattr(self, f'P{attr}'))}) - pass - else: - value = getattr(self, attr) - if attr == 'SkillAttack': - value *= (self.jade_effect.SkillAttack + 1) - if attr == 'AttackP': - value += self.jade_effect.AttackP - info.append( - { - 'name': temp.name, - 'value': temp.value(value), - } - ) - pass + if self.buffer: + skillInfos = self.calc_buffer_skills() + info = self.get_buffer_info() + pass + else: + skillInfos = self.calc_carry_skills() + info = self.get_carry_info() return { 'uuid': uuid1().hex, 'skills': skillInfos, 'info': info, 'suits': suit, + 'buffer':self.buffer } # 技能影响角色的属性,如属强、抗性等 + + # region 输出计算项 + def calc_damage_ration(self): """计算属性系数""" # 计算最终属性 @@ -910,6 +845,130 @@ class Character: ratio_9 = 1.0 * self.ElementIncrease return (ratio_0, ratio_1, ratio_2, ratio_3, ratio_4, ratio_5, ratio_6, ratio_7, ratio_8, ratio_9) + def calc_carry_skills(self): + skillInfos = [] + for i in self.skills: + if i.damage and i.lv > 0: + for mode in i.mode: + temp = i.skillInfo(mode) + skillInfos.append( + { + 'name': i.name, + 'icon': i.icon, + 'lv': i.lv, + 'data': temp[0], + 'ratio': temp[1], + 'cd': temp[2], + 'mode': mode, + } + ) + ratios = self.calc_damage_ration() + ratio_char_skill = ratios[0] * ratios[1] * ratios[2] * ratios[3] * ratios[4] * ratios[5] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000 + ratuio_equ_skill = ratios[0] * ratios[1] * ratios[3] * ratios[4] * ratios[6] * ratios[7] * ratios[8] * ratios[9] / 1000 + for i in skillInfos: + i['damage'] = ratio_char_skill * i['data'] * i['ratio'] / 100 + for i in self.equ_effect: + skillInfos.append( + { + 'name': i.name, + 'icon': i.icon, + 'lv': 0, + 'data': i.data, + 'ratio': 10.0, + 'cd': i.cd, + 'damage': ratuio_equ_skill * i.data * 10 * self.EquEffectRatio / 100, + 'mode':'' + } + ) + return skillInfos + + def get_carry_info(self): + attrs = [] + if self.输出类型 == '物理百分比': + attrs.extend(['STR', 'AtkP']) + if self.输出类型 == '魔法百分比': + attrs.extend(['INT', 'AtkM']) + if self.输出类型 == '物理固伤': + attrs.extend(['STR', 'AtkI']) + if self.输出类型 == '魔法固伤': + attrs.extend(['INT', 'AtkI']) + info = [] + attrs.extend(['Attack', 'AttackP', 'SkillAttack','EquEffectRatio', 'ElementDB']) + for attr in attrs: + temp = getattr(CharacterInfo, attr) + if attr.startswith('Atk'): + info.append({'name': temp.name, 'value': temp.value(getattr(self, attr) * getattr(self, f'P{attr}'))}) + pass + else: + value = getattr(self, attr) + if attr == 'SkillAttack': + value *= (self.jade_effect.SkillAttack + 1) + if attr == 'AttackP': + value += self.jade_effect.AttackP + info.append( + { + 'name': temp.name, + 'value': temp.value(value), + } + ) + pass + return info + # endregion + + #region 辅助计算项 + + def calc_buffer_skills(self): + skillInfos = [] + # 适用属性 + main = getattr(self, get_key_by_value(self.适用属性)) + buffer_power = self.Buffer * self.BufferP + # buff系数 + buff_ratio_new = (((main+ 4350) / 665 + 1) * (buffer_power + 3500)/26395) if buffer_power > 0 else 0 + buff_ratio_old = main / 665 + 1 + # 觉醒系数 + awake_ratio_new = ((main + 5250) / 750 + 1) *(buffer_power + 5000) * 0.000025 if buffer_power > 0 else 0 + awake_ratio_old = main / 750 + 1 + for i in self.skills: + if i.buffer and i.lv > 0: + info = i.skillInfo() + # 奶自己的面板加成 + value = info[0] + # buff技能 + if i.buffType == 'buff': + value1 = (info[1][0] + info[1][2])*info[1][1]*buff_ratio_old + info[1][0]*buff_ratio_new + value2 = (info[2][0] + info[2][2])*info[2][1]*buff_ratio_old + info[2][0]*buff_ratio_new + # 觉醒技能 + elif i.buffType == 'awake': + value1 = (info[1][0] + info[1][2])*info[1][1]*awake_ratio_old + info[1][0]*awake_ratio_new + value2 = (info[2][0] + info[2][2])*info[2][1]*awake_ratio_old + info[2][0]*awake_ratio_new + else: + value1 = (info[1][0] + info[1][2])*info[1][1] + value2 = (info[2][0] + info[2][2])*info[2][1] + value3 = info[3] + value4 = info[4] + skillInfos.append({ + "name":i.name, + "cd":value4, + "icon":i.icon, + "lv": i.lv, + # 对自己的加成 三攻 力智 伤害直接加成 + "buff":[value, value1, value2, value3], + }) + return skillInfos + + def get_buffer_info(self): + attrs = [get_key_by_value(self.适用属性),'Buffer','BufferP'] + info = [] + for attr in attrs: + temp = getattr(CharacterInfo, attr) + value = getattr(self, attr) + info.append({ + 'name': temp.name, + 'value': temp.value(value), + }) + return info + # endregion + # endregion diff --git a/backend/core/basic/formula.py b/backend/core/basic/formula.py index ae7eaf42..17f2cf97 100644 --- a/backend/core/basic/formula.py +++ b/backend/core/basic/formula.py @@ -311,17 +311,16 @@ def 武器MP系数(武器类型, 输出类型) -> float: 品级加分 = {'稀有': 5, '神器': 8, '勇者': 11, '传说': 14, '史诗': 17, '智慧产物': 17, '神话': 18} -def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类): - return round((20 + 甲类系数[甲类] * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) - - -def 辅助精通计算(装备等级, 品质, 强化等级, 部位, 属性): - if 属性 == '智力': - return round((8 + 2.4 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) - if 属性 == '体力': - return round((4 + 1.6 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) - if 属性 == '精神': - return round((8 + 0.8 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) +def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',carry=True): + if carry: + return round((20 + 甲类系数[甲类] * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) + else: + if 属性 == '智力': + return round((8 + 2.4 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) + if 属性 == '体力': + return round((4 + 1.6 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) + if 属性 == '精神': + return round((8 + 0.8 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) # endregion diff --git a/backend/core/basic/property.py b/backend/core/basic/property.py index a90b531d..ebb94e3f 100644 --- a/backend/core/basic/property.py +++ b/backend/core/basic/property.py @@ -54,6 +54,11 @@ class CharacterInfo(enum.Enum): AttackP = '攻击强化%', '/ui/UI_ProfileIcon_015.png', lambda x: f'{format(x * 100 - 100, ".1f")}%' """攻击强化%""" + Buffer = '增益量','', lambda x: f'{format(x, ".0f")}' + + BufferP = '增益量%', '', lambda x: f'{format(x * 100 - 100, ".1f")}%' + """攻击强化%""" + EquEffectRatio = '特效伤害', '/ui/UI_ProfileIcon_016.png', lambda x: f'{format(x * 100 - 100, ".1f")}%' # HitP : float diff --git a/backend/core/basic/skill.py b/backend/core/basic/skill.py index 62120fa9..7e7a6632 100644 --- a/backend/core/basic/skill.py +++ b/backend/core/basic/skill.py @@ -64,6 +64,8 @@ class Skill: """ mode : list[str] = [''] """技能模式""" + buffer: bool = False + """是否是增益技能""" def __init__(self, char): self.char = char @@ -154,6 +156,8 @@ class ActiveSkill(Skill): """技能类型 active主动 passive被动""" damage: bool = True """是否是伤害技能""" + buffer: bool = False + """是否是buff技能""" def __init__(self, char): super().__init__(char) @@ -215,3 +219,98 @@ class PassiveSkill(Skill): """技能类型 active主动 passive被动""" damage: bool = False """是否是伤害技能""" + buffer: bool = False + """是否是buff技能""" + +class BuffSkill(Skill): + buffer: bool = True + """是否是增益技能""" + damage: bool = False + """是否是伤害技能""" + buffType = 'normal' + """增益类型 normal普通 buff 主BUFF awake 觉醒技能""" + + INT: list[float] = [] + """智力""" + STR: list[float] = [] + """力量""" + Spirit: list[float] = [] + """精神""" + Vitality: list[float] = [] + """体力""" + """主要属性""" + + ATK : list[float] = [] + """三攻加成""" + ATKRatio: float = 1 + """三攻*算倍率""" + ATKPLUS : float = 0 + """三攻加算加成""" + + STRINT : list[float] = [] + """力量智力加成""" + STRINTRatio: float = 1 + """力量智力*算倍率""" + STRINTPLUS : float = 0 + """力量智力加算加成""" + + CarryRatio: list[float] = [] + """对C的额外增伤倍率""" + + def getSkillCD(self): + return '-' + + def skillInfo(self, mode: str | None = None): + """ + Returns: + tuple: (奶自己的面板加成,[三攻,三攻倍率,三攻额外加成],[力智,力智倍率,力智额外加成],对C增伤倍率,cd) + """ + lv = self.lv + value = 0 + value1 = 0 if lv > len(self.ATK) else self.ATK[lv] + value2 = 0 if lv > len(self.STRINT) else self.STRINT[lv] + value3 = 0 if lv > len(self.CarryRatio) else self.CarryRatio[lv] + if self.char.适用属性 == '智力': + value = 0 if lv > len(self.INT) else self.INT[lv] + elif self.char.适用属性 == '力量': + value = 0 if lv > len(self.STR) else self.STR[lv] + elif self.char.适用属性 == '体力': + value = 0 if lv > len(self.Vitality) else self.Vitality[lv] + elif self.char.适用属性 == '精神': + value = 0 if lv > len(self.Spirit) else self.Spirit[lv] + return value,[value1,self.ATKRatio,self.ATKPLUS],[value2,self.STRINTRatio,self.STRINTPLUS],value3,self.getSkillCD() + +class PassiveBufferSkill(BuffSkill): + type: str = 'passive' + + +class ActiveBufferSkill(BuffSkill): + type: str = 'active' + + + def getWeaponCDRatio(self): + weapon = self.char.charEquipInfo['武器'].equInfo + if weapon is None or '传世武器' in weapon.categorize: + return 1 + else: + return 武器冷却惩罚(weapon.itemDetailType,self.char.输出类型) + + def getQuickCDRatio(self): + return 1.0 + cdr = 0 + if 15 <= self.learnLv <= 30: + cdr = 0.01 + elif 35<= self.learnLv <= 70: + cdr = 0.02 + elif 75<= self.learnLv <= 100: + cdr = 0.05 + if self.learnLv in [50,85,100]: + cdr = 0.05 + return 1 - cdr + + def getSkillCD(self): + return max(0,round(max( + self.cd * 0.3, + self.cd * self.cdReduce / self.cdRecover * self.getWeaponCDRatio() * self.getQuickCDRatio(),1) + - self.cdCut,2 + )) diff --git a/backend/core/character/GF/priest_female/crusader_female.py b/backend/core/character/GF/priest_female/crusader_female.py new file mode 100644 index 00000000..b966af9c --- /dev/null +++ b/backend/core/character/GF/priest_female/crusader_female.py @@ -0,0 +1,646 @@ +#0c1b401bb09241570d364420b3ba3fd7 +from core.basic.skill import PassiveBufferSkill,ActiveBufferSkill,ActiveSkill,PassiveSkill +from core.basic.character import Character + +# 圣光灌注 빛의 은총 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/8f73f243041c2d27739fe7696f02bf9b?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill0(PassiveBufferSkill): + name = "圣光灌注" + learnLv = 1 + masterLv = 1 + maxLv = 1 + position = 3 #TODO + rangeLv = 1 + + CarryRatio = [0, 4.5 * 3]# noqa: E501 + + +# 启示 : 惩戒 계시 : 크루세이드 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/42c82812f86ff6704ae9952a2e6093a4?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill1(PassiveSkill): + name = "启示 : 惩戒" + learnLv = 1 + masterLv = 1 + maxLv = 1 + position = 4 #TODO + rangeLv = 2 + icon = "$char/启示:惩戒" + + data0 = [0, 15]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 5]# noqa: E501 + hit1 = 1 #TODO + + +# 治愈祈祷 치유의 기도 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/0969cd4054d93da07708108c0cc1c4b5?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill2(ActiveBufferSkill): + name = "治愈祈祷" + learnLv = 5 + masterLv = 60 + maxLv = 70 + position = 4 #TODO + rangeLv = 3 + cd = 10 + mp = [15, 154] + buffer = True + + data0 = [0, 468, 1170, 1824, 2433, 3135, 3743, 4444, 5052, 5707, 6363, 7018, 7672, 8328, 8983, 9637, 10292, 10948, 11603, 12257, 12912, 13568, 14222, 14877, 15533, 16140, 16842, 17451, 18105, 18807, 19929, 21099, 21894, 22738, 23531, 24375, 25216, 26059, 26901, 27742, 28586, 29427, 30223, 31064, 31907, 32749, 33590, 34434, 35275, 36117, 36912, 37755, 38597, 39438, 40282, 41123, 41965, 42808, 43603, 44445, 45286, 46130, 46971, 47813, 48656, 49497, 50293, 51134, 51978, 52819, 53661]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150]# noqa: E501 + hit1 = 1 #TODO + + data2 = [0, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900]# noqa: E501 + hit2 = 1 #TODO + +# 净化 큐어 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/4655101518604f874721b3cc249aae10?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill3(ActiveBufferSkill): + name = "净化" + learnLv = 10 + masterLv = 1 + maxLv = 11 + position = 4 #TODO + rangeLv = 5 + cd = 15 + mp = [22, 238] + buffer = True + + data0 = [0, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530]# noqa: E501 + hit1 = 1 #TODO + +# 圣洁之光 홀리 플래쉬 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/4224f9b0b8c7c903e9a1e0f9d9f6d04d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill4(ActiveBufferSkill): + name = "圣洁之光" + learnLv = 15 + masterLv = 60 + maxLv = 70 + position = 8 #TODO + rangeLv = 2 + cd = 4 + mp = [27, 294] + + data0 = [0, 4847, 5338, 5829, 6321, 6814, 7305, 7796, 8288, 8779, 9272, 9763, 10254, 10746, 11239, 11730, 12221, 12713, 13204, 13697, 14188, 14680, 15171, 15662, 16155, 16646, 17138, 17629, 18122, 18613, 19105, 19596, 20087, 20580, 21072, 21563, 22054, 22547, 23038, 23530, 24021, 24512, 25005, 25497, 25988, 26479, 26972, 27464, 27955, 28446, 28937, 29430, 29922, 30413, 30904, 31396, 31889, 32380, 32871, 33363, 33856, 34347, 34838, 35329, 35821, 36314, 36805, 37296, 37788, 38281, 38772]# noqa: E501 + hit0 = 1 #TODO + +# 启示 : 圣歌 계시 : 아리아 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/78bd107acd474518b606be1e4fd38239?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill5(PassiveBufferSkill): + name = "启示 : 圣歌" + learnLv = 15 + masterLv = 60 + maxLv = 70 + position = 2 #TODO + rangeLv = 3 + icon = "$char/启示:圣歌" + + INT = [0, 86, 90, 94, 98, 102, 107, 112, 117, 123, 129, 135, 141, 147, 154, 161, 169, 177, 185, 193, 201, 210, 219, 229, 238, 248, 258, 269, 279, 290, 301, 313, 325, 337, 349, 361, 375, 388, 401, 415, 429, 443, 457, 473, 487, 503, 519, 535, 551, 567, 584, 598, 614, 630, 646, 662, 677, 693, 709, 725, 741, 756, 772, 788, 804, 820, 835, 851, 867, 883, 899]# noqa: E501 + + associate = [{"data":INT,"type":"$+INT","ratio":1}] + +# 十字架精通 십자가 마스터리 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/9cb6f9ed646fa87f9b7680a42ce83d1a?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill6(PassiveSkill): + name = "十字架精通" + learnLv = 20 + masterLv = 10 + maxLv = 20 + position = 0 #TODO + rangeLv = 3 + + data0 = [0, 6.5, 8, 9.5, 11, 12.5, 14, 15.5, 17, 18.5, 20, 21.5, 23, 24.5, 26, 27.5, 29, 30.5, 32, 33.5, 35]# noqa: E501 + associate = [{"data": data0, "type": "$*PATKI"}] + + data1 = [0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]# noqa: E501 + + data2 = [0, 15.5, 16, 16.5, 17, 17.5, 18, 18.5, 19, 19.5, 20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5, 24, 24.5, 25]# noqa: E501 + +# 胜利之矛 승리의 창 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/3d8f3d438405d79f8d3ed68072674d1e?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill7(ActiveSkill): + name = "胜利之矛" + learnLv = 20 + masterLv = 60 + maxLv = 70 + position = 6 #TODO + rangeLv = 2 + cd = 7 + mp = [32, 343] + + data0 = [0, 3764, 4145, 4527, 4908, 5289, 5673, 6054, 6436, 6817, 7198, 7580, 7963, 8345, 8726, 9109, 9489, 9872, 10254, 10635, 11018, 11399, 11779, 12164, 12544, 12927, 13308, 13690, 14071, 14455, 14836, 15217, 15599, 15980, 16364, 16745, 17126, 17508, 17889, 18272, 18654, 19037, 19417, 19798, 20181, 20563, 20946, 21327, 21707, 22090, 22471, 22855, 23236, 23618, 23999, 24380, 24762, 25145, 25527, 25908, 26291, 26671, 27054, 27436, 27817, 28200, 28580, 28961, 29345, 29726, 30109]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 5644, 6219, 6790, 7363, 7936, 8509, 9081, 9653, 10226, 10800, 11371, 11944, 12517, 13090, 13663, 14234, 14809, 15382, 15953, 16526, 17100, 17672, 18244, 18817, 19390, 19963, 20534, 21107, 21682, 22253, 22826, 23401, 23972, 24545, 25116, 25690, 26263, 26835, 27407, 27982, 28553, 29126, 29699, 30272, 30845, 31416, 31991, 32564, 33135, 33708, 34282, 34853, 35426, 35999, 36572, 37145, 37716, 38289, 38864, 39435, 40008, 40582, 41154, 41727, 42298, 42872, 43445, 44016, 44589, 45164]# noqa: E501 + hit1 = 1 #TODO + +# 守护祝福 수호의 축복 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/ade01c1d6afc8a05055225045e89fe49?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill8(ActiveBufferSkill): + name = "守护祝福" + learnLv = 20 + masterLv = 10 + maxLv = 20 + position = 4 #TODO + rangeLv = 3 + cd = 10 + mp = [35, 392] + + data0 = [0, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 383, 386, 389, 392, 395, 398, 401, 404, 407, 410, 413, 416, 419, 422, 425, 428, 431, 434, 437, 440]# noqa: E501 + hit1 = 1 #TODO + + data2 = [0, 11080, 11130, 11180, 11230, 11280, 11330, 11380, 11430, 11480, 11530, 11580, 11630, 11680, 11730, 11780, 11830, 11880, 11930, 11980, 12030]# noqa: E501 + hit2 = 1 #TODO + + data3 = [0, 94, 98, 102, 107, 112, 116, 122, 127, 131, 137, 141, 147, 153, 158, 163, 169, 175, 181, 187, 192]# noqa: E501 + hit3 = 1 #TODO + + data4 = [0, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900]# noqa: E501 + hit4 = 1 #TODO + +# 洗礼之光 세례의 빛 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/ff171dc487807bb9aa28900ca9a46b41?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill9(ActiveSkill): + name = "洗礼之光" + learnLv = 25 + masterLv = 60 + maxLv = 70 + position = 8 #TODO + rangeLv = 2 + cd = 7 + mp = [32, 343] + + data0 = [0, 9778, 10771, 11762, 12755, 13746, 14739, 15732, 16723, 17716, 18707, 19700, 20692, 21684, 22676, 23667, 24660, 25653, 26644, 27637, 28628, 29621, 30614, 31605, 32598, 33589, 34581, 35574, 36565, 37558, 38549, 39542, 40535, 41526, 42519, 43510, 44503, 45495, 46487, 47479, 48470, 49463, 50456, 51447, 52440, 53429, 54424, 55417, 56406, 57401, 58390, 59383, 60374, 61367, 62359, 63351, 64343, 65334, 66327, 67320, 68311, 69304, 70295, 71288, 72281, 73272, 74265, 75256, 76248, 77241, 78232]# noqa: E501 + hit0 = 1 #TODO + +# 圣光守护 신성한 빛 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/547ab2b2bd860d3e37355a9cfbc1077c?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill10(ActiveBufferSkill): + name = "圣光守护" + learnLv = 25 + masterLv = 50 + maxLv = 60 + position = 5 #TODO + rangeLv = 3 + cd = 20 + mp = [15, 154] + buffer = True + + data0 = [0, 19695, 22833, 25973, 29113, 32252, 35392, 38532, 41670, 44810, 47950, 51090, 54230, 57368, 60508, 63648, 66788, 69928, 73066, 76206, 79346, 82486, 85626, 88766, 91904, 95044, 98184, 101323, 104463, 107602, 110741, 113881, 117021, 120161, 123299, 126439, 129579, 132719, 135859, 138999, 142137, 145277, 148417, 151557, 154697, 157835, 160975, 164115, 167255, 170394, 173533, 176673, 179812, 182952, 186092, 189230, 192370, 195510, 198650, 201790, 204930]# noqa: E501 + hit0 = 1 #TODO + +# 勇气祝福 용맹의 축복 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/8c2379737c5acc935c1731f67f607655?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill11(ActiveBufferSkill): + name = "勇气祝福" + learnLv = 30 + masterLv = 10 + maxLv = 40 + position = 4 #TODO + rangeLv = 3 + cd = 10 + mp = [35, 399] + buffer = True + buffType = "buff" + + # 三攻 + ATK = [0, 39, 41, 43, 44, 45, 47, 49, 50, 52, 53, 54, 56, 58, 59, 61, 62, 63, 65, 67, 69, 70, 71, 73, 75, 77, 79, 80, 81, 83, 85, 86, 88, 89, 90, 92, 94, 95, 97, 98, 100]# noqa: E501 + + # 力智 + STRINT = [0, 154, 164, 176, 186, 197, 206, 216, 227, 237, 249, 259, 269, 280, 290, 302, 311, 321, 332, 342, 353, 363, 374, 385, 395, 406, 415, 425, 437, 447, 458, 468, 478, 489, 500, 511, 520, 530, 541, 551, 563]# noqa: E501 +# 圣光烬盾 세인트 월 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/5dc7008b12a459325b548b0715c6b73c?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill12(ActiveSkill): + name = "圣光烬盾" + learnLv = 30 + masterLv = 60 + maxLv = 70 + position = 8 #TODO + rangeLv = 2 + cd = 10 + mp = [91, 763] + + data0 = [0, 4174, 4595, 5018, 5443, 5867, 6288, 6712, 7137, 7560, 7982, 8407, 8830, 9253, 9676, 10100, 10523, 10946, 11371, 11793, 12216, 12640, 13065, 13488, 13909, 14333, 14758, 15181, 15603, 16028, 16451, 16874, 17296, 17721, 18144, 18567, 18992, 19414, 19837, 20261, 20686, 21107, 21531, 21954, 22379, 22802, 23224, 23649, 24072, 24495, 24917, 25342, 25765, 26189, 26610, 27035, 27458, 27882, 28307, 28728, 29152, 29577, 30000, 30422, 30845, 31270, 31693, 32115, 32538, 32963, 33386]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 9736, 10725, 11713, 12701, 13688, 14678, 15664, 16653, 17641, 18627, 19616, 20602, 21592, 22579, 23567, 24555, 25544, 26530, 27520, 28507, 29495, 30483, 31472, 32458, 33446, 34435, 35421, 36411, 37397, 38386, 39374, 40361, 41349, 42339, 43325, 44314, 45302, 46289, 47277, 48266, 49252, 50240, 51230, 52216, 53205, 54191, 55180, 56168, 57156, 58143, 59133, 60119, 61108, 62096, 63084, 64071, 65059, 66047, 67034, 68024, 69010, 69999, 70987, 71975, 72962, 73952, 74938, 75927, 76913, 77903]# noqa: E501 + hit1 = 1 #TODO + +# 神光惩戒 샤인 크로스 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/7e904ea3d2a9faa054604e55120a9268?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill13(ActiveSkill): + name = "神光惩戒" + learnLv = 30 + masterLv = 60 + maxLv = 70 + position = 6 #TODO + rangeLv = 2 + cd = 10 + mp = [400, 1000] + + data0 = [0, 2708, 2984, 3257, 3531, 3806, 4082, 4357, 4633, 4905, 5180, 5455, 5731, 6006, 6278, 6554, 6829, 7104, 7380, 7655, 7927, 8203, 8478, 8753, 9029, 9302, 9576, 9852, 10127, 10402, 10676, 10951, 11225, 11501, 11776, 12050, 12325, 12600, 12876, 13150, 13423, 13699, 13974, 14249, 14525, 14797, 15072, 15348, 15623, 15898, 16174, 16446, 16721, 16997, 17272, 17547, 17819, 18095, 18370, 18646, 18921, 19195, 19468, 19744, 20019, 20295, 20568, 20844, 21117, 21393, 21668]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 4063, 4473, 4886, 5299, 5712, 6122, 6535, 6948, 7359, 7771, 8184, 8597, 9008, 9420, 9833, 10244, 10657, 11069, 11482, 11893, 12306, 12718, 13129, 13542, 13955, 14367, 14778, 15191, 15604, 16014, 16427, 16840, 17250, 17663, 18076, 18489, 18899, 19312, 19725, 20137, 20548, 20961, 21374, 21786, 22199, 22610, 23021, 23435, 23848, 24259, 24670, 25084, 25497, 25906, 26319, 26733, 27142, 27555, 27968, 28382, 28791, 29204, 29617, 30029, 30440, 30853, 31266, 31678, 32089, 32502]# noqa: E501 + hit1 = 1 #TODO + + data2 = [0, 6769, 7458, 8143, 8832, 9518, 10205, 10892, 11579, 12266, 12954, 13639, 14328, 15013, 15701, 16390, 17075, 17763, 18448, 19137, 19822, 20511, 21197, 21884, 22571, 23258, 23945, 24631, 25318, 26007, 26692, 27380, 28065, 28754, 29439, 30127, 30814, 31501, 32188, 32875, 33561, 34250, 34935, 35624, 36309, 36997, 37682, 38371, 39059, 39744, 40433, 41118, 41806, 42493, 43180, 43867, 44554, 45240, 45927, 46614, 47303, 47988, 48676, 49361, 50050, 50735, 51423, 52110, 52797, 53484, 54171]# noqa: E501 + hit2 = 1 #TODO + + +# 勇气圣歌 용맹의 아리아 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/506e7ed77d517419a6e1c437a2cedb17?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill14(ActiveBufferSkill): + name = "勇气圣歌" + learnLv = 35 + masterLv = 60 + maxLv = 70 + position = 2 #TODO + rangeLv = 3 + cube = 1 + cd = 40 + mp = [150, 1260] + buffer = True + + data0 = [0, 2069, 2399, 2727, 3059, 3389, 3717, 4049, 4379, 4707, 5039, 5367, 5697, 6029, 6357, 6687, 7019, 7347, 7677, 8007, 8337, 8667, 8997, 9327, 9656, 9987, 10317, 10646, 10977, 11306, 11636, 11967, 12296, 12626, 12957, 13286, 13616, 13946, 14276, 14606, 14936, 15266, 15594, 15926, 16256, 16584, 16916, 17244, 17574, 17906, 18234, 18564, 18893, 19224, 19554, 19883, 20214, 20544, 20873, 21204, 21533, 21863, 22194, 22523, 22853, 23183, 23513, 23843, 24173, 24503, 24831]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]# noqa: E501 + hit0 = 1 #TODO + + def getSkillDate(self): + prep = self.char.GetSkillByName("勇气祝福").getSkillDate() + ratio = self.data1[self.lv] / 100 + return prep[0] * ratio, [prep[1][0]*ratio,prep[1][1],prep[1][2]*ratio], [prep[2][0]*ratio,prep[2][1],prep[2][2]*ratio],0,self.getSkillCD() + +# 神圣锁环 홀리 써클릿 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/8ee0099656df08a0b39225f8a21d514b?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill15(ActiveSkill): + name = "神圣锁环" + learnLv = 35 + masterLv = 60 + maxLv = 70 + position = 8 #TODO + rangeLv = 2 + cube = 1 + cd = 18 + mp = [150, 1260] + + data0 = [0, 368, 405, 443, 479, 516, 555, 593, 629, 666, 705, 741, 779, 816, 852, 891, 929, 965, 1002, 1041, 1079, 1115, 1152, 1191, 1227, 1265, 1302, 1338, 1377, 1415, 1451, 1488, 1527, 1565, 1601, 1638, 1676, 1713, 1751, 1788, 1824, 1863, 1901, 1937, 1974, 2012, 2049, 2087, 2124, 2160, 2199, 2237, 2274, 2310, 2348, 2387, 2423, 2460, 2498, 2535, 2573, 2610, 2646, 2685, 2723, 2760, 2796, 2834, 2873, 2909, 2946]# noqa: E501 + hit0 = 13 + + data2 = [0, 11174, 12308, 13440, 14574, 15707, 16842, 17975, 19109, 20243, 21375, 22509, 23642, 24777, 25910, 27044, 28178, 29310, 30444, 31578, 32712, 33845, 34979, 36113, 37245, 38379, 39513, 40647, 41780, 42914, 44048, 45180, 46316, 47448, 48582, 49715, 50849, 51983, 53115, 54251, 55383, 56517, 57650, 58784, 59918, 61052, 62186, 63318, 64452, 65585, 66719, 67853, 68987, 70121, 71253, 72387, 73520, 74654, 75789, 76922, 78056, 79188, 80322, 81455, 82590, 83724, 84857, 85991, 87123, 88257, 89390]# noqa: E501 + hit2 = 1 #TODO + +# 神之教诲 에디피케이션 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/9bff7f2559e003766fee2853dca00631?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill16(ActiveBufferSkill): + name = "神之教诲" + learnLv = 35 + masterLv = 1 + maxLv = 1 + position = 5 #TODO + rangeLv = 2 + cube = 1 + cd = 20 + mp = [630, 630] + + +# 忏悔之雷 정화의 번개 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/da6e37c1e3f0e8867f70007d89c239ff?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill17(ActiveSkill): + name = "忏悔之雷" + learnLv = 40 + masterLv = 60 + maxLv = 70 + position = 8 #TODO + rangeLv = 2 + cube = 1 + cd = 18 + mp = [160, 1344] + + data0 = [0, 2289, 2523, 2753, 2987, 3219, 3452, 3684, 3915, 4148, 4380, 4613, 4845, 5076, 5309, 5543, 5775, 6008, 6239, 6471, 6704, 6936, 7169, 7400, 7632, 7865, 8099, 8331, 8562, 8795, 9027, 9260, 9492, 9723, 9956, 10188, 10421, 10655, 10886, 11118, 11351, 11583, 11816, 12047, 12279, 12512, 12744, 12977, 13208, 13442, 13674, 13907, 14139, 14370, 14603, 14835, 15068, 15300, 15531, 15764, 15998, 16230, 16463, 16694, 16926, 17159, 17391, 17624, 17855, 18087, 18320]# noqa: E501 + hit0 = 5 + + data1 = [0, 11450, 12612, 13773, 14934, 16097, 17258, 18420, 19581, 20744, 21905, 23066, 24228, 25389, 26552, 27713, 28875, 30036, 31197, 32360, 33521, 34683, 35844, 37007, 38168, 39330, 40491, 41652, 42815, 43976, 45138, 46299, 47462, 48623, 49784, 50946, 52107, 53270, 54431, 55593, 56754, 57917, 59078, 60239, 61401, 62562, 63725, 64886, 66048, 67209, 68370, 69533, 70694, 71856, 73017, 74180, 75341, 76502, 77664, 78825, 79988, 81149, 82311, 83472, 84635, 85796, 86957, 88119, 89280, 90443, 91604]# noqa: E501 + hit1 = 1 #TODO + +# 复苏之光 부활 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/a6c8f69107f8c4f5d1a0c7a57d000290?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill18(ActiveSkill): + name = "复苏之光" + learnLv = 40 + masterLv = 1 + maxLv = 11 + position = 5 #TODO + rangeLv = 2 + cube = 2 + mp = [200, 1680] + + def getSkillCD(self): + return 0 + +# 神光十字 그랜드 크로스 크래쉬 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/3829c15bf5f520c13998a3479ba0ce7b?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill19(ActiveBufferSkill): + name = "神光十字" + learnLv = 45 + masterLv = 60 + maxLv = 70 + position = 6 #TODO + rangeLv = 2 + cube = 2 + cd = 45 + mp = [350, 2940] + damage = True + + data0 = [0, 18954, 20876, 22800, 24722, 26646, 28568, 30491, 32414, 34337, 36260, 38183, 40104, 42029, 43950, 45875, 47796, 49719, 51642, 53565, 55488, 57411, 59333, 61257, 63179, 65103, 67025, 68949, 70871, 72794, 74717, 76640, 78561, 80486, 82407, 84332, 86253, 88178, 90099, 92022, 93945, 95868, 97791, 99714, 101636, 103560, 105483, 107406, 109329, 111251, 113175, 115097, 117021, 118943, 120867, 122789, 124712, 126635, 128558, 130479, 132404, 134325, 136250, 138171, 140096, 142017, 143940, 145863, 147786, 149709, 151632]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 28431, 31316, 34199, 37083, 39968, 42852, 45737, 48620, 51506, 54389, 57273, 60158, 63042, 65927, 68810, 71696, 74580, 77463, 80348, 83234, 86117, 89001, 91884, 94770, 97655, 100538, 103422, 106307, 109191, 112076, 114960, 117845, 120728, 123612, 126498, 129381, 132266, 135149, 138035, 140919, 143802, 146687, 149573, 152456, 155340, 158225, 161109, 163994, 166877, 169763, 172646, 175530, 178415, 181299, 184184, 187067, 189951, 192837, 195720, 198605, 201491, 204374, 207258, 210141, 213027, 215912, 218795, 221679, 224564, 227448]# noqa: E501 + hit1 = 1 #TODO + + STRINT = [0, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, 378, 384, 390, 396, 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480, 486, 492]# noqa: E501 + +# 新生圣歌 재생의 아리아 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/03bb5314ffd41e9458d67ef924fef38f?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill20(ActiveBufferSkill): + name = "新生圣歌" + learnLv = 45 + masterLv = 1 + maxLv = 11 + position = 2 #TODO + rangeLv = 2 + cube = 2 + cd = 40 + mp = [350, 2940] + + +# 虔诚信念 신실한 열정 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/1dad88963abdc96b091fcab185a8820d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill21(ActiveBufferSkill): + name = "虔诚信念" + learnLv = 48 + masterLv = 40 + maxLv = 50 + position = 7 #TODO + rangeLv = 3 + + STRINT = [0, 14, 37, 59, 82, 104, 127, 149, 172, 194, 217, 239, 262, 284, 307, 329, 352, 374, 397, 419, 442, 464, 487, 509, 532, 554, 577, 599, 622, 644, 667, 689, 712, 734, 757, 779, 802, 824, 847, 869, 892, 914, 937, 959, 982, 1004, 1027, 1049, 1072, 1094, 1117]# noqa: E501 + hit0 = 1 #TODO + + data0 = [0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31.5, 33, 34.5, 36, 37.5, 39, 40.5, 42, 43.5, 45, 46.5, 48, 49.5, 51, 52.5, 54, 55.5, 57, 58.5, 60, 61.5, 63, 64.5, 66, 67.5, 69, 70.5, 72, 73.5, 75]# noqa: E501 + + INT = STRINT + + associate = [ + {"data":INT,"type":"$+INT","ratio":1} + ] + + +# 圣光天启 크럭스 오브 빅토리아 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/bb34e8854a93fd250347a1c64119f7ab?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill22(ActiveBufferSkill): + name = "圣光天启" + learnLv = 50 + masterLv = 40 + maxLv = 50 + position = 6 #TODO + rangeLv = 5 + cube = 5 + cd = 170 + mp = [1200, 10080] + buffType = 'awake' + + STRINT = [0, 43, 57, 74, 91, 111, 131, 153, 176, 201, 228, 255, 284, 315, 346, 379, 414, 449, 487, 526, 567, 608, 651, 696, 741, 789, 838, 888, 939, 993, 1047, 1103, 1160, 1219, 1278, 1340, 1403, 1467, 1533, 1600, 1668, 1736, 1804, 1872, 1940, 2008, 2076, 2144, 2212, 2280, 2348]# noqa: E501 + + data0 = [0, 2277, 2805, 3334, 3862, 4390, 4918, 5447, 5975, 6503, 7031, 7560, 8088, 8616, 9145, 9673, 10201, 10729, 11259, 11787, 12315, 12843, 13372, 13900, 14428, 14957, 15485, 16013, 16541, 17070, 17598, 18126, 18654, 19183, 19711, 20239, 20767, 21296, 21824, 22352, 22881, 23409, 23937, 24465, 24994, 25522, 26050, 26578, 27107, 27635, 28162]# noqa: E501 + hit0 = 16 + + data1 = [0, 67694, 83391, 99089, 114786, 130483, 146181, 161877, 177574, 193271, 208969, 224666, 240363, 256061, 271758, 287455, 303153, 318850, 334547, 350244, 365943, 381640, 397337, 413035, 428732, 444429, 460125, 475823, 491520, 507217, 522915, 538612, 554309, 570007, 585704, 601401, 617098, 632796, 648493, 664190, 679888, 695585, 711282, 726980, 742677, 758374, 774070, 789768, 805465, 821162, 836860]# noqa: E501 + hit1 = 1 #TODO + +# 忏悔重击 리펜텐스 스매시 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/27bade584bb42fef68148d3a0b72bace?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill23(ActiveSkill): + name = "忏悔重击" + learnLv = 60 + masterLv = 40 + maxLv = 50 + position = 6 #TODO + rangeLv = 2 + cube = 2 + cd = 30 + mp = [400, 1000] + + data0 = [0, 16059, 17690, 19319, 20948, 22575, 24204, 25835, 27464, 29093, 30722, 32351, 33981, 35610, 37239, 38868, 40497, 42128, 43757, 45386, 47015, 48644, 50274, 51903, 53532, 55161, 56790, 58421, 60050, 61679, 63308, 64937, 66567, 68196, 69824, 71453, 73082, 74712, 76341, 77970, 79599, 81228, 82859, 84488, 86117, 87746, 89375, 91005, 92634, 94263, 95892]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 24089, 26532, 28977, 31421, 33864, 36308, 38753, 41196, 43641, 46083, 48527, 50972, 53415, 55860, 58302, 60747, 63191, 65636, 68079, 70521, 72966, 75410, 77855, 80298, 82742, 85185, 87630, 90074, 92519, 94961, 97404, 99849, 102293, 104738, 107180, 109625, 112068, 114513, 116957, 119399, 121844, 124287, 126732, 129176, 131619, 134063, 136508, 138951, 141396, 143838]# noqa: E501 + hit1 = 1 #TODO + +# 圣洁之翼 대천사의 축복 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/04883563896fe1adac7505c6146b5f59?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill24(ActiveBufferSkill): + name = "圣洁之翼" + learnLv = 70 + masterLv = 40 + maxLv = 50 + position = 5 #TODO + rangeLv = 2 + cube = 2 + cd = 50 + mp = [860, 1500] + + data0 = [0, 68789, 75767, 82745, 89723, 96704, 103682, 110660, 117638, 124616, 131597, 138575, 145553, 152531, 159509, 166488, 173468, 180446, 187424, 194402, 201381, 208359, 215339, 222317, 229295, 236274, 243252, 250230, 257210, 264188, 271167, 278145, 285123, 292103, 299081, 306060, 313038, 320016, 326994, 333975, 340953, 347931, 354909, 361887, 368868, 375846, 382824, 389802, 396780, 403760, 410739]# noqa: E501 + hit0 = 1 + +# 大天使的庇护 라파엘의 축복 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/dbf8b30c7057032af0d68fcfa289fdae?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill25(PassiveBufferSkill): + name = "大天使的庇护" + learnLv = 75 + masterLv = 40 + maxLv = 50 + position = 2 #TODO + rangeLv = 3 + + INT = [0, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640]# noqa: E501 + + data0 = [0, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114] + + associate = [ + {"data":INT ,"type":"$+INT","ratio":1} + ] + +# 圣佑之阵 우리엘의 결계 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/5152480fdde81362575a488d4cec4af9?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill26(ActiveBufferSkill): + name = "圣佑之阵" + learnLv = 75 + masterLv = 40 + maxLv = 50 + position = 4 #TODO + rangeLv = 2 + cube = 3 + cd = 50 + mp = [580, 4500] + damage = True + + data0 = [0, 86713, 95510, 104307, 113104, 121901, 130698, 139495, 148292, 157089, 165887, 174683, 183481, 192277, 201075, 209871, 218669, 227465, 236263, 245059, 253857, 262653, 271451, 280248, 289045, 297842, 306639, 315436, 324233, 333030, 341827, 350624, 359421, 368218, 377016, 385812, 394610, 403406, 412204, 421000, 429798, 438594, 447392, 456188, 464986, 473782, 482580, 491377, 500174, 508971, 517768]# noqa: E501 + hit0 = 1 #TODO + +# 圣光普照 미라클 샤인 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/2391a27457b5a8c6fa4b4670a91bdd11?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill27(ActiveSkill): + name = "圣光普照" + learnLv = 80 + masterLv = 40 + maxLv = 50 + position = 3 #TODO + rangeLv = 2 + cube = 5 + cd = 40 + mp = [860, 1500] + + data0 = [0, 8237, 9073, 9909, 10745, 11580, 12416, 13251, 14087, 14923, 15759, 16595, 17431, 18266, 19101, 19937, 20773, 21609, 22445, 23281, 24116, 24951, 25787, 26623, 27459, 28295, 29131, 29966, 30801, 31637, 32473, 33309, 34145, 34981, 35817, 36651, 37487, 38323, 39159, 39995, 40831, 41667, 42501, 43337, 44173, 45009, 45845, 46681, 47517, 48352, 49187]# noqa: E501 + hit0 = 1 + + # 单体怪物增伤 + skillRation = 1.1 + + +# 救赎彼岸 : 惩戒圣枪 성창 : 브류나크 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/5892d1fa4462e561ac8f8d2c74892b0a?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill28(ActiveSkill): + name = "救赎彼岸 : 惩戒圣枪" + learnLv = 85 + masterLv = 40 + maxLv = 50 + position = 5 #TODO + rangeLv = 5 + cube = 10 + cd = 180 + mp = [2500, 5000] + icon = '$char/救赎彼岸:惩戒圣枪' + + data0 = [0, 77606, 95601, 113597, 131592, 149588, 167583, 185579, 203575, 221570, 239566, 257561, 275557, 293553, 311548, 329544, 347539, 365535, 383530, 401526, 419522, 437517, 455514, 473508, 491505, 509501, 527496, 545492, 563487, 581483, 599478, 617474, 635470, 653465, 671461, 689456, 707452, 725448, 743443, 761439, 779434, 797430, 815425, 833421, 851417, 869412, 887408, 905403, 923399, 941395, 959390]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 116409, 143401, 170395, 197389, 224382, 251376, 278369, 305363, 332356, 359349, 386342, 413336, 440329, 467323, 494317, 521310, 548304, 575296, 602290, 629283, 656277, 683270, 710264, 737257, 764251, 791243, 818237, 845230, 872224, 899218, 926211, 953205, 980197, 1007191, 1034184, 1061178, 1088171, 1115165, 1142158, 1169152, 1196144, 1223138, 1250132, 1277125, 1304119, 1331112, 1358106, 1385099, 1412093, 1439085]# noqa: E501 + hit1 = 1 #TODO + +# 圣天使之光 루클렌티스 엔젤 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/5cac3411ccef1af333953e0ded5e942d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill29(PassiveBufferSkill): + name = "圣天使之光" + learnLv = 95 + masterLv = 40 + maxLv = 50 + position = 5 #TODO + rangeLv = 3 + + data0 = [0, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118]# noqa: E501 + hit0 = 1 #TODO + + INT = [0, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640, 650]# noqa: E501 + + associate = [ + {"data":INT,"type":"$+INT","ratio":1} + ] +# 圣言十字 크럭스 오브 샤피엘 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/85f7c810ad503790e8626439fe936d56?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill30(ActiveSkill): + name = "圣言十字" + learnLv = 95 + masterLv = 40 + maxLv = 50 + position = 7 #TODO + rangeLv = 2 + cube = 7 + cd = 60 + mp = [960, 7200] + + data0 = [0, 33632, 37044, 40456, 43868, 47280, 50692, 54104, 57516, 60928, 64340, 67752, 71164, 74576, 77988, 81400, 84812, 88224, 91636, 95048, 98460, 101872, 105284, 108696, 112108, 115520, 118932, 122344, 125756, 129168, 132580, 135992, 139404, 142816, 146228, 149640, 153052, 156464, 159876, 163288, 166700, 170112, 173524, 176936, 180348, 183760, 187172, 190584, 193996, 197408, 200820]# noqa: E501 + hit0 = 1 #TODO + + data1 = [0, 2102, 2315, 2528, 2741, 2954, 3167, 3381, 3594, 3807, 4021, 4234, 4448, 4661, 4874, 5087, 5300, 5514, 5727, 5940, 6153, 6366, 6579, 6793, 7006, 7219, 7433, 7646, 7860, 8073, 8286, 8499, 8712, 8926, 9139, 9352, 9565, 9778, 9991, 10205, 10418, 10631, 10845, 11058, 11272, 11485, 11698, 11911, 12124, 12338, 12551]# noqa: E501 + hit1 = 1 #TODO + + data2 = [0, 92489, 101872, 111255, 120639, 130021, 139404, 148787, 158171, 167553, 176936, 186319, 195703, 205086, 214468, 223851, 233235, 242618, 252000, 261383, 270767, 280150, 289532, 298915, 308299, 317682, 327064, 336447, 345831, 355214, 364596, 373979, 383363, 392746, 402128, 411511, 420895, 430278, 439661, 449043, 458427, 467810, 477193, 486576, 495959, 505342, 514725, 524108, 533491, 542874, 552257]# noqa: E501 + hit2 = 1 #TODO + +# 祈愿·天使赞歌 라우스 디 안젤루스 +# https://api.neople.co.kr/df/skills/0c1b401bb09241570d364420b3ba3fd7/002cbdd9bfd0f0b970451ae8d48d029e?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0 +class Skill31(ActiveBufferSkill): + name = "祈愿·天使赞歌" + learnLv = 100 + masterLv = 40 + maxLv = 50 + position = 5 #TODO + rangeLv = 5 + cube = 15 + cd = 290 + mp = [4025, 8055] + + data0 = [0, 22510, 27730, 32950, 38170, 43390, 48610, 53829, 59049, 64269, 69489, 74709, 79929, 85149, 90368, 95588, 100808, 106028, 111248, 116468, 121688, 126907, 132127, 137347, 142567, 147787, 153007, 158227, 163446, 168666, 173886, 179106, 184326, 189546, 194766, 199985, 205205, 210425, 215645, 220865, 226085, 231305, 236524, 241744, 246964, 252184, 257404, 262624, 267844, 273063, 278283]# noqa: E501 + hit0 = 1 #TODO + + data2 = [0, 337659, 415956, 494254, 572552, 650851, 729149, 807447, 885745, 964042, 1042340, 1120638, 1198936, 1277234, 1355532, 1433829, 1512127, 1590425, 1668723, 1747021, 1825319, 1903616, 1981914, 2060212, 2138510, 2216808, 2295106, 2373404, 2451701, 2529999, 2608297, 2686595, 2764893, 2843190, 2921488, 2999786, 3078085, 3156382, 3234680, 3312978, 3391276, 3469574, 3547872, 3626170, 3704467, 3782766, 3861064, 3939361, 4017659, 4095957, 4174255]# noqa: E501 + hit2 = 1 #TODO + +class classChange(Character): + def __init__(self, equVersion=''): + + super().__init__(equVersion) + self.name = 'crusader_female' + self.nameCN = '神启·圣职者' + self.role = 'priest_female' + + self.武器选项 = ['十字架','镰刀', '念珠', '战斧','图腾' ] + self.输出类型选项 = ['魔法固伤'] + self.输出类型 = '魔法固伤' + self.防具精通属性 = ['智力'] + self.武器类型 = '十字架' + self.防具类型 = '板甲' + self.buff = 2.335 + + self.角色 = '圣职者(女)' + + self.职业 = '圣骑士' + + self.buffer = True + + self.适用属性 = '智力' + + self.load_skills() + + + def load_skills(self): + """加载技能""" + skills = [] + skills_dict = {} + i = 0 + while i >= 0: + try: + tem = eval('Skill' + str(i) + '(char=self)') + skills_dict[tem.name] = tem + skills.append(tem) + if tem.buffer and tem.buffType == 'buff': + self.BuffSkill = tem + if tem.buffer and tem.buffType == 'awake': + self.AwakeSkill = tem + i += 1 + except Exception as ex: + print(ex) + i = -1 + self.skills = skills + self.skills_dict = skills_dict diff --git a/backend/core/character/adventure.py b/backend/core/character/adventure.py index 58bb648e..83e24107 100644 --- a/backend/core/character/adventure.py +++ b/backend/core/character/adventure.py @@ -21,8 +21,8 @@ adv = [ 'children': [ {'id': 0, 'name': 'sword_master', 'title': '极诣·驭剑士', 'open': False}, {'id': 1, 'name': 'dark_templar', 'title': '极诣·暗殿骑士', 'open': False}, - {'id': 2, 'name': 'demon_slayer', 'title': '极诣·契魔者', 'open': True, 'class': 'GF.swordman_female.demon_slayer'}, - {'id': 3, 'name': 'vegabond', 'title': '极诣·流浪武士', 'open': True, 'class': 'GF.swordman_female.vegabond'}, + {'id': 2, 'name': 'demon_slayer', 'title': '极诣·契魔者', 'open': True, 'class': 'GF.swordman_female.demon_slayer'}, + {'id': 3, 'name': 'vegabond', 'title': '极诣·流浪武士', 'open': True, 'class': 'GF.swordman_female.vegabond'}, {'id': 4, 'name': 'spectre', 'title': '极诣·刃影', 'open': False}, ], }, @@ -131,8 +131,9 @@ adv = [ 'id': 0, 'name': 'crusader_female', 'title': '神启·圣骑士', - 'open': False, - 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'crusader_female'}, {'id': 1, 'name': 'default', 'title': '输出', 'class': 'crusader_female_carry'}], + 'open': True, + 'class': 'GF.priest_female.crusader_female' + # 'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'GF.priest_female.crusader_female', "open": True}, {'id': 1, 'name': 'default', 'title': '输出', 'class': 'crusader_female_carry'}], }, {'id': 1, 'name': 'inquistor', 'title': '神启·异端审判者', 'open': False}, {'id': 2, 'name': 'sorceress', 'title': '神启·巫女', 'open': False}, @@ -230,7 +231,6 @@ def get_adv_list(): return adv -@cache def get_adv_info(value): value = base64.b64decode(value).decode() parent_id, child_id, option_id = map(int, (value[:2], value[2:4], value[4:6])) diff --git a/backend/core/equipment/version_0/enchant.py b/backend/core/equipment/version_0/enchant.py index 93c8e3b1..06282ff1 100644 --- a/backend/core/equipment/version_0/enchant.py +++ b/backend/core/equipment/version_0/enchant.py @@ -58,7 +58,7 @@ def enchant_101(char: CharacterProperty): """ char.SetStatus(四维=100) if char.buffer: - char.AddSkillLv(15, 15, 3, 1) + char.AddSkillLv(15, 15, 3, 0) pass @@ -68,7 +68,7 @@ def enchant_102(char: CharacterProperty): """ char.SetStatus(四维=120) if char.buffer: - char.AddSkillLv(15, 15, 3, 1) + char.AddSkillLv(15, 15, 3, 0) pass @@ -86,7 +86,7 @@ def enchant_104(char: CharacterProperty): """ char.SetStatus(四维=125) if char.buffer: - char.AddSkillLv(15, 15, 4, 1) + char.AddSkillLv(15, 15, 4, 0) pass @@ -108,7 +108,7 @@ def enchant_106(char: CharacterProperty): """ char.SetStatus(四维=120) if char.buffer: - char.AddSkillLv(15, 15, 3, 1) + char.AddSkillLv(15, 15, 3, 0) pass @@ -190,7 +190,7 @@ def enchant_201(char: CharacterProperty): """ char.SetStatus(四维=125) if char.buffer: - char.AddSkillLv(15, 15, 4, 1) + char.AddSkillLv(15, 15, 4, 0) pass @@ -227,8 +227,8 @@ def enchant_302(char: CharacterProperty): 四维(45)|Lv1~50主动+1 """ char.SetStatus(四维=45) - if char.buffer: - char.AddSkillLv(1, 50, 1, 1) + print("~~~~~~~~~~") + char.AddSkillLv(1, 50, 1, 1) pass @@ -447,7 +447,7 @@ def enchant_607(char: CharacterProperty): """ char.SetStatus(四维=100) if char.buffer: - char.AddSkillLv(15, 15, 1, 1) + char.AddSkillLv(15, 15, 1, 0) pass @@ -501,7 +501,7 @@ def enchant_903(char: CharacterProperty): """ char.SetStatus(四维=100) if char.buffer: - char.AddSkillLv(15, 15, 3, 1) + char.AddSkillLv(15, 15, 3, 0) pass @@ -561,7 +561,7 @@ def enchant_1002(char: CharacterProperty): """ char.SetStatus(四维=100) if char.buffer: - char.AddSkillLv(15, 15, 3, 1) + char.AddSkillLv(15, 15, 3, 0) pass @@ -582,7 +582,7 @@ def enchant_1004(char: CharacterProperty): """ char.SetStatus(四维=120) if char.buffer: - char.AddSkillLv(15, 15, 3, 1) + char.AddSkillLv(15, 15, 3, 0) pass @@ -1381,7 +1381,7 @@ def enchant_2705(char: CharacterProperty): """ 三攻(30)|三速(5%)|增益量(1%) """ - char.SetStatus(三攻=30, 三速=0.05, 增益量=0.01) + char.SetStatus(三攻=30, 三速=0.05, 增益量P=0.01) pass @@ -1405,7 +1405,7 @@ def enchant_2708(char: CharacterProperty): """ 四维(50)|三速(5%)|增益量(1%) """ - char.SetStatus(四维=50, 三速=0.05, 增益量=0.01) + char.SetStatus(四维=50, 三速=0.05, 增益量P=0.01) pass @@ -1413,7 +1413,7 @@ def enchant_2709(char: CharacterProperty): """ 三攻(50)|三速(5%)|增益量(3%) """ - char.SetStatus(三攻=50, 三速=0.05, 增益量=0.03) + char.SetStatus(三攻=50, 三速=0.05, 增益量P=0.03) pass @@ -1421,7 +1421,7 @@ def enchant_2710(char: CharacterProperty): """ 四维(100)|三速(5%)|增益量(3%) """ - char.SetStatus(四维=100, 三速=0.05, 增益量=0.03) + char.SetStatus(四维=100, 三速=0.05, 增益量P=0.03) pass diff --git a/backend/core/equipment/version_0/equ.py b/backend/core/equipment/version_0/equ.py index 6e128b51..c0e52795 100644 --- a/backend/core/equipment/version_0/equ.py +++ b/backend/core/equipment/version_0/equ.py @@ -11465,7 +11465,7 @@ def equ_3010(char: CharacterProperty): Lv15~35所有技能+1 所有速度+3% """ - char.AddSkillLv(15,35,1,0) + char.AddSkillLv(15,35,1) char.SetStatus(SpeedM=0.03,SpeedA=0.03,SpeedR=0.03) pass @@ -11478,7 +11478,7 @@ def equ_3011(char: CharacterProperty): Lv15~35所有技能+1 所有速度+3% """ - char.AddSkillLv(15,35,1,0) + char.AddSkillLv(15,35,1) char.SetStatus(SpeedM=0.03,SpeedA=0.03,SpeedR=0.03) pass @@ -11492,7 +11492,7 @@ def equ_3012(char: CharacterProperty): 所有属性强化+15 所有速度+3% """ - char.AddSkillLv(15,35,1,0) + char.AddSkillLv(15,35,1) char.AddElementDB('火',15) char.AddElementDB('冰',15) char.AddElementDB('光',15) @@ -11510,7 +11510,7 @@ def equ_3013(char: CharacterProperty): 所有属性强化+15 所有速度+3% """ - char.AddSkillLv(15,35,1,0) + char.AddSkillLv(15,35,1) char.AddElementDB('火',15) char.AddElementDB('冰',15) char.AddElementDB('光',15) @@ -11551,7 +11551,7 @@ def equ_4000(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,80,1,0) + char.AddSkillLv(1,80,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11573,7 +11573,7 @@ def equ_4001(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,80,1,0) + char.AddSkillLv(1,80,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11595,7 +11595,7 @@ def equ_4002(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11617,7 +11617,7 @@ def equ_4003(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11639,7 +11639,7 @@ def equ_4004(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11661,7 +11661,7 @@ def equ_4005(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11683,7 +11683,7 @@ def equ_4006(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11705,7 +11705,7 @@ def equ_4007(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11727,7 +11727,7 @@ def equ_4008(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11749,7 +11749,7 @@ def equ_4009(char: CharacterProperty): 所有速度+5% 技能冷却时间-5% """ - char.AddSkillLv(1,95,1,0) + char.AddSkillLv(1,95,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11773,7 +11773,7 @@ def equ_4010(char: CharacterProperty): 暴击率+3% 所有速度+5% """ - char.AddSkillLv(1,50,1,0) + char.AddSkillLv(1,50,1) char.SetStatus(AttackP=0.14,SpeedM=0.05,SpeedA=0.05,SpeedR=0.05,BufferP=0.03) pass @@ -11789,7 +11789,7 @@ def equ_4011(char: CharacterProperty): 暴击率+3% 所有速度+4% """ - char.AddSkillLv(1,50,1,0) + char.AddSkillLv(1,50,1) char.SetStatus(AttackP=0.10,SpeedM=0.04,SpeedA=0.04,SpeedR=0.04,BufferP=0.015) pass @@ -11805,7 +11805,7 @@ def equ_4012(char: CharacterProperty): 暴击率+3% 所有速度+5% """ - char.AddSkillLv(1,50,1,0) + char.AddSkillLv(1,50,1) char.SetStatus(AttackP=0.14,SpeedM=0.05,SpeedA=0.05,SpeedR=0.05,BufferP=0.03) pass @@ -11821,7 +11821,7 @@ def equ_4013(char: CharacterProperty): 暴击率+3% 所有速度+4% """ - char.AddSkillLv(1,50,1,0) + char.AddSkillLv(1,50,1) char.SetStatus(AttackP=0.10,SpeedM=0.04,SpeedA=0.04,SpeedR=0.04,BufferP=0.015) pass @@ -11838,7 +11838,7 @@ def equ_4014(char: CharacterProperty): 暴击率+10% 所有速度+5% """ - char.AddSkillLv(1,75,1,0) + char.AddSkillLv(1,75,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11859,7 +11859,7 @@ def equ_4015(char: CharacterProperty): 暴击率+5% 所有速度+4% """ - char.AddSkillLv(1,50,1,0) + char.AddSkillLv(1,50,1) char.AddElementDB('火',15) char.AddElementDB('冰',15) char.AddElementDB('光',15) @@ -11880,7 +11880,7 @@ def equ_4016(char: CharacterProperty): 暴击率+10% 所有速度+5% """ - char.AddSkillLv(1,75,1,0) + char.AddSkillLv(1,75,1) char.AddElementDB('火',25) char.AddElementDB('冰',25) char.AddElementDB('光',25) @@ -11901,7 +11901,7 @@ def equ_4017(char: CharacterProperty): 暴击率+5% 所有速度+4% """ - char.AddSkillLv(1,50,1,0) + char.AddSkillLv(1,50,1) char.AddElementDB('火',15) char.AddElementDB('冰',15) char.AddElementDB('光',15) diff --git a/backend/core/equipment/version_0/jade.py b/backend/core/equipment/version_0/jade.py index 75dc4061..102308c0 100644 --- a/backend/core/equipment/version_0/jade.py +++ b/backend/core/equipment/version_0/jade.py @@ -64,7 +64,29 @@ def jade_12(char: CharacterProperty = {}, value=0): char.AddSkillLv(85, 85, 1) pass +def jade_13(char: CharacterProperty = {}, value=0): + char.BuffSkill.STRINTPLUS += value + char.SetStatus(BufferP=value/1000) +def jade_14(char: CharacterProperty = {}, value=0): + char.BuffSkill.STRINTRatio *= 1 + value/100 + char.SetStatus(BufferP=value/200) + +def jade_15(char: CharacterProperty = {}, value=0): + char.BuffSkill.ATKPLUS += value + char.SetStatus(Buffer=value/1000) + +def jade_16(char: CharacterProperty = {}, value=0): + char.BuffSkill.ATKRatio *= 1 + value/100 + char.SetStatus(BufferP=value/200) + +def jade_17(char: CharacterProperty = {}, value=0): + char.AwakeSkill.STRINTPLUS += value + char.SetStatus(BufferP=value/4000) + +def jade_18(char: CharacterProperty = {}, value=0): + char.AwakeSkill.STRINTRatio *= 1 + value/100 + char.SetStatus(BufferP=value/200) # # 辟邪玉效果id范围 26001~26999 # for i in range(26001, 26206): # try: diff --git a/backend/dataFiles/dcalc_0.db b/backend/dataFiles/dcalc_0.db index c6be6460..5e73baf9 100644 Binary files a/backend/dataFiles/dcalc_0.db and b/backend/dataFiles/dcalc_0.db differ diff --git a/frontend/src/api/calc/type.ts b/frontend/src/api/calc/type.ts index fb4759a6..65418660 100644 --- a/frontend/src/api/calc/type.ts +++ b/frontend/src/api/calc/type.ts @@ -3,8 +3,10 @@ export interface IResult { skills: IResultSkill[] info:IResultUserInfo[] suits:IResultSuit[] + buffer:boolean } + export interface IResultSkill { name: string icon: string @@ -14,6 +16,7 @@ export interface IResultSkill { cd: number damage: number mode: string + buff:number[] } export interface IResultUserInfo { diff --git a/frontend/src/pages/Character/Result/Index.vue b/frontend/src/pages/Character/Result/Index.vue index 431c65d2..7bc034d1 100644 --- a/frontend/src/pages/Character/Result/Index.vue +++ b/frontend/src/pages/Character/Result/Index.vue @@ -11,7 +11,8 @@ :equs="configStore.config.equips" > - + + @@ -19,6 +20,8 @@ import { useConfigStore, useInfoStore } from '@/stores' import Info from './components/Info.vue' import Skill from './components/Skill.vue' +import BufferSkill from './components/BufferSkill.vue' +import type { IResultSkill } from '@/api/calc/type' const configStore = useConfigStore() const infoStore = useInfoStore() diff --git a/frontend/src/pages/Character/Result/components/BufferSkill.vue b/frontend/src/pages/Character/Result/components/BufferSkill.vue new file mode 100644 index 00000000..3f2ed8c8 --- /dev/null +++ b/frontend/src/pages/Character/Result/components/BufferSkill.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/frontend/src/pages/Character/Result/components/Skill.vue b/frontend/src/pages/Character/Result/components/Skill.vue index a71bc0ee..a9823b7e 100644 --- a/frontend/src/pages/Character/Result/components/Skill.vue +++ b/frontend/src/pages/Character/Result/components/Skill.vue @@ -4,15 +4,15 @@
{{ header.label }} diff --git a/frontend/src/stores/config.ts b/frontend/src/stores/config.ts index 3fe28281..affdfd7a 100644 --- a/frontend/src/stores/config.ts +++ b/frontend/src/stores/config.ts @@ -189,6 +189,7 @@ export const useConfigStore = defineStore('configStore', () => { skills: [], info: [], suits: [], + buffer:false }, { resetOnExecute: false }, ) diff --git a/images/characters/crusader_female/skill/十字架精通.png b/images/characters/crusader_female/skill/十字架精通.png new file mode 100644 index 00000000..83a319d0 Binary files /dev/null and b/images/characters/crusader_female/skill/十字架精通.png differ diff --git a/images/characters/crusader_female/skill/启示圣歌.png b/images/characters/crusader_female/skill/启示:圣歌.png similarity index 100% rename from images/characters/crusader_female/skill/启示圣歌.png rename to images/characters/crusader_female/skill/启示:圣歌.png diff --git a/images/characters/crusader_female/skill/启示:惩戒.png b/images/characters/crusader_female/skill/启示:惩戒.png new file mode 100644 index 00000000..2cb385a9 Binary files /dev/null and b/images/characters/crusader_female/skill/启示:惩戒.png differ diff --git a/images/characters/crusader_female/skill/圣光灌注.png b/images/characters/crusader_female/skill/圣光灌注.png new file mode 100644 index 00000000..551cb6f0 Binary files /dev/null and b/images/characters/crusader_female/skill/圣光灌注.png differ diff --git a/images/characters/crusader_female/skill/圣光烬盾.png b/images/characters/crusader_female/skill/圣光烬盾.png new file mode 100644 index 00000000..2cedc44e Binary files /dev/null and b/images/characters/crusader_female/skill/圣光烬盾.png differ diff --git a/images/characters/crusader_female/skill/圣洁之光.png b/images/characters/crusader_female/skill/圣洁之光.png new file mode 100644 index 00000000..27e765be Binary files /dev/null and b/images/characters/crusader_female/skill/圣洁之光.png differ diff --git a/images/characters/crusader_female/skill/圣言十字.png b/images/characters/crusader_female/skill/圣言十字.png new file mode 100644 index 00000000..b088a289 Binary files /dev/null and b/images/characters/crusader_female/skill/圣言十字.png differ diff --git a/images/characters/crusader_female/skill/忏悔重击.png b/images/characters/crusader_female/skill/忏悔重击.png index b3124e86..bf9a4bab 100644 Binary files a/images/characters/crusader_female/skill/忏悔重击.png and b/images/characters/crusader_female/skill/忏悔重击.png differ diff --git a/images/characters/crusader_female/skill/洗礼之光.png b/images/characters/crusader_female/skill/洗礼之光.png new file mode 100644 index 00000000..9883963a Binary files /dev/null and b/images/characters/crusader_female/skill/洗礼之光.png differ diff --git a/images/characters/crusader_female/skill/神光惩戒.png b/images/characters/crusader_female/skill/神光惩戒.png new file mode 100644 index 00000000..f96b3f4a Binary files /dev/null and b/images/characters/crusader_female/skill/神光惩戒.png differ diff --git a/images/characters/crusader_female/skill/神圣锁环.png b/images/characters/crusader_female/skill/神圣锁环.png new file mode 100644 index 00000000..6e943210 Binary files /dev/null and b/images/characters/crusader_female/skill/神圣锁环.png differ diff --git a/images/characters/crusader_female/skill/胜利之矛.png b/images/characters/crusader_female/skill/胜利之矛.png new file mode 100644 index 00000000..18a47746 Binary files /dev/null and b/images/characters/crusader_female/skill/胜利之矛.png differ