134 lines
5.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.Entity;
using Milimoe.FunGame.Core.Library.Common.Addon;
using Milimoe.FunGame.Core.Library.Constant;
namespace Oshima.FunGame.OshimaModules.Skills
{
public class : Skill
{
public override long Id => (long)SuperSkillID.;
public override string Name => "全军出击";
public override string Description => Effects.Count > 0 ? (()Effects.First()).GeneralDescription : "";
public override string DispelDescription => Effects.Count > 0 ? Effects.First().DispelDescription : "";
public override double EPCost => 100;
public override double CD => 80;
public override double HardnessTime { get; set; } = 5;
public override bool CanSelectSelf => true;
public override bool CanSelectEnemy => false;
public (Character? character = null) : base(SkillType.SuperSkill, character)
{
Effects.Add(new (this));
}
}
public class : Effect
{
public override long Id => Skill.Id;
public override string Name => Skill.Name;
public override string Description { get; set; } = "";
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
public string GeneralDescription => $"将雇佣兵数量立即补全至 {雇佣兵团特效.最大数量} 名,每名雇佣兵的生命值回复至满并提升 {攻击力提升 * 100:0.##}% 攻击力。在 {持续时间} {GameplayEquilibriumConstant.InGameTime}内,场上的每名雇佣兵额外为{Skill.SkillOwner()}提供 {攻击力 * 100:0.##}% 攻击力和 {行动速度:0.##} 点行动速度、{加速系数 * 100:0.##}% 加速系数、{冷却缩减 * 100:0.##}% 冷却缩减。";
public double => 20 + 2 * (Skill.Level - 1);
public const double = 0.04;
public const double = 0.03;
public const double = 0.03;
public const double = 30;
public const double = 0.4;
private double = 0;
private double = 0;
private double = 0;
private double = 0;
public (Skill skill) : base(skill)
{
Description = GeneralDescription;
}
public override void OnTimeElapsed(Character character, double elapsed)
{
(character);
}
public override void OnEffectLost(Character character)
{
Skill.IsInEffect = false;
(character);
}
public override void OnSkillCasted(Character caster, List<Character> targets, List<Grid> grids, Dictionary<string, object> others)
{
Skill.IsInEffect = true;
RemainDuration = Duration;
if (!caster.Effects.Contains(this))
{
caster.Effects.Add(this);
OnEffectGained(caster);
}
if (caster.Effects.FirstOrDefault(e => e is ) is e)
{
e.Skill.CurrentCD = 0;
e.Skill.Enable = true;
int count = e..Count;
if (count < .)
{
do
{
count = e.(caster);
}
while (count < .);
}
foreach ( gyb in e.)
{
gyb.Recovery();
gyb.ExATKPercentage += 0.05;
}
}
(caster);
GamingQueue?.LastRound.AddApplyEffects(caster, EffectType.CritBoost, EffectType.PenetrationBoost);
}
public void (Character character)
{
if ( != 0)
{
character.ExATKPercentage -= ;
= 0;
}
if ( != 0)
{
character.ExSPD -= ;
= 0;
}
if ( != 0)
{
character.ExAccelerationCoefficient -= ;
= 0;
}
if ( != 0)
{
character.ExCDR -= ;
= 0;
}
if (!Skill.IsInEffect)
{
return;
}
if (character.Effects.FirstOrDefault(e => e is ) is e)
{
int count = e..Count;
= * count;
= * count;
= * count;
= * count;
character.ExATKPercentage += ;
character.ExSPD += ;
character.ExAccelerationCoefficient += ;
character.ExCDR += ;
Description = $"{GeneralDescription}(当前雇佣兵数量:{count},攻击力提升:{实际攻击力提升 * 100:0.##}% [ {character.BaseATK * 实际攻击力提升:0.##} ] 点,行动速度提升:{实际行动速度提升:0.##} 点,加速系数提升:{实际加速系数提升 * 100:0.##}%,冷却缩减提升:{实际冷却缩减提升 * 100:0.##}%";
}
}
}
}