This commit is contained in:
2025-06-12 01:45:54 +08:00
parent df829b947a
commit 0e4c2455b1
9 changed files with 910 additions and 664 deletions
+3 -2
View File
@@ -81,8 +81,9 @@ async def get_skill_info(
if detail and len(detail) > 0:
skill_info['levelInfo'].update(detail[0])
skill_info['levelInfo']['detail'] = skill_info['levelInfo'].get('optionDesc', '')
for key in skill_info['levelInfo']['optionValue'].keys():
skill_info['levelInfo']['detail'] = skill_info['levelInfo']['detail'].replace(f'{{{key}}}', str(skill_info['levelInfo']['optionValue'][key]))
if skill_info['levelInfo']['optionValue'] is not None:
for key in skill_info['levelInfo']['optionValue'].keys():
skill_info['levelInfo']['detail'] = skill_info['levelInfo']['detail'].replace(f'{{{key}}}', str(skill_info['levelInfo']['optionValue'][key]))
del skill_info['levelInfo']['rows']
skill_info['attribute'] = {}
skill_info['attribute'].update(skill_info['levelInfo'])
+8 -1
View File
@@ -173,6 +173,7 @@ def 勋章计算(装备等级, 品质, 强化等级):
'玄机弓': (1.108, 1.09),
'强攻弩': (1.12, 1.09),
'妖影弓': (1.095, 1.1),
'嵌合弓': (1.1, 1.085),
}
@@ -348,7 +349,7 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
'圣职者(男)': (4.7, 4.8, 4, 4.5, 6.5, 6.5, 4.5, 6.5),
'圣职者(女)': (4.7, 4.8, 4, 4.5, 6.5, 6.5, 4.5, 6.5),
# todo
'弓箭手': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5),
'弓箭手': (4.6, 4.6, 4.4, 4.4, 6.5, 6.5, 5.5, 5.5),
}
# 力量 体力 智力 精神
@@ -373,6 +374,7 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
'枪炮师-神枪手(女)': (5.5, 5.5, 3.5, 3.5),
'机械师-神枪手(女)': (3.5, 3.5, 5.5, 5.5),
'弹药专家-神枪手(女)': (4.7, 4.3, 4.7, 4.3),
'协战师-神枪手(女)': (3.5, 5.5, 3.5, 5.5),
'漫游枪手-神枪手(男)': (5.5, 5.5, 3.5, 3.5),
'枪炮师-神枪手(男)': (5.5, 5.5, 3.5, 3.5),
'机械师-神枪手(男)': (3.5, 3.5, 5.5, 5.5),
@@ -421,6 +423,7 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
'旅人-弓箭手': (5.5, 5.5, 3.5, 3.5),
'猎人-弓箭手': (5.5, 5.5, 3.5, 3.5),
'妖护使-弓箭手': (5.5, 5.5, 3.5, 3.5),
'奇美拉-弓箭手': (5.5, 5.5, 3.5, 3.5),
}
# 火抗 冰抗 光抗 暗抗
@@ -446,6 +449,7 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
'枪炮师-神枪手(女)': (23, 23, 23, 23),
'机械师-神枪手(女)': (23, 23, 23, 23),
'弹药专家-神枪手(女)': (23, 23, 23, 23),
'协战师-神枪手(女)': (23, 23, 23, 23),
'漫游枪手-神枪手(男)': (23, 23, 23, 23),
'枪炮师-神枪手(男)': (23, 23, 23, 23),
'机械师-神枪手(男)': (23, 23, 23, 23),
@@ -494,6 +498,7 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
'旅人-弓箭手': (23, 23, 23, 23),
'猎人-弓箭手': (23, 23, 23, 23),
'妖护使-弓箭手': (23, 23, 23, 23),
'奇美拉-弓箭手': (23, 23, 23, 23),
}
# 出血 中毒 灼伤 感电 冰冻 减速 眩晕 诅咒 失明 石化 睡眠 混乱 束缚
@@ -516,6 +521,7 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
'源能专家-枪剑士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'漫游枪手-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'枪炮师-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'协战师-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'机械师-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'弹药专家-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'漫游枪手-神枪手(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
@@ -566,6 +572,7 @@ def 精通计算(装备等级, 品质, 强化等级, 部位, 甲类,属性='',ca
'旅人-弓箭手': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'猎人-弓箭手': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'妖护使-弓箭手': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
'奇美拉-弓箭手': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -198,7 +198,7 @@ adv = [
{'id': 1, 'name': 'traveler', 'title': '聆风·旅人', 'open': False},
{'id': 2, 'name': 'hunter', 'title': '聆风·猎人', 'open': False},
{'id': 3, 'name': 'vigilante', 'title': '聆风·妖护使', 'open': False},
{'id': 4, 'name': 'chimera', 'title': '聆风·奇美拉', 'open': False, 'class': 'GF.archer.chimera'},
{'id': 4, 'name': 'chimera', 'title': '聆风·奇美拉', 'open': True, 'class': 'GF.archer.chimera'},
],
},
{
@@ -57,14 +57,18 @@ export default defineComponent({
],
)
const desc = computed(() => skillInfo.value?.descDetail.split('\n').filter((item) => !!item))
const desc = computed(() => skillInfo.value?.descDetail.split('\n'))
const detail = computed(() => {
const items = skillInfo.value?.attribute.optionDesc.split('\n').filter((item) => !!item)
const items = skillInfo.value?.attribute.optionDesc?.split('\n').filter((item) => !!item) ?? []
const details = items?.map((a) => {
const beforeReplace = a.match(/^(.+?\s*:\s*[^\{]+)(\{value\d+\}.*)$/)
if(beforeReplace) {
a = `${beforeReplace[1]}<span class="skill_info_value">${beforeReplace[2]}</span>`
}
const matches = a.match(/{([^}]+)}/g)
if (matches) {
matches.forEach((match, index) => {
matches.forEach((match) => {
const key = match.replace(/[{}]/g, '')
// Only access if key matches the expected pattern
if (/^value.+/.test(key)) {
@@ -72,7 +76,7 @@ export default defineComponent({
if (value) {
a = a.replace(
match,
`<span style="${index == 0 ? 'margin-left:auto;' : ''};padding:0px 2px;color:#4AA256">${value}</span>`,
`<span style="padding:0px 2px;color:#4AA256">${value}</span>`,
)
}
}
@@ -98,16 +102,16 @@ export default defineComponent({
)}
</div>
<div class="title">技能描述</div>
<div class="h-auto max-h-200px">
<div class="h-auto max-h-250px">
<div class="h-full overflow-y-auto bg-#161816 p-2px">
{desc.value?.map((item) => (
<span style="white-space: pre-wrap;text-indent:20px;">{item}</span>
{desc.value?.map((item) => item.startsWith("[") ? (<div class="min-h-10px">{item}</div>) :(
<div class="min-h-10px" style="text-indent:20px;">{item}</div>
))}
</div>
</div>
<div class="title">技能属性</div>
<div class="flex-1">
<div class="overflow-y-auto h-full flex flex-col gap-2px">
<div class="flex-1 overflow-y-auto">
<div class=" flex flex-col gap-2px">
{detail.value?.map((item) => (
<div class="flex justify-between item items-center" v-html={item}></div>
))}
@@ -119,14 +123,14 @@ export default defineComponent({
const renderSkillVp = () => (
<>
<div class="h-auto">
<div class="h-full overflow-y-auto flex flex-col gap-5px">
<div class="h-full flex flex-col gap-5px">
{skillInfo.value?.evolution?.map((item) => (
<>
<div class="flex flex-col gap-2px">
<div class="skill_vp_title">{item.name}</div>
<div class="title">技能描述</div>
<div class="h-auto max-h-200px">
<div class="h-full overflow-y-auto bg-#161816 p-2px" style="white-space: pre-wrap;">
<div class="h-full bg-#161816 p-2px" style="white-space: pre-wrap;">
{item.descDetail}
</div>
</div>
@@ -140,7 +144,7 @@ export default defineComponent({
onMounted(() => {
watchEffect(() => {
skillInfo.value?.evolution?.length == 0 && (curTab.value = 0)
(skillInfo.value?.evolution?.length ?? 0) == 0 && (curTab.value = 0)
})
})
@@ -151,14 +155,14 @@ export default defineComponent({
<div class="relative">
<CalcTabs v-model={curTab.value}>
<CalcTab class="flex-1 flex justify-center" value={0}>
原技能描述
技能信息
</CalcTab>
<CalcTab
class="flex-1 flex justify-center"
value={1}
disabled={!skillInfo.value?.evolution?.length}
>
技能进化描述
技能进化
</CalcTab>
</CalcTabs>
</div>
@@ -86,3 +86,13 @@
color:#4AA256;
}
}
.skill_info_value{
white-space: nowrap;
display: flex;
align-items: center;
margin-left:auto;
display: flex;
margin-top: auto;
color:#4AA256;
}
@@ -166,7 +166,7 @@ export default defineComponent({
const renderSkillAction = (skill: ISkill) => (
<>
<>
<div class="absolute skill-active w-88px h-78px translate-x--50% left-16px top--1px">
<div class="absolute skill-active w-88px h-78px translate-x--50% left-16px top--1px z-5">
<div class="flex justify-between items-center px-5px relative top-54px">
<CalcButton
icon="min"
@@ -235,7 +235,7 @@ export default defineComponent({
return () => (
<>
<div onClick={() => (activeSkill.value = -1)}>
<div onClick={() => (activeSkill.value = -1)} class="pb-40px">
{((getSkill(0, 15, -1) ?? []) as ISkill[]).length > 0 && (
<>
<div class="skill-tree-line flex items-center gap-10px px-10px">
+1 -1
View File
@@ -52,7 +52,7 @@
</div>
</div>
</div>
<div class="bg-#101012 flex-1 max-w-250px h-full" v-if="curCurrentSkill.skillId">
<div class="bg-#101012 w-250px h-full overflow-x-auto" v-if="curCurrentSkill.skillId && curCurrentSkill.level > 0">
<SkillDetail
:skillId="curCurrentSkill.skillId"
:level="curCurrentSkill.level"