Files
Continentis/Assets/Mods/Basic/Characters/CombatBuffs/General/Protected.cs
2025-10-31 10:02:30 -04:00

59 lines
2.3 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 System.Collections.Generic;
using Continentis.MainGame;
using Continentis.MainGame.Character;
using Continentis.MainGame.Combat;
using SLSFramework.General;
using UnityEngine;
namespace Continentis.Mods.Basic.Buffs
{
public class Protected : CharacterCombatBuffBase
{
public List<Protecting> protectingSources;
public Protected()
{
Initialize(BuffType.Neutral, BuffDispelLevel.DeathOnly, 100);
this.protectingSources = new List<Protecting>();
this.statusSubmodule = new StatusSubmodule(this, StatusType.Protected);
this.contentSubmodule = new ContentSubmodule(this);//TODO: 以后增加角色的ContentSubmodule
this.iconSubmodule = new IconSubmodule(this).SetTextFunctions();
this.eventSubmodule = new EventSubmodule(this);
/*
this.eventSubmodule.onOpponentDecideAction.Add("Protected",
new EventUnit<CharacterBase, IntendedCard, CharacterBase>((opponent, intendedCard, originalTarget) =>
{
if (opponent is CombatNPC npc)
{
intendedCard.targets.Remove(originalTarget);
//intendedCard.targets.Add(protector); //TODO: 后续用设计专门的函数决定目标改变
}
}));
*/
}
public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff)
{
MainGameManager.Instance.basePrefabs.GenerateInfoText(contentSubmodule.displayName, attachedCharacter.characterView);
if (attachedCharacter.combatBuffSubmodule.TryGetBuffs(out List<Protecting> conflictProtectings))
{
//如果目标正在保护其他角色时被保护则应当将目标的所有Protecting Buff移除以防止冲突.
Debug.Log($"Conflicted Protecting buffs found, count: {conflictProtectings.Count}. Removing all.");
conflictProtectings.For(cp => cp.Remove());
}
if (FindExistingSameBuff(out existingBuff))
{
return false;
}
return true;
}
}
}