diff --git a/OshimaModules/Effects/OpenEffects/DynamicsEffect.cs b/OshimaModules/Effects/OpenEffects/DynamicsEffect.cs index 77b5153..5784e50 100644 --- a/OshimaModules/Effects/OpenEffects/DynamicsEffect.cs +++ b/OshimaModules/Effects/OpenEffects/DynamicsEffect.cs @@ -434,7 +434,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects character.ExATKPercentage -= percentage; } RealDynamicsValues["exatk2"] = exATK2; - Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exATK2) * 100:0.##}% [ {Math.Abs(real):0.##} ] 点攻击力。"); + Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exATK2) * 100:0.##}% [ {(real == 0 ? "基于基础攻击力" : $"{Math.Abs(real):0.##}")} ] 点攻击力。"); } break; case "exdef2": @@ -451,7 +451,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects character.ExDEFPercentage -= percentage; } RealDynamicsValues["exdef2"] = exDEF2; - Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exDEF2) * 100:0.##}% [ {Math.Abs(real):0.##} ] 点物理护甲。"); + Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exDEF2) * 100:0.##}% [ {(real == 0 ? "基于基础物理护甲" : $"{Math.Abs(real):0.##}")} ] 点物理护甲。"); } break; case "exstr2": @@ -468,7 +468,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects character.ExSTRPercentage -= percentage; } RealDynamicsValues["exstr2"] = exSTR2; - Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exSTR2) * 100:0.##}% [ {Math.Abs(real):0.##} ] 点力量。"); + Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exSTR2) * 100:0.##}% [ {(real == 0 ? "基于基础力量" : $"{Math.Abs(real):0.##}")} ] 点力量。"); } break; case "exagi2": @@ -485,7 +485,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects character.ExAGIPercentage -= percentage; } RealDynamicsValues["exagi2"] = exAGI2; - Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exAGI2) * 100:0.##}% [ {Math.Abs(real):0.##} ] 点敏捷。"); + Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exAGI2) * 100:0.##}% [ {(real == 0 ? "基于基础敏捷" : $"{Math.Abs(real):0.##}")} ] 点敏捷。"); } break; case "exint2": @@ -502,7 +502,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects character.ExINTPercentage -= percentage; } RealDynamicsValues["exint2"] = exINT2; - Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exINT2) * 100:0.##}% [ {Math.Abs(real):0.##} ] 点智力。"); + Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exINT2) * 100:0.##}% [ {(real == 0 ? "基于基础智力" : $"{Math.Abs(real):0.##}")} ] 点智力。"); } break; case "exhp2": @@ -519,7 +519,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects character.ExHPPercentage -= percentage; } RealDynamicsValues["exhp2"] = exhp2; - Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exhp2) * 100:0.##}% [ {Math.Abs(real):0.##} ] 点最大生命值。"); + Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exhp2) * 100:0.##}% [ {(real == 0 ? "基于基础生命值" : $"{Math.Abs(real):0.##}")} ] 点最大生命值。"); } break; case "exmp2": @@ -536,7 +536,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects character.ExMPPercentage -= percentage; } RealDynamicsValues["exmp2"] = exmp2; - Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exmp2) * 100:0.##}% [ {Math.Abs(real):0.##} ] 点最大魔法值。"); + Descriptions.Add($"{(real >= 0 ? "增加" : "减少")}角色 {Math.Abs(exmp2) * 100:0.##}% [ {(real == 0 ? "基于基础魔法值" : $"{Math.Abs(real):0.##}")} ] 点最大魔法值。"); } break; case "mdftype": diff --git a/OshimaModules/Effects/OpenEffects/ExAGI2.cs b/OshimaModules/Effects/OpenEffects/ExAGI2.cs index f04f276..ad172ff 100644 --- a/OshimaModules/Effects/OpenEffects/ExAGI2.cs +++ b/OshimaModules/Effects/OpenEffects/ExAGI2.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects { public override long Id => (long)EffectID.ExAGI2; public override string Name => "敏捷加成"; - public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {Math.Abs(实际加成):0.##} ] 点敏捷。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); + public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "基于基础敏捷" : $"{Math.Abs(实际加成):0.##}")} ] 点敏捷。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public double Value => 实际加成; private readonly double 加成比例 = 0; diff --git a/OshimaModules/Effects/OpenEffects/ExATK2.cs b/OshimaModules/Effects/OpenEffects/ExATK2.cs index ffb1bca..4e3dc51 100644 --- a/OshimaModules/Effects/OpenEffects/ExATK2.cs +++ b/OshimaModules/Effects/OpenEffects/ExATK2.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects { public override long Id => (long)EffectID.ExATK2; public override string Name => "攻击力加成"; - public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {Math.Abs(实际加成):0.##} ] 点攻击力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); + public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "基于基础攻击力" : $"{Math.Abs(实际加成):0.##}")} ] 点攻击力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public double Value => 实际加成; private readonly double 加成比例 = 0; diff --git a/OshimaModules/Effects/OpenEffects/ExDEF2.cs b/OshimaModules/Effects/OpenEffects/ExDEF2.cs index 724dae0..d77fb08 100644 --- a/OshimaModules/Effects/OpenEffects/ExDEF2.cs +++ b/OshimaModules/Effects/OpenEffects/ExDEF2.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects { public override long Id => (long)EffectID.ExDEF2; public override string Name => "物理护甲加成"; - public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {实际加成:0.##} ] 点物理护甲。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); + public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "基于基础物理护甲" : $"{Math.Abs(实际加成):0.##}")} ] 点物理护甲。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public double Value => 实际加成; private readonly double 加成比例 = 0; diff --git a/OshimaModules/Effects/OpenEffects/ExINT2.cs b/OshimaModules/Effects/OpenEffects/ExINT2.cs index 6d38cfa..05c83c1 100644 --- a/OshimaModules/Effects/OpenEffects/ExINT2.cs +++ b/OshimaModules/Effects/OpenEffects/ExINT2.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects { public override long Id => (long)EffectID.ExINT2; public override string Name => "智力加成"; - public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {Math.Abs(实际加成):0.##} ] 点智力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); + public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "基于基础智力" : $"{Math.Abs(实际加成):0.##}")} ] 点智力。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public double Value => 实际加成; private readonly double 加成比例 = 0; diff --git a/OshimaModules/Effects/OpenEffects/ExMaxHP2.cs b/OshimaModules/Effects/OpenEffects/ExMaxHP2.cs index 85ea1ff..653bebf 100644 --- a/OshimaModules/Effects/OpenEffects/ExMaxHP2.cs +++ b/OshimaModules/Effects/OpenEffects/ExMaxHP2.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects { public override long Id => (long)EffectID.ExMaxHP2; public override string Name => "最大生命值加成"; - public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {Math.Abs(实际加成):0.##} ] 点最大生命值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); + public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "基于基础生命值" : $"{Math.Abs(实际加成):0.##}")} ] 点最大生命值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public double Value => 实际加成; private readonly double 加成比例 = 0; diff --git a/OshimaModules/Effects/OpenEffects/ExMaxMP2.cs b/OshimaModules/Effects/OpenEffects/ExMaxMP2.cs index 1030c1a..2ac60bb 100644 --- a/OshimaModules/Effects/OpenEffects/ExMaxMP2.cs +++ b/OshimaModules/Effects/OpenEffects/ExMaxMP2.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects { public override long Id => (long)EffectID.ExMaxMP2; public override string Name => "最大魔法值加成"; - public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {Math.Abs(实际加成):0.##} ] 点最大魔法值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); + public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "基于基础魔法值" : $"{Math.Abs(实际加成):0.##}")} ] 点最大魔法值。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public double Value => 实际加成; private readonly double 加成比例 = 0; diff --git a/OshimaModules/Effects/OpenEffects/ExSTR2.cs b/OshimaModules/Effects/OpenEffects/ExSTR2.cs index aae8815..e739c72 100644 --- a/OshimaModules/Effects/OpenEffects/ExSTR2.cs +++ b/OshimaModules/Effects/OpenEffects/ExSTR2.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.OpenEffects { public override long Id => (long)EffectID.ExSTR2; public override string Name => "力量加成"; - public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {Math.Abs(实际加成):0.##} ] 点力量。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); + public override string Description => $"{(实际加成 >= 0 ? "增加" : "减少")}角色 {Math.Abs(加成比例) * 100:0.##}% [ {(实际加成 == 0 ? "基于基础力量" : $"{Math.Abs(实际加成):0.##}")} ] 点力量。" + (Source != null && (Skill.Character != Source || Skill is not OpenSkill) ? $"来自:[ {Source} ]" + (Skill.Item != null ? $" 的 [ {Skill.Item.Name} ]" : (Skill is OpenSkill ? "" : $" 的 [ {Skill.Name} ]")) : ""); public double Value => 实际加成; private readonly double 加成比例 = 0; diff --git a/OshimaModules/Effects/PassiveEffects/物理护盾.cs b/OshimaModules/Effects/PassiveEffects/物理护盾.cs index a71ae6d..625246d 100644 --- a/OshimaModules/Effects/PassiveEffects/物理护盾.cs +++ b/OshimaModules/Effects/PassiveEffects/物理护盾.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects { public override long Id => 4106; public override string Name => "物理护盾"; - public override string Description => $"此角色拥有物理护盾。来自:[ {Source} ] 的 [ {Skill.Name} ]"; + public override string Description => $"此角色拥有物理护盾{CurrentShield}。来自:[ {Source} ] 的 [ {Skill.Name} ]"; public override EffectType EffectType => EffectType.Shield; public override DispelledType DispelledType => DispelledType.CannotBeDispelled; public override bool DurativeWithoutDuration => true; @@ -17,15 +17,28 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects public override double Duration => _duration; public override int DurationTurn => _durationTurn; + private string CurrentShield + { + get + { + if (_targetCharacter != null && _targetCharacter.Shield.ShieldOfEffects.TryGetValue(this, out ShieldOfEffect? value) && value != null) + { + return $",护盾值:{value.Shield:0.##} 点"; + } + else return ""; + } + } + private readonly Character _targetCharacter; private readonly Character _sourceCharacter; private readonly double _shield; private readonly bool _durative; private readonly double _duration; private readonly int _durationTurn; - public 物理护盾(Skill skill, Character sourceCharacter, double shield, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill) + public 物理护盾(Skill skill, Character targetCharacter, Character sourceCharacter, double shield, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill) { GamingQueue = skill.GamingQueue; + _targetCharacter = targetCharacter; _sourceCharacter = sourceCharacter; _durative = durative; _duration = duration; diff --git a/OshimaModules/Effects/PassiveEffects/魔法护盾.cs b/OshimaModules/Effects/PassiveEffects/魔法护盾.cs index 8684bf3..152e032 100644 --- a/OshimaModules/Effects/PassiveEffects/魔法护盾.cs +++ b/OshimaModules/Effects/PassiveEffects/魔法护盾.cs @@ -7,7 +7,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects { public override long Id => 4107; public override string Name => "魔法护盾"; - public override string Description => $"此角色拥有魔法护盾。来自:[ {Source} ] 的 [ {Skill.Name} ]"; + public override string Description => $"此角色拥有魔法护盾{CurrentShield}。来自:[ {Source} ] 的 [ {Skill.Name} ]"; public override EffectType EffectType => EffectType.Shield; public override DispelledType DispelledType => DispelledType.CannotBeDispelled; public override bool DurativeWithoutDuration => true; @@ -17,15 +17,28 @@ namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects public override double Duration => _duration; public override int DurationTurn => _durationTurn; + private string CurrentShield + { + get + { + if (_targetCharacter != null && _targetCharacter.Shield.ShieldOfEffects.TryGetValue(this, out ShieldOfEffect? value) && value != null) + { + return $",护盾值:{value.Shield:0.##} 点"; + } + else return ""; + } + } + private readonly Character _targetCharacter; private readonly Character _sourceCharacter; private readonly double _shield; private readonly bool _durative; private readonly double _duration; private readonly int _durationTurn; - public 魔法护盾(Skill skill, Character sourceCharacter, double shield, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill) + public 魔法护盾(Skill skill, Character targetCharacter, Character sourceCharacter, double shield, bool durative = false, double duration = 0, int durationTurn = 0) : base(skill) { GamingQueue = skill.GamingQueue; + _targetCharacter = targetCharacter; _sourceCharacter = sourceCharacter; _durative = durative; _duration = duration; diff --git a/OshimaModules/Effects/SkillEffects/增加物理护盾_特效持续型.cs b/OshimaModules/Effects/SkillEffects/增加物理护盾_特效持续型.cs index b00e41b..b56ead5 100644 --- a/OshimaModules/Effects/SkillEffects/增加物理护盾_特效持续型.cs +++ b/OshimaModules/Effects/SkillEffects/增加物理护盾_特效持续型.cs @@ -34,7 +34,10 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects foreach (Character target in targets) { WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点物理护盾!"); - 物理护盾 e = new(Skill, caster, 护盾值, _durative, _duration, _durationTurn); + 物理护盾 e = new(Skill, target, caster, 护盾值, _durative, _duration, _durationTurn) + { + ParentEffect = ParentEffect + }; target.Effects.Add(e); e.OnEffectGained(target); e.DispelledType = DispelledType; diff --git a/OshimaModules/Effects/SkillEffects/增加魔法护盾_特效持续型.cs b/OshimaModules/Effects/SkillEffects/增加魔法护盾_特效持续型.cs index b42b9cb..c5f5c62 100644 --- a/OshimaModules/Effects/SkillEffects/增加魔法护盾_特效持续型.cs +++ b/OshimaModules/Effects/SkillEffects/增加魔法护盾_特效持续型.cs @@ -34,7 +34,10 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects foreach (Character target in targets) { WriteLine($"[ {target} ] 获得了 {护盾值:0.##} 点魔法护盾!"); - 魔法护盾 e = new(Skill, caster, 护盾值, _durative, _duration, _durationTurn); + 魔法护盾 e = new(Skill, target, caster, 护盾值, _durative, _duration, _durationTurn) + { + ParentEffect = ParentEffect + }; target.Effects.Add(e); e.OnEffectGained(target); e.DispelledType = DispelledType; diff --git a/OshimaModules/Effects/SkillEffects/施加持续性弱驱散.cs b/OshimaModules/Effects/SkillEffects/施加持续性弱驱散.cs index df0eac7..ba996bd 100644 --- a/OshimaModules/Effects/SkillEffects/施加持续性弱驱散.cs +++ b/OshimaModules/Effects/SkillEffects/施加持续性弱驱散.cs @@ -54,6 +54,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects if (_duration > e.Duration) e.Duration = _duration; if (_durationTurn > e.DurationTurn) e.DurationTurn = _durationTurn; e.DispelledType = DispelledType; + e.ParentEffect = ParentEffect; } else { @@ -62,6 +63,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects e.OnEffectGained(target); e.IsDebuff = isDebuff; e.DispelledType = DispelledType; + e.ParentEffect = ParentEffect; } GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [e.EffectType]); } diff --git a/OshimaModules/Effects/SkillEffects/施加持续性强驱散.cs b/OshimaModules/Effects/SkillEffects/施加持续性强驱散.cs index bafb5af..e24c7aa 100644 --- a/OshimaModules/Effects/SkillEffects/施加持续性强驱散.cs +++ b/OshimaModules/Effects/SkillEffects/施加持续性强驱散.cs @@ -54,6 +54,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects if (_duration > e.Duration) e.Duration = _duration; if (_durationTurn > e.DurationTurn) e.DurationTurn = _durationTurn; e.DispelledType = DispelledType; + e.ParentEffect = ParentEffect; } else { @@ -62,6 +63,7 @@ namespace Oshima.FunGame.OshimaModules.Effects.SkillEffects e.OnEffectGained(target); e.IsDebuff = isDebuff; e.DispelledType = DispelledType; + e.ParentEffect = ParentEffect; } GamingQueue?.LastRound.ApplyEffects.TryAdd(target, [e.EffectType]); } diff --git a/OshimaModules/Skills/NiuNan/变幻之心.cs b/OshimaModules/Skills/NiuNan/变幻之心.cs index 87aa779..59ec1a7 100644 --- a/OshimaModules/Skills/NiuNan/变幻之心.cs +++ b/OshimaModules/Skills/NiuNan/变幻之心.cs @@ -26,9 +26,33 @@ namespace Oshima.FunGame.OshimaModules.Skills public override long Id => Skill.Id; public override string Name => "变幻之心"; public override string Description => $"检查 [ 智慧与力量 ] 的模式。在力量模式下,立即回复 {生命值回复 * 100:0.##}% 生命值,同时下 {吸血次数} 次对敌人造成伤害时获得 30% 生命偷取;" + - $"智力模式下,下 {魔法加成次数} 次魔法伤害提升 {伤害提升 * 100:0.##}%。此技能效果不叠加,重复释放时将重置次数;若是模式切换后重复释放,将回收先前的效果。"; + $"智力模式下,下 {魔法加成次数} 次魔法伤害提升 {伤害提升 * 100:0.##}%。此技能效果不叠加,重复释放时将重置次数;若是模式切换后重复释放,将回收先前的效果。{当前次数描述}"; public override DispelledType DispelledType => DispelledType.CannotBeDispelled; + private string 当前次数描述 + { + get + { + string str = ""; + if (当前吸血次数 > 0 || 当前魔法加成次数 > 0) + { + str = 当前吸血次数 > 0 ? "吸血次数" : (当前魔法加成次数 > 0 ? "魔法加成次数" : ""); + if (str != "") + { + str = $"剩余{str}:"; + } + if (当前吸血次数 > 0) + { + str += $"{当前吸血次数} 次。"; + } + else if (当前魔法加成次数 > 0) + { + str += $"{当前魔法加成次数} 次。"; + } + } + return str; + } + } private int 吸血次数 { get @@ -63,8 +87,8 @@ namespace Oshima.FunGame.OshimaModules.Skills } private double 生命值回复 => 0.25 + 0.03 * (Level - 1); private double 伤害提升 => 0.6 + 0.4 * (Level - 1); - private double 当前吸血次数 = 0; - private double 当前魔法加成次数 = 0; + private int 当前吸血次数 = 0; + private int 当前魔法加成次数 = 0; public override void OnEffectGained(Character character) { diff --git a/OshimaModules/Skills/NiuNan/智慧与力量.cs b/OshimaModules/Skills/NiuNan/智慧与力量.cs index d5ca85a..04ef05d 100644 --- a/OshimaModules/Skills/NiuNan/智慧与力量.cs +++ b/OshimaModules/Skills/NiuNan/智慧与力量.cs @@ -28,9 +28,9 @@ namespace Oshima.FunGame.OshimaModules.Skills (Skill.Character != null ? "(当前模式:" + CharacterSet.GetPrimaryAttributeName(Skill.Character.PrimaryAttribute) + ")" : ""); private double 交换的基础智力 = 0; - private double 实际增加暴击率 = 0.15; - private double 实际增加闪避率 = 0.15; - private double 实际增加魔法抗性 = 0.15; + private readonly double 实际增加暴击率 = 0.15; + private readonly double 实际增加闪避率 = 0.15; + private readonly double 实际增加魔法抗性 = 0.15; private bool 已经加过 = false; public override void OnEffectGained(Character character) diff --git a/OshimaModules/Skills/QWQAQW/破釜沉舟.cs b/OshimaModules/Skills/QWQAQW/破釜沉舟.cs index 884c91b..06a4c4e 100644 --- a/OshimaModules/Skills/QWQAQW/破釜沉舟.cs +++ b/OshimaModules/Skills/QWQAQW/破釜沉舟.cs @@ -18,7 +18,8 @@ namespace Oshima.FunGame.OshimaModules.Skills { "exhp", -0.2 } }) { - ParentEffect = Effects.First() + ParentEffect = Effects.First(), + ForceHideInStatusBar = true }); } @@ -32,7 +33,7 @@ namespace Oshima.FunGame.OshimaModules.Skills { public override long Id => Skill.Id; public override string Name => Skill.Name; - public override string Description => $"最大生命值减少 20%。破釜沉舟:生命值高于 30% 时,受到额外的 [ {高于30额外伤害下限}~{高于30额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于30的加成下限}~{高于30的加成上限}% ] 伤害加成;生命值低于等于 30% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于30的加成下限}~{低于30的加成上限}% ] 的伤害加成。" + + public override string Description => $"最大生命值减少 20%。破釜沉舟:生命值高于 40% 时,受到额外的 [ {高于40额外伤害下限}~{高于40额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于40的加成下限}~{高于40的加成上限}% ] 伤害加成;生命值低于等于 40% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于40的加成下限}~{低于40的加成上限}% ] 的伤害加成。" + $"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成。" + (累计受到的伤害 > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##})" : ""); private double 累计受到的伤害 = 0; @@ -40,12 +41,12 @@ namespace Oshima.FunGame.OshimaModules.Skills private double 受到伤害之前的HP = 0; private double 这次受到的额外伤害 = 0; private readonly double 常规伤害加成 = 0.35; - private readonly int 高于30额外伤害上限 = 30; - private readonly int 高于30额外伤害下限 = 15; - private readonly int 高于30的加成上限 = 80; - private readonly int 高于30的加成下限 = 50; - private readonly int 低于30的加成上限 = 120; - private readonly int 低于30的加成下限 = 90; + private readonly int 高于40额外伤害上限 = 40; + private readonly int 高于40额外伤害下限 = 15; + private readonly int 高于40的加成上限 = 80; + private readonly int 高于40的加成下限 = 50; + private readonly int 低于40的加成上限 = 120; + private readonly int 低于40的加成下限 = 90; private double 伤害加成(double damage) { @@ -53,13 +54,13 @@ namespace Oshima.FunGame.OshimaModules.Skills Character? character = Skill.Character; if (character != null && 累计受到的伤害 != 0) { - if (character.HP > character.MaxHP * 0.3) + if (character.HP > character.MaxHP * 0.4) { - 系数 = (Random.Shared.Next(高于30的加成下限, 高于30的加成上限) + 0.0) / 100; + 系数 = (Random.Shared.Next(高于40的加成下限, 高于40的加成上限) + 0.0) / 100; } else { - 系数 = (Random.Shared.Next(低于30的加成下限, 低于30的加成上限) + 0.0) / 100; + 系数 = (Random.Shared.Next(低于40的加成下限, 低于40的加成上限) + 0.0) / 100; } return 系数 * 累计受到的伤害; } @@ -79,10 +80,10 @@ namespace Oshima.FunGame.OshimaModules.Skills if (enemy == Skill.Character) { 受到伤害之前的HP = enemy.HP; - if (enemy.HP > enemy.MaxHP * 0.3) + if (enemy.HP > enemy.MaxHP * 0.4) { // 额外受到伤害 - double 系数 = (Random.Shared.Next(高于30额外伤害下限, 高于30额外伤害上限) + 0.0) / 100; + double 系数 = (Random.Shared.Next(高于40额外伤害下限, 高于40额外伤害上限) + 0.0) / 100; 这次受到的额外伤害 = damage * 系数; WriteLine($"[ {enemy} ] 的破釜沉舟触发,将额外受到 {这次受到的额外伤害:0.##} 点伤害!"); } diff --git a/OshimaModules/Skills/魔法/大地之墙.cs b/OshimaModules/Skills/魔法/大地之墙.cs index 3d99046..9b07a1f 100644 --- a/OshimaModules/Skills/魔法/大地之墙.cs +++ b/OshimaModules/Skills/魔法/大地之墙.cs @@ -70,17 +70,20 @@ namespace Oshima.FunGame.OshimaModules.Skills public 大地之墙(Character? character = null) : base(SkillType.Magic, character) { - Effect shield = new 增加物理护盾_特效持续型(this, 120, 160, true, 15) + Effect effect = new 大地之墙特效(this); + Effect shield = new 增加物理护盾_特效持续型(this, 120, 160, true, 20) { - DispelledType = DispelledType.CannotBeDispelled + DispelledType = DispelledType.CannotBeDispelled, + ParentEffect = effect }; Effects.Add(shield); Effect dispel = new 施加持续性弱驱散(this, durative: true, duration: 12) { - DispelledType = DispelledType.Strong + DispelledType = DispelledType.Strong, + ParentEffect = effect }; Effects.Add(dispel); - Effects.Add(new 大地之墙特效(this)); + Effects.Add(effect); } } @@ -88,30 +91,38 @@ namespace Oshima.FunGame.OshimaModules.Skills { public override long Id => Skill.Id; public override string Name => Skill.Name; - public override string Description => $""; + public override string Description => ""; public override bool ForceHideInStatusBar => true; + private List _targets = []; + public override void OnTimeElapsed(Character character, double elapsed) { - if (!character.Effects.Any(e => e is 物理护盾) && character.Effects.FirstOrDefault(e => e is 施加持续性弱驱散) is 施加持续性弱驱散 e) + if (!character.Effects.Any(e => e is 物理护盾 && e.ParentEffect == this)) { - e.DispelledType = DispelledType.Weak; - } - else - { - character.Effects.Remove(this); + if (character.Effects.FirstOrDefault(e => e is 施加持续性弱驱散 && e.ParentEffect == this) is 施加持续性弱驱散 e) + { + e.DispelledType = DispelledType.Weak; + } + else + { + character.Effects.Remove(this); + } } } public override void OnSkillCasted(Character caster, List targets, Dictionary others) { + _targets = targets; foreach (Character target in targets) { - if (!target.Effects.Any(e => e is 大地之墙特效)) - { - target.Effects.Add(new 大地之墙特效(Skill)); - } + target.Effects.Add(this); } } + + public string Observer() + { + return $"正在监控目标角色 [ {string.Join(" ] / [ ", _targets)} ] 的对象:{string.Join(",", _targets.SelectMany(c => c.Effects.Where(e => e.ParentEffect == this).Distinct().Select(e => e.Name)))}"; + } } }