59 lines
1.3 KiB
C#
59 lines
1.3 KiB
C#
using RoR2;
|
|
using UnityEngine;
|
|
|
|
namespace EntityStates.CaptainSupplyDrop;
|
|
|
|
public class PlatingBuffMainState : BaseMainState
|
|
{
|
|
public static int maximumBuffStack;
|
|
|
|
public static int buffCountToGrant;
|
|
|
|
[SerializeField]
|
|
public float activationCost;
|
|
|
|
private static BuffIndex buff => JunkContent.Buffs.BodyArmor.buffIndex;
|
|
|
|
protected override bool shouldShowEnergy => true;
|
|
|
|
protected override string GetContextString(Interactor activator)
|
|
{
|
|
return Language.GetString("CAPTAIN_SUPPLY_DEFENSE_RESTOCK_INTERACTION");
|
|
}
|
|
|
|
protected override Interactability GetInteractability(Interactor activator)
|
|
{
|
|
CharacterBody component = activator.GetComponent<CharacterBody>();
|
|
if (!component)
|
|
{
|
|
return Interactability.Disabled;
|
|
}
|
|
if (energyComponent.energy < activationCost)
|
|
{
|
|
return Interactability.ConditionsNotMet;
|
|
}
|
|
if (component.GetBuffCount(buff) >= maximumBuffStack)
|
|
{
|
|
return Interactability.ConditionsNotMet;
|
|
}
|
|
return Interactability.Available;
|
|
}
|
|
|
|
protected override void OnInteractionBegin(Interactor activator)
|
|
{
|
|
CharacterBody component = activator.GetComponent<CharacterBody>();
|
|
for (int i = 0; i < buffCountToGrant; i++)
|
|
{
|
|
if (component.GetBuffCount(buff) >= maximumBuffStack)
|
|
{
|
|
break;
|
|
}
|
|
if (!energyComponent.TakeEnergy(activationCost))
|
|
{
|
|
break;
|
|
}
|
|
component.AddBuff(buff);
|
|
}
|
|
}
|
|
}
|