Ejemplo n.º 1
0
        public InfoPanel(TinkerCrappahilationPaid main)
        {
            _main    = main;
            Factory  = main.Config.Factory.Menu("Info Panel");
            Enable   = Factory.Item("Draw panel", true);
            PosX     = Factory.Item("Position X", new Slider(28, 0, 2000));
            PosY     = Factory.Item("Position Y", new Slider(127, 0, 2000));
            TextSize = Factory.Item("Text Size", new Slider(20, 1, 50));

            if (Enable)
            {
                Activate();
            }

            Enable.PropertyChanged += (sender, args) =>
            {
                if (Enable)
                {
                    Activate();
                }
                else
                {
                    Deactivate();
                }
            };
        }
Ejemplo n.º 2
0
 public DamageCalculator(TinkerCrappahilationPaid main)
 {
     _main      = main;
     DamageDict = new Dictionary <Hero, TargetClass>();
     UpdateManager.CreateIngameUpdate(150, Updater);
     UpdateManager.CreateIngameUpdate(500, PrepareItemsForCombo);
 }
Ejemplo n.º 3
0
        public LaneHelper(TinkerCrappahilationPaid main)
        {
            Main = main;
            Map  = new Map();
            var isRadiant = EntityManager.LocalHero.Team == Team.Radiant;

            TopPath   = isRadiant ? Map.RadiantTopRoute : Map.DireTopRoute;
            MidPath   = isRadiant ? Map.RadiantMiddleRoute : Map.DireMiddleRoute;
            BotPath   = isRadiant ? Map.RadiantBottomRoute : Map.DireBottomRoute;
            LaneCache = new Dictionary <Unit, List <Vector3> >();
        }
Ejemplo n.º 4
0
        public AbilitiesInCombo(TinkerCrappahilationPaid main)
        {
            main.Context.Inventory.Attach(this);
            var dict = new Dictionary <string, bool>
            {
                { AbilityId.item_blink.ToString(), true },
                { AbilityId.item_soul_ring.ToString(), true },
                { AbilityId.item_veil_of_discord.ToString(), true },
                { AbilityId.item_ethereal_blade.ToString(), true },
                { AbilityId.item_dagon.ToString(), true },
                { AbilityId.item_dagon_2.ToString(), true },
                { AbilityId.item_dagon_3.ToString(), true },
                { AbilityId.item_dagon_4.ToString(), true },
                { AbilityId.item_dagon_5.ToString(), true },
                { AbilityId.tinker_heat_seeking_missile.ToString(), true },
                { AbilityId.item_sheepstick.ToString(), true },
                { AbilityId.item_ghost.ToString(), true },
                { AbilityId.item_black_king_bar.ToString(), true },
                { AbilityId.item_shivas_guard.ToString(), true },
                { AbilityId.tinker_laser.ToString(), true },
                { AbilityId.item_glimmer_cape.ToString(), true },
                { AbilityId.tinker_rearm.ToString(), true },
            };
            var newMenu = main.Config.Factory.Menu("Abilities");

            main.Config.ItemsInCombo = newMenu.Item("ItemsInCombo", new AbilityToggler(dict));
            var list = dict.Keys.ToList();

            main.Config.Priority = newMenu.Item("Priority", new PriorityChanger(list));

            dict = new Dictionary <string, bool>
            {
                { AbilityId.item_blink.ToString(), true },
                { AbilityId.item_soul_ring.ToString(), true },
                { AbilityId.item_bottle.ToString(), true },
                { AbilityId.item_ghost.ToString(), true },
                { AbilityId.item_shivas_guard.ToString(), true },
                { AbilityId.item_glimmer_cape.ToString(), true },
            };

            main.Config.ItemsInSpamCombo = newMenu.Item("Spam Combo", new AbilityToggler(dict));

            Laser  = new Laser(main.Me.Spellbook.Spell1);
            Rocket = new Rockets(main.Me.Spellbook.Spell2);
            Rearm  = new Rearm(main.Me.Spellbook.Spell4);
            March  = main.Me.Spellbook.Spell3;
        }
