套装相关

This commit is contained in:
2025-03-22 15:31:34 +08:00
parent c78faa5435
commit c6b6b02743
20 changed files with 529 additions and 107 deletions
+4
View File
@@ -5,6 +5,10 @@
## 运行
### clone
git clone --single-branch --branch master https://gitee.com/dnftools/dcalc.git
### frontend
前置条件:node 18+
+29
View File
@@ -0,0 +1,29 @@
from database.connect import get_db_engine as get_engine
from database.models import Session, EquData, SuitData
engine = get_engine('0')
with Session(engine) as session:
db_list = session.query(SuitData).all()
res = ''
curSuit = ''
for i in db_list:
if i.suitId != curSuit:
curSuit = i.suitId
res += f'''
# endregion
# region {i.suitName}
'''
res += f'''
def suit_{i.id}(char: Character):
\'''
{i.value}
\'''
pass
'''
with open('/Users/imelon/Desktop/Code/dnf/dcalc/backend/output.py', 'w') as file:
file.write(res)
+2 -2
View File
@@ -1,8 +1,8 @@
from fastapi import APIRouter
from api.routes import info
from api.routes import calc
api_router = APIRouter()
api_router.include_router(info.router,prefix="/api",tags=["info"])
api_router.include_router(calc.router,prefix="/api",tags=["calc"])
+17
View File
@@ -0,0 +1,17 @@
from api.core.Auth import createToken
from api.core.Gzip import register_gzip_request
import json
from fastapi import APIRouter, Body,Request
from api.core.Response import Return, response
from api.core.Redis import get_redis_info
from api.dp import RedisDep,AltersDep
from core.basic.character import createCharacter
router = APIRouter()
register_gzip_request(router)
@router.post('/calc')
async def calc(request: Request,state:AltersDep,config=Body(None)):
character = createCharacter(state.alter, state.equVersion)
return response(data=character.calc(config))
+42 -17
View File
@@ -5,7 +5,8 @@ from typing import Literal
from core.basic.property import CharacterInfo
from core.basic.skill import Skill
from core.basic.equipment import get_equipment,EquEffect
from core.basic.equipment import get_equipment, EquEffect,Equ
# from core.basic.equipment import equipments
# from core.basic.skill import Skill, ActiveSkill, PassiveSkill
from .formula import 获取基础属性
@@ -47,6 +48,9 @@ class Character:
ElementA: dict[str, float]
"""属性攻击"""
ElementIncrease:float
"""属性增幅"""
ElementDB: dict[str, float]
"""属性强化数值"""
@@ -93,15 +97,17 @@ class Character:
# endregion
skills: list["Skill"] = []
skills: list['Skill'] = []
# """技能列表"""
skills_dict: dict[str, "Skill"] = {}
skills_dict: dict[str, 'Skill'] = {}
# """技能名字对应技能"""
equVersion: str = '0'
"""装备版本"""
charEquipInfo: dict[str, "CharacterEquipInfo"]
charEquipInfo: dict[str, 'CharacterEquipInfo']
"""装备打造信息"""
equ_effect:list["EquEffect"] = []
equs: dict[str, 'Equ']
"""装备列表"""
equ_effect: list['EquEffect'] = []
"""装备效果列表"""
# region 角色属性
@@ -180,6 +186,8 @@ class Character:
self.BufferP = 1.0
self.Attack = 0
self.AttackP = 1.0
self.ElementIncrease = 0
self.equs = {}
pass
# region 角色属性设置
@@ -292,7 +300,7 @@ class Character:
self.BufferP += 增益量P + kwargs.get('BufferP', 0)
pass
def AddSkillLv(self, min, max, lv, type=-1) -> None:
def AddSkillLv(self, min:int, max:int, lv:int, type=-1) -> None:
"""
增加技能等级
type: -1 全部, 0 被动, 1 主动
@@ -302,26 +310,26 @@ class Character:
if type == -1 or skill.type == type:
skill.AddLv(lv, self)
def SetSkillCD(self, min=1, max=99, cd=0) -> None:
def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None:
"""
设置技能CD
type: -1 全部, 0 被动, 1 主动
"""
for skill in self.skills:
if min <= skill.requiredLv <= max and skill.damage:
if min <= skill.requiredLv <= max and skill.damage and skill.requiredLv not in exclude:
skill.CDR *= 1 - cd
def GetSkillByName(self, name) -> Skill:
"""通过技能名获取技能"""
return self.skills_dict.get(name,None)
return self.skills_dict.get(name, None)
def GetSkillByID(self,id:str) -> Skill:
skill = list(filter(lambda x:str(x.id) == id,self.skills))
def GetSkillByID(self, id: str) -> Skill:
skill = list(filter(lambda x: str(x.id) == id, self.skills))
"""通过技能ID获取技能"""
return skill[0] if len(skill) > 0 else None
@cache
def GetSkillNames(self, type: Literal['active', 'passive', 'all'] = 'all' , damage:Literal[True,False,'all'] = 'all') -> list[str]:
def GetSkillNames(self, type: Literal['active', 'passive', 'all'] = 'all', damage: Literal[True, False, 'all'] = 'all') -> list[str]:
"""获取技能名字"""
return [skill.name for skill in self.skills if (type == 'all' or skill.type == type) and (damage == 'all' or skill.damage == damage)]
@@ -362,14 +370,14 @@ class Character:
'icon': skill.icon,
'type': skill.type,
# 'SPCost': skill.SPCost,
"learnLv": skill.learnLv,
"masterLv": skill.masterLv,
"maxLearnLv":skill.calculate_lv(),
"maxLv": skill.maxLv,
'learnLv': skill.learnLv,
'masterLv': skill.masterLv,
'maxLearnLv': skill.calculate_lv(),
'maxLv': skill.maxLv,
# 'TPCost': 0 if not skill.hasTP else skill.TPCost,
# "masterTPLv":0 if not skill.hasTP else skill.masterTPLv,
# 'maxTPLv': 0 if not skill.hasTP else skill.TPLearnMax,
'position':skill.position
'position': skill.position,
}
)
info['skills'] = skillInfo
@@ -497,6 +505,23 @@ class Character:
# self.SetDetail(setInfo)
# 角色基础属性
self.SetBaseStatus()
suitInfo = {}
equs = get_equipment(self.equVersion)
# 设置装备和获取对应的套装属性
for part in self.charEquipInfo.keys():
# 当前部位的打造
cur = self.charEquipInfo[part]
# 当前部位适用调试后的属性
partEqu = equs.equ_dict.get(cur.id).adapt(cur.adaptation)
# 设置当前部位的装备
self.equs[part] = equs.equ_dict.get(cur.id)
# 套装属性设置
for suit in partEqu.suit:
suitInfo[suit] = partEqu.Point + suitInfo.get(suit, 0)
for suit in suitInfo:
print(equs.get_suit_info(suit, suitInfo[suit])[0].id)
skill = self.GetSkillByName('G-35L感电手雷')
print(skill.getSkillDate(skill.lv),skill.skillDamage,skill.skillRation)
return
# 技能影响角色的属性,如属强、抗性等
for skill in self.skills:
+8 -1
View File
@@ -13,6 +13,7 @@ class Equ:
rarity: str
itemType: str
itemDetailType: str
suit: list[str]
Point: list[float] | float
categorize: str
imageUrl: str
@@ -85,7 +86,11 @@ class Equipments:
max_adaptation = 0
item.id = str(item.id)
for attr in keys:
value = parse_to_number_list(getattr(item, attr))
if attr == 'suit':
value = parse_to_number_list(getattr(item, attr), [])
value = [str(int(i)) for i in value]
else:
value = parse_to_number_list(getattr(item, attr))
max_adaptation = max(max_adaptation, len(value) - 1)
setattr(item, attr, value)
equ_dict = {k: v for k, v in item.__dict__.items() if not k.startswith('_')}
@@ -109,6 +114,8 @@ class Equipments:
新套装只需要传入suitID和point即可,count默认为0\n
老套装需要传入suitID和count即可,point默认为0
"""
if suitId not in self.suit_dict:
return []
# 先筛选出点数小于等于point和数量小于等于count的套装
suits: list[Suit] = [suit for suit in self.suit_dict[str(suitId)] if suit.point <= point and suit.count <= count]
result: dict[int, Suit] = {}
+1 -1
View File
@@ -89,7 +89,7 @@ class CharacterAttributes(Enum):
AttackP = '攻击强化%'
mapping = {value: key for key, value in CharacterAttributes.__members__.items()}
mapping = {value.value : key for key, value in CharacterAttributes.__members__.items()}
def get_key_by_value(value: str) -> str:
+1 -1
View File
@@ -97,7 +97,7 @@ class Skill:
def effect(self, old: int, new: int):
for assoc in self.associate:
type = assoc.get('type', '*skillRation')
skills = assoc.get('skills', 'all')
skills = assoc.get('skills', '*')
data = assoc.get('data', [0] * self.maxLv)
if type[0] not in ['*', '+', '$']:
if self.precondition():
@@ -95,7 +95,7 @@ class Skill5(PassiveSkill):
data0 = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200] # noqa: E501
associate = [{'type': '*skillRation', 'data': data0, 'skills': ['G-14手雷']}]
associate = [{'type': '*skillRation', 'data': data0, 'skills': ['G-14手雷','G-35L感电手雷','G-18C冰冻手雷']}]
# M18阔剑地雷 M18 클레이모어
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/2ff50c35efcf0f287c4c418c8454da48?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -194,8 +194,6 @@ class Skill11(ActiveSkill):
data4 = [0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60]# noqa: E501
data5 = [0, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60]# noqa: E501
def effect(self, old , new):
pass
# 聚合弹 버스터 샷
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3fb8395ae3b81bd608e0c4223a8eb534?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -211,8 +209,6 @@ class Skill12(ActiveSkill):
data0 = [0, 24425, 26904, 29382, 31860, 34337, 36818, 39294, 41772, 44252, 46730, 49208, 51684, 54165, 56642, 59120, 61598, 64077, 66555, 69032, 71510, 73989, 76467, 78944, 81422, 83903, 86379, 88857, 91334, 93815, 96291, 98769, 101247, 103727, 106205, 108681, 111159, 113639, 116117, 118595, 121071, 123552, 126029, 128507, 130986, 133464, 135942, 138419, 140900, 143376, 145854, 148331, 150812, 153288, 155766, 158244, 160724, 163202, 165678, 168156, 170636, 173114, 175592, 178068, 180549, 183026, 185504, 187982, 190461, 192939, 195416]# noqa: E501
def effect(self, old , new):
pass
# 凝固汽油弹 네이팜 탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/1803b6a67047cafb9e289b4f33cc507b?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -233,8 +229,6 @@ class Skill13(ActiveSkill):
data3 = [0, 129, 137, 152, 162, 177, 188, 203, 213, 228, 239, 252, 267, 278, 293, 303, 318, 329, 344, 353, 368, 380, 393, 408, 419, 434, 444, 458, 468, 483, 497, 509, 522, 534, 551, 560, 573, 584, 599, 612, 624, 638, 650, 663, 674, 689, 702, 714, 728, 740, 753, 765, 776, 789, 801, 818, 830, 843, 855, 869, 881, 891, 905, 917, 933, 944, 959, 971, 984, 995, 1007]# noqa: E501
data4 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
def effect(self, old , new):
pass
# 镭射狙击 록 온 서포트
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/845e0ce3235e19f60cc82a082d072cba?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -255,8 +249,6 @@ class Skill14(ActiveSkill):
data3 = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]# noqa: E501
data4 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 弹药强化 병기강화
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/b89c9ab317bc0a443f6497b7cca2f6a8?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -271,8 +263,8 @@ class Skill15(PassiveSkill):
data0 = [0, 12, 13.5, 15, 16.5, 18, 19.5, 21, 22.5, 24, 25.5, 27, 28.5, 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, 76.5, 78, 79.5, 81, 82.5, 84, 85.5]# noqa: E501
data1 = [0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]# noqa: E501
def effect(self, old , new):
pass
associate = [{'type': '*skillRation', 'data': data0}]
# EMP磁暴 EMP 스톰
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/2c9d9a36c8401bddff6cdb80fab8dc24?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -293,8 +285,6 @@ class Skill16(ActiveSkill):
data3 = [0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]# noqa: E501
data4 = [0, 21013, 25886, 30758, 35632, 40504, 45376, 50249, 55123, 59995, 64867, 69741, 74613, 79486, 84358, 89232, 94104, 98977, 103851, 108723, 113595, 118467, 123341, 128214, 133086, 137958, 142832, 147704, 152577, 157451, 162323, 167195, 172068, 176942, 181814, 186686, 191560, 196432, 201305, 206177, 211051, 215923, 220796, 225670, 230542, 235414, 240286, 245160, 250033, 254905, 259777]# noqa: E501
def effect(self, old , new):
pass
# G-61重力手雷 G-61 중력류탄
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/e0daa922b19cdc35de879e938361464e?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -316,8 +306,6 @@ class Skill17(ActiveSkill):
data4 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
data5 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
def effect(self, old , new):
pass
# 超真空弹 : 切利 초진공탄 : 첼리
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/1bf9711f3f15865e38d7dce51c6b5a8c?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -339,8 +327,6 @@ class Skill18(ActiveSkill):
data4 = [0, 39519, 43530, 47537, 51548, 55557, 59565, 63575, 67584, 71594, 75602, 79611, 83622, 87632, 91640, 95649, 99659, 103668, 107676, 111686, 115697, 119706, 123714, 127724, 131733, 135741, 139751, 143760, 147771, 151778, 155789, 159798, 163808, 167816, 171825, 175835, 179846, 183852, 187863, 191873, 195882, 199890, 203900, 207909, 211917, 215927, 219938, 223947, 227955, 231965, 235974]# noqa: E501
data5 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 制空掌握 증명의 열쇠
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/f45301a5590cccefbe0becf2f8d029f5?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -354,8 +340,7 @@ class Skill19(PassiveSkill):
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
def effect(self, old , new):
pass
associate = [{'type': '*skillRation', 'data': data0}]
# 开火 오픈 파이어
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/9ceb0c55f40f1fc0fe0fcc65c8fee3a0?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -374,8 +359,6 @@ class Skill20(ActiveSkill):
data1 = [0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]# noqa: E501
data2 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 光子霰雷发射器 포토빌라이저
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/3736fe00a26b0086c23db9a4426a5641?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -394,8 +377,6 @@ class Skill21(ActiveSkill):
data1 = [0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]# noqa: E501
data2 = [0, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]# noqa: E501
def effect(self, old , new):
pass
# 决战之日 디-데이
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/13a759aad5bb7fb7f08fae8f88c1cdbb?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -412,8 +393,6 @@ class Skill22(ActiveSkill):
data0 = [0, 5644, 6954, 8263, 9573, 10881, 12190, 13500, 14808, 16117, 17427, 18736, 20044, 21354, 22664, 23973, 25281, 26591, 27900, 29208, 30518, 31827, 33137, 34445, 35754, 37064, 38373, 39681, 40991, 42301, 43608, 44918, 46228, 47537, 48845, 50155, 51464, 52772, 54082, 55391, 56701, 58009, 59318, 60628, 61938, 63245, 64555, 65865, 67172, 68482, 69792]# noqa: E501
def effect(self, old , new):
pass
# 单兵推进器-02X 니트로 모터-02X
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/34e1bda921012f6018709f1c1a12b04d?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -429,8 +408,8 @@ class Skill23(PassiveSkill):
data1 = [0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]# noqa: E501
data2 = [0, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120]# noqa: E501
def effect(self, old , new):
pass
associate = [{'type': '*skillRation', 'data': data0}]
# 空袭战略 스탠바이-레디
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/c591d1827cfbe224031c704e21d07932?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -448,8 +427,6 @@ class Skill24(ActiveSkill):
data0 = [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]# noqa: E501
data1 = [0, 95173, 104828, 114483, 124139, 133794, 143449, 153104, 162760, 172415, 182070, 191726, 201380, 211036, 220691, 230347, 240001, 249657, 259313, 268967, 278623, 288278, 297933, 307588, 317244, 326899, 336554, 346210, 355865, 365520, 375175, 384831, 394486, 404141, 413796, 423452, 433107, 442762, 452418, 462072, 471728, 481383, 491038, 500693, 510349, 520004, 529659, 539315, 548970, 558625, 568280]# noqa: E501
def effect(self, old , new):
pass
# 终解·制空霸权 데피니트 솔루션
# https://api.neople.co.kr/df/skills/944b9aab492c15a8474f96947ceeb9e4/8ad90fd01b5844edd692fff54d9f74e7?apikey=fdvit1Kj64EAJm0qfB3JEAD8FLExLDD0
@@ -469,8 +446,6 @@ class Skill25(ActiveSkill):
data2 = [0, 93290, 114923, 136555, 158188, 179822, 201454, 223087, 244719, 266352, 287984, 309618, 331251, 352883, 374515, 396148, 417780, 439414, 461047, 482679, 504312, 525944, 547578, 569211, 590843, 612475, 634108, 655740, 677374, 699007, 720639, 742272, 763904, 785537, 807171, 828803, 850436, 872068, 893700, 915334, 936967, 958599, 980232, 1001864, 1023497, 1045131, 1066763, 1088396, 1110028, 1131660, 1153293]# noqa: E501
data3 = [0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]# noqa: E501
def effect(self, old , new):
pass
class classChange(Character):
@@ -491,6 +466,10 @@ class classChange(Character):
self.防具类型 = '皮甲'
self.buff = 1.84
self.角色 = '神枪手(女)'
self.职业 = '弹药专家'
self.load_skills()
def load_skills(self):
@@ -0,0 +1,8 @@
from .suit import suit_func_list
from .jade import jade_func_list
options = [
{'id': 1, 'name': '龙战八荒,', 'options': ['BUFF OFF', 'BUFF ON', '期望']},
{'id': 2, 'name': '混沌净化', 'options': ['净化', '堕落']},
]
+151
View File
@@ -0,0 +1,151 @@
from core.basic.character import Character
jade_func_list = {}
for i in range(0,20):
try:
if i not in jade_func_list.keys():
jade_func_list[i] = eval(f'jade_{i}')
except Exception:
pass
def jade_0(char: Character = {}, value=0):
pass
def jade_1(char: Character = {}, value=0):
char.SetStatus(SkillDamage=value/100)
def jade_2(char: Character = {}, value=0):
char.SetStatus(AttackP=value/100)
pass
def jade_3(char: Character = {}, value=0):
char.ElementIncrease += value/100
pass
def jade_4(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(10, 15, 1)
pass
def jade_5(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(20, 25, 1)
pass
def jade_6(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(30, 35, 1)
pass
def jade_7(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(40, 45, 1)
pass
def jade_8(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(55, 60, 1)
pass
def jade_9(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(65, 70, 1)
pass
def jade_10(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(75, 80, 1)
pass
def jade_11(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(50, 50, 1)
pass
def jade_12(char: Character = {}, value=0):
if value > 0:
char.AddSkillLv(85, 85, 1)
pass
# # 辟邪玉效果id范围 26001~26999
# for i in range(26001, 26206):
# try:
# if i not in jade_func_list.keys():
# jade_func_list[i] = eval('jade_{}'.format(i))
# except Exception:
# pass
# def jade_26201(char=CharacterProperty, text=False, value=0):
# if text:
# return "(76, -25, 25, '', 1, 'Lv30 Buff技能力智增加',1)"
# char.辅助属性加成(buff固定力智=value, 百分比buff量=value / 1000)
# def jade_26202(char=CharacterProperty, text=False, value=0):
# if text:
# return "(76, -5, 5, '%', 0.1, 'Lv30 Buff技能力智增加%',1)"
# char.辅助属性加成(buff百分比力智=value / 100, 百分比buff量=value / 200)
# def jade_26203(char=CharacterProperty, text=False, value=0):
# if text:
# return "(76, -5, 5, '', 1, 'Lv30 Buff技能三攻增加',1)"
# char.辅助属性加成(buff固定三攻=value, 百分比buff量=value / 200)
# def jade_26204(char=CharacterProperty, text=False, value=0):
# if text:
# return "(76, -5, 5, '%', 0.1, 'Lv30 Buff技能三攻增加%',1)"
# char.辅助属性加成(buff百分比三攻=value / 100, 百分比buff量=value / 200)
# def jade_26205(char=CharacterProperty, text=False, value=0):
# if text:
# return "(76, -100, 100, '', 1, 'Lv50 主动技能力智增加',1)"
# char.辅助属性加成(觉醒固定力智=value, 百分比buff量=value / 4000)
# def jade_26206(char=CharacterProperty, text=False, value=0):
# if text:
# return "(76, -5, 5, '%', 0.1, 'Lv50 主动技能力智增加%',1)"
# char.辅助属性加成(觉醒百分比力智=value/100, 百分比buff量=value / 200)
# def jade_26207(char={}, text=False, value=0):
# if text:
# return "(55, -5, 5, '%', 0.1, '攻击、移动、施放速度',1)"
# char.攻击速度增加(value/100)
# for i in range(26201, 26210):
# try:
# if i not in jade_func_list.keys():
# jade_func_list[i] = eval('jade_{}'.format(i))
# sorted(jade_func_list, key=lambda x: eval(x(text=True))[6])
# except Exception:
# pass
# def get_jadefunc_by_id(id):
# return jade_func_list.get(int(id), jade_26000)
# def get_jade_setinfo():
# infolist = []
# for i in jade_func_list.keys():
# data = {}
# data['id'] = i
# info = eval(jade_func_list[i](text=True))
# num = 0
# for k in index:
# data[k] = info[num]
# num += 1
# infolist.append(data)
# infolist = sorted(infolist, key=lambda x: x["order"])
# return infolist
+232 -48
View File
@@ -1,6 +1,15 @@
from core.basic.character import Character
from core.basic.equipment import EquEffect
suit_func_list = {}
for i in range(0, 300):
try:
if i not in suit_func_list.keys():
suit_func_list[i] = eval(f'suit_{i}')
except Exception:
pass
# region 潜影暗袭
@@ -111,7 +120,7 @@ def suit_12(char: Character):
- 强制中断角色动作(觉醒技能除外)
- 所有速度 +5%,效果持续5秒(最多叠加3次)
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -124,7 +133,7 @@ def suit_13(char: Character):
- 强制中断角色动作(觉醒技能除外)
- 所有速度 +5%,效果持续5秒(最多叠加3次)
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -137,7 +146,7 @@ def suit_14(char: Character):
- 强制中断角色动作(觉醒技能除外)
- 所有速度 +5%,效果持续5秒(最多叠加3次)
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -150,7 +159,7 @@ def suit_15(char: Character):
- 强制中断角色动作(觉醒技能除外)
- 所有速度 +5%,效果持续5秒(最多叠加3次)
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -170,7 +179,7 @@ def suit_16(char: Character):
- 追击范围:600px
- 冷却时间:8秒
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -190,7 +199,7 @@ def suit_17(char: Character):
- 追击范围:600px
- 冷却时间:8秒
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -210,7 +219,7 @@ def suit_18(char: Character):
- 追击范围:600px
- 冷却时间:8秒
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -230,7 +239,7 @@ def suit_19(char: Character):
- 追击范围:600px
- 冷却时间:8秒
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -250,7 +259,7 @@ def suit_20(char: Character):
- 追击范围:600px
- 冷却时间:8秒
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -269,7 +278,7 @@ def suit_21(char: Character):
- 追击范围:800px
- 冷却时间:8秒
"""
char.SetStatus(SpeedA=0.05 * 3, SpeedM=0.05 * 3, SpeedR=0.05 * 3)
suit_11(char)
pass
@@ -336,7 +345,7 @@ def suit_28(char: Character):
- 攻击中止/继续攻击
- 冷却时间1秒
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
suit_27(char)
pass
@@ -350,7 +359,7 @@ def suit_29(char: Character):
- 攻击中止/继续攻击
- 冷却时间1秒
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
suit_27(char)
pass
@@ -364,7 +373,7 @@ def suit_30(char: Character):
- 攻击中止/继续攻击
- 冷却时间1秒
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
suit_27(char)
pass
@@ -378,7 +387,7 @@ def suit_31(char: Character):
- 攻击中止/继续攻击
- 冷却时间1秒
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
suit_27(char)
pass
@@ -424,9 +433,7 @@ def suit_33(char: Character):
- 被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:80,401%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=80400))
suit_32(char)
pass
@@ -448,9 +455,7 @@ def suit_34(char: Character):
- 被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:80,402%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=80400))
suit_32(char)
pass
@@ -472,9 +477,7 @@ def suit_35(char: Character):
- 被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:80,403%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=80400))
suit_32(char)
pass
@@ -496,9 +499,7 @@ def suit_36(char: Character):
- 被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:80,404%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=80400))
suit_32(char)
pass
@@ -558,11 +559,7 @@ def suit_38(char: Character):
一被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:118,200%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='风灵希尔珂', icon='', cd=2, data=19200))
char.SetBaseStatus(SpeedM=0.15)
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=118200))
suit_37(char)
pass
@@ -590,11 +587,7 @@ def suit_39(char: Character):
一被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:118,200%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='风灵希尔珂', icon='', cd=2, data=19200))
char.SetBaseStatus(SpeedM=0.15)
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=118200))
suit_37(char)
pass
@@ -622,11 +615,7 @@ def suit_40(char: Character):
一被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:118,200%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='风灵希尔珂', icon='', cd=2, data=19200))
char.SetBaseStatus(SpeedM=0.15)
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=118200))
suit_37(char)
pass
@@ -654,11 +643,7 @@ def suit_41(char: Character):
一被击时,精灵之魂- 5(冷却时间1秒)
- 元素释放伤害量:118,200%
"""
char.equ_effect.append(EquEffect(name='火灵安珀', icon='', cd=2, data=19200))
char.equ_effect.append(EquEffect(name='水灵阿库娅', icon='', cd=3, data=24000))
char.equ_effect.append(EquEffect(name='风灵希尔珂', icon='', cd=2, data=19200))
char.SetBaseStatus(SpeedM=0.15)
char.equ_effect.append(EquEffect(name='元素释放', icon='', cd=15, data=118200))
suit_37(char)
pass
@@ -784,6 +769,7 @@ def suit_49(char: Character):
- 首饰 : 数值每达到 +3, 技能伤害 +1% (最多叠加7次)
- 特殊装备 : 数值每达到 +3, 所有速度 +2% (最多叠加7次)
"""
suit_48(char)
pass
@@ -796,6 +782,7 @@ def suit_50(char: Character):
- 首饰 : 数值每达到 +3, 技能伤害 +1% (最多叠加7次)
- 特殊装备 : 数值每达到 +3, 所有速度 +2% (最多叠加7次)
"""
suit_48(char)
pass
@@ -808,6 +795,7 @@ def suit_51(char: Character):
- 首饰 : 数值每达到 +3, 技能伤害 +1% (最多叠加7次)
- 特殊装备 : 数值每达到 +3, 所有速度 +2% (最多叠加7次)
"""
suit_48(char)
pass
@@ -820,6 +808,7 @@ def suit_52(char: Character):
- 首饰 : 数值每达到 +3, 技能伤害 +1% (最多叠加7次)
- 特殊装备 : 数值每达到 +3, 所有速度 +2% (最多叠加7次)
"""
suit_48(char)
pass
@@ -832,13 +821,42 @@ def suit_53(char: Character):
- 首饰 : 数值每达到 +3, 技能伤害 +1% (最多叠加12次)
- 特殊装备 : 数值每达到 +3, 所有速度 +2% (最多叠加12次)
[辅助职业专属属性]
装备的强化/增幅数值平均每增加1时, 适用以下效果。 (最多叠加12次)
- 技能冷却时间 - 2%
"""
reinforce_0 = 0
"""防具"""
reinforce_1 = 0
"""首饰"""
reinforce_2 = 0
"""特殊装备"""
reinforce_3 = 0
"""武器"""
for part in char.charEquipInfo.keys():
if char.charEquipInfo[part].id <= 0:
continue
num = char.charEquipInfo[part].reinforce
if part == '武器':
reinforce_3 += num
if ['上衣', '头肩', '下装', '腰带', '鞋'].includes(part):
reinforce_0 += num
if ['手镯', '项链', '戒指'].includes(part):
reinforce_1 += num
if ['耳环', '辅助装备', '魔法石'].includes(part):
reinforce_2 += num
reinforce = reinforce_0 + reinforce_1 + reinforce_2 + reinforce_3
char.SetStatus(SkillRange=0.02 * min(reinforce // 11, 12))
# char.SetStatus(DamageReduce=0.01 * min(reinforce_0 // 5, 7))
char.SetStatus(SkillDamage=0.01 * min(reinforce_1 // 3, 12))
char.SetStatus(SpeedA=0.02 * min(reinforce_2 // 3, 12))
char.SetStatus(SpeedM=0.02 * min(reinforce_2 // 3, 12))
char.SetStatus(SpeedR=0.02 * min(reinforce_2 // 3, 12))
if char.buffer:
char.SetSkillCD(cd=0.02 * min(reinforce // 1, 12))
pass
@@ -858,6 +876,8 @@ def suit_54(char: Character):
装备的强化/增幅数值平均每增加1时, 适用以下效果。 (最多叠加12次)
- 技能冷却时间 - 2%
"""
suit_53(char)
pass
@@ -877,6 +897,7 @@ def suit_55(char: Character):
装备的强化/增幅数值平均每增加1时, 适用以下效果。 (最多叠加12次)
- 技能冷却时间 - 2%
"""
suit_53(char)
pass
@@ -896,6 +917,7 @@ def suit_56(char: Character):
装备的强化/增幅数值平均每增加1时, 适用以下效果。 (最多叠加12次)
- 技能冷却时间 - 2%
"""
suit_53(char)
pass
@@ -915,6 +937,7 @@ def suit_57(char: Character):
装备的强化/增幅数值平均每增加1时, 适用以下效果。 (最多叠加12次)
- 技能冷却时间 - 2%
"""
suit_53(char)
pass
@@ -943,6 +966,51 @@ def suit_58(char: Character):
- 技能冷却时间 - 2%
- 110以上时, 数值每达到 +11, 增益量 +750 (最多叠加2次)
"""
reinforce_0 = 0
"""防具"""
reinforce_1 = 0
"""首饰"""
reinforce_2 = 0
"""特殊装备"""
reinforce_3 = 0
"""武器"""
for part in char.charEquipInfo.keys():
if char.charEquipInfo[part].id <= 0:
continue
num = char.charEquipInfo[part].reinforce
if part == '武器':
reinforce_3 += num
if ['上衣', '头肩', '下装', '腰带', '鞋'].includes(part):
reinforce_0 += num
if ['手镯', '项链', '戒指'].includes(part):
reinforce_1 += num
if ['耳环', '辅助装备', '魔法石'].includes(part):
reinforce_2 += num
reinforce = reinforce_0 + reinforce_1 + reinforce_2 + reinforce_3
char.SetStatus(SkillRange=0.02 * min(reinforce // 11, 12))
# char.SetStatus(DamageReduce=0.01 * min(reinforce_0 // 5, 7))
char.SetStatus(SkillDamage=0.01 * min(reinforce_1 // 3, 12))
char.SetStatus(SpeedA=0.02 * min(reinforce_2 // 3, 12))
char.SetStatus(SpeedM=0.02 * min(reinforce_2 // 3, 12))
char.SetStatus(SpeedR=0.02 * min(reinforce_2 // 3, 12))
if char.buffer:
char.SetSkillCD(cd=0.02 * min(reinforce // 1, 12))
if reinforce >= 110:
char.SetStatus(SkillDamage=0.02 * min((reinforce - 110) // 11, 2))
if char.buffer:
char.SetSkillCD(Buffer=750 * min((reinforce - 110) // 11, 2))
if reinforce < 88:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=9600))
elif reinforce < 110:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=10440))
elif reinforce < 132:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=12000))
else:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=14400))
pass
@@ -971,6 +1039,7 @@ def suit_59(char: Character):
- 技能冷却时间 - 2%
- 110以上时, 数值每达到 +11, 增益量 +750 (最多叠加2次)
"""
suit_58(char)
pass
@@ -999,6 +1068,7 @@ def suit_60(char: Character):
- 技能冷却时间 - 2%
- 110以上时, 数值每达到 +11, 增益量 +750 (最多叠加2次)
"""
suit_58(char)
pass
@@ -1027,6 +1097,7 @@ def suit_61(char: Character):
- 技能冷却时间 - 2%
- 110以上时, 数值每达到 +11, 增益量 +750 (最多叠加2次)
"""
suit_58(char)
pass
@@ -1055,6 +1126,7 @@ def suit_62(char: Character):
- 技能冷却时间 - 2%
- 110以上时, 数值每达到 +11, 增益量 +750 (最多叠加2次)
"""
suit_58(char)
pass
@@ -1083,6 +1155,51 @@ def suit_63(char: Character):
- 技能冷却时间 - 2%
- 121以上时, 数值每达到 +11, 增益量 +1500 (最多叠加2次)
"""
reinforce_0 = 0
"""防具"""
reinforce_1 = 0
"""首饰"""
reinforce_2 = 0
"""特殊装备"""
reinforce_3 = 0
"""武器"""
for part in char.charEquipInfo.keys():
if char.charEquipInfo[part].id <= 0:
continue
num = char.charEquipInfo[part].reinforce
if part == '武器':
reinforce_3 += num
if ['上衣', '头肩', '下装', '腰带', '鞋'].includes(part):
reinforce_0 += num
if ['手镯', '项链', '戒指'].includes(part):
reinforce_1 += num
if ['耳环', '辅助装备', '魔法石'].includes(part):
reinforce_2 += num
reinforce = reinforce_0 + reinforce_1 + reinforce_2 + reinforce_3
char.SetStatus(SkillRange=0.02 * min(reinforce // 11, 12))
# char.SetStatus(DamageReduce=0.01 * min(reinforce_0 // 5, 7))
char.SetStatus(SkillDamage=0.01 * min(reinforce_1 // 3, 12))
char.SetStatus(SpeedA=0.02 * min(reinforce_2 // 3, 12))
char.SetStatus(SpeedM=0.02 * min(reinforce_2 // 3, 12))
char.SetStatus(SpeedR=0.02 * min(reinforce_2 // 3, 12))
if char.buffer:
char.SetSkillCD(cd=0.02 * min(reinforce // 1, 12))
if reinforce >= 110:
char.SetStatus(SkillDamage=0.02 * min((reinforce - 110) // 11, 2))
if char.buffer:
char.SetSkillCD(Buffer=1500 * min((reinforce - 110) // 11, 2))
if reinforce < 88:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=9600))
elif reinforce < 110:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=10440))
elif reinforce < 132:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=12000))
else:
char.equ_effect.append(EquEffect(name='淘银热', icon='', cd=10, data=14400))
pass
@@ -1131,6 +1248,7 @@ def suit_69(char: Character):
无色小晶块消耗量减少1个。
所有速度 +10%
"""
char.SetStatus(SpeedA=0.1, SpeedM=0.1, SpeedR=0.1)
pass
@@ -1140,6 +1258,7 @@ def suit_70(char: Character):
无色小晶块消耗量减少1个。
所有速度 +10%
"""
suit_69(char)
pass
@@ -1149,6 +1268,7 @@ def suit_71(char: Character):
无色小晶块消耗量减少1个。
所有速度 +10%
"""
suit_69(char)
pass
@@ -1158,6 +1278,7 @@ def suit_72(char: Character):
无色小晶块消耗量减少1个。
所有速度 +10%
"""
suit_69(char)
pass
@@ -1167,6 +1288,7 @@ def suit_73(char: Character):
无色小晶块消耗量减少1个。
所有速度 +10%
"""
suit_69(char)
pass
@@ -1180,6 +1302,8 @@ def suit_74(char: Character):
攻击时, 青龙升天。 (冷却时间10秒)
* 青龙升天伤害量 : 14,400%
"""
char.SetStatus(SpeedA=0.1, SpeedM=0.1, SpeedR=0.1)
char.equ_effect.append(EquEffect(name='龙之胜战', icon='', cd=10, data=14400))
pass
@@ -1193,6 +1317,7 @@ def suit_75(char: Character):
攻击时, 青龙升天。 (冷却时间10秒)
* 青龙升天伤害量 : 14,400%
"""
suit_74(char)
pass
@@ -1206,6 +1331,7 @@ def suit_76(char: Character):
攻击时, 青龙升天。 (冷却时间10秒)
* 青龙升天伤害量 : 14,400%
"""
suit_74(char)
pass
@@ -1219,6 +1345,7 @@ def suit_77(char: Character):
攻击时, 青龙升天。 (冷却时间10秒)
* 青龙升天伤害量 : 14,400%
"""
suit_74(char)
pass
@@ -1232,6 +1359,7 @@ def suit_78(char: Character):
攻击时, 青龙升天。 (冷却时间10秒)
* 青龙升天伤害量 : 14,400%
"""
suit_74(char)
pass
@@ -1256,6 +1384,18 @@ def suit_79(char: Character):
* 白龙强袭伤害量:6,000%
- 冷却时间60秒
"""
if char.equ_options.get('1', 0) == 0:
char.SetStatus(SpeedA=0.1, SpeedM=0.1, SpeedR=0.1)
char.equ_effect.append(EquEffect(name='烛龙腾霄', icon='', cd=10, data=14400))
elif char.equ_options.get('1', 0) == 1:
char.SetStatus(SpeedA=0.3, SpeedM=0.3, SpeedR=0.3)
char.SetStatus(SkillDamage=0.03)
char.equ_effect.append(EquEffect(name='白龙强袭', icon='', cd=3, data=6000))
elif char.equ_options.get('1', 0) == 2:
char.SetStatus(SpeedA=0.2, SpeedM=0.2, SpeedR=0.2)
char.SetStatus(SkillDamage=0.015)
char.equ_effect.append(EquEffect(name='白龙强袭', icon='', cd=3, data=6000))
char.equ_effect.append(EquEffect(name='烛龙腾霄', icon='', cd=10, data=14400))
pass
@@ -1280,6 +1420,7 @@ def suit_80(char: Character):
* 白龙强袭伤害量:6,000%
- 冷却时间60秒
"""
suit_79(char)
pass
@@ -1304,6 +1445,7 @@ def suit_81(char: Character):
* 白龙强袭伤害量:6,000%
- 冷却时间60秒
"""
suit_79(char)
pass
@@ -1328,6 +1470,7 @@ def suit_82(char: Character):
* 白龙强袭伤害量:6,000%
- 冷却时间60秒
"""
suit_79(char)
pass
@@ -1352,6 +1495,7 @@ def suit_83(char: Character):
* 白龙强袭伤害量:6,000%
- 冷却时间60秒
"""
suit_79(char)
pass
@@ -1375,6 +1519,14 @@ def suit_84(char: Character):
[应龙的如意珠]效果生效状态下攻击时,黑龙横扫敌人。(冷却时间4秒)
*横扫伤害量:7,200%
"""
if char.equ_options.get('1', 0) == 0:
char.SetStatus(SpeedA=0.1, SpeedM=0.1, SpeedR=0.1)
char.equ_effect.append(EquEffect(name='烛龙腾霄', icon='', cd=10, data=14400))
elif char.equ_options.get('1', 0) == 1:
char.SetStatus(SpeedA=0.3, SpeedM=0.3, SpeedR=0.3)
char.SetStatus(SkillDamage=0.03)
char.equ_effect.append(EquEffect(name='白龙强袭', icon='', cd=3, data=6000))
char.equ_effect.append(EquEffect(name='应龙之怒', icon='', cd=4, data=7200))
pass
@@ -1425,6 +1577,7 @@ def suit_90(char: Character):
- 技能冷却时间 - 30.0%
- 每秒恢复0.5%生命值/魔法值
"""
char.SetSkillCD(cd=0.3)
pass
@@ -1436,6 +1589,7 @@ def suit_91(char: Character):
- 技能冷却时间 - 30.0%
- 每秒恢复0.5%生命值/魔法值
"""
suit_90(char)
pass
@@ -1447,6 +1601,7 @@ def suit_92(char: Character):
- 技能冷却时间 - 30.0%
- 每秒恢复0.5%生命值/魔法值
"""
suit_90(char)
pass
@@ -1458,6 +1613,7 @@ def suit_93(char: Character):
- 技能冷却时间 - 30.0%
- 每秒恢复0.5%生命值/魔法值
"""
suit_90(char)
pass
@@ -1469,6 +1625,7 @@ def suit_94(char: Character):
- 技能冷却时间 - 30.0%
- 每秒恢复0.5%生命值/魔法值
"""
suit_90(char)
pass
@@ -1485,6 +1642,11 @@ def suit_95(char: Character):
- 技能冷却时间- 55%(觉醒技能除外)
- 进入霸体状态
"""
if char.equ_options.get('2', 0) == 0:
char.SetStatus(SkillDamage=0.175)
char.SetSkillCD(cd=0.3)
else:
char.SetSkillCD(cd=0.55)
pass
@@ -1501,6 +1663,7 @@ def suit_96(char: Character):
- 技能冷却时间- 55%(觉醒技能除外)
- 进入霸体状态
"""
suit_95(char)
pass
@@ -1517,6 +1680,7 @@ def suit_97(char: Character):
- 技能冷却时间- 55%(觉醒技能除外)
- 进入霸体状态
"""
suit_95(char)
pass
@@ -1533,6 +1697,7 @@ def suit_98(char: Character):
- 技能冷却时间- 55%(觉醒技能除外)
- 进入霸体状态
"""
suit_95(char)
pass
@@ -1549,6 +1714,7 @@ def suit_99(char: Character):
- 技能冷却时间- 55%(觉醒技能除外)
- 进入霸体状态
"""
suit_95(char)
pass
@@ -1568,6 +1734,7 @@ def suit_100(char: Character):
- 进入霸体状态
- 跳跃时可以再跳跃一次
"""
suit_95(char)
pass
@@ -1587,6 +1754,7 @@ def suit_101(char: Character):
- 进入霸体状态
- 跳跃时可以再跳跃一次
"""
suit_95(char)
pass
@@ -1606,6 +1774,7 @@ def suit_102(char: Character):
- 进入霸体状态
- 跳跃时可以再跳跃一次
"""
suit_95(char)
pass
@@ -1625,6 +1794,7 @@ def suit_103(char: Character):
- 进入霸体状态
- 跳跃时可以再跳跃一次
"""
suit_95(char)
pass
@@ -1644,6 +1814,7 @@ def suit_104(char: Character):
- 进入霸体状态
- 跳跃时可以再跳跃一次
"""
suit_95(char)
pass
@@ -1669,6 +1840,7 @@ def suit_105(char: Character):
[堕落]
- 技能冷却时间 - 55.0%
"""
suit_95(char)
pass
@@ -1722,6 +1894,7 @@ def suit_111(char: Character):
攻击时, 有3%的几率发动[神的祝福]。 (发动冷却1秒)
剩余冷却时间33秒以下的技能中, 初始化剩余时间最长的1个技能 (觉醒技能除外)
"""
char.SetStatus(SkillDamage=0.03)
pass
@@ -1736,6 +1909,7 @@ def suit_112(char: Character):
攻击时, 有3%的几率发动[神的祝福]。 (发动冷却1秒)
剩余冷却时间33秒以下的技能中, 初始化剩余时间最长的1个技能 (觉醒技能除外)
"""
suit_111(char)
pass
@@ -1750,6 +1924,7 @@ def suit_113(char: Character):
攻击时, 有3%的几率发动[神的祝福]。 (发动冷却1秒)
剩余冷却时间33秒以下的技能中, 初始化剩余时间最长的1个技能 (觉醒技能除外)
"""
suit_111(char)
pass
@@ -1764,6 +1939,7 @@ def suit_114(char: Character):
攻击时, 有3%的几率发动[神的祝福]。 (发动冷却1秒)
剩余冷却时间33秒以下的技能中, 初始化剩余时间最长的1个技能 (觉醒技能除外)
"""
suit_111(char)
pass
@@ -1778,6 +1954,7 @@ def suit_115(char: Character):
攻击时, 有3%的几率发动[神的祝福]。 (发动冷却1秒)
剩余冷却时间33秒以下的技能中, 初始化剩余时间最长的1个技能 (觉醒技能除外)
"""
suit_111(char)
pass
@@ -1794,6 +1971,7 @@ def suit_116(char: Character):
- 剩余冷却时间33秒以下的技能中,初始化剩余时间最短的1个技能(觉醒技能除外)
- 立即发动[第二次幸运]
"""
suit_111(char)
pass
@@ -1810,6 +1988,7 @@ def suit_117(char: Character):
- 剩余冷却时间33秒以下的技能中,初始化剩余时间最短的1个技能(觉醒技能除外)
- 立即发动[第二次幸运]
"""
suit_111(char)
pass
@@ -1826,6 +2005,7 @@ def suit_118(char: Character):
- 剩余冷却时间33秒以下的技能中,初始化剩余时间最短的1个技能(觉醒技能除外)
- 立即发动[第二次幸运]
"""
suit_111(char)
pass
@@ -1842,6 +2022,7 @@ def suit_119(char: Character):
- 剩余冷却时间33秒以下的技能中,初始化剩余时间最短的1个技能(觉醒技能除外)
- 立即发动[第二次幸运]
"""
suit_111(char)
pass
@@ -1858,6 +2039,7 @@ def suit_120(char: Character):
- 剩余冷却时间33秒以下的技能中,初始化剩余时间最短的1个技能(觉醒技能除外)
- 立即发动[第二次幸运]
"""
suit_111(char)
pass
@@ -1878,6 +2060,8 @@ def suit_121(char: Character):
- 冷却时间:99秒
- 立即发动[第二次幸运]
"""
char.SetStatus(SkillDamage=0.03)
char.Set
pass
Binary file not shown.
View File
+11
View File
@@ -0,0 +1,11 @@
import type { IConfig } from '@/stores'
import { defineRequest } from '../common'
export default defineRequest((request) => {
return {
async calc(config: IConfig) {
const res = await request.post('/calc', config)
return res.data
}
}
})
// Compare this snippet from frontend/src/api/common/index.ts:
+2 -1
View File
@@ -1,3 +1,4 @@
import info from './info'
import calc from './calc'
export default { ...info }
export default { ...info, ...calc }
+1 -1
View File
@@ -38,7 +38,7 @@ export interface IEquipment {
itemDetailType: string
name: string
categorize:string
suit: number[]
suit: string[]
rarity:string
}
@@ -57,7 +57,7 @@ const suits = computed(() => {
})
const suitEquipments = computed(() => {
const equs = infoStore.equips.filter((a) => a.suit.includes(curSuit.value) && a.suit.length === 1)
const equs = infoStore.equips.filter((a) => a.suit.includes(curSuit.value.toString()) && a.suit.length === 1)
const res: (IEquipment | undefined)[] = []
const raritiyList = ['神器','传说','史诗']
@@ -76,11 +76,11 @@ const suitEquipments = computed(() => {
})
const chooseEqu = (equip: IEquipment | undefined) => {
console.log(equip)
const chooseEqu = async(equip: IEquipment | undefined) => {
if (equip && configStore.config.equips[equip.itemDetailType]) {
configStore.config.equips[equip.itemDetailType].id = equip.id
}
await configStore.calc()
}
</script>
+6
View File
@@ -1,5 +1,6 @@
import { defineStore } from 'pinia'
import { useInfoStore } from './info'
import api from '@/api'
// | '上衣'
// | '头肩'
// | '下装'
@@ -82,9 +83,14 @@ export const useConfigStore = defineStore('configStore', () => {
}
}
const calc = async()=>{
await api.calc(config.value)
}
return {
config,
loadConfig,
saveConfig,
calc
}
})