mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2026-01-19 14:08:23 +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 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<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 (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 *= 分裂伤害系数;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)))
|
||||
{
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user