92 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Testing.Skills
{
public class : Skill
{
public override long Id => 4009;
public override string Name => "玻璃大炮";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character character) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddInactiveEffectToCharacter()
{
return Effects;
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"生命值高于30%时,受到额外的 [ 20~40% ] 伤害,但是获得 [ 上次所受伤害的 80% ] 伤害加成生命值低于等于30%时,不会受到额外的伤害,但是仅能获得 [ 上次所受伤害的 30% ] 伤害加成。" +
$"在没有受到任何伤害的时候,将获得 {常规伤害加成 * 100:f2}% 伤害加成。(当前伤害加成:{伤害加成 * 100:f2}%";
public override bool TargetSelf => true;
private double = 0;
private double = 0;
private double = 0;
private readonly double = 0.2;
private readonly double 30 = 0.8;
private readonly double 30 = 0.3;
private double
{
get
{
double = ;
Character? character = Skill.Character;
if (character is null) return ;
if ( != 0)
{
if (character.HP > character.MaxHP * 0.3)
{
= 30;
}
else
{
= 30;
}
}
return ;
}
}
public override void AlterExpectedDamageBeforeCalculation(Character character, Character enemy, ref double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType)
{
if (character == Skill.Character)
{
= Calculation.Round2Digits(damage * );
damage = Calculation.Round2Digits(damage + );
WriteLine($"[ {character} ] 发动了玻璃大炮,获得了 {这次的伤害加成} 点伤害加成!");
}
if (enemy == Skill.Character)
{
if (character.HP > character.MaxHP * 0.3)
{
// 额外受到伤害
double = Calculation.Round4Digits((new Random().Next(20, 40) + 0.0) / 100);
= Calculation.Round2Digits(damage * );
damage = Calculation.Round2Digits(damage + );
WriteLine($"[ {character} ] 的玻璃大炮触发,将额外受到 {这次受到的额外伤害} 点伤害!");
}
}
}
public override void AfterDamageCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
{
if (enemy == Skill.Character && damageResult != DamageResult.Evaded)
{
= damage;
}
}
}
}