This commit is contained in:
2025-04-12 12:11:46 +08:00
parent caa032d1eb
commit 34551c7b35
31 changed files with 1379 additions and 166 deletions
+4 -6
View File
@@ -10,12 +10,10 @@ from api.core.exception import ResponseException
class AlterState: class AlterState:
def __init__(self, value: str, token: str, charcater: Character, equVersion: str,time: int): def __init__(self, alter: str, token: str, charcater: Character, equVersion: str,time: int):
self.value = value if alter is None:
try: raise ResponseException('无效的职业')
self.alter = get_adv_info(value)["class"] self.alter = alter
except Exception:
raise ResponseException(f'无效的职业{value}')
self.token = token self.token = token
self.origin = self.alter.split('.')[-1] self.origin = self.alter.split('.')[-1]
self.character = charcater self.character = charcater
-1
View File
@@ -10,7 +10,6 @@ def get_redis_info(redis, key, fun,without_gzip=False):
else: else:
info = json.loads(gzip_unzip(redis.get(key))) info = json.loads(gzip_unzip(redis.get(key)))
except Exception as ex: except Exception as ex:
print(ex)
info = None info = None
if info is None: if info is None:
info = fun() info = fun()
+5 -2
View File
@@ -5,16 +5,18 @@ from sqlalchemy.orm import Session
from fastapi import Depends, Header from fastapi import Depends, Header
from api.core.exception import ResponseException from api.core.exception import ResponseException
from core.character.adventure import get_adv_info
from database.connect import get_db, get_redis from database.connect import get_db, get_redis
from api.core.Auth import AlterState from api.core.Auth import AlterState
import base64 import base64
import json import json
from api.core.Redis import get_redis_info
SessionDep = Annotated[Session, Depends(get_db)] SessionDep = Annotated[Session, Depends(get_db)]
RedisDep = Annotated[Redis, Depends(get_redis)] 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: if alter_token is not None:
try: try:
decoded_bytes = base64.b64decode(alter_token) decoded_bytes = base64.b64decode(alter_token)
@@ -23,7 +25,8 @@ def alterToken(alter_token: Optional[str] = Header(None)):
# 6小时过期 # 6小时过期
if (int(time.time() * 1000) - alter['time']) / (60 * 60 * 1000) > 6: if (int(time.time() * 1000) - alter['time']) / (60 * 60 * 1000) > 6:
raise ResponseException('登录过期或无效Token,请刷新后重试') 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): except (base64.binascii.Error, json.JSONDecodeError):
raise ResponseException('登录过期或无效Token,请刷新后重试') raise ResponseException('登录过期或无效Token,请刷新后重试')
else: else:
+159 -8
View File
@@ -1,8 +1,116 @@
from typing import Any, Literal from abc import ABC, abstractmethod
from collections.abc import Mapping from typing import Any, Literal, Mapping
class CharacterProperty(ABC):
"""
抽象类,用于定义Character的接口和属性
"""
class CharacterProperty: # 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( def SetStatus(
self, self,
力量=0, 力量=0,
@@ -43,8 +151,7 @@ class CharacterProperty:
攻击强化P=0, 攻击强化P=0,
增益量=0, 增益量=0,
增益量P=0, 增益量P=0,
**kwargs: Mapping[ **kwargs: Mapping[Literal[
Literal[
'STR', 'STR',
'INT', 'INT',
'AtkP', 'AtkP',
@@ -79,8 +186,52 @@ class CharacterProperty:
'Spirit', 'Spirit',
'Vitality', 'Vitality',
'EquEffectRatio', 'EquEffectRatio',
], ], Any],
Any,
],
) -> None: ) -> None:
"""设置角色属性"""
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 pass
+144 -85
View File
@@ -3,6 +3,7 @@ import importlib
from typing import Any, Literal, Mapping, Union from typing import Any, Literal, Mapping, Union
from uuid import uuid1 from uuid import uuid1
from core.abstract.character import CharacterProperty
from core.basic.property import CharacterInfo from core.basic.property import CharacterInfo
from core.basic.skill import Skill from core.basic.skill import Skill
@@ -29,7 +30,7 @@ class Jade:
self.SkillAttack = 0.0 self.SkillAttack = 0.0
class Character: class Character(CharacterProperty):
# region 角色属性 # region 角色属性
STR: float STR: float
@@ -132,9 +133,7 @@ class Character:
max_point = 0 max_point = 0
"""套装效果点数""" """套装效果点数"""
# region 角色属性
buffer: bool = False buffer: bool = False
# endregion
# region 职业属性 # region 职业属性
实际名称: str = '' 实际名称: str = ''
@@ -223,7 +222,7 @@ class Character:
# 角色四维 # 角色四维
temp = 获取基础属性(self.角色, self.职业) temp = 获取基础属性(self.角色, self.职业)
for index, i in enumerate([get_key_by_value(i) for i in ['力量', '体力', '智力', '精神']]): 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 pass
# 角色异常抗性 # 角色异常抗性
@@ -360,9 +359,9 @@ class Character:
""" """
for skill in self.skills: for skill in self.skills:
if min <= skill.learnLv <= max: if min <= skill.learnLv <= max:
type = 'all' if type == -1 else ('active' if type == 1 else 'passive') skillType = 'all' if type == -1 else ('active' if type == 1 else 'passive')
if type == 'all' or skill.type == type: if (skillType == 'all' or skill.type == skillType) and skill.lv > 0:
skill.lv += 1 skill.lv += lv
def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None: def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None:
""" """
@@ -462,8 +461,9 @@ class Character:
info['equips'] = equs info['equips'] = equs
info['suits'] = suits info['suits'] = suits
info['stones'] = stones info['stones'] = stones
info['enchants'] = equInfos.enchants key = '辅助' if self.buffer else '输出'
info['emblems'] = equInfos.emblems 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['avatar'] = equInfos.funs.get_dress_list(skill_clothes)
info['jades'] = equInfos.jades info['jades'] = equInfos.jades
info['sundry'] = equInfos.funs.sundryList info['sundry'] = equInfos.funs.sundryList
@@ -690,8 +690,9 @@ class Character:
reinforce = self.charEquipInfo[part].reinforce reinforce = self.charEquipInfo[part].reinforce
if equ is None: if equ is None:
continue continue
value = 精通计算(115, equ.rarity, reinforce, equ.itemDetailType, self.防具类型)
for key in self.防具精通属性: for key in self.防具精通属性:
value = 精通计算(115, equ.rarity, reinforce, equ.itemDetailType, self.防具类型,self.buffer,key)
key = get_key_by_value(key) key = get_key_by_value(key)
setattr(self, key, getattr(self, key) + value) setattr(self, key, getattr(self, key) + value)
# 115增幅强化品级固定史诗 # 115增幅强化品级固定史诗
@@ -788,92 +789,26 @@ class Character:
suit = self.calc_suits() suit = self.calc_suits()
# 部位效果计算 # 部位效果计算
self.calc_equs() 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 = [] skillInfos = []
for i in self.skills: if self.buffer:
if i.damage and i.lv > 0: skillInfos = self.calc_buffer_skills()
for mode in i.mode: info = self.get_buffer_info()
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 pass
else: else:
value = getattr(self, attr) skillInfos = self.calc_carry_skills()
if attr == 'SkillAttack': info = self.get_carry_info()
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 { return {
'uuid': uuid1().hex, 'uuid': uuid1().hex,
'skills': skillInfos, 'skills': skillInfos,
'info': info, 'info': info,
'suits': suit, 'suits': suit,
'buffer':self.buffer
} }
# 技能影响角色的属性,如属强、抗性等 # 技能影响角色的属性,如属强、抗性等
# region 输出计算项
def calc_damage_ration(self): def calc_damage_ration(self):
"""计算属性系数""" """计算属性系数"""
# 计算最终属性 # 计算最终属性
@@ -910,6 +845,130 @@ class Character:
ratio_9 = 1.0 * self.ElementIncrease 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) 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 # endregion
+3 -4
View File
@@ -311,11 +311,10 @@ def 武器MP系数(武器类型, 输出类型) -> float:
品级加分 = {'稀有': 5, '神器': 8, '勇者': 11, '传说': 14, '史诗': 17, '智慧产物': 17, '神话': 18} 品级加分 = {'稀有': 5, '神器': 8, '勇者': 11, '传说': 14, '史诗': 17, '智慧产物': 17, '神话': 18}
def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类): def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',carry=True):
if carry:
return round((20 + 甲类系数[甲类] * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) return round((20 + 甲类系数[甲类] * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2)
else:
def 辅助精通计算(装备等级, 品质, 强化等级, 部位, 属性):
if 属性 == '智力': if 属性 == '智力':
return round((8 + 2.4 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2) return round((8 + 2.4 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2)
if 属性 == '体力': if 属性 == '体力':
+5
View File
@@ -54,6 +54,11 @@ class CharacterInfo(enum.Enum):
AttackP = '攻击强化%', '/ui/UI_ProfileIcon_015.png', lambda x: f'{format(x * 100 - 100, ".1f")}%' 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")}%' EquEffectRatio = '特效伤害', '/ui/UI_ProfileIcon_016.png', lambda x: f'{format(x * 100 - 100, ".1f")}%'
# HitP : float # HitP : float
+99
View File
@@ -64,6 +64,8 @@ class Skill:
""" """
mode : list[str] = [''] mode : list[str] = ['']
"""技能模式""" """技能模式"""
buffer: bool = False
"""是否是增益技能"""
def __init__(self, char): def __init__(self, char):
self.char = char self.char = char
@@ -154,6 +156,8 @@ class ActiveSkill(Skill):
"""技能类型 active主动 passive被动""" """技能类型 active主动 passive被动"""
damage: bool = True damage: bool = True
"""是否是伤害技能""" """是否是伤害技能"""
buffer: bool = False
"""是否是buff技能"""
def __init__(self, char): def __init__(self, char):
super().__init__(char) super().__init__(char)
@@ -215,3 +219,98 @@ class PassiveSkill(Skill):
"""技能类型 active主动 passive被动""" """技能类型 active主动 passive被动"""
damage: bool = False 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
))
@@ -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
+3 -3
View File
@@ -131,8 +131,9 @@ adv = [
'id': 0, 'id': 0,
'name': 'crusader_female', 'name': 'crusader_female',
'title': '神启·圣骑士', 'title': '神启·圣骑士',
'open': False, 'open': True,
'options': [{'id': 0, 'name': 'default', 'title': '奶', 'class': 'crusader_female'}, {'id': 1, 'name': 'default', 'title': '输出', 'class': 'crusader_female_carry'}], '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': 1, 'name': 'inquistor', 'title': '神启·异端审判者', 'open': False},
{'id': 2, 'name': 'sorceress', 'title': '神启·巫女', 'open': False}, {'id': 2, 'name': 'sorceress', 'title': '神启·巫女', 'open': False},
@@ -230,7 +231,6 @@ def get_adv_list():
return adv return adv
@cache
def get_adv_info(value): def get_adv_info(value):
value = base64.b64decode(value).decode() value = base64.b64decode(value).decode()
parent_id, child_id, option_id = map(int, (value[:2], value[2:4], value[4:6])) parent_id, child_id, option_id = map(int, (value[:2], value[2:4], value[4:6]))
+14 -14
View File
@@ -58,7 +58,7 @@ def enchant_101(char: CharacterProperty):
""" """
char.SetStatus(四维=100) char.SetStatus(四维=100)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 3, 1) char.AddSkillLv(15, 15, 3, 0)
pass pass
@@ -68,7 +68,7 @@ def enchant_102(char: CharacterProperty):
""" """
char.SetStatus(四维=120) char.SetStatus(四维=120)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 3, 1) char.AddSkillLv(15, 15, 3, 0)
pass pass
@@ -86,7 +86,7 @@ def enchant_104(char: CharacterProperty):
""" """
char.SetStatus(四维=125) char.SetStatus(四维=125)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 4, 1) char.AddSkillLv(15, 15, 4, 0)
pass pass
@@ -108,7 +108,7 @@ def enchant_106(char: CharacterProperty):
""" """
char.SetStatus(四维=120) char.SetStatus(四维=120)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 3, 1) char.AddSkillLv(15, 15, 3, 0)
pass pass
@@ -190,7 +190,7 @@ def enchant_201(char: CharacterProperty):
""" """
char.SetStatus(四维=125) char.SetStatus(四维=125)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 4, 1) char.AddSkillLv(15, 15, 4, 0)
pass pass
@@ -227,7 +227,7 @@ def enchant_302(char: CharacterProperty):
四维(45)|Lv1~50主动+1 四维(45)|Lv1~50主动+1
""" """
char.SetStatus(四维=45) char.SetStatus(四维=45)
if char.buffer: print("~~~~~~~~~~")
char.AddSkillLv(1, 50, 1, 1) char.AddSkillLv(1, 50, 1, 1)
pass pass
@@ -447,7 +447,7 @@ def enchant_607(char: CharacterProperty):
""" """
char.SetStatus(四维=100) char.SetStatus(四维=100)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 1, 1) char.AddSkillLv(15, 15, 1, 0)
pass pass
@@ -501,7 +501,7 @@ def enchant_903(char: CharacterProperty):
""" """
char.SetStatus(四维=100) char.SetStatus(四维=100)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 3, 1) char.AddSkillLv(15, 15, 3, 0)
pass pass
@@ -561,7 +561,7 @@ def enchant_1002(char: CharacterProperty):
""" """
char.SetStatus(四维=100) char.SetStatus(四维=100)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 3, 1) char.AddSkillLv(15, 15, 3, 0)
pass pass
@@ -582,7 +582,7 @@ def enchant_1004(char: CharacterProperty):
""" """
char.SetStatus(四维=120) char.SetStatus(四维=120)
if char.buffer: if char.buffer:
char.AddSkillLv(15, 15, 3, 1) char.AddSkillLv(15, 15, 3, 0)
pass pass
@@ -1381,7 +1381,7 @@ def enchant_2705(char: CharacterProperty):
""" """
三攻(30)|三速(5%)|增益量(1%) 三攻(30)|三速(5%)|增益量(1%)
""" """
char.SetStatus(三攻=30, 三速=0.05, 增益量=0.01) char.SetStatus(三攻=30, 三速=0.05, 增益量P=0.01)
pass pass
@@ -1405,7 +1405,7 @@ def enchant_2708(char: CharacterProperty):
""" """
四维(50)|三速(5%)|增益量(1%) 四维(50)|三速(5%)|增益量(1%)
""" """
char.SetStatus(四维=50, 三速=0.05, 增益量=0.01) char.SetStatus(四维=50, 三速=0.05, 增益量P=0.01)
pass pass
@@ -1413,7 +1413,7 @@ def enchant_2709(char: CharacterProperty):
""" """
三攻(50)|三速(5%)|增益量(3%) 三攻(50)|三速(5%)|增益量(3%)
""" """
char.SetStatus(三攻=50, 三速=0.05, 增益量=0.03) char.SetStatus(三攻=50, 三速=0.05, 增益量P=0.03)
pass pass
@@ -1421,7 +1421,7 @@ def enchant_2710(char: CharacterProperty):
""" """
四维(100)|三速(5%)|增益量(3%) 四维(100)|三速(5%)|增益量(3%)
""" """
char.SetStatus(四维=100, 三速=0.05, 增益量=0.03) char.SetStatus(四维=100, 三速=0.05, 增益量P=0.03)
pass pass
+22 -22
View File
@@ -11465,7 +11465,7 @@ def equ_3010(char: CharacterProperty):
Lv15~35所有技能+1 Lv15~35所有技能+1
所有速度+3% 所有速度+3%
""" """
char.AddSkillLv(15,35,1,0) char.AddSkillLv(15,35,1)
char.SetStatus(SpeedM=0.03,SpeedA=0.03,SpeedR=0.03) char.SetStatus(SpeedM=0.03,SpeedA=0.03,SpeedR=0.03)
pass pass
@@ -11478,7 +11478,7 @@ def equ_3011(char: CharacterProperty):
Lv15~35所有技能+1 Lv15~35所有技能+1
所有速度+3% 所有速度+3%
""" """
char.AddSkillLv(15,35,1,0) char.AddSkillLv(15,35,1)
char.SetStatus(SpeedM=0.03,SpeedA=0.03,SpeedR=0.03) char.SetStatus(SpeedM=0.03,SpeedA=0.03,SpeedR=0.03)
pass pass
@@ -11492,7 +11492,7 @@ def equ_3012(char: CharacterProperty):
所有属性强化+15 所有属性强化+15
所有速度+3% 所有速度+3%
""" """
char.AddSkillLv(15,35,1,0) char.AddSkillLv(15,35,1)
char.AddElementDB('火',15) char.AddElementDB('火',15)
char.AddElementDB('冰',15) char.AddElementDB('冰',15)
char.AddElementDB('光',15) char.AddElementDB('光',15)
@@ -11510,7 +11510,7 @@ def equ_3013(char: CharacterProperty):
所有属性强化+15 所有属性强化+15
所有速度+3% 所有速度+3%
""" """
char.AddSkillLv(15,35,1,0) char.AddSkillLv(15,35,1)
char.AddElementDB('火',15) char.AddElementDB('火',15)
char.AddElementDB('冰',15) char.AddElementDB('冰',15)
char.AddElementDB('光',15) char.AddElementDB('光',15)
@@ -11551,7 +11551,7 @@ def equ_4000(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,80,1,0) char.AddSkillLv(1,80,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11573,7 +11573,7 @@ def equ_4001(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,80,1,0) char.AddSkillLv(1,80,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11595,7 +11595,7 @@ def equ_4002(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11617,7 +11617,7 @@ def equ_4003(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11639,7 +11639,7 @@ def equ_4004(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11661,7 +11661,7 @@ def equ_4005(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11683,7 +11683,7 @@ def equ_4006(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11705,7 +11705,7 @@ def equ_4007(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11727,7 +11727,7 @@ def equ_4008(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11749,7 +11749,7 @@ def equ_4009(char: CharacterProperty):
所有速度+5% 所有速度+5%
技能冷却时间-5% 技能冷却时间-5%
""" """
char.AddSkillLv(1,95,1,0) char.AddSkillLv(1,95,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11773,7 +11773,7 @@ def equ_4010(char: CharacterProperty):
暴击率+3% 暴击率+3%
所有速度+5% 所有速度+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) char.SetStatus(AttackP=0.14,SpeedM=0.05,SpeedA=0.05,SpeedR=0.05,BufferP=0.03)
pass pass
@@ -11789,7 +11789,7 @@ def equ_4011(char: CharacterProperty):
暴击率+3% 暴击率+3%
所有速度+4% 所有速度+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) char.SetStatus(AttackP=0.10,SpeedM=0.04,SpeedA=0.04,SpeedR=0.04,BufferP=0.015)
pass pass
@@ -11805,7 +11805,7 @@ def equ_4012(char: CharacterProperty):
暴击率+3% 暴击率+3%
所有速度+5% 所有速度+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) char.SetStatus(AttackP=0.14,SpeedM=0.05,SpeedA=0.05,SpeedR=0.05,BufferP=0.03)
pass pass
@@ -11821,7 +11821,7 @@ def equ_4013(char: CharacterProperty):
暴击率+3% 暴击率+3%
所有速度+4% 所有速度+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) char.SetStatus(AttackP=0.10,SpeedM=0.04,SpeedA=0.04,SpeedR=0.04,BufferP=0.015)
pass pass
@@ -11838,7 +11838,7 @@ def equ_4014(char: CharacterProperty):
暴击率+10% 暴击率+10%
所有速度+5% 所有速度+5%
""" """
char.AddSkillLv(1,75,1,0) char.AddSkillLv(1,75,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11859,7 +11859,7 @@ def equ_4015(char: CharacterProperty):
暴击率+5% 暴击率+5%
所有速度+4% 所有速度+4%
""" """
char.AddSkillLv(1,50,1,0) char.AddSkillLv(1,50,1)
char.AddElementDB('火',15) char.AddElementDB('火',15)
char.AddElementDB('冰',15) char.AddElementDB('冰',15)
char.AddElementDB('光',15) char.AddElementDB('光',15)
@@ -11880,7 +11880,7 @@ def equ_4016(char: CharacterProperty):
暴击率+10% 暴击率+10%
所有速度+5% 所有速度+5%
""" """
char.AddSkillLv(1,75,1,0) char.AddSkillLv(1,75,1)
char.AddElementDB('火',25) char.AddElementDB('火',25)
char.AddElementDB('冰',25) char.AddElementDB('冰',25)
char.AddElementDB('光',25) char.AddElementDB('光',25)
@@ -11901,7 +11901,7 @@ def equ_4017(char: CharacterProperty):
暴击率+5% 暴击率+5%
所有速度+4% 所有速度+4%
""" """
char.AddSkillLv(1,50,1,0) char.AddSkillLv(1,50,1)
char.AddElementDB('火',15) char.AddElementDB('火',15)
char.AddElementDB('冰',15) char.AddElementDB('冰',15)
char.AddElementDB('光',15) char.AddElementDB('光',15)
+22
View File
@@ -64,7 +64,29 @@ def jade_12(char: CharacterProperty = {}, value=0):
char.AddSkillLv(85, 85, 1) char.AddSkillLv(85, 85, 1)
pass 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 # # 辟邪玉效果id范围 26001~26999
# for i in range(26001, 26206): # for i in range(26001, 26206):
# try: # try:
Binary file not shown.
+3
View File
@@ -3,8 +3,10 @@ export interface IResult {
skills: IResultSkill[] skills: IResultSkill[]
info:IResultUserInfo[] info:IResultUserInfo[]
suits:IResultSuit[] suits:IResultSuit[]
buffer:boolean
} }
export interface IResultSkill { export interface IResultSkill {
name: string name: string
icon: string icon: string
@@ -14,6 +16,7 @@ export interface IResultSkill {
cd: number cd: number
damage: number damage: number
mode: string mode: string
buff:number[]
} }
export interface IResultUserInfo { export interface IResultUserInfo {
@@ -11,7 +11,8 @@
:equs="configStore.config.equips" :equs="configStore.config.equips"
></Info> ></Info>
</div> </div>
<Skill :data="configStore.result.state.skills" :standard="infoStore.standard"></Skill> <Skill v-if="!configStore.result.state.buffer" :data="configStore.result.state.skills" :standard="infoStore.standard"></Skill>
<BufferSkill v-else :data="configStore.result.state.skills" :stadard="infoStore.standard" :standard="infoStore.standard"></BufferSkill>
</div> </div>
</template> </template>
@@ -19,6 +20,8 @@
import { useConfigStore, useInfoStore } from '@/stores' import { useConfigStore, useInfoStore } from '@/stores'
import Info from './components/Info.vue' import Info from './components/Info.vue'
import Skill from './components/Skill.vue' import Skill from './components/Skill.vue'
import BufferSkill from './components/BufferSkill.vue'
import type { IResultSkill } from '@/api/calc/type'
const configStore = useConfigStore() const configStore = useConfigStore()
const infoStore = useInfoStore() const infoStore = useInfoStore()
@@ -0,0 +1,225 @@
<template>
<div class="bg-hex-000000/60 p-4 border-solid border-#FFFF/15" v-if="data && data.length > 0">
<div class="bg-hex-000000/40 text-white border-solid border-#FFFF/15 border-t-0">
<div class="flex px-1px gap-1px">
<div
v-for="(header, key) in [
{ label: '技能', width: 120, sortKey: 'name' },
{ label: 'CD', width: 50 },
{ label: '适用加成', width: 80, sortKey: 'MAIN' },
{ label: '三攻', width: 80, sortKey: 'ATK' },
{ label: '力智', width: 80, sortKey: 'STRINT' },
{ label: '额外增伤', width: 80, sortKey: 'ratio' },
]"
:key="key"
class="item-head"
:style="{ width: `${header.width}px` }"
@click="header.sortKey && sortValue(header.sortKey)"
>
{{ header.label }}
<template v-if="header.sortKey && sort === header.sortKey">
<span>{{ order === 'desc' ? '△' : '▽' }}</span>
</template>
</div>
</div>
<div class="overflow-y-auto max-h-600px">
<div class="flex px-1px gap-1px h-8.5" v-for="(skill, _) in data" :key="_">
<div class="flex w-120px items-center gap-10px">
<div class="w-28px h-28px relative">
<img :src="getImageURL(skill.icon)" alt="" class="w-28px h-28px" />
<div v-if="skill.lv" class="skill-lv-min" :data-text="`Lv ${skill.lv}`">
Lv {{ skill.lv }}
</div>
</div>
<div>{{ skill.name }}</div>
</div>
<div class="w-50px flex items-center justify-center">{{ typeof skill.cd === 'number' ? `${skill.cd.toFixed(1)}s` : '-' }}</div>
<component :is="formatDamage(skill)"></component>
</div>
</div>
<!-- <div
v-if="!totalStandard"
class="h-40px flex items-center justify-center text-18px border-t-1px border-t-solid border-t-#FFFF/15"
>
{{ showTotal.toFixed(0) }}
</div>
<div
v-else
class="h-40px flex items-center justify-center text-18px border-t-1px border-t-solid border-t-#FFFF/15"
:style="{ color: showTotal >= 0 ? '#37fa38' : '#ff0000' }"
>
{{ showTotal.toFixed(2) }}%
</div> -->
</div>
</div>
</template>
<script setup lang="ts" name="Skill">
import type { IResultSkill, IResultSkillCount } from '@/api/calc/type'
import { useConfigStore } from '@/stores'
import { getImageURL } from '@/utils/images'
import { h } from 'vue'
const props = defineProps<{
data: IResultSkill[]
standard?: {
skills: IResultSkill[]
skillCount: IResultSkillCount[]
}
}>()
const sort = ref<string>('STRINT')
const order = ref<'asc' | 'desc'>('desc')
const config = useConfigStore()
const data = computed(() => {
return props.data.sort((a, b) => {
let aValue = 0
let bValue = 0
if (['cd', 'name'].includes(sort.value)) {
// @ts-ignore
aValue = a[sort.value]
// @ts-ignore
bValue = b[sort.value]
}
const key = ['MAIN', 'ATK','STRINT', 'ratio'].findIndex((a) => sort.value == a)
aValue = a.buff?.[key]
bValue = b.buff?.[key]
return order.value == 'asc' ? aValue - bValue : bValue - aValue
})
})
const sortValue = (key: string) => {
if (sort.value == key) {
order.value = order.value == 'asc' ? 'desc' : 'asc'
} else {
order.value = 'desc'
}
sort.value = key
}
const skillCount = (skill: IResultSkill) => {
return computed({
get() {
let countConfig = config.skillCountConfig.find(
(a) => a.name == skill.name && a.mode == skill.mode,
)
if (!countConfig) {
countConfig = { name: skill.name, mode: skill.mode, count: 1 }
config.skillCountConfig.push(countConfig)
}
return countConfig.count
},
set(val) {
const index = config.skillCountConfig.findIndex(
(a) => a.name == skill.name && a.mode == skill.mode,
)
if (index > -1) {
config.skillCountConfig[index].count = val
} else {
config.skillCountConfig.push({ name: skill.name, mode: skill.mode, count: val })
}
},
})
}
const total = computed(() => {
return [0, 1, 2, 3].map((index) =>
props.data.reduce((acc, skill) => {
return acc + skill.buff?.[index]
}, 0),
)
})
const totalStandard = computed(() => {
if (!props.standard) return undefined
return [0, 1, 2, 3].map((index) =>
props.standard?.skills.reduce((acc, skill) => {
return acc + skill.buff?.[index]
}, 0),
)
})
const formatDamage = (skill: IResultSkill) => {
const standardSkill = props.standard?.skills?.find((a) => a.name == skill.name)
if (standardSkill) {
return h(
'div',
{
class: 'flex items-center justify-center',
},[0, 1, 2, 3].map((index) => {
const value = skill.buff?.[index] - standardSkill.buff?.[index]
return h(
'div',
{
style: {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '80px',
color: value >= 0 ? '#37fa38' : '#ff0000',
},
},
`${value >= 0 ? '+':''}${index == 3
? `${Math.round(value).toLocaleString()}%`
: Math.round(value).toLocaleString()}`
)
}))
} else {
return h(
'div',
{
class: 'flex items-center justify-center',
},[0, 1, 2, 3].map((index) => {
const value = skill.buff?.[index]
return h(
'div',
{
style: {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '80px',
},
},
index == 3
? `${Math.round(value).toLocaleString()}%`
: Math.round(value).toLocaleString(),
)
}))
}
}
</script>
<style scoped lang="scss">
.item-head {
background: linear-gradient(#2b2817, #171407);
border-top: 1px solid #423d2c;
border-bottom: 1px solid #211d15;
text-align: center;
}
.skill-lv-min {
position: absolute;
z-index: 0;
top: -3px;
right: -4px;
font-size: 12px;
transform: scale(0.7);
color: black;
text-shadow: none;
font-weight: bolder;
font-family: Arial;
}
.skill-lv-min::before {
content: attr(data-text);
position: absolute;
-webkit-text-stroke: 2.5px #37fa38;
font-family: Arial;
text-shadow: none;
z-index: -1;
}
</style>
@@ -4,15 +4,15 @@
<div class="flex px-1px gap-1px"> <div class="flex px-1px gap-1px">
<div <div
v-for="(header, key) in [ v-for="(header, key) in [
{ label: '技能', width: '180px', sortKey: 'name' }, { label: '技能', width: 180, sortKey: 'name' },
{ label: 'CD', width: '50px', sortKey: 'cd' }, { label: 'CD', width: 50, sortKey: 'cd' },
{ label: '次数', width: '50px' }, { label: '次数', width: 50 },
{ label: '秒伤', width: '100px', sortKey: 'dps' }, { label: '秒伤', width: 100, sortKey: 'dps' },
{ label: '总伤害', width: '110px', sortKey: 'total' }, { label: '总伤害', width: 110, sortKey: 'total' },
]" ]"
:key="key" :key="key"
class="item-head" class="item-head"
:style="{width: header.width}" :style="{width: `${header.width}px`}"
@click="header.sortKey && sortValue(header.sortKey)" @click="header.sortKey && sortValue(header.sortKey)"
> >
{{ header.label }} {{ header.label }}
+1
View File
@@ -189,6 +189,7 @@ export const useConfigStore = defineStore('configStore', () => {
skills: [], skills: [],
info: [], info: [],
suits: [], suits: [],
buffer:false
}, },
{ resetOnExecute: false }, { resetOnExecute: false },
) )
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB