mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2026-01-19 22:18:25 +00:00
技能修改
This commit is contained in:
parent
77dd1a4720
commit
6dfa7ccb4a
@ -39,10 +39,9 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
public override MagicType MagicType => Skill.Character?.MagicType ?? MagicType.None;
|
public override MagicType MagicType => Skill.Character?.MagicType ?? MagicType.None;
|
||||||
public override ImmuneType IgnoreImmune => ImmuneType.All;
|
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 直接伤害 => 180 + 240 * (Skill.Level - 1);
|
||||||
public double 持续时间 => 25 + 2 * (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.4 + 0.07 * (Skill.Level - 1);
|
||||||
public double 力量提升 => 0.6 * (Skill.Character?.BaseSTR ?? 0);
|
public double 力量提升 => 0.6 * (Skill.Character?.BaseSTR ?? 0);
|
||||||
public Dictionary<Character, double> 敌人伤害统计 { get; set; } = [];
|
public Dictionary<Character, double> 敌人伤害统计 { 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 (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)
|
if (GamingQueue != null)
|
||||||
{
|
{
|
||||||
allEnemys = [.. GamingQueue.GetEnemies(character).Where(c => c != character && c != enemy && !targets.Contains(c) && c.HP > 0)];
|
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 *= 分裂伤害系数;
|
damage *= 分裂伤害系数;
|
||||||
|
|||||||
@ -33,21 +33,22 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"最大生命值减少 20%。破釜沉舟:生命值高于 40% 时,受到额外的 [ {高于40额外伤害下限}~{高于40额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于40的加成下限}~{高于40的加成上限}% ] 伤害加成;生命值低于等于 40% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于40的加成下限}~{低于40的加成上限}% ] 的伤害加成。" +
|
public override string Description => $"{Skill.SkillOwner()}已经看透了生命的真谛。{Skill.SkillOwner()}的最大生命值减少 20%,并获得破釜沉舟特效。破釜沉舟:生命值高于 40% 时,受到额外的 [ {高于40额外伤害下限}~{高于40额外伤害上限}% ] 伤害,获得 [ 累计所受伤害的 {高于40的加成下限}~{高于40的加成上限}% ] 伤害加成;生命值低于等于 40% 时,不会受到额外的伤害,并且获得 [ 累计受到的伤害 {低于40的加成下限}~{低于40的加成上限}% ] 的伤害加成。" +
|
||||||
$"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成。通过累计受到伤害发动破釜沉舟时,目标的闪避检定获得 40% 的减值。" + (累计受到的伤害 > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##})" : "");
|
$"在没有累计任何受到伤害的时候,将获得 {常规伤害加成 * 100:0.##}% 伤害加成和 {常规生命偷取 * 100:0.##}% 生命偷取。通过累计受到伤害发动破釜沉舟时,目标的闪避检定获得 40% 的减值,并立即清除累计受到的伤害。" + (累计受到的伤害 > 0 ? $"(当前累计受到伤害:{累计受到的伤害:0.##})" : "");
|
||||||
|
|
||||||
private bool 已通过累计受到伤害发动破釜沉舟 = false;
|
private bool 已通过累计受到伤害发动破釜沉舟 = false;
|
||||||
private double 累计受到的伤害 = 0;
|
private double 累计受到的伤害 = 0;
|
||||||
private double 这次的伤害加成 = 0;
|
private double 这次的伤害加成 = 0;
|
||||||
private double 受到伤害之前的HP = 0;
|
private double 受到伤害之前的HP = 0;
|
||||||
private double 这次受到的额外伤害 = 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额外伤害上限 = 40;
|
||||||
private readonly int 高于40额外伤害下限 = 15;
|
private readonly int 高于40额外伤害下限 = 20;
|
||||||
private readonly int 高于40的加成上限 = 80;
|
private readonly int 高于40的加成上限 = 90;
|
||||||
private readonly int 高于40的加成下限 = 50;
|
private readonly int 高于40的加成下限 = 60;
|
||||||
private readonly int 低于40的加成上限 = 120;
|
private readonly int 低于40的加成上限 = 160;
|
||||||
private readonly int 低于40的加成下限 = 90;
|
private readonly int 低于40的加成下限 = 120;
|
||||||
|
|
||||||
private double 伤害加成(double damage)
|
private double 伤害加成(double damage)
|
||||||
{
|
{
|
||||||
@ -75,7 +76,6 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
已通过累计受到伤害发动破釜沉舟 = 累计受到的伤害 != 0;
|
已通过累计受到伤害发动破釜沉舟 = 累计受到的伤害 != 0;
|
||||||
这次的伤害加成 = 伤害加成(damage);
|
这次的伤害加成 = 伤害加成(damage);
|
||||||
WriteLine($"[ {character} ] 发动了破釜沉舟,获得了 {这次的伤害加成:0.##} 点伤害加成!");
|
WriteLine($"[ {character} ] 发动了破釜沉舟,获得了 {这次的伤害加成:0.##} 点伤害加成!");
|
||||||
累计受到的伤害 = 0;
|
|
||||||
return 这次的伤害加成;
|
return 这次的伤害加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +107,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
WriteLine($"[ {enemy} ] 的破釜沉舟触发,保护了自己不进入死亡!!");
|
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)
|
public override bool BeforeEvadeCheck(Character actor, Character enemy, ref double throwingBonus)
|
||||||
|
|||||||
@ -169,7 +169,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
Effect e = new 愤怒(Skill, caster, caster, true, Duration, 0)
|
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)))
|
if (enemy.AGI <= caster.AGI || (enemy.AGI > caster.AGI && !CheckExemption(caster, enemy, e)))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -53,17 +53,14 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
}
|
}
|
||||||
if (归元)
|
if (归元)
|
||||||
{
|
{
|
||||||
WriteLine($"[ {character} ] 发动了归元环!冷却时间减少了 {归元环特效.冷却时间减少:0.##} {GameplayEquilibriumConstant.InGameTime}!");
|
WriteLine($"[ {character} ] 发动了归元环!冷却时间减少了 20%!");
|
||||||
foreach (Skill s in c.Skills)
|
foreach (Skill s in c.Skills)
|
||||||
{
|
{
|
||||||
if (s.CurrentCD >= 归元环特效.冷却时间阈值)
|
s.CurrentCD -= s.CD * 归元环特效.冷却时间减少;
|
||||||
|
if (s.CurrentCD < 0)
|
||||||
{
|
{
|
||||||
s.CurrentCD -= 归元环特效.冷却时间减少;
|
s.CurrentCD = 0;
|
||||||
if (s.CurrentCD < 0)
|
s.Enable = true;
|
||||||
{
|
|
||||||
s.CurrentCD = 0;
|
|
||||||
s.Enable = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,13 +26,12 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
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 bool Durative => true;
|
||||||
public override double Duration => 30;
|
public override double Duration => 30;
|
||||||
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
|
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
|
||||||
|
|
||||||
public const double 冷却时间阈值 = 6;
|
public const double 冷却时间减少 = 0.2;
|
||||||
public const double 冷却时间减少 = 3;
|
|
||||||
|
|
||||||
public override void OnEffectGained(Character character)
|
public override void OnEffectGained(Character character)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -11,7 +11,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
|
||||||
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
|
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
|
||||||
public override double EPCost => 100;
|
public override double EPCost => 100;
|
||||||
public override double CD => 50;
|
public override double CD => 65;
|
||||||
public override double HardnessTime { get; set; } = 3;
|
public override double HardnessTime { get; set; } = 3;
|
||||||
public override bool CanSelectSelf => true;
|
public override bool CanSelectSelf => true;
|
||||||
public override bool CanSelectEnemy => false;
|
public override bool CanSelectEnemy => false;
|
||||||
@ -31,7 +31,7 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
public override double Duration => 30;
|
public override double Duration => 30;
|
||||||
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
|
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;
|
private double 实际比例 = 0;
|
||||||
|
|
||||||
public override void OnEffectGained(Character character)
|
public override void OnEffectGained(Character character)
|
||||||
|
|||||||
@ -25,8 +25,8 @@ namespace Oshima.FunGame.OshimaModules.Skills
|
|||||||
{
|
{
|
||||||
public override long Id => Skill.Id;
|
public override long Id => Skill.Id;
|
||||||
public override string Name => Skill.Name;
|
public override string Name => Skill.Name;
|
||||||
public override string Description => $"对一半以下生命值的目标造成伤害时,将收集其灵魂以永久提升自身伤害,每个灵魂提供 {额外伤害提升 * 100:0.##}% 伤害加成。最多收集 {最多灵魂数量} 个灵魂。" +
|
public override string Description => $"{Skill.SkillOwner()}对一半以下生命值的目标造成伤害时,将收集其灵魂以永久提升自身伤害,每个灵魂提供 {额外伤害提升 * 100:0.##}% 伤害加成。最多收集 {最多灵魂数量} 个灵魂。" +
|
||||||
$"若自身死亡,灵魂将损失一半。(当前灵魂数量:{当前灵魂数量} 个;伤害提升:{当前灵魂数量 * 额外伤害提升 * 100:0.##}%)";
|
$"若{Skill.SkillOwner()}死亡,灵魂将损失一半。(当前灵魂数量:{当前灵魂数量} 个;伤害提升:{当前灵魂数量 * 额外伤害提升 * 100:0.##}%)";
|
||||||
|
|
||||||
private static double 额外伤害提升 => 0.02;
|
private static double 额外伤害提升 => 0.02;
|
||||||
private int 当前灵魂数量 { get; set; } = 0;
|
private int 当前灵魂数量 { get; set; } = 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user