2026-01-15 01:27:48 +08:00

51 lines
1.8 KiB
C#

using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Constant;
using Oshima.FunGame.OshimaModules.Effects.OpenEffects;
namespace Oshima.FunGame.OshimaModules.Effects.PassiveEffects
{
public class : Effect
{
public override long Id => (long)PassiveEffectID.;
public override string Name => "复制技能";
public override string Description => $"此角色持有技能 [ {_skill.Name} ] 的复制品。来自:[ {Source} ]";
public override EffectType EffectType => EffectType.Mark;
public override Character Source => _sourceCharacter;
public override DispelledType DispelledType => DispelledType.CannotBeDispelled;
public Skill CopiedSkill => _skill;
private readonly Character _sourceCharacter;
private readonly Skill _skill;
public (Skill skill, Character sourceCharacter, Skill copiedSkill) : base(skill)
{
GamingQueue = skill.GamingQueue;
_sourceCharacter = sourceCharacter;
_skill = copiedSkill.Copy();
_skill.Level = copiedSkill.Level;
}
public CharacterActionType LastType { get; set; } = CharacterActionType.None;
public Skill? LastSkill { get; set; } = null;
public override void OnEffectGained(Character character)
{
_skill.Character = character;
_skill.OnLevelUp();
character.Skills.Add(_skill);
}
public override void OnEffectLost(Character character)
{
foreach (Effect effect in _skill.Effects)
{
if (character.Effects.Remove(effect))
{
effect.OnEffectLost(character);
}
}
character.Skills.Remove(_skill);
}
}
}