2024-10-30 01:25:41 +08:00

116 lines
4.6 KiB
C#

using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Testing.Effects.OpenEffects
{
public class ExMDF : Effect
{
public override long Id => (long)EffectID.ExMDF;
public override string Name => "魔法抗性加成";
public override string Description => $"增加角色 {实际加成 * 100:0.##}% {CharacterSet.GetMagicResistanceName(魔法类型)}。" + (!TargetSelf ? $"来自:[ {Source} ]" + (Item != null ? $" 的 [ {Item.Name} ]" : "") : "");
public override EffectType EffectType => EffectType.Item;
public override bool TargetSelf => true;
public Item? Item { get; }
private readonly double = 0;
private readonly MagicType = MagicType.None;
public override void OnEffectGained(Character character)
{
switch ()
{
case MagicType.Starmark:
character.MDF.Starmark += ;
break;
case MagicType.PurityNatural:
character.MDF.PurityNatural += ;
break;
case MagicType.PurityContemporary:
character.MDF.PurityContemporary += ;
break;
case MagicType.Bright:
character.MDF.Bright += ;
break;
case MagicType.Shadow:
character.MDF.Shadow += ;
break;
case MagicType.Element:
character.MDF.Element += ;
break;
case MagicType.Fleabane:
character.MDF.Fleabane += ;
break;
case MagicType.Particle:
character.MDF.Particle += ;
break;
case MagicType.None:
default:
character.MDF.SetAllValue(, false);
break;
}
}
public override void OnEffectLost(Character character)
{
switch ()
{
case MagicType.Starmark:
character.MDF.Starmark -= ;
break;
case MagicType.PurityNatural:
character.MDF.PurityNatural -= ;
break;
case MagicType.PurityContemporary:
character.MDF.PurityContemporary -= ;
break;
case MagicType.Bright:
character.MDF.Bright -= ;
break;
case MagicType.Shadow:
character.MDF.Shadow -= ;
break;
case MagicType.Element:
character.MDF.Element -= ;
break;
case MagicType.Fleabane:
character.MDF.Fleabane -= ;
break;
case MagicType.Particle:
character.MDF.Particle -= ;
break;
case MagicType.None:
default:
character.MDF.SetAllValue(-, false);
break;
}
}
public ExMDF(Skill skill, Dictionary<string, object> args, Character? source = null, Item? item = null) : base(skill, args)
{
GamingQueue = skill.GamingQueue;
Source = source;
Item = item;
if (Values.Count > 0)
{
string key = Values.Keys.FirstOrDefault(s => s.Equals("mdfType", StringComparison.CurrentCultureIgnoreCase)) ?? "";
if (key.Length > 0 && int.TryParse(Values[key].ToString(), out int mdfType))
{
if (Enum.IsDefined(typeof(MagicType), mdfType))
{
= (MagicType)mdfType;
}
else
{
= MagicType.None;
}
}
key = Values.Keys.FirstOrDefault(s => s.Equals("mdfvalue", StringComparison.CurrentCultureIgnoreCase)) ?? "";
if (key.Length > 0 && double.TryParse(Values[key].ToString(), out double mdfValue))
{
= mdfValue;
}
}
}
}
}