Skip to content

Commit 45ab7c5

Browse files
committed
fix: 部分情况下无法正确完整显示人物技能修饰效果
1 parent 86ce17a commit 45ab7c5

3 files changed

Lines changed: 18 additions & 7 deletions

File tree

VModer.Core/Models/Character/SkillInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public void Add(Skill skill)
1818
return _skills.Find(skill => skill.Type == type)?.MaxValue;
1919
}
2020

21-
public SkillModifier GetModifierDescription(SkillCharacterType type, ushort level)
21+
public SkillModifier? GetModifierDescription(SkillCharacterType type, ushort level)
2222
{
23-
return _skills.Find(skill => skill.Type == type)?.GetModifier(level) ?? new SkillModifier(level, []);
23+
return _skills.Find(skill => skill.Type == type)?.GetModifier(level);
2424
}
2525
}

VModer.Core/Services/GameResource/CharacterSkillService.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public sealed class CharacterSkillService()
1515
WatcherFilter.Text
1616
)
1717
{
18-
public IEnumerable<SkillInfo> Skills => Resources.Values.SelectMany(s => s);
18+
private IEnumerable<SkillInfo> Skills => Resources.Values.SelectMany(s => s);
1919

2020
private const ushort DefaultSkillMaxValue = 1;
2121

@@ -33,6 +33,20 @@ public ushort GetMaxSkillValue(SkillType skillType, SkillCharacterType skillChar
3333
return DefaultSkillMaxValue;
3434
}
3535

36+
public SkillModifier? GetModifier(SkillType skillType, SkillCharacterType characterType, ushort level)
37+
{
38+
foreach (var skillInfo in Skills.Where(skill => skill.SkillType == skillType))
39+
{
40+
var skillModifier = skillInfo.GetModifierDescription(characterType, level);
41+
if (skillModifier is not null)
42+
{
43+
return skillModifier;
44+
}
45+
}
46+
47+
return null;
48+
}
49+
3650
protected override SkillInfo[]? ParseFileToContent(Node rootNode)
3751
{
3852
var skills = new List<SkillInfo>();

VModer.Core/Services/Hovers/CharacterHoverStrategy.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,7 @@ private IEnumerable<string> GetSkillModifierDescription(
201201
ushort level
202202
)
203203
{
204-
var skillModifier = _characterSkillService
205-
.Skills.FirstOrDefault(skill => skill.SkillType == skillType)
206-
?.GetModifierDescription(skillCharacterType, level);
207-
204+
var skillModifier = _characterSkillService.GetModifier(skillType, skillCharacterType, level);
208205
if (skillModifier is null || skillModifier.Modifiers.Count == 0)
209206
{
210207
return [];

0 commit comments

Comments
 (0)