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(); } }; }
public DamageCalculator(TinkerCrappahilationPaid main) { _main = main; DamageDict = new Dictionary <Hero, TargetClass>(); UpdateManager.CreateIngameUpdate(150, Updater); UpdateManager.CreateIngameUpdate(500, PrepareItemsForCombo); }
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> >(); }
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; }
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"); } }; }
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); } }; }
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; } }; }
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); } }); } }; }
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); }