using Continentis.MainGame; using Continentis.MainGame.Character; using SLSFramework.General; using UnityEngine; namespace Continentis.Mods.Basic.Buffs { public class KnifeTrick : CharacterCombatBuffBase { public KnifeTrick(int stack) { Initialize(BuffType.Positive, BuffDispelLevel.Strong); this.contentSubmodule = new ContentSubmodule(this, false) .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); this.iconSubmodule = new IconSubmodule(this); this.unitedStackSubmodule = new UnitedStackSubmodule(this, stack); this.eventSubmodule = new EventSubmodule(this); this.eventSubmodule.onOtherBuffRemoved.Add("KnifeTrick_AddSharpness", new PrioritizedAction>((buff) => { if (buff is Sharpness) { Debug.Log("Knife Trick observed Sharpness buff removal, adding new Sharpness buff."); Debug.Log("Stack amount: " + unitedStackSubmodule.stackAmount); CreateCharacterBuff(unitedStackSubmodule.stackAmount).Apply(attachedCharacter, attachedCharacter); } })); } public override bool OnBuffApply(out CharacterCombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText("Knife Trick", attachedCharacter.characterView); if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.ModifyStack(this.unitedStackSubmodule.stackAmount); int newStack = existingBuff.unitedStackSubmodule.stackAmount; existingBuff.coreAttributeSubmodule.numericChange["DodgeChanceOffset"] = newStack; return false; } return true; } } }