using Wizard; using Wizard.Battle.View.Vfx; public class Skill_force_avarice : SkillBase { public Skill_force_avarice(SkillParameter skillPrm, string option) : base(skillPrm, option) { } public override VfxWithLoading Start(CallParameter parameter) { ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create(); foreach (BattleCardBase targetCard in parameter.targetCards) { VfxBase vfx = targetCard.SkillApplyInformation.GiveForceAvarice(parameter.skillProcessor); BattleCardBase battleCardBase = targetCard; CardParameter baseParameter = base.SkillPrm.ownerCard.BaseParameter; BuffInfo buffInfo = new BuffInfo(baseParameter.BaseCardId, baseParameter.NormalCardId, this); targetCard.AddBuffInfo(buffInfo); if (targetCard.IsClass) { UpdateClassBuffIfActive(targetCard); } BuffInfoContainer buffInfoContainer = new BuffInfoContainer(battleCardBase, buffInfo, -1, "", null, 0L); base.buffInfoContainer.Add(buffInfoContainer); SetOnLoseEvent(battleCardBase, buffInfo, buffInfoContainer); parallelVfxPlayer.Register(vfx); } VfxWithLoadingSequential vfxWithLoadingSequential = VfxWithLoadingSequential.Create(); vfxWithLoadingSequential.RegisterVfxWithLoading(CreateSkillEffect(base.SkillPrm.resourceMgr, parameter.targetCards)); vfxWithLoadingSequential.RegisterToMainVfx(parallelVfxPlayer); return vfxWithLoadingSequential; } public override VfxWithLoading Stop(SkillProcessor skillProcessor) { base.Stop(skillProcessor); ParallelVfxPlayer parallelVfxPlayer = ParallelVfxPlayer.Create(); foreach (BuffInfoContainer item in buffInfoContainer) { VfxBase vfx = item._targetCard.SkillApplyInformation.DepriveForceAvarice(); parallelVfxPlayer.Register(vfx); item._targetCard.RemoveBuffInfo(item._buffInfo); if (item._targetCard.IsClass) { UpdateClassBuffIfActive(item._targetCard); } } buffInfoContainer.Clear(); return VfxWithLoading.Create(parallelVfxPlayer); } public override void SetOnLoseEvent(BattleCardBase targetCard, BuffInfo buff, BuffInfoContainer container) { targetCard.OnLoseSkillOneTime += delegate(SkillBase loseSkill, SkillProcessor skillProcessor, BattleCardBase card) { buffInfoContainer.Remove(container); return card.SkillApplyInformation.ForceDepriveForceAvarice(); }; } }