Ejemplo n.º 5
0
        public DrawingHelper(TinkerCrappahilationPaid main)
        {
            _main                    = main;
            Factory                  = Config.Factory.Menu("Drawing");
            EnableDamageDrawing      = Factory.Item("Draw damage", true);
            DrawBlinkRangeOnTeleport = Factory.Item("Draw blink range while teleporting", true);

            if (EnableDamageDrawing)
            {
                Drawing.OnDraw += DrawingOnOnDraw;
            }

            EnableDamageDrawing.PropertyChanged += (sender, args) =>
            {
                if (EnableDamageDrawing)
                {
                    Drawing.OnDraw += DrawingOnOnDraw;
                }
                else
                {
                    Drawing.OnDraw -= DrawingOnOnDraw;
                }
            };

            if (DrawBlinkRangeOnTeleport)
            {
                Unit.OnModifierAdded   += UnitOnOnModifierAdded;
                Unit.OnModifierRemoved += UnitOnOnModifierRemoved;
            }

            DrawBlinkRangeOnTeleport.PropertyChanged += (sender, args) =>
            {
                if (DrawBlinkRangeOnTeleport)
                {
                    Unit.OnModifierAdded   += UnitOnOnModifierAdded;
                    Unit.OnModifierRemoved += UnitOnOnModifierRemoved;
                }
                else
                {
                    Unit.OnModifierAdded   -= UnitOnOnModifierAdded;
                    Unit.OnModifierRemoved -= UnitOnOnModifierRemoved;
                    ParticleManager.Remove("blink_tp_range");
                }
            };
        }
Ejemplo n.º 6
0
        public KillSteal(TinkerCrappahilationPaid main)
        {
            _main            = main;
            KillStealFactory = Config.Factory.Menu("KillSteal");
            Enable           = KillStealFactory.Item("Enable", true);
            InAction         = false;
            if (Enable)
            {
                UpdateManager.BeginInvoke(KillStealChecker);
            }

            Enable.PropertyChanged += (sender, args) =>
            {
                if (Enable)
                {
                    UpdateManager.BeginInvoke(KillStealChecker);
                }
                else
                {
                    //UpdateManager.Unsubscribe(KillStealChecker);
                }
            };
        }
