From 6dfa7ccb4af6eac57000ae96af1d924a1245433a Mon Sep 17 00:00:00 2001 From: milimoe Date: Tue, 13 Jan 2026 01:31:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OshimaModules/Skills/Neptune/海王星的野望.cs | 15 +++++------ OshimaModules/Skills/QWQAQW/破釜沉舟.cs | 26 +++++++++++++------- OshimaModules/Skills/Ryuko/宿命之潮.cs | 2 +- OshimaModules/Skills/XReouni/八卦阵.cs | 13 ++++------ OshimaModules/Skills/XReouni/归元环.cs | 5 ++-- OshimaModules/Skills/Yang/咒怨洪流.cs | 4 +-- OshimaModules/Skills/被动/黑暗收割.cs | 4 +-- 7 files changed, 37 insertions(+), 32 deletions(-) diff --git a/OshimaModules/Skills/Neptune/海王星的野望.cs b/OshimaModules/Skills/Neptune/海王星的野望.cs index f5b81e1..bd79a3f 100644 --- a/OshimaModules/Skills/Neptune/海王星的野望.cs +++ b/OshimaModules/Skills/Neptune/海王星的野望.cs @@ -39,10 +39,9 @@ namespace Oshima.FunGame.OshimaModules.Skills public override MagicType MagicType => Skill.Character?.MagicType ?? MagicType.None; public override ImmuneType IgnoreImmune => ImmuneType.All; - public string 爆炸伤害描述 => $"对受到标记的目标造成伤害,有 {概率 * 100:0.##}% 概率产生爆炸,爆炸将产生 {分裂伤害系数 * 100:0.##}% 分裂伤害。分裂伤害为全图索敌,会优先分裂至两个在持续时间内对{Skill.SkillOwner()}造成伤害最多的敌人,若没有符合条件的敌人或敌人数量不足,则将分裂至至多两个随机的敌人。"; + public string 爆炸伤害描述 => $"对受到标记的目标造成伤害时将产生爆炸,爆炸将产生 {分裂伤害系数 * 100:0.##}% 分裂伤害。分裂伤害为全图索敌,会优先分裂至两个在持续时间内对{Skill.SkillOwner()}造成伤害最多的敌人,若没有符合条件的敌人或敌人数量不足,则将分裂至被标记的敌人,或至多两个随机的敌人。"; public double 直接伤害 => 180 + 240 * (Skill.Level - 1); public double 持续时间 => 25 + 2 * (Skill.Level - 1); - public double 概率 => 0.3 + 0.08 * (Skill.Level - 1); public double 分裂伤害系数 => 0.4 + 0.07 * (Skill.Level - 1); public double 力量提升 => 0.6 * (Skill.Character?.BaseSTR ?? 0); public Dictionary 敌人伤害统计 { get; set; } = []; @@ -80,10 +79,7 @@ namespace Oshima.FunGame.OshimaModules.Skills if (character == Skill.Character && (damageResult == DamageResult.Normal || damageResult == DamageResult.Critical) && enemy.Effects.FirstOrDefault(e => e is 海王星的野望标记) is 海王星的野望标记 e) { - if (Random.Shared.NextDouble() < 概率) - { - 分裂伤害(character, enemy, actualDamage, damageType, magicType); - } + 分裂伤害(character, enemy, actualDamage, damageType, magicType); } } @@ -128,7 +124,12 @@ namespace Oshima.FunGame.OshimaModules.Skills if (GamingQueue != null) { allEnemys = [.. GamingQueue.GetEnemies(character).Where(c => c != character && c != enemy && !targets.Contains(c) && c.HP > 0)]; - targets.AddRange(allEnemys.OrderBy(o => Random.Shared.Next()).Take(count)); + targets.AddRange(allEnemys.Where(c => c.Effects.Any(e => e is 海王星的野望标记)).Take(count)); + if (targets.Count < 2) + { + count = 2 - targets.Count; + targets.AddRange(allEnemys.OrderBy(o => Random.Shared.Next()).Take(count)); + } } } damage *= 分裂伤害系数; diff --git a/OshimaModules/Skills/QWQAQW/破釜沉舟.cs b/OshimaModules/Skills/QWQAQW/破釜沉舟.cs index 5bb910f..7349d6b 100644 --- a/OshimaModules/Skills/QWQAQW/破釜沉舟.cs +++ b/OshimaModules/Skills/QWQAQW/破釜沉舟.cs @@ -33,21 +33,22 @@ namespace Oshima.FunGame.OshimaModules.Skills { public override long Id => Skill.Id; public override string Name => Skill.Name; - public override string Description => $"最大生命值减少 20%。破釜沉舟:生命值高于 40% 时,受到额外的 [ {高于40额外伤害下限}~{高于40额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于40的加成下限}~{高于40的加成上限}% ] 伤害加成;生命值低于等于 40% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于40的加成下限}~{低于40的加成上限}% ] 的伤害加成。" + - $"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成。通过累计受到伤害发动破釜沉舟时,目标的闪避检定获得 40% 的减值。" + (累计受到的伤害 > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##})" : ""); + public override string Description => $"{Skill.SkillOwner()}已经看透了生命的真谛。{Skill.SkillOwner()}的最大生命值减少 20%,并获得破釜沉舟特效。破釜沉舟:生命值高于 40% 时,受到额外的 [ {高于40额外伤害下限}~{高于40额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于40的加成下限}~{高于40的加成上限}% ] 伤害加成;生命值低于等于 40% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于40的加成下限}~{低于40的加成上限}% ] 的伤害加成。" + + $"在没有累计任何受到伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成和 {常规生命偷取 * 100:0.##}% 生命偷取。通过累计受到伤害发动破釜沉舟时,目标的闪避检定获得 40% 的减值,并立即清除累计受到的伤害。" + (累计受到的伤害 > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##})" : ""); private bool 已通过累计受到伤害发动破釜沉舟 = false; private double 累计受到的伤害 = 0; private double 这次的伤害加成 = 0; private double 受到伤害之前的HP = 0; private double 这次受到的额外伤害 = 0; - private readonly double 常规伤害加成 = 0.35; + private readonly double 常规伤害加成 = 0.4; + private readonly double 常规生命偷取 = 0.2; 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 readonly int 高于40额外伤害下限 = 20; + private readonly int 高于40的加成上限 = 90; + private readonly int 高于40的加成下限 = 60; + private readonly int 低于40的加成上限 = 160; + private readonly int 低于40的加成下限 = 120; private double 伤害加成(double damage) { @@ -75,7 +76,6 @@ namespace Oshima.FunGame.OshimaModules.Skills 已通过累计受到伤害发动破釜沉舟 = 累计受到的伤害 != 0; 这次的伤害加成 = 伤害加成(damage); WriteLine($"[ {character} ] 发动了破釜沉舟,获得了 {这次的伤害加成:0.##} 点伤害加成!"); - 累计受到的伤害 = 0; return 这次的伤害加成; } @@ -107,6 +107,14 @@ namespace Oshima.FunGame.OshimaModules.Skills WriteLine($"[ {enemy} ] 的破釜沉舟触发,保护了自己不进入死亡!!"); } } + + if (character == Skill.Character && 已通过累计受到伤害发动破釜沉舟) + { + 累计受到的伤害 = 0; + double ls = actualDamage * 常规生命偷取; + HealToTarget(character, character, ls, triggerEffects: false); + WriteLine($"[ {character} ] 发动了破釜沉舟,回复了 {ls:0.##} 点生命值!"); + } } public override bool BeforeEvadeCheck(Character actor, Character enemy, ref double throwingBonus) diff --git a/OshimaModules/Skills/Ryuko/宿命之潮.cs b/OshimaModules/Skills/Ryuko/宿命之潮.cs index 7cfec22..2684b9f 100644 --- a/OshimaModules/Skills/Ryuko/宿命之潮.cs +++ b/OshimaModules/Skills/Ryuko/宿命之潮.cs @@ -169,7 +169,7 @@ namespace Oshima.FunGame.OshimaModules.Skills { Effect e = new 愤怒(Skill, caster, caster, true, Duration, 0) { - DispelledType = DispelledType.CannotBeDispelled + DispelledType = DispelledType.Strong }; if (enemy.AGI <= caster.AGI || (enemy.AGI > caster.AGI && !CheckExemption(caster, enemy, e))) { diff --git a/OshimaModules/Skills/XReouni/八卦阵.cs b/OshimaModules/Skills/XReouni/八卦阵.cs index 0c43886..ffe3b06 100644 --- a/OshimaModules/Skills/XReouni/八卦阵.cs +++ b/OshimaModules/Skills/XReouni/八卦阵.cs @@ -53,17 +53,14 @@ namespace Oshima.FunGame.OshimaModules.Skills } if (归元) { - WriteLine($"[ {character} ] 发动了归元环!冷却时间减少了 {归元环特效.冷却时间减少:0.##} {GameplayEquilibriumConstant.InGameTime}!"); + WriteLine($"[ {character} ] 发动了归元环!冷却时间减少了 20%!"); foreach (Skill s in c.Skills) { - if (s.CurrentCD >= 归元环特效.冷却时间阈值) + s.CurrentCD -= s.CD * 归元环特效.冷却时间减少; + if (s.CurrentCD < 0) { - s.CurrentCD -= 归元环特效.冷却时间减少; - if (s.CurrentCD < 0) - { - s.CurrentCD = 0; - s.Enable = true; - } + s.CurrentCD = 0; + s.Enable = true; } } } diff --git a/OshimaModules/Skills/XReouni/归元环.cs b/OshimaModules/Skills/XReouni/归元环.cs index 9639a91..682ae54 100644 --- a/OshimaModules/Skills/XReouni/归元环.cs +++ b/OshimaModules/Skills/XReouni/归元环.cs @@ -26,13 +26,12 @@ namespace Oshima.FunGame.OshimaModules.Skills { public override long Id => Skill.Id; public override string Name => Skill.Name; - public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,造成伤害必定暴击;使 [ 八卦阵 ] 不需要检定,直接产生偶数效果;并减少所有当前冷却时间高于 {冷却时间阈值:0.##} {GameplayEquilibriumConstant.InGameTime}的主动技能 {冷却时间减少:0.##} {GameplayEquilibriumConstant.InGameTime}冷却时间。"; + public override string Description => $"{Duration:0.##} {GameplayEquilibriumConstant.InGameTime}内,造成伤害必定暴击;使 [ 八卦阵 ] 不需要检定,直接产生偶数效果;并且每次触发偶数效果时,减少所有主动技能 {冷却时间减少 * 100:0.##}% 冷却时间。"; public override bool Durative => true; public override double Duration => 30; public override DispelledType DispelledType => DispelledType.CannotBeDispelled; - public const double 冷却时间阈值 = 6; - public const double 冷却时间减少 = 3; + public const double 冷却时间减少 = 0.2; public override void OnEffectGained(Character character) { diff --git a/OshimaModules/Skills/Yang/咒怨洪流.cs b/OshimaModules/Skills/Yang/咒怨洪流.cs index fffb6e3..d9505e1 100644 --- a/OshimaModules/Skills/Yang/咒怨洪流.cs +++ b/OshimaModules/Skills/Yang/咒怨洪流.cs @@ -11,7 +11,7 @@ namespace Oshima.FunGame.OshimaModules.Skills public override string Description => Effects.Count > 0 ? Effects.First().Description : ""; public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : ""; public override double EPCost => 100; - public override double CD => 50; + public override double CD => 65; public override double HardnessTime { get; set; } = 3; public override bool CanSelectSelf => true; public override bool CanSelectEnemy => false; @@ -31,7 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Skills public override double Duration => 30; public override DispelledType DispelledType => DispelledType.CannotBeDispelled; - private double 减伤比例 => 0.15 + 0.04 * (Level - 1); + private double 减伤比例 => 0.15 + 0.02 * (Level - 1); private double 实际比例 = 0; public override void OnEffectGained(Character character) diff --git a/OshimaModules/Skills/被动/黑暗收割.cs b/OshimaModules/Skills/被动/黑暗收割.cs index d85215f..01cdadd 100644 --- a/OshimaModules/Skills/被动/黑暗收割.cs +++ b/OshimaModules/Skills/被动/黑暗收割.cs @@ -25,8 +25,8 @@ namespace Oshima.FunGame.OshimaModules.Skills { public override long Id => Skill.Id; public override string Name => Skill.Name; - public override string Description => $"对一半以下生命值的目标造成伤害时,将收集其灵魂以永久提升自身伤害,每个灵魂提供 {额外伤害提升 * 100:0.##}% 伤害加成。最多收集 {最多灵魂数量} 个灵魂。" + - $"若自身死亡,灵魂将损失一半。(当前灵魂数量:{当前灵魂数量} 个;伤害提升:{当前灵魂数量 * 额外伤害提升 * 100:0.##}%)"; + public override string Description => $"{Skill.SkillOwner()}对一半以下生命值的目标造成伤害时,将收集其灵魂以永久提升自身伤害,每个灵魂提供 {额外伤害提升 * 100:0.##}% 伤害加成。最多收集 {最多灵魂数量} 个灵魂。" + + $"若{Skill.SkillOwner()}死亡,灵魂将损失一半。(当前灵魂数量:{当前灵魂数量} 个;伤害提升:{当前灵魂数量 * 额外伤害提升 * 100:0.##}%)"; private static double 额外伤害提升 => 0.02; private int 当前灵魂数量 { get; set; } = 0;