public static void UltraBoostStack(Tower to, int stack = 1) { var model = Game.instance.model.GetTower(TowerType.EngineerMonkey, 0, 5).GetAbilites()[0].GetBehavior <OverclockPermanentModel>().Duplicate(); var mutator = to.GetMutatorById("Ultraboost"); if (mutator != null) { var stacks = mutator.mutator.Cast <OverclockPermanentModel.OverclockPermanentMutator>().stacks; if (stacks < model.maxStacks) { var newMutator = model.MutatorByStack(Math.Min(stacks + stack, model.maxStacks)); to.RemoveMutatorsById("Ultraboost"); to.AddMutator(newMutator, -1, false); } } else { var newMutator = model.MutatorByStack(Math.Min(model.maxStacks, stack)); to.AddMutator(newMutator, -1, false); } }
public static void AddBoost(Tower from, Tower to) { if (Main.CurrentBoostIDs.ContainsKey(from.Id)) { RemoveBoostOn(Main.CurrentBoostIDs[from.Id]); } to.RemoveMutatorsById("Overclock"); int tier = to.towerModel.tier; if (to.towerModel.IsHero()) { tier = (tier - 1) / 4; } to.AddMutator(GetMutator(from.towerModel, tier, from.towerModel.tier == 5), -1, false); Main.CurrentBoostIDs[from.Id] = to.Id; }