using Continentis.MainGame; using Continentis.MainGame.Character; using UnityEngine; namespace Continentis.Mods.Basic.Buffs { public sealed class Basic_Blind : CombatBuffBase { private string GetDescription(int rounds, int stacks) { return $"This character's start damage in Dodge Check is decreased by {stacks}% for {rounds} rounds."; } public Basic_Blind(int initialCount, int stack = 25) { Initialize(BuffType.Negative, BuffDispelLevel.Basic); this.contentSubmodule = new ContentSubmodule(this) .AddParameterGetter("Count", () => actionCountSubmodule.remainingCount.ToString()) .AddParameterGetter("Stack", () => unitedStackSubmodule.stackAmount.ToString()); this.iconSubmodule = new IconSubmodule(this); actionCountSubmodule = new CountSubmodule(this, initialCount); generalAttributeSubmodule = new GeneralAttributeSubmodule(this); generalAttributeSubmodule.numericChange.Add("DodgeCheckStartDamageMultiplier", -0.01f * stack); } public override bool OnBuffApply(out CombatBuffBase existingBuff) { MainGameManager.Instance.basePrefabs.GenerateInfoText("Blind", attachedCharacter.characterView); if (FindExistingSameBuff(out existingBuff)) { existingBuff.unitedStackSubmodule.PickHigherStack(this.unitedStackSubmodule.stackAmount); existingBuff.actionCountSubmodule.AddRemainingCount(this.actionCountSubmodule.remainingCount); int remainingCount = existingBuff.actionCountSubmodule.remainingCount; int stackAmount = existingBuff.unitedStackSubmodule.stackAmount; existingBuff.generalAttributeSubmodule.numericChange["DodgeCheckStartDamageMultiplier"] = -0.01f * stackAmount; return false; } return true; } } }