This commit is contained in:
2025-04-05 14:09:03 +08:00
parent da8e163322
commit 24dff60710
4 changed files with 149 additions and 5 deletions
+64 -1
View File
@@ -33,4 +33,67 @@ uv sync
pnpm run dev:image
pnpm run dev:frontend
pnpm run dev:backend
pnpm run dev:backend
### process
- 装备选择
- [x] 武器选择
- [x] 套装选择
- [x] 贴膜选择
- [x] 通宝选择
- [ ] 称号宠物选择
- [ ] 秘宝选择
- 技能设置
- [x] 技能等级设置
- [ ] 觉醒绑定选择
- [ ] 技能次数设置
- [ ] 技能次数自动计算
- [ ] buff数值设置
- 打造设置
- [x] 增幅/强化/锻造
- [x] 徽章/附魔/调适
- [x] 时装/皮肤/光环
- [x] 宠物装备
- [ ] 辟邪玉
- [ ] 勋章/杂项
- 结果计算
- [x] 技能伤害计算
- [x] 技能等级计算
- [x] 技能CD计算
- [x] 装备特效计算
- [x] 装备效果/点数计算
- [ ] 角色基础展示
- 一期职业
- 鬼剑士(男)
- [ ] 鬼泣
- [ ] 狂战士
- [ ] 剑影
- 鬼剑士(女)
- [ ] 暗殿骑士
- [ ] 契魔者
- [ ] 流浪武士
- [ ] 刃影
- 格斗家(男)
- [ ] 柔道家
- 格斗家(女)
- [ ] 气功师
- [ ] 散打
- [ ] 柔道家
- 神枪手(男)
- [ ] 漫游枪手
- [ ] 枪炮师
- [ ] 弹药专家
- 神枪手(女)
- [ ] 漫游枪手
- [ ] 枪炮师
- [x] 弹药专家
- 魔法师(男)
- [ ] 冰结师
- [ ] 血法师
- 魔法师(女)
- [ ] 战斗法师
+42 -2
View File
@@ -353,7 +353,7 @@ class Character:
for skill in self.skills:
if min <= skill.learnLv <= max:
if type == -1 or skill.type == type:
skill.AddLv(lv, self)
skill.lv += 1
def SetSkillCD(self, min=1, max=100, cd=0, exclude=[50, 85, 100]) -> None:
"""
@@ -596,7 +596,7 @@ class Character:
def calc_equs(self):
"""计算装备基础效果、附魔、贴膜"""
effects = get_equipment(self.equVersion).funs
for detail in [(item.equInfo,item.fusionInfo,item.enchant) for item in filter(lambda x: x.equInfo is not None, self.charEquipInfo.values())]:
for detail in [(item.equInfo,item.fusionInfo,item.enchant,item.emblem_0,item.emblem_1) for item in filter(lambda x: x.equInfo is not None, self.charEquipInfo.values())]:
equ = detail[0]
fusion = detail[1]
enchat = detail[2]
@@ -612,6 +612,22 @@ class Character:
fun(self)
# 附魔
fun = effects.enchant_func_list.get(str(enchat), None)
if fun is not None:
fun(self)
# 徽章效果
emblem_0 = detail[3]
emblem_1 = detail[4]
if str(emblem_1).isdigit():
fun = effects.emblem_func_list.get(str(emblem_0), None)
if fun is not None:
fun(self)
else:
# 白金徽章处理
skill = self.GetSkillByName(emblem_0)
if skill is not None:
skill.lv += 1
self.SetStatus(四维=8)
fun = effects.emblem_func_list.get(str(emblem_1), None)
if fun is not None:
fun(self)
# 贴膜
@@ -624,6 +640,28 @@ class Character:
# 获取装备额外属性
fun(self)
def calc_avatar(self, avatar: dict):
"""计算时装效果"""
equ = get_equipment(self.equVersion)
dress = {key: value for key, value in avatar.items() if key in ['头发', '帽子', '脸部','胸部','上衣','腰带','下装','鞋']}
equ.funs.calc_dress_effect(dress,self)
avatarElse = {key: value for key, value in avatar.items() if key not in ['头发', '帽子', '脸部','胸部','上衣','腰带','下装','鞋']}
for key in avatarElse:
value = avatarElse[key].get('enchant', None)
emblem_0 = avatarElse[key].get('emblem_0', None)
emblem_1 = avatarElse[key].get('emblem_1', None)
if value is not None:
fun = equ.funs.enchant_func_list.get(str(value), None)
if fun is not None:
fun(self)
for i in [emblem_0, emblem_1]:
if i is None:
continue
fun = equ.funs.emblem_func_list.get(str(i), None)
if fun is not None:
fun(self)
pass
def calc_basic(self):
"""计算基础属性:防具精通、增幅、强化等"""
# 防具精通跟随装备品级
@@ -688,6 +726,8 @@ class Character:
# 角色基础属性
self.SetBaseStatus()
# 辟邪玉计算
# 时装计算
self.calc_avatar(setInfo.get('avatar', {}))
# 精通、增幅、强化计算
self.calc_basic()
# 部位效果计算
+2 -1
View File
@@ -1,8 +1,9 @@
from .suit import suit_func_list
from .jade import jade_func_list
from .equ import equ_func_list
from .avatar import get_dress_list
from .avatar import get_dress_list,calc_dress_effect
from .enchant import enchant_func_list
from .emblem import emblem_func_list
options = [
{'id': 1, 'name': '龙战八荒,', 'options': ['BUFF OFF', 'BUFF ON', '期望']},
+41 -1
View File
@@ -57,7 +57,9 @@ class 装扮:
elif str(选项) == '0':
pass
else:
角色.单技能加成(名称=选项, lv=1)
skill = 角色.GetSkillByName(选项)
if skill is not None:
skill.lv += 1
class 神器装扮头发(装扮):
@@ -357,3 +359,41 @@ def get_dress_list(skills_coat:list[str] = [],skills_pants:list[str] = []) -> di
data["name"] = f"{dress.品质}装扮{dress.部位}"
dress_list[部位].append(data)
return dress_list
def calc_dress_effect(avatar,char):
"""
计算装扮效果
"""
时装品级列表 = {}
for 部位 in avatar:
id = avatar[部位].get("id")
if id is None:
continue
时装 = 装扮集合[int(id)]
时装.效果(角色=char, 选项=avatar[部位].get("option"))
时装品级列表[时装.套装] = 时装品级列表.get(时装.套装, 0) + 1
套装集合: list[装扮套装] = []
for 套装 in 装扮套装集合:
数量 = 时装品级列表.get(套装.名称, 0)
if 数量 > 0:
if 数量 >= 套装.所需数量:
查找 = len(
[
i
for i in 套装集合
if hasattr(i, "兼容于")
and i.兼容于 == 套装.名称
and i.所需数量 == 套装.所需数量
]
)
if 查找 == 0:
套装集合.append(套装)
else:
if hasattr(套装, "兼容于") and 套装.兼容于 is not None:
数量 += 时装品级列表.get(套装.兼容于, 0)
时装品级列表[套装.兼容于] = 数量
时装品级列表.pop(套装.名称)
for 套装 in 套装集合:
套装.效果(char)