From a91d1d376f04842d2e9054c7923620afe0475892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Tue, 11 Aug 2026 01:25:53 +0800 Subject: [PATCH] update --- backend/core/basic/skill.py | 2 +- backend/core/character/GF/extra/creator.py | 4 + .../core/character/GF/extra/dark_knight.py | 162 +++++++++++++----- backend/openapi | 2 +- 4 files changed, 122 insertions(+), 48 deletions(-) diff --git a/backend/core/basic/skill.py b/backend/core/basic/skill.py index e3be96ce..732cea44 100644 --- a/backend/core/basic/skill.py +++ b/backend/core/basic/skill.py @@ -390,7 +390,7 @@ class ActiveSkill(Skill): return 1 - cdr def getSkillCD(self, mode=None): - return max(0, round(max(self.cd * 0.3, self.cd * self.cdReduce / self.cdRecover * self.getWeaponCDRatio() * self.getQuickCDRatio()) * self.cdRatio - self.cdCut, 2)) + return max(0, round(max(self.cd * 0.3, self.cd * self.cdReduce / self.cdRecover * self.getWeaponCDRatio() * self.getQuickCDRatio()) * self.cdRatio - self.cdCut / self.cdRecover , 2)) def vp_1(self): pass diff --git a/backend/core/character/GF/extra/creator.py b/backend/core/character/GF/extra/creator.py index 00ab057a..9ae22097 100644 --- a/backend/core/character/GF/extra/creator.py +++ b/backend/core/character/GF/extra/creator.py @@ -1656,3 +1656,7 @@ class classChange(Character): self.buff = 1.729 # TODO super().__init__(equVersion, __name__) + + def SetDetail(self, info: dict[str, dict]) -> None: + super().SetDetail(info) + self.bindAwake = 85 diff --git a/backend/core/character/GF/extra/dark_knight.py b/backend/core/character/GF/extra/dark_knight.py index 293722bd..97b4c9f8 100644 --- a/backend/core/character/GF/extra/dark_knight.py +++ b/backend/core/character/GF/extra/dark_knight.py @@ -17,11 +17,16 @@ def apply_weapon_mastery(skill: PassiveSkill, old: int, new: int, weapon_type: s skill.associate = [{'type': attack_type, 'data': getattr(skill, f'data{data_index}')}] return PassiveSkill.effect(skill, old, new) +class DarkKnightSkill(ActiveSkill): + # 默认5阶段 + stage = 5 + # 连续技所在列,-1表示不在连续技中 + comboCol = -1 # 暗影斩 # extra/dark_knight/eb71e1d82d92c7e1d40500a0dcd77aa6 # 17e417b31686389eebff6d754c3401ea/eb71e1d82d92c7e1d40500a0dcd77aa6 -class Skill0(ActiveSkill): +class Skill0(DarkKnightSkill): """ 凝聚力量并对前方敌人发出强力的暗属性斩击。\n """ @@ -47,7 +52,7 @@ class Skill0(ActiveSkill): # 滑斩 # extra/dark_knight/f2fb27162beb0b87a7cb9af7900e95f2 # 17e417b31686389eebff6d754c3401ea/f2fb27162beb0b87a7cb9af7900e95f2 -class Skill1(ActiveSkill): +class Skill1(DarkKnightSkill): """ 滑动的同时向前方敌人发出无属性斩击。\n """ @@ -73,7 +78,7 @@ class Skill1(ActiveSkill): # 挑击 # extra/dark_knight/fc7a3f4c2852c832a2f20af63d5d212f # 17e417b31686389eebff6d754c3401ea/fc7a3f4c2852c832a2f20af63d5d212f -class Skill2(ActiveSkill): +class Skill2(DarkKnightSkill): """ 向敌人发出从下段往上挑的无属性攻击,可以浮空敌人; 攻击时有霸体判定。\n """ @@ -100,7 +105,7 @@ class Skill2(ActiveSkill): # 跃斩 # extra/dark_knight/9dc8438e4572d39243c97da31c113acc # 17e417b31686389eebff6d754c3401ea/9dc8438e4572d39243c97da31c113acc -class Skill3(ActiveSkill): +class Skill3(DarkKnightSkill): """ 向前轻轻跳跃,在跳跃状态下通过追加操作向敌人发出砍击。\n 装备钝器时可以生成冲击波。\n @@ -114,6 +119,7 @@ class Skill3(ActiveSkill): maxLv = 70 position = 3 rangeLv = 2 + cd = 3 mp = [2, 425] uuid = '9dc8438e4572d39243c97da31c113acc' hasVP = False @@ -270,7 +276,7 @@ class Skill8(PassiveSkill): # 暗影 · 波动剑 # extra/dark_knight/3d8f3d438405d79f8d3ed68072674d1e # 17e417b31686389eebff6d754c3401ea/3d8f3d438405d79f8d3ed68072674d1e -class Skill9(ActiveSkill): +class Skill9(DarkKnightSkill): """ 快速生成无属性波动剑,并击退前方敌人。\n 波动剑大小随技能等级增加而增大。\n @@ -300,7 +306,7 @@ class Skill9(ActiveSkill): # 黑暗十字刃 # extra/dark_knight/ca75c965f20a150f99f54155a37400df # 17e417b31686389eebff6d754c3401ea/ca75c965f20a150f99f54155a37400df -class Skill10(ActiveSkill): +class Skill10(DarkKnightSkill): """ 挥动武器向敌人发出无属性的十字形斩击。\n """ @@ -332,7 +338,7 @@ class Skill10(ActiveSkill): # 暗月斩 # extra/dark_knight/a2d943797daca862a6f321aca6ac9bfa # 17e417b31686389eebff6d754c3401ea/a2d943797daca862a6f321aca6ac9bfa -class Skill11(ActiveSkill): +class Skill11(DarkKnightSkill): """ 向前方敌人发出暗属性伤害的月形斩击,并追加一个单手上斩。\n """ @@ -364,7 +370,7 @@ class Skill11(ActiveSkill): # 冥光斩 # extra/dark_knight/92360eab6e1f378902018eca681ac629 # 17e417b31686389eebff6d754c3401ea/92360eab6e1f378902018eca681ac629 -class Skill12(ActiveSkill): +class Skill12(DarkKnightSkill): """ 挥剑向前方敌人发出巨大的剑气攻击,可以给予命中的敌人多段攻击。\n """ @@ -395,7 +401,7 @@ class Skill12(ActiveSkill): # 旋涡斩 # extra/dark_knight/202edb928046f4fa6dedf6337377efd5 # 17e417b31686389eebff6d754c3401ea/202edb928046f4fa6dedf6337377efd5 -class Skill13(ActiveSkill): +class Skill13(DarkKnightSkill): """ 用强威力的上斩攻击前方敌人,并抓取目标对其施放暗黑波动,波动将给周围敌人造成多段攻击伤害并击飞敌人。\n 上斩和下斩可以对被抓取的敌人造成无属性伤害,而暗黑波动则可以对被抓取的敌人以及周围的敌人造成无属性伤害。\n @@ -443,7 +449,7 @@ class Skill13(ActiveSkill): # 跃地斩 # extra/dark_knight/6e33d47e6622ce03b6defdd912140270 # 17e417b31686389eebff6d754c3401ea/6e33d47e6622ce03b6defdd912140270 -class Skill14(ActiveSkill): +class Skill14(DarkKnightSkill): """ 向前低跃并用武器砸击地面,有多段攻击判定,可对敌人造成无属性攻击,且最后一击能使敌人倒地。\n """ @@ -474,7 +480,7 @@ class Skill14(ActiveSkill): # 突刺 # extra/dark_knight/2a0a39184de92acf1c1375e00b77404c # 17e417b31686389eebff6d754c3401ea/2a0a39184de92acf1c1375e00b77404c -class Skill15(ActiveSkill): +class Skill15(DarkKnightSkill): """ 对前方敌人发动强威力的突刺,可造成无属性伤害。\n 装备太刀和光剑时,攻击力降低,但多段攻击数会增加; 装备钝器时,可使敌人进入眩晕状态。\n @@ -487,6 +493,7 @@ class Skill15(ActiveSkill): maxLv = 70 position = 2 rangeLv = 2 + cd = 3 mp = [10, 300] uuid = '2a0a39184de92acf1c1375e00b77404c' hasVP = False @@ -521,7 +528,7 @@ class Skill15(ActiveSkill): # 暗影三击剑 # extra/dark_knight/7ec521d063d2190e1fcc5bd229af9bcf # 17e417b31686389eebff6d754c3401ea/7ec521d063d2190e1fcc5bd229af9bcf -class Skill16(ActiveSkill): +class Skill16(DarkKnightSkill): """ 迅速向下、 上、 中三个方向发出刺击,给予敌人暗属性攻击并将其击退。\n """ @@ -621,7 +628,7 @@ class Skill19(PassiveSkill): name = '暗 · 光剑精通' cellPos = (0,5) learnLv = 15 - masterLv = 30 + masterLv = 1 maxLv = 40 position = 0 rangeLv = 3 @@ -660,7 +667,7 @@ class Skill20(PassiveSkill): name = '暗 · 短剑精通' cellPos = (0,1) learnLv = 15 - masterLv = 30 + masterLv = 1 maxLv = 40 position = 0 rangeLv = 3 @@ -699,7 +706,7 @@ class Skill21(PassiveSkill): name = '暗 · 太刀精通' cellPos = (0,2) learnLv = 15 - masterLv = 30 + masterLv = 1 maxLv = 40 position = 0 rangeLv = 3 @@ -738,7 +745,7 @@ class Skill22(PassiveSkill): name = '暗 · 巨剑精通' cellPos = (0,3) learnLv = 15 - masterLv = 30 + masterLv = 1 maxLv = 40 position = 0 rangeLv = 3 @@ -777,7 +784,7 @@ class Skill23(PassiveSkill): name = '暗 · 钝器精通' cellPos = (0,4) learnLv = 15 - masterLv = 30 + masterLv = 1 maxLv = 40 position = 0 rangeLv = 3 @@ -806,7 +813,7 @@ class Skill23(PassiveSkill): # 暗劲爆发 # extra/dark_knight/506e7ed77d517419a6e1c437a2cedb17 # 17e417b31686389eebff6d754c3401ea/506e7ed77d517419a6e1c437a2cedb17 -class Skill24(ActiveSkill): +class Skill24(DarkKnightSkill): """ 向自身周围爆发黑暗气息,使附近的敌人受到一定的无属性物理伤害并浮空。\n 在决斗场中,爆炸范围边缘的多段攻击次数为爆炸中心攻击次数的一半。\n @@ -866,7 +873,7 @@ class Skill25(PassiveSkill): # 暗影鞭 # extra/dark_knight/d429147c372b549c3dadcabcba50787f # 17e417b31686389eebff6d754c3401ea/d429147c372b549c3dadcabcba50787f -class Skill26(ActiveSkill): +class Skill26(DarkKnightSkill): """ 像挥鞭子一样挥舞手中的武器进行暗属性攻击,并且可以把远距离的敌人拉到身前。\n """ @@ -901,7 +908,7 @@ class Skill26(ActiveSkill): # 邪影 · 波动剑 # extra/dark_knight/c91a62dc0a18360acf5031ac0ebf09f5 # 17e417b31686389eebff6d754c3401ea/c91a62dc0a18360acf5031ac0ebf09f5 -class Skill27(ActiveSkill): +class Skill27(DarkKnightSkill): """ 向前方发动黑暗气息,黑暗气息凝结成气刃追击敌人,并对其造成无属性伤害。\n 当气刃停止前进时,会发生爆炸并消失。\n @@ -962,7 +969,7 @@ class Skill28(PassiveSkill): # 瞬影斩 # extra/dark_knight/669f1428193f61f9d92c743b72438c4d # 17e417b31686389eebff6d754c3401ea/669f1428193f61f9d92c743b72438c4d -class Skill29(ActiveSkill): +class Skill29(DarkKnightSkill): """ 向前方快速移动并斩击敌人,可造成无属性伤害。\n """ @@ -990,7 +997,7 @@ class Skill29(ActiveSkill): # 灭魂封魔斩 # extra/dark_knight/1b1cfab062e0768bcc889e33e1f30dbf # 17e417b31686389eebff6d754c3401ea/1b1cfab062e0768bcc889e33e1f30dbf -class Skill30(ActiveSkill): +class Skill30(DarkKnightSkill): """ 把前方敌人吸附到自身的近身处,并对其进行无属性斩击。\n 在决斗场中,吸附的敌人越多,斩击时造成的伤害就越大。\n @@ -1030,7 +1037,7 @@ class Skill30(ActiveSkill): # 冥魂珠 # extra/dark_knight/9dda3f4a849dba1a288dd65e116860f2 # 17e417b31686389eebff6d754c3401ea/9dda3f4a849dba1a288dd65e116860f2 -class Skill31(ActiveSkill): +class Skill31(DarkKnightSkill): """ 向敌人发射含有黑暗气息的冥魂珠。\n 冥魂珠进行多段攻击时,会降低冥魂珠和被命中敌人的移动速度; 冥魂珠消失时,会产生爆炸并给予周围敌人暗属性伤害。\n @@ -1067,7 +1074,7 @@ class Skill31(ActiveSkill): # 暗魂之手 # extra/dark_knight/3829c15bf5f520c13998a3479ba0ce7b # 17e417b31686389eebff6d754c3401ea/3829c15bf5f520c13998a3479ba0ce7b -class Skill32(ActiveSkill): +class Skill32(DarkKnightSkill): """ 抓取前方一名敌人并吸进其暗黑血气后,再将吸进的血气喷发,可以对敌人造成无属性物理伤害。\n 有吸附判定,一定距离内即使是手触碰不到的敌人也可以抓取。\n @@ -1101,7 +1108,7 @@ class Skill32(ActiveSkill): # 暗影升龙击 # extra/dark_knight/28b583c75a49103a1d8aabf799c000a4 # 17e417b31686389eebff6d754c3401ea/28b583c75a49103a1d8aabf799c000a4 -class Skill33(ActiveSkill): +class Skill33(DarkKnightSkill): """ 以冲撞击退敌人的同时向敌人发出单手上斩,可以使敌人浮空。\n 若按住技能键,则可以追加一个蓄气型下捶击。\n @@ -1157,7 +1164,7 @@ class Skill33(ActiveSkill): # 黑暗释放 # extra/dark_knight/1c1a9606eb702ebe5a7bb4397f3aeae0 # 17e417b31686389eebff6d754c3401ea/1c1a9606eb702ebe5a7bb4397f3aeae0 -class Skill34(ActiveSkill): +class Skill34(DarkKnightSkill): """ 释放鬼手中蕴藏的黑暗气息,完美支配武器,对武器赋予暗属性并增加暴击伤害。\n ※该技能只能添加至扩展技能栏。\n @@ -1184,7 +1191,7 @@ class Skill34(ActiveSkill): # 冥魂之陨 # extra/dark_knight/e49e57b2e8fbeceb0a2c56a0c63fe6c5 # 17e417b31686389eebff6d754c3401ea/e49e57b2e8fbeceb0a2c56a0c63fe6c5 -class Skill35(ActiveSkill): +class Skill35(DarkKnightSkill): """ 在自身周围一定区域内落下黑暗气息给予敌人暗属性伤害。\n 黑暗气息掉落时,自身会进入霸体状态,但无法移动,按跳跃键可以取消施放动作。\n @@ -1242,7 +1249,7 @@ class Skill35(ActiveSkill): # 凝魂波动阵 # extra/dark_knight/c61f5a010370101402b05b21916c2071 # 17e417b31686389eebff6d754c3401ea/c61f5a010370101402b05b21916c2071 -class Skill36(ActiveSkill): +class Skill36(DarkKnightSkill): """ 捶击地面后生成圆形波动阵攻击敌人,可以使波动阵内的所有敌人持续受到多段攻击伤害和波动伤害,并将其击飞。\n 当波动阵解除时,可以造成巨大的伤害,并使周围敌人受到扩散型伤害。\n @@ -1286,7 +1293,7 @@ class Skill36(ActiveSkill): # 破魂之刃 # extra/dark_knight/e0daa922b19cdc35de879e938361464e # 17e417b31686389eebff6d754c3401ea/e0daa922b19cdc35de879e938361464e -class Skill37(ActiveSkill): +class Skill37(DarkKnightSkill): """ 向前方喷射黑暗气息生成破魂之刃,然后抓取剑刃对敌人发出强威力刺击; 破魂之刃刺进敌人身体后,会产生爆炸并进行无属性攻击。\n 施放技能时,按后方向键,可以原地刺击敌人。\n @@ -1339,7 +1346,7 @@ class Skill37(ActiveSkill): # 破魂斩 # extra/dark_knight/cfacda0647b9a0f595df2c2aad30c18d # 17e417b31686389eebff6d754c3401ea/cfacda0647b9a0f595df2c2aad30c18d -class Skill38(ActiveSkill): +class Skill38(DarkKnightSkill): """ 拔刀并快速向周围敌人发出强威力的无属性斩击,可以攻击大范围的敌人,但准备动作时间稍长。\n """ @@ -1369,7 +1376,7 @@ class Skill38(ActiveSkill): # 禁魂斩 # extra/dark_knight/bc11d28c04e01923a093d65752c55516 # 17e417b31686389eebff6d754c3401ea/bc11d28c04e01923a093d65752c55516 -class Skill39(ActiveSkill): +class Skill39(DarkKnightSkill): """ 以极快的速度向前移动一段距离并斩击敌人。\n 被斩击的敌人在一定时间内会进入禁锢状态,状态结束时会附加敌人暗属性伤害。\n @@ -1402,7 +1409,7 @@ class Skill39(ActiveSkill): # 冥炎破空斩 # extra/dark_knight/0b8db1e10b3abbd24d38564e708675d5 # 17e417b31686389eebff6d754c3401ea/0b8db1e10b3abbd24d38564e708675d5 -class Skill40(ActiveSkill): +class Skill40(DarkKnightSkill): """ 召唤出冥炎剑并对敌人发出二刀流的暗属性三连击。\n 被冥炎剑命中的敌人将受到冥炎的攻击,并受到一定伤害。\n @@ -1472,7 +1479,7 @@ class Skill40(ActiveSkill): # 魔影剑舞 # extra/dark_knight/8510294202d0e042dd29a2422fc6770d # 17e417b31686389eebff6d754c3401ea/8510294202d0e042dd29a2422fc6770d -class Skill41(ActiveSkill): +class Skill41(DarkKnightSkill): """ 在原地向敌人发出迅猛的连续斩击,且最后一击可以发出凌厉的剑气给予敌人多重伤害。\n """ @@ -1529,7 +1536,7 @@ class Skill41(ActiveSkill): # 黑暗明王阵 # extra/dark_knight/b3659936a9a74c4ed6f7faf07cca1f9e # 17e417b31686389eebff6d754c3401ea/b3659936a9a74c4ed6f7faf07cca1f9e -class Skill42(ActiveSkill): +class Skill42(DarkKnightSkill): """ 生成黑暗明王阵,并释放出高速旋转的暗黑波动使敌人浮空并进行无属性攻击。\n 波动旋转一定时间后会发生爆炸,并使敌人受到魔法爆炸伤害。\n @@ -1573,7 +1580,7 @@ class Skill42(ActiveSkill): - 中断时,适用[时间停滞]能量5阶段的攻击力,且不消耗[时间停滞]能量\n - 暗黑波动旋转速度 +100%\n """ - self.skillDamage *= 2 + ... def vp_2(self): """ @@ -1587,7 +1594,7 @@ class Skill42(ActiveSkill): # 魔狱裂魂斩 # extra/dark_knight/ecc23c980ea71450c0ad0c3fd232f329 # 17e417b31686389eebff6d754c3401ea/ecc23c980ea71450c0ad0c3fd232f329 -class Skill43(ActiveSkill): +class Skill43(DarkKnightSkill): """ 召唤出暗黑之剑并猛力捶击地面,使敌人浮空的同时还会喷出黑暗气息,给周围的敌人造成无属性伤害。\n """ @@ -1675,7 +1682,7 @@ class Skill44(PassiveSkill): # 幽魂剑 # extra/dark_knight/ce7cd04a44e32212e80f120f4421996e # 17e417b31686389eebff6d754c3401ea/ce7cd04a44e32212e80f120f4421996e -class Skill45(ActiveSkill): +class Skill45(DarkKnightSkill): """ 召唤多个以黑色鬼手之力形成的幽魂剑,对附近敌人进行连续的斩击。\n 幽魂剑会随机砍向附近区域,随后升到空中并插向地面,最后引起强烈的爆炸。\n @@ -1719,8 +1726,7 @@ class Skill45(ActiveSkill): - 总攻击力相同\n 幽魂剑范围 +30%\n """ - self.hit2 = 6 - self.power2 = 33 / 6 #TODO:CHECK + ... def vp_2(self): """ @@ -1767,7 +1773,7 @@ class Skill46(PassiveSkill): # 暗炎冥魂波 # extra/dark_knight/5c00ce6d7dbbb5e9a0f6e1071d486832 # 17e417b31686389eebff6d754c3401ea/5c00ce6d7dbbb5e9a0f6e1071d486832 -class Skill47(ActiveSkill): +class Skill47(DarkKnightSkill): """ 把蕴含黑暗之力的剑插向前方,引起强烈的爆炸。\n """ @@ -1813,7 +1819,7 @@ class Skill47(ActiveSkill): # 斩龙破 # extra/dark_knight/f45301a5590cccefbe0becf2f8d029f5 # 17e417b31686389eebff6d754c3401ea/f45301a5590cccefbe0becf2f8d029f5 -class Skill48(ActiveSkill): +class Skill48(DarkKnightSkill): """ 前进一段距离后,挥剑挑飞敌人。\n 挑起敌人后,转身用剑刺向敌人,并移动一段距离。\n @@ -1904,7 +1910,7 @@ class Skill49(PassiveSkill): # 邪影升龙斩 # extra/dark_knight/b1732acfaf117f8e9ff130f47d3ed0e7 # 17e417b31686389eebff6d754c3401ea/b1732acfaf117f8e9ff130f47d3ed0e7 -class Skill50(ActiveSkill): +class Skill50(DarkKnightSkill): """ 召唤凝聚着黑色鬼手之力的暗黑剑,并在前方施放强力的能量爆炸。\n """ @@ -1948,12 +1954,24 @@ class Skill50(ActiveSkill): - 适用最高连击阶段的攻击力\n - 不恢复[时间停滞]连击能量\n """ - self.skillDamage *= 2 + self.stage = 6 + + def effect(self, old, new): + # 选择该vp之后,当前列的连招列的其他技能都没有伤害 + skills = [] + for index in self.char.combos[self.comboCol]: + if index != self.id: + skill = self.char.GetSkillByID(index) + if skill: + skills.append(skill.name) + if self.vp == 2: + self.associate = [{"type":"=skillDamage","data":[0] + [0]*self.maxLv,"skills":skills}] + return super().effect(old, new) # 超时空碎裂 # extra/dark_knight/d204ec03a0aed2f20211fb6ccc48d46d # 17e417b31686389eebff6d754c3401ea/d204ec03a0aed2f20211fb6ccc48d46d -class Skill51(ActiveSkill): +class Skill51(DarkKnightSkill): """ 聚集时空之力,瞬间分成数个时间节点,对大范围的区域施放斩击,随后回到原点。\n 被斩击命中的敌人会在一瞬间无法动弹,并与时空一同爆炸。\n @@ -2021,7 +2039,7 @@ class Skill52(PassiveSkill): # 暗黑溯回斩 # extra/dark_knight/33ad4930f4724a7d025c3046c6f6074b # 17e417b31686389eebff6d754c3401ea/33ad4930f4724a7d025c3046c6f6074b -class Skill53(ActiveSkill): +class Skill53(DarkKnightSkill): """ 出手的刹那间,快速对敌人进行连续斩击,然后用强力的拔刀进行斩击。\n 然后,将自己时间节点回溯到过去,过去的自己再次出现,对敌人进行连续斩击,然后回到最初。\n @@ -2082,7 +2100,7 @@ class Skill53(ActiveSkill): # 时之止境 : 幻灭 # extra/dark_knight/9ceb0c55f40f1fc0fe0fcc65c8fee3a0 # 17e417b31686389eebff6d754c3401ea/9ceb0c55f40f1fc0fe0fcc65c8fee3a0 -class Skill55(ActiveSkill): +class Skill55(DarkKnightSkill): """ 极诣·黑暗武士利用时空统治者之力,在自己所在的空间召唤出时空裂缝后,举起时空统治者最终形态——时空巨剑,使除自身以外的所有时间停滞。\n 然后,发动强力的拔刀使时空扭曲,与时空裂缝一起碾压敌人,极诣·黑暗武士从时空裂缝中消失。\n @@ -2134,6 +2152,26 @@ class classChange(Character): super().__init__(equVersion, __name__) + def SetDetail(self, info: dict[str, dict]) -> None: + super().SetDetail(info) + self.bindAwake = 85 + self.shortcuts = info.get('skillShortcuts',{}).get('shortcuts', []) + self.combos = info.get('skillShortcuts',{}).get('combos', []) + + def SetSkills(self, skills: dict[str, dict]) -> None: + """设置技能等级、技能排列""" + combo_positions = {} + for combo_col, combo in enumerate(self.combos[:6]): + for stage, skill_id in enumerate(combo, start=1): + combo_positions.setdefault(str(skill_id), (combo_col, stage)) + + for key in skills: + skill = self.GetSkillByID(key) + if skill is not None and getattr(skill, 'stage', None) is not None: + skill.comboCol, skill.stage = combo_positions.get(str(skill.id), (-1, 5)) + + super().SetSkills(skills) + def AddSkillLv(self, min: int, max: int, lv: int, type=-1, exceptSkills: list[str] = []) -> None: """ 增加技能等级 @@ -2145,3 +2183,35 @@ class classChange(Character): skillType = 'all' if type == -1 else ('active' if type == 1 else 'passive') if (skillType == 'all' or skill.type == skillType) and skill.lv > 0: skill.lv += lv + + def calc_carry_skills(self, DSB: bool, BUFF: bool): + skillInfos = [] + for i in self.skills: + if i.damage and i.lv > 0: + for mode in i.mode: + try: + temp = i.skillInfo(mode) + except Exception as ex: + raise RuntimeError(f'职业技能计算失败: {_skill_error_context(self, i, mode)}') from ex + if temp[0] > 0: + skillInfos.append( + { + 'name': i.name, + 'icon': i.icon, + 'lv': i.lv, + 'data': temp[0], + 'ratio': temp[1], + 'cd': temp[2], + 'mode': mode, + 'learnLv': i.learnLv, + 'type': i.type, + } + ) + ratios = self.calc_damage_ration(DSB, BUFF) + 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 diff --git a/backend/openapi b/backend/openapi index 966f7397..a9493643 160000 --- a/backend/openapi +++ b/backend/openapi @@ -1 +1 @@ -Subproject commit 966f7397547659b7fa524e5a2604d3f52518e499 +Subproject commit a949364384216b6a995797a11a426e58ec73f81f