feat:优化职业技能关联实现

This commit was merged in pull request #11.
This commit is contained in:
2026-10-13 18:19:20 +08:00
parent 927866d366
commit 66ff3ff63b
175 changed files with 14299 additions and 440 deletions
+49 -6
View File
@@ -17,6 +17,7 @@ from core.basic.skill_effect_types import (
SkillAttribute,
SkillEffect,
)
from core.character.refs.archer.traveler import TravelerSkillRef as Ref
class TravelerAttribute(ProfessionAttribute):
@@ -56,6 +57,7 @@ class Skill0(PassiveSkill):
"""
name = '附件 : 迷雾装置'
ref = Ref.MISTGEAR
cellPos = (4,1)
learnLv = 1
masterLv = 1
@@ -79,6 +81,7 @@ class Skill1(ActiveSkill):
"""
name = '凌跃一击'
ref = Ref.CRACKARROW
cellPos = (5,1)
learnLv = 1
masterLv = 10
@@ -123,6 +126,7 @@ class Skill2(ActiveSkill):
"""
name = '迷雾爆裂'
ref = Ref.MISTBURST
cellPos = (6,1)
learnLv = 1
masterLv = 60
@@ -154,6 +158,7 @@ class Skill3(ActiveSkill):
使自身向后方小跳并避开敌人的攻击。\n
"""
name = "后跳"
ref = Ref.BACKSTEP
learnLv = 1
masterLv = 1
maxLv = 1
@@ -178,6 +183,7 @@ class Skill4(PassiveSkill):
"""
name = '基础精通'
ref = Ref.BASICATTACKUP
cellPos = (1,0)
learnLv = 1
masterLv = 115
@@ -200,7 +206,7 @@ class Skill4(PassiveSkill):
# 迁移前实现(保留对照):
# associate = [{'type': '*skillDamage', 'data': [i - 100 if i > 0 else 0 for i in data0], 'skills': ['迷雾箭雨']}]
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable([i - 100 if i > 0 else 0 for i in data0])), skills=['迷雾箭雨']),
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable([i - 100 if i > 0 else 0 for i in data0])), skills=[Ref.MISTCROWD]),
]
# 受身蹲伏
@@ -211,6 +217,7 @@ class Skill5(ActiveSkill):
使自身在倒地状态下迅速起身并采取蹲伏姿势; 蹲伏状态下,自身会进入无敌状态,效果持续一定时间。\n
"""
name = "受身蹲伏"
ref = Ref.QUICKSTANDING
learnLv = 1
masterLv = 1
maxLv = 20
@@ -252,6 +259,7 @@ class Skill6(ActiveSkill):
决斗场中无法使用技能连招。\n
"""
name = "技能连招"
ref = Ref.SKILLPRESETTYPE1
learnLv = 1
masterLv = 1
maxLv = 1
@@ -274,6 +282,7 @@ class Skill7(PassiveSkill):
穿戴的防具越多,效果越强; 可根据转职,增加不同的属性种类及数值。\n
"""
name = "防具精通"
ref = Ref.ARMORMASTERYETC
learnLv = 1
masterLv = 1
maxLv = 1
@@ -298,6 +307,7 @@ class Skill8(ActiveSkill):
"""
name = '绝技袭击'
ref = Ref.ACROBATICRAID
cellPos = (3,2)
learnLv = 5
masterLv = 60
@@ -329,6 +339,7 @@ class Skill9(ActiveSkill):
"""
name = '全力挥击'
ref = Ref.FULLSWING
cellPos = (1,2)
learnLv = 5
masterLv = 60
@@ -364,6 +375,7 @@ class Skill10(ActiveSkill):
"""
name = '高速机动'
ref = Ref.QUICKMOVE
cellPos = (4,2)
learnLv = 5
masterLv = 1
@@ -395,6 +407,7 @@ class Skill11(ActiveSkill):
"""
name = '翻月翔击'
ref = Ref.RISINGMOON
cellPos = (4,3)
learnLv = 10
masterLv = 60
@@ -425,6 +438,7 @@ class Skill12(ActiveSkill):
"""
name = '营火'
ref = Ref.CAMPFIRE
cellPos = (6,3)
learnLv = 10
masterLv = 1
@@ -476,6 +490,7 @@ class Skill13(PassiveSkill):
无法强制中断觉醒技能和跳跃超过一定高度的技能。\n
"""
name = "强化 - 后跳"
ref = Ref.ESCAPEBACKSTEP
learnLv = 10
masterLv = 1
maxLv = 1
@@ -503,6 +518,7 @@ class Skill14(ActiveSkill):
效果持续期间内,再次按技能键可以结束。\n
"""
name = "跃翔"
ref = Ref.JUMPPOWERUP
learnLv = 10
masterLv = 1
maxLv = 1
@@ -531,6 +547,7 @@ class Skill15(ActiveSkill):
"""
name = '迷雾箭雨'
ref = Ref.MISTCROWD
cellPos = (2,4)
learnLv = 15
masterLv = 1
@@ -564,6 +581,7 @@ class Skill16(ActiveSkill):
"""
name = '驱虫烈火'
ref = Ref.INSECTFIRE
cellPos = (6,5)
learnLv = 20
masterLv = 60
@@ -604,6 +622,7 @@ class Skill17(PassiveSkill):
"""
name = '玄机弓精通'
ref = Ref.BOWMASTERY
cellPos = (5,5)
learnLv = 20
masterLv = 10
@@ -635,6 +654,7 @@ class Skill18(PassiveSkill):
集中精神,提升物理/魔法暴击率。\n
"""
name = "暴击"
ref = Ref.PHYSICALCRITICALHITUP
learnLv = 20
masterLv = 10
maxLv = 20
@@ -659,6 +679,7 @@ class Skill19(ActiveSkill):
"""
name = '三重加速'
ref = Ref.TRIPLEAXEL
cellPos = (3,6)
learnLv = 25
masterLv = 60
@@ -698,6 +719,7 @@ class Skill20(ActiveSkill):
"""
name = '斗志昂扬'
ref = Ref.EXCITING
cellPos = (5,6)
learnLv = 25
masterLv = 10
@@ -727,6 +749,7 @@ class Skill21(ActiveSkill):
"""
name = '细雨'
ref = Ref.DRIZZLE
cellPos = (7,7)
learnLv = 30
masterLv = 60
@@ -760,6 +783,7 @@ class Skill22(ActiveSkill):
"""
name = '急流'
ref = Ref.JETSTREAM
cellPos = (2,7)
learnLv = 30
masterLv = 60
@@ -801,6 +825,7 @@ class Skill23(ActiveSkill):
"""
name = '旅人的直觉'
ref = Ref.INTUITION
cellPos = (5,8)
learnLv = 35
masterLv = 10
@@ -839,6 +864,7 @@ class Skill24(ActiveSkill):
"""
name = '高原雾花'
ref = Ref.GYPSOPHILA
cellPos = (4,8)
learnLv = 35
masterLv = 60
@@ -895,6 +921,7 @@ class Skill25(ActiveSkill):
"""
name = '装置驱动'
ref = Ref.GEARDRIVE
cellPos = (6,8)
learnLv = 35
masterLv = 60
@@ -949,6 +976,7 @@ class Skill26(ActiveSkill):
"""
name = '装载 : 猛击'
ref = Ref.SETUPATTACK
cellPos = (8,9)
learnLv = 40
masterLv = 1
@@ -972,7 +1000,7 @@ class Skill26(ActiveSkill):
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '=travelerDamage', 'skills': ['装置驱动', '浓雾暴雨', '登跃飞锚', '神雾兵仗·妖旋风', '流雾疾风', '装载 : 烟花漫天', '装置驱动·星云', '神雾兵仗·流星']}]
associate = [
SkillEffect(attribute=TravelerAttribute.TRAVELER_DAMAGE, operation=Operation.ASSIGN, value=LevelTable(data0), skills=['装置驱动', '浓雾暴雨', '登跃飞锚', '神雾兵仗·妖旋风', '流雾疾风', '装载 : 烟花漫天', '装置驱动·星云', '神雾兵仗·流星'], missing_target=MissingTargetPolicy.SKIP),
SkillEffect(attribute=TravelerAttribute.TRAVELER_DAMAGE, operation=Operation.ASSIGN, value=LevelTable(data0), skills=[Ref.GEARDRIVE, Ref.MISTHEAVYRAIN, Ref.SCRAMBLEANCHOR, Ref.SETUPRAGE, Ref.HAZESTORM, Ref.SETUPFIRE, '装置驱动·星云', Ref.STARARROW], missing_target=MissingTargetPolicy.SKIP),
]
# 浓雾暴雨
@@ -985,6 +1013,7 @@ class Skill27(TravelerActiveSkill):
"""
name = '浓雾暴雨'
ref = Ref.MISTHEAVYRAIN
cellPos = (7,9)
learnLv = 40
masterLv = 60
@@ -1038,6 +1067,7 @@ class Skill28(TravelerActiveSkill):
"""
name = '神雾兵仗·流星'
ref = Ref.STARARROW
cellPos = (5,10)
learnLv = 45
masterLv = 60
@@ -1131,6 +1161,7 @@ class Skill29(PassiveSkill):
"""
name = '野外生存'
ref = Ref.SURVIVAL
cellPos = (4,11)
learnLv = 48
masterLv = 40
@@ -1164,6 +1195,7 @@ class Skill30(ActiveSkill):
"""
name = '旷野火炎'
ref = Ref.WILDFIRE
cellPos = (5,11)
learnLv = 50
masterLv = 40
@@ -1204,6 +1236,7 @@ class Skill31(PassiveSkill):
"""
name = '装载 : 闪攻'
ref = Ref.SETUPCOOLTIME
cellPos = (8,12)
learnLv = 60
masterLv = 1
@@ -1223,7 +1256,7 @@ class Skill31(PassiveSkill):
# 迁移前实现(保留对照):
# associate = [{'data': data0, 'type': '=travelerCDR', 'skills': ['装置驱动', '浓雾暴雨', '登跃飞锚', '神雾兵仗·妖旋风', '流雾疾风', '装载 : 烟花漫天', '装置驱动·星云', '神雾兵仗·流星']}]
associate = [
SkillEffect(attribute=TravelerAttribute.TRAVELER_CDR, operation=Operation.ASSIGN, value=LevelTable(data0), skills=['装置驱动', '浓雾暴雨', '登跃飞锚', '神雾兵仗·妖旋风', '流雾疾风', '装载 : 烟花漫天', '装置驱动·星云', '神雾兵仗·流星'], missing_target=MissingTargetPolicy.SKIP),
SkillEffect(attribute=TravelerAttribute.TRAVELER_CDR, operation=Operation.ASSIGN, value=LevelTable(data0), skills=[Ref.GEARDRIVE, Ref.MISTHEAVYRAIN, Ref.SCRAMBLEANCHOR, Ref.SETUPRAGE, Ref.HAZESTORM, Ref.SETUPFIRE, '装置驱动·星云', Ref.STARARROW], missing_target=MissingTargetPolicy.SKIP),
]
# 登跃飞锚
@@ -1238,6 +1271,7 @@ class Skill32(TravelerActiveSkill):
"""
name = '登跃飞锚'
ref = Ref.SCRAMBLEANCHOR
cellPos = (2,12)
learnLv = 60
masterLv = 40
@@ -1299,6 +1333,7 @@ class Skill33(TravelerActiveSkill):
"""
name = '神雾兵仗·妖旋风'
ref = Ref.SETUPRAGE
cellPos = (8,13)
learnLv = 70
masterLv = 40
@@ -1366,7 +1401,7 @@ class Skill33(TravelerActiveSkill):
# self.associate = [{'type': '*skillRation', 'data': [0] + [-17] * self.maxLv, 'skills': ['绝技袭击']}]
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.PANEL_RATIO, value=1 + Percent(LevelTable([0] + [-17] * maxLv)), skills=['绝技袭击'], when=Equals(Read(SkillAttribute.VP), 2)),
SkillEffect(attribute=SkillAttribute.PANEL_RATIO, value=1 + Percent(LevelTable([0] + [-17] * maxLv)), skills=[Ref.ACROBATICRAID], when=Equals(Read(SkillAttribute.VP), 2)),
]
# 流浪之星的纹章
@@ -1380,6 +1415,7 @@ class Skill34(PassiveSkill):
"""
name = '流浪之星的纹章'
ref = Ref.TRAVELINGSTAR
cellPos = (4,13)
learnLv = 75
masterLv = 40
@@ -1405,7 +1441,7 @@ class Skill34(PassiveSkill):
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.DAMAGE, value=1 + Percent(LevelTable(data0))),
SkillEffect(attribute=SkillAttribute.CD_REDUCE, value=1 - Percent(LevelTable(data1)), skills=['神雾兵仗·流星'], when=Not(All([GreaterThan(Read(SkillAttribute.LEVEL, '自动操作模式'), 0), Not(Equals(Read(SkillAttribute.VP, '神雾兵仗·流星'), 2))]))),
SkillEffect(attribute=SkillAttribute.CD_REDUCE, value=1 - Percent(LevelTable(data1)), skills=[Ref.STARARROW], when=Not(All([GreaterThan(Read(SkillAttribute.LEVEL, Ref.AUTOMOVEMENT), 0), Not(Equals(Read(SkillAttribute.VP, Ref.STARARROW), 2))]))),
]
# 流雾疾风
@@ -1418,6 +1454,7 @@ class Skill35(TravelerActiveSkill):
"""
name = '流雾疾风'
ref = Ref.HAZESTORM
cellPos = (5,13)
learnLv = 75
masterLv = 40
@@ -1469,6 +1506,7 @@ class Skill36(PassiveSkill):
"""
name = '自动操作模式'
ref = Ref.AUTOMOVEMENT
cellPos = (3,13)
learnLv = 75
masterLv = 1
@@ -1493,6 +1531,7 @@ class Skill37(TravelerActiveSkill):
"""
name = '装载 : 烟花漫天'
ref = Ref.SETUPFIRE
cellPos = (8,14)
learnLv = 80
masterLv = 40
@@ -1550,7 +1589,7 @@ class Skill37(TravelerActiveSkill):
# self.associate = [{'type': '*skillRation', 'data': [0] + [-26.6] * self.maxLv, 'skills': ['装置驱动']}]
# return super().effect(old, new)
associate = [
SkillEffect(attribute=SkillAttribute.PANEL_RATIO, value=1 + Percent(LevelTable([0] + [-26.6] * maxLv)), skills=['装置驱动'], when=Equals(Read(SkillAttribute.VP), 2)),
SkillEffect(attribute=SkillAttribute.PANEL_RATIO, value=1 + Percent(LevelTable([0] + [-26.6] * maxLv)), skills=[Ref.GEARDRIVE], when=Equals(Read(SkillAttribute.VP), 2)),
]
# 神雾兵仗·北极星
@@ -1566,6 +1605,7 @@ class Skill38(ActiveSkill):
"""
name = '神雾兵仗·北极星'
ref = Ref.POLARIS
cellPos = (5,14)
learnLv = 85
masterLv = 40
@@ -1611,6 +1651,7 @@ class Skill39(TravelerActiveSkill):
"""
name = '星辰装置'
ref = Ref.GEAROFSTELLA
cellPos = (4,15)
learnLv = 95
masterLv = 40
@@ -1647,6 +1688,7 @@ class Skill40(ActiveSkill):
"""
name = '装置驱动 : 星云'
ref = Ref.NEBULA
cellPos = (6,15)
learnLv = 95
masterLv = 40
@@ -1687,6 +1729,7 @@ class Skill41(ActiveSkill):
"""
name = '神雾星仗·人马座星云'
ref = Ref.SAGITTARIUS
cellPos = (5,16)
learnLv = 100
masterLv = 40