修复契魔者魔刃狂舞影子伤害计算 #9
@@ -922,7 +922,7 @@ class Skill28(ActiveSkill):
|
||||
data4 = data0
|
||||
hit4 = 10
|
||||
|
||||
data5 = data1
|
||||
data5 = data2
|
||||
hit5 = 1
|
||||
power4 = 0
|
||||
power5 = 0
|
||||
@@ -1403,8 +1403,8 @@ class Skill36(PassiveSkill):
|
||||
{"data":data0,"type":"*skillDamage","exceptSkills":["魔刃狂舞","蛇腹剑 : 缠","唤魔 : 塔莫斯之袭"]},
|
||||
{"data":data1,"type":"+power8","skills":["蛇腹剑 : 缠"]},
|
||||
{"data":data1,"type":"+power9","skills":["蛇腹剑 : 缠"]},
|
||||
{"data":data2,"type":"+power4","skills":["魔刃狂舞"]},
|
||||
{"data":data2,"type":"+power5","skills":["魔刃狂舞"]},
|
||||
{"data":data3,"type":"+power4","skills":["魔刃狂舞"]},
|
||||
{"data":data3,"type":"+power5","skills":["魔刃狂舞"]},
|
||||
{"data":data4,"type":"+hit1","skills":["唤魔 : 塔莫斯之袭"],"ratio": 1},
|
||||
{"data":data5,"type":"*power3","skills":["唤魔 : 塔莫斯之袭"]}
|
||||
]
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import ast
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
SKILL_FILE = (
|
||||
Path(__file__).resolve().parents[2]
|
||||
/ "core"
|
||||
/ "character"
|
||||
/ "GF"
|
||||
/ "swordman_female"
|
||||
/ "demon_slayer.py"
|
||||
)
|
||||
|
||||
|
||||
def _skill_class(name: str) -> ast.ClassDef:
|
||||
module = ast.parse(SKILL_FILE.read_text(encoding="utf-8"))
|
||||
return next(
|
||||
node
|
||||
for node in module.body
|
||||
if isinstance(node, ast.ClassDef)
|
||||
and any(
|
||||
isinstance(item, ast.Assign)
|
||||
and any(isinstance(target, ast.Name) and target.id == "name" for target in item.targets)
|
||||
and isinstance(item.value, ast.Constant)
|
||||
and item.value.value == name
|
||||
for item in node.body
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def test_blade_dance_shadow_uses_final_hit_damage_not_hit_count():
|
||||
skill = _skill_class("魔刃狂舞")
|
||||
shadow_final_hit = next(
|
||||
item
|
||||
for item in skill.body
|
||||
if isinstance(item, ast.Assign)
|
||||
and any(isinstance(target, ast.Name) and target.id == "data5" for target in item.targets)
|
||||
)
|
||||
|
||||
assert isinstance(shadow_final_hit.value, ast.Name)
|
||||
assert shadow_final_hit.value.id == "data2"
|
||||
|
||||
|
||||
def test_blade_dance_shadow_uses_its_own_passive_ratio():
|
||||
passive = _skill_class("唤魔 : 弑神剑")
|
||||
associations = next(
|
||||
item.value
|
||||
for item in passive.body
|
||||
if isinstance(item, ast.Assign)
|
||||
and any(isinstance(target, ast.Name) and target.id == "associate" for target in item.targets)
|
||||
)
|
||||
shadow_associations = [
|
||||
dict(zip((key.value for key in entry.keys), entry.values))
|
||||
for entry in associations.elts
|
||||
if isinstance(entry, ast.Dict)
|
||||
]
|
||||
|
||||
for power in ("+power4", "+power5"):
|
||||
association = next(
|
||||
entry
|
||||
for entry in shadow_associations
|
||||
if isinstance(entry.get("type"), ast.Constant)
|
||||
and entry["type"].value == power
|
||||
)
|
||||
assert isinstance(association["data"], ast.Name)
|
||||
assert association["data"].id == "data3"
|
||||
Reference in New Issue
Block a user