Ejemplo n.º 7
0
        public SpamCombos(TinkerCrappahilationPaid main)
        {
            _main = main;
            var inRockets = false;
            var inMarch   = false;

            Config.RocketSpam.PropertyChanged += async(sender, args) =>
            {
                if (Config.RocketSpam && !inRockets)
                {
                    inRockets = true;
                    while (Config.RocketSpam)
                    {
                        try
                        {
                            if (Config.MarchSpam || Abilities.Rearm.Ability.IsInAbilityPhase || Abilities.Rearm.Ability.IsChanneling)
                            {
                                await Task.Delay(50);

                                continue;
                            }
                            if (Abilities.Blink != null && Abilities.Blink.CanBeCasted && CheckItem(Abilities.Blink.ToString()))
                            {
                                var mousePos = GameManager.MousePosition;
                                var myPos    = Me.NetworkPosition;
                                if (Me.IsInRange(mousePos, Abilities.Blink.CastRange))
                                {
                                    if (mousePos.Distance2D(myPos) >= 200)
                                    {
                                        Abilities.Blink.UseAbility(mousePos);
                                        await Task.Delay(
                                            (int)Math.Max(1,
                                                          Abilities.Blink.GetCastDelay(mousePos) * 1.1f + _main.GetExtraDelay));
                                    }
                                }
                                else
                                {
                                    var pos = Me.Position.Extend(mousePos, Abilities.Blink.CastRange - 50);
                                    if (pos.Distance2D(myPos) >= 200)
                                    {
                                        Abilities.Blink.UseAbility(pos);
                                        await Task.Delay(
                                            (int)Math.Max(1,
                                                          Abilities.Blink.GetCastDelay(pos) * 1.1f + _main.GetExtraDelay));
                                    }
                                }
                            }

                            if (Abilities.Bottle != null && Abilities.Bottle.CanBeCasted && CheckItem(Abilities.Bottle.ToString()))
                            {
                                Abilities.Bottle.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Bottle.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.SoulRing != null && Abilities.SoulRing.CanBeCasted && CheckItem(Abilities.SoulRing.ToString()))
                            {
                                Abilities.SoulRing.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.SoulRing.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Ghost != null && Abilities.Ghost.CanBeCasted && CheckItem(Abilities.Ghost.ToString()))
                            {
                                Abilities.SoulRing.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Ghost.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Glimmer != null && Abilities.Glimmer.CanBeCasted && CheckItem(Abilities.Glimmer.ToString()))
                            {
                                Abilities.Glimmer.UseAbility(Me);
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Glimmer.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Shiva != null && Abilities.Shiva.CanBeCasted && CheckItem(Abilities.Shiva.ToString()))
                            {
                                Abilities.Shiva.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Shiva.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Rocket.CanBeCasted)
                            {
                                Abilities.Rocket.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Rocket.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Rearm.CanBeCasted && Config.RocketSpam)
                            {
                                Abilities.Rearm.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Rearm.GetCastDelay() + _main.GetExtraDelay));
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                        }
                        await Task.Delay(50);
                    }
                    inRockets = false;
                }
            };

            Config.MarchSpam.PropertyChanged += async(sender, args) =>
            {
                if (Config.MarchSpam && !inMarch)
                {
                    inMarch = true;
                    while (Config.MarchSpam)
                    {
                        try
                        {
                            if (Abilities.Rearm.Ability.IsInAbilityPhase || Abilities.Rearm.Ability.IsChanneling)
                            {
                                await Task.Delay(50);

                                continue;
                            }

                            if (Abilities.Blink != null && Abilities.Blink.CanBeCasted && CheckItem(Abilities.Blink.ToString()))
                            {
                                var mousePos = GameManager.MousePosition;
                                var myPos    = Me.NetworkPosition;
                                if (Me.IsInRange(mousePos, Abilities.Blink.CastRange))
                                {
                                    if (mousePos.Distance2D(myPos) >= 200)
                                    {
                                        Abilities.Blink.UseAbility(mousePos);
                                        await Task.Delay(
                                            (int)Math.Max(1,
                                                          Abilities.Blink.GetCastDelay(mousePos) * 1.1f + _main.GetExtraDelay));
                                    }
                                }
                                else
                                {
                                    var pos = Me.Position.Extend(mousePos, Abilities.Blink.CastRange - 50);
                                    if (pos.Distance2D(myPos) >= 200)
                                    {
                                        Abilities.Blink.UseAbility(pos);
                                        await Task.Delay(
                                            (int)Math.Max(1,
                                                          Abilities.Blink.GetCastDelay(pos) * 1.1f + _main.GetExtraDelay));
                                    }
                                }
                            }

                            if (Abilities.Bottle != null && Abilities.Bottle.CanBeCasted && CheckItem(Abilities.Bottle.ToString()))
                            {
                                Abilities.Bottle.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Bottle.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.SoulRing != null && Abilities.SoulRing.CanBeCasted && CheckItem(Abilities.SoulRing.ToString()))
                            {
                                Abilities.SoulRing.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.SoulRing.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Ghost != null && Abilities.Ghost.CanBeCasted && CheckItem(Abilities.Ghost.ToString()))
                            {
                                Abilities.SoulRing.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Ghost.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Glimmer != null && Abilities.Glimmer.CanBeCasted && CheckItem(Abilities.Glimmer.ToString()))
                            {
                                Abilities.Glimmer.UseAbility(Me);
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Glimmer.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Abilities.Shiva != null && Abilities.Shiva.CanBeCasted && CheckItem(Abilities.Shiva.ToString()))
                            {
                                Abilities.Shiva.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Shiva.GetCastDelay() + _main.GetExtraDelay));
                            }

                            if (Config.RocketSpam)
                            {
                                if (Abilities.Rocket.CanBeCasted)
                                {
                                    Abilities.Rocket.UseAbility();
                                    await Task.Delay(
                                        (int)Math.Max(1, Abilities.Rocket.GetCastDelay() + _main.GetExtraDelay));
                                }
                            }

                            if (Abilities.March.CanBeCasted())
                            {
                                var mousePos = GameManager.MousePosition;
                                if (Me.IsInRange(mousePos, Abilities.March.CastRange))
                                {
                                    if (!Abilities.March.IsInAbilityPhase)
                                    {
                                        Abilities.March.UseAbility(mousePos);
                                        Me.Stop(true);
                                        await Task.Delay(800);
                                    }
                                }
                                else
                                {
                                    var pos = Me.Position.Extend(mousePos, Abilities.Blink.CastRange - 50);
                                    if (!Abilities.March.IsInAbilityPhase)
                                    {
                                        Abilities.March.UseAbility(pos);
                                        Me.Stop(true);
                                        await Task.Delay(800);
                                    }
                                }
                            }

                            if (Abilities.Rearm.CanBeCasted && !Abilities.March.CanBeCasted() && Config.MarchSpam)
                            {
                                Abilities.Rearm.UseAbility();
                                await Task.Delay(
                                    (int)Math.Max(1, Abilities.Rearm.GetCastDelay() + _main.GetExtraDelay));
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                        }
                        await Task.Delay(50);
                    }
                    inMarch = false;
                }
            };
        }
