Esempio n. 1
0
        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}");
        }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
        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);
        }