internal static LocalizedString GetText(this DurationRate duration) { switch (duration) { case DurationRate.Rounds: return(Main.objects.roundsPerLevelDuration); case DurationRate.Minutes: return(Main.objects.minutesPerLevelDuration); case DurationRate.TenMinutes: return(Main.objects.tenMinPerLevelDuration); case DurationRate.Hours: return(Main.objects.hourPerLevelDuration); } throw new NotImplementedException($"DurationRate: {duration}"); }
public static ContextActionApplyBuff CreateActionApplyBuff(BlueprintBuff buff, int duration = 0, DurationRate rate = DurationRate.Rounds, bool dispellable = false, bool permanent = false) { return(Helpers.CreateApplyBuff(buff, Helpers.CreateContextDuration(bonus: new ContextValue() { Value = duration }, rate: rate), fromSpell: false, dispellable: dispellable, permanent: permanent)); }
internal static BlueprintBuff CreateBuffForAbility(BlueprintBuff realBuff, String assetId, BlueprintAbilityResource resource, DurationRate duration, bool dispellable = true, bool removeWhenTurnedOff = false) { // Clone the real buff, but remove its functionality and UI. var clonedBuff = UnityEngine.Object.Instantiate(realBuff); clonedBuff.name = $"{realBuff.name}ResourceBuff"; Main.library.AddAsset(clonedBuff, Helpers.MergeIds(realBuff.AssetGuid, assetId)); var flags = realBuff.GetBuffFlags(); clonedBuff.SetBuffFlags(flags | BuffFlags.HiddenInUi); clonedBuff.FxOnStart = new PrefabLink(); clonedBuff.FxOnRemove = new PrefabLink(); var logic = Helpers.Create <LingeringBuffLogic>(); logic.RequiredResource = resource; logic.BuffDuration = duration; logic.RealBuff = realBuff; logic.Dispellable = dispellable; logic.RemoveWhenTurnedOff = removeWhenTurnedOff; clonedBuff.SetComponents(logic); return(clonedBuff); }
static BlueprintActivatableAbility CreateAbilityForBuff(BlueprintFeature feat, BlueprintAbilityResource resource, BlueprintBuff buff, DurationRate duration, String extraName = "") { var abilityBuff = LingeringBuffLogic.CreateBuffForAbility(buff, Helpers.MergeIds(feat.AssetGuid, "9654e4eb4fbe40cba281e47de787595d"), resource, duration); var inspireCourage = library.Get <BlueprintActivatableAbility>("2ce9653d7d2e9d948aa0b03e50ae52a6"); var ability = Helpers.CreateActivatableAbility($"{feat.name}{buff.name}ToggleAbility", feat.Name + extraName, feat.Description, Helpers.MergeIds(abilityBuff.AssetGuid, "b136041937b24d58a80a71fea93cf878"), buff.Icon, abilityBuff, AbilityActivationType.WithUnitCommand, CommandType.Standard, inspireCourage.ActivateWithUnitAnimation, Helpers.CreateActivatableResourceLogic(resource, ResourceSpendType.Never)); return(ability); }