Files
Continentis/Assets/Mods/Basic/Characters/CombatBuffs/General/Erosion.cs
SoulliesOfficial ac98ec3aef 更新
2026-04-17 12:01:50 -04:00

54 lines
1.9 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 Continentis.MainGame;
using Continentis.MainGame.Character;
using SLSUtilities.General;
namespace Continentis.Mods.Basic.Buffs
{
/// <summary>
/// 风蚀Wind 元素):行动开始时移除目标 [层数×2] 点格挡,然后层数 -1。
/// 定位:反格挡,与 Firm格挡积累形成元素克制。
/// </summary>
public sealed class Erosion : CharacterCombatBuffBase
{
public Erosion(int stack)
{
Initialize(BuffType.Negative, BuffDispelLevel.Basic);
this.contentSubmodule = new ContentSubmodule(this)
.AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString())
.AddParameterGetter("BlockRemoval", () => (unitedStackSubmodule.stackAmount * 2).ToString());
this.iconSubmodule = new IconSubmodule(this);
this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack);
this.eventSubmodule = new EventSubmodule(this);
this.eventSubmodule.onActionStart.Add("Erosion", new PrioritizedAction(OnActionStart));
}
private void OnActionStart()
{
int blockRemoval = unitedStackSubmodule.stackAmount * 2;
// 负值减少格挡Clamp 至 0
attachedCharacter.ModifyAndClampAttribute(CharacterAttributes.Block, -blockRemoval);
unitedStackSubmodule.ReduceStack(1);
iconSubmodule.Update();
}
public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff)
{
MainGameManager.Instance.basePrefabs.GenerateInfoText(
contentSubmodule.displayName, attachedCharacter.characterView);
if (FindExistingSameBuff(out existingBuff))
{
existingBuff.unitedStackSubmodule.AddStack(this.unitedStackSubmodule.stackAmount);
return false;
}
return true;
}
}
}