mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2026-01-19 14:08:23 +00:00
51 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|