82 lines
3.6 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.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.PassiveEffects;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)PassiveID.;
public override string Name => "魔法震荡";
public override string Description => Effects.Count > 0 ? Effects.First().Description : "";
public (Character? character = null) : base(SkillType.Passive, character)
{
Effects.Add(new (this));
}
public override IEnumerable<Effect> AddPassiveEffectToCharacter()
{
return Effects;
}
}
public class (Skill skill) : Effect(skill)
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description => $"对处于完全行动不能、行动受限、战斗不能、技能受限、攻击受限状态的敌人额外造成 {系数 * 100:0.##}% 力量 [ {伤害加成:0.##} ] 点伤害;造成魔法伤害时使敌人眩晕 1 回合,冷却 {基础冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}。" +
( > 0 ? $"(正在冷却:剩余 {冷却时间:0.##} {GameplayEquilibriumConstant.InGameTime}" : "");
public double { get; set; } = 0;
public double { get; set; } = 10;
private static double => 4;
private double => * Skill.Character?.STR ?? 0;
public override double AlterExpectedDamageBeforeCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, Dictionary<Effect, double> totalDamageBonus)
{
if (character == Skill.Character && (
enemy.CharacterState == CharacterState.NotActionable ||
enemy.CharacterState == CharacterState.ActionRestricted ||
enemy.CharacterState == CharacterState.BattleRestricted ||
enemy.CharacterState == CharacterState.SkillRestricted ||
enemy.CharacterState == CharacterState.AttackRestricted))
{
return ;
}
return 0;
}
public override void AfterDamageCalculation(Character character, Character enemy, double damage, bool isNormalAttack, bool isMagicDamage, MagicType magicType, DamageResult damageResult)
{
if (character == Skill.Character && isMagicDamage && == 0 && damageResult != DamageResult.Evaded)
{
IEnumerable<Effect> effects = enemy.Effects.Where(e => e is && e.Skill == Skill);
if (effects.Any())
{
effects.First().RemainDurationTurn++;
}
else
{
e = new(Skill, character, false, 0, 1);
enemy.Effects.Add(e);
e.OnEffectGained(enemy);
}
WriteLine($"[ {character} ] 的魔法伤害触发了魔法震荡,[ {enemy} ] 被眩晕了!");
= ;
}
}
public override void OnTimeElapsed(Character character, double elapsed)
{
if ( > 0)
{
-= elapsed;
if ( <= 0)
{
= 0;
}
}
}
}
}