Ejemplo n.º 8
0
        public PussyCombo(TinkerCrappahilationPaid tinkerCrappahilationPaid)
        {
            _main = tinkerCrappahilationPaid;
            Config.PussyComboKey.PropertyChanged += (sender, args) =>
            {
                if (Config.PussyComboKey.Value.Active)
                {
                    UpdateManager.BeginInvoke(async() =>
                    {
                        Hero target = null;
                        while (Config.PussyComboKey.Value.Active)
                        {
                            try
                            {
                                if (target == null || !target.IsValid || !target.IsAlive)
                                {
                                    target = (Hero)_main.Context.TargetSelector.Active.GetTargets().FirstOrDefault();
                                    await Task.Delay(50);
                                    continue;
                                }

                                if (Me.IsChanneling() || Abilities.Rearm.Ability.IsInAbilityPhase)
                                {
                                    await Task.Delay(50);
                                    continue;
                                }

                                if (_main.KillSteal.InAction)
                                {
                                    TinkerCrappahilationPaid.Log.Warn($"[PussyCombo]: skip cuz kill steal in action");
                                    await Task.Delay(50);
                                    continue;
                                }

                                foreach (var activeAbility in _main.DamageCalculator.AllAbilities)
                                {
                                    if (!Config.PussyComboKey.Value.Active)
                                    {
                                        break;
                                    }
                                    if (activeAbility.CanBeCasted)
                                    {
                                        switch (activeAbility)
                                        {
                                        case item_blink blink:
                                            var pos = GetSafePosition(target);
                                            if (!pos.IsZero)
                                            {
                                                TinkerCrappahilationPaid.Log.Debug($"[PussyCombo] found blink position");
                                                blink.UseAbility(pos);
                                                await Task.Delay(Math.Max(25, activeAbility.GetCastDelay(pos) + 20 + GetExtraDelay));
                                                goto AfterBreak;
                                            }
                                            else
                                            {
                                                TinkerCrappahilationPaid.Log.Debug($"[PussyCombo] cant find any position for blink");
                                            }
                                            break;

                                        case item_ghost _:
                                            activeAbility.UseAbility();
                                            break;

                                        case item_bottle bottle:
                                            if (!Me.HasAnyModifiers(bottle.TargetModifierName))
                                            {
                                                bottle.UseAbility();
                                            }
                                            break;

                                        case item_soul_ring _:
                                            activeAbility.UseAbility();
                                            break;

                                        case item_glimmer_cape _:
                                            activeAbility.UseAbility(Me);
                                            break;

                                        case Rearm _:
                                            activeAbility.UseAbility();
                                            break;

                                        case item_veil_of_discord itemVeilOfDiscord:
                                            if (target.HasModifier(itemVeilOfDiscord.TargetModifierName) ||
                                                !activeAbility.CanHit(target))
                                            {
                                                goto AfterBreak;
                                            }
                                            itemVeilOfDiscord.UseAbility(target);
                                            break;

                                        case Rockets rockets:
                                            if (rockets.CanHit(target))
                                            {
                                                rockets.UseAbility();
                                            }
                                            break;

                                        default:
                                            continue;
                                        }
                                        var delayTime =
                                            (activeAbility.Ability.AbilityBehavior & AbilityBehavior.NoTarget) != 0 &&
                                            (activeAbility.Ability.AbilityBehavior & AbilityBehavior.Point) == 0
                                                ? activeAbility.GetCastDelay()
                                                : activeAbility.GetCastDelay(target);
                                        TinkerCrappahilationPaid.Log.Warn($"[PussyCombo] {activeAbility} {delayTime}");
                                        await Task.Delay(Math.Max(25, delayTime + 20 + GetExtraDelay));
                                        AfterBreak:;
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e);
                            }

                            await Task.Delay(50);
                        }
                    });
                }
            };
        }
Ejemplo n.º 9
0
        public Config(TinkerCrappahilationPaid main)
        {
            _main               = main;
            Factory             = MenuFactory.Create("Tinker");
            ComboKey            = Factory.Item("Combo Key", new KeyBind('0'));
            PussyComboKey       = Factory.Item("Pussy Combo Key", new KeyBind('0'));
            RocketSpam          = Factory.Item("Rocket spam Key", new KeyBind('0'));
            MarchSpam           = Factory.Item("March spam key", new KeyBind('0'));
            RearmBlink          = Factory.Item("Rearm blink", new KeyBind('0'));
            RearmBlinkSuperSpam = Factory.Item("Super blink spam for Rearm blink", true);
            PussyComboKey.Item.SetTooltip("will do all combo from trees where enemies cant catch you");
            DisablePlayerInputWhileCombo     = Factory.Item("Disable Player Input While Combo", false);
            DisablePlayerInputWhileKillSteal = Factory.Item("Disable Player Input While KillSteal", true);

            UltAntiFailer = Factory.Item("Rearm Fail Helper", true);
            UltAntiFailer.Item.SetTooltip("will prevent double ult self cast");

            RocketsAntiFail = Factory.Item("Rockets Fail Helper", true);
            RocketsAntiFail.Item.SetTooltip("will prevent rocket self cast, if no enemies are in range");

            ExtraDelay = Factory.Item("Extra delay after each ability in combo (ms)", new Slider(1, -150, 100));

            UpdateRate = Factory.Item("Update rate in combo", new Slider(10, 1, 100));
            UpdateRate.Item.SetTooltip("Less value -> more speed && possible more lags");

            StopComboInBladeMail = Factory.Item("Dont do combo in blade mail", true);

            var underRearm = 0f;

            Player.OnExecuteOrder += (sender, args) =>
            {
                if (args.IsPlayerInput && !args.IsQueued)
                {
                    if (args.Ability != null && args.OrderId != OrderId.UpgradeAbility)
                    {
                        if (args.Ability.Id == AbilityId.tinker_heat_seeking_missile)
                        {
                            if (RocketsAntiFail &&
                                !main.AbilitiesInCombo.Rocket.CanHitAnyEnemy())
                            {
                                TinkerCrappahilationPaid.Log.Info($"[RocketsFailHelper] stop {args.OrderId}");
                                args.Process = false;
                            }
                        }
                        else if (args.Ability.Id == AbilityId.tinker_rearm)
                        {
                            var dif = Math.Abs(GameManager.RawGameTime - underRearm);
                            if (UltAntiFailer && (main.Me.IsChanneling() || dif <= 0.35 || main.AbilitiesInCombo.Rearm.Ability.IsInAbilityPhase))
                            {
                                args.Process = false;
                                TinkerCrappahilationPaid.Log.Info($"[RearmFailHelper] stop");
                            }
                            else
                            {
                                underRearm = GameManager.RawGameTime;
                            }
                        }
                    }
                    else if (args.OrderId == OrderId.Stop || args.OrderId == OrderId.Hold ||
                             args.OrderId == OrderId.MoveLocation || args.OrderId == OrderId.MoveTarget ||
                             args.OrderId == OrderId.AttackLocation || args.OrderId == OrderId.AttackTarget)
                    {
                        underRearm = 0;
                    }
                }
                if (DisablePlayerInputWhileCombo && ComboKey ||
                    DisablePlayerInputWhileKillSteal && main.KillSteal.InAction)
                {
                    if (args.IsPlayerInput)
                    {
                        args.Process = false;
                    }
                }
            };

            var blinkMenu = Factory.Menu("Blink settings");

            //ExtraRangeForBlink = blinkMenu.Item("Extra Range", new Slider(1500, 1, 2000));
            UseBlinkOnMousePosition = blinkMenu.Item("Use blink on mouse position", false);
            UseBlinkOnMousePosition.Item.SetTooltip("if true -> will ignore settings below");
            UseSaveRangeForBlink = blinkMenu.Item("Use blink on laser's cast range", true);
            UseSaveRangeForBlink.Item.SetTooltip("if true -> will ignore settings below");
            RangeForLaserRange = blinkMenu.Item("Extra range for blink", new Slider(200, 1, 800));
            RangeForLaserRange.Item.SetTooltip("Only for Laser's blink setting");
            MinRangeForBlink = blinkMenu.Item("Min Range", new Slider(200, 1, 500));
            MinRangeForBlink.Item.SetTooltip("Will not use blink, if distance to target less then current value");
            SafeDistance = blinkMenu.Item("Safe distance", new Slider(100, 1, 500));
            SafeDistance.Item.SetTooltip("Will use blink on [target's position - selected value]");

            var debugMenu = Factory.Menu("Debug drawing");

            DrawBlinkPoints  = debugMenu.Item("Draw safe blink points", false);
            DrawJunglePoints = debugMenu.Item("Draw jungle points", false);
        }