Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { ArrayExtensions, Color, EventsSDK, Game, Hero, MenuManager, RendererSDK, Utils, Vector2, Vector3, ParticlesSDK } from "wrapper/Imports";
- let {
- MenuFactory
- } = MenuManager;
- const menu = MenuFactory("TinkerCombo"),
- active = menu.AddToggle("Active"),
- ezKill = menu.AddToggle("Check for EZ Kill"),
- comboToggle = menu.AddCheckBox("Clamp combo key"),
- comboKey = menu.AddKeybind("Combo Key"),
- harrasKey = menu.AddKeybind("Harras Key"),
- cursorRadius = menu.AddSlider("Nearest cursor radius", 200, 100, 1000),
- popLinkV = menu.AddCheckBox("Pop Linken"),
- popLinkItems = menu.AddListBox("Pop Linken with", ["Pop with Dagon", "Scythe of Vyse", "Nullifier"]),
- bmcheck = menu.AddCheckBox("Check BlaidMail"),
- soulRing = menu.AddCheckBox("Enable SoulRing"),
- blinkV = menu.AddCheckBox("Enable Blink"),
- blinkRadius = menu.AddSlider("Blink distance from enemy", 200, 0, 800),
- abils = menu.AddListBox("Active abilities", ["Laser", "Heat-Seeking Missile", "March of the Machines", "Rearm"]),
- items = menu.AddListBox("Active items", ["Scythe of Vyse", "Ethereal Blade", "Dagon", "Nullifier", "Shiva"]),
- drawable = menu.AddTree("Drawable"),
- heroMenu = menu.AddTree("Hero Specifics"),
- amReflect = heroMenu.AddCheckBox("Enabled Pop AM Reflect"),
- amReflectItems = heroMenu.AddListBox("Pop AM Reflect", ["Pop with Dagon"]),
- drawTargetParticle = drawable.AddCheckBox("Draw line to target"),
- heatShot = drawable.AddCheckBox("Draw heatseeking shot indicator"),
- drawStatus = drawable.AddCheckBox("Draw status"),
- statusPosX = drawable.AddSlider("Position X (%)", 19, 0, 100),
- statusPosY = drawable.AddSlider("Position Y (%)", 4, 0, 100),
- textSize = drawable.AddSlider("Text size", 15, 10, 30),
- FarPredict = 390,
- DoubleMFRootedPredict = 610,
- DoubleMFUnrootedPredict = 750,
- mods = ["modifier_winter_wyvern_winters_curse", "modifier_item_lotus_orb_active", "modifier_medusa_stone_gaze_stone", "modifier_oracle_fates_edict"],
- CloseInPredict = 300;
- let tinker,
- nearest,
- target,
- heroes = [],
- targetParticle,
- comboKeyPress = false,
- laser,
- heat,
- march,
- rearm,
- nullifier,
- hex,
- eblade,
- dagon,
- shiva,
- soulring,
- blink,
- debuffed = false,
- IsEZKillable = false,
- heatenemy,
- currentheat,
- heatparticle,
- lastCheckTime;
- comboKey.OnExecute(val => {
- return comboKeyPress = val;
- });
- EventsSDK.on("GameStarted", hero => {
- if (hero.m_pBaseEntity instanceof C_DOTA_Unit_Hero_Tinker) {
- tinker = hero;
- getAbils();
- }
- });
- EventsSDK.on("EntityDestroyed", ent => {
- if (ent instanceof Hero) {
- ArrayExtensions.arrayRemove(heroes, ent);
- }
- });
- EventsSDK.on("EntityCreated", npc => {
- if (npc instanceof Hero && npc.IsEnemy() && !npc.IsIllusion) {
- heroes.push(npc);
- }
- });
- EventsSDK.on("GameEnded", () => {
- tinker = undefined;
- heroes = [];
- nearest = undefined;
- target = undefined;
- comboKeyPress = false;
- laser = undefined;
- heat = undefined;
- march = undefined;
- rearm = undefined;
- nullifier = undefined;
- hex = undefined;
- eblade = undefined;
- dagon = undefined;
- shiva = undefined;
- soulring = undefined;
- blink = undefined;
- debuffed = false;
- IsEZKillable = false;
- lastCheckTime = undefined;
- if (targetParticle !== undefined) {
- ParticlesSDK.Destroy(targetParticle, true);
- targetParticle = undefined;
- }
- if (heatparticle !== undefined) {
- ParticlesSDK.Destroy(heatparticle, true);
- heatparticle = undefined;
- currentheat = undefined;
- heatenemy = undefined;
- }
- });
- EventsSDK.on("Tick", () => {
- if (!active.value || !Game.IsInGame || Game.IsPaused || tinker === undefined || !tinker.IsAlive) {
- return;
- }
- if (!comboToggle.value && comboKeyPress) {
- if (target !== undefined) {
- target = undefined;
- } else if (nearest !== undefined) {
- target = nearest;
- }
- comboKeyPress = false;
- } else if (comboToggle.value && comboKey.IsPressed) {
- target = nearest;
- } else if (comboToggle.value && !comboKey.IsPressed) {
- target = undefined;
- }
- if (target !== undefined) {
- if (!target.IsAlive) {
- target = undefined;
- }
- if (tinker.CanAttack(target)) {
- tinker.AttackTarget(target);
- }
- if (checkMods() && !target.IsMagicImmune) {
- getAbils();
- getItems();
- debuffed = IsDebuffed();
- if (amReflect.value && target.Name === "npc_dota_hero_antimage" && !target.ModifiersBook.HasAnyBuffByNames(["modifier_silver_edge_debuff", "modifier_viper_nethertoxin"]) && target.GetAbilityByName("antimage_spell_shield").IsReady) {
- if (popLink(dagon, amReflectItems.selected_flags[4])) {
- return;
- }
- return;
- }
- if (popLinkV.value && target.HasLinkenAtTime()) {
- if (popLink(nullifier, popLinkItems.selected_flags[0])) {
- return;
- }
- if (popLink(hex, popLinkItems.selected_flags[3])) {
- return;
- }
- if (popLink(dagon, popLinkItems.selected_flags[5])) {
- return;
- }
- return;
- }
- if (!target.IsStunned && !target.IsHexed) {
- if (useItem(hex, items.selected_flags[1])) {
- return;
- }
- }
- if (tinker.IsInRange(target, 700) && !target.ModifiersBook.HasAnyBuffByNames(["modifier_teleporting"])) {
- IsEZKillable = killCheck();
- }
- if (useBlink() || aeonDispelling() || castAbility(laser, abils.selected_flags[0]) || castAbility(heat, abils.selected_flags[1]) || useItem(eblade, items.selected_flags[2]) || castAbility(march, abils.selected_flags[2]) || castAbility(rearm, abils.selected_flags[3]) || useItem(dagon, items.selected_flags[4]) || useItem(shiva, items.selected_flags[7])) {
- return;
- }
- if (!target.ModifiersBook.HasAnyBuffByNames(["modifier_item_nullifier_mute"]) && !target.IsHexed) {
- const item = target.GetItemByName("item_aeon_disk");
- if (item !== undefined && !item.IsReady && useItem(nullifier, items.selected_flags[8])) {
- return;
- } else if (item === undefined && useItem(nullifier, items.selected_flags[8])) {
- return;
- }
- return;
- }
- }
- }
- if (harrasKey.IsPressed) {
- if (nearest !== undefined) {
- if (tinker.CanAttack(nearest)) {
- tinker.AttackTarget(nearest);
- }
- if (!checkMods(true) || nearest.IsMagicImmune) {
- return;
- }
- getAbils();
- if (castAbility(heat, abils.selected_flags[1], true)) {
- return;
- }
- }
- }
- });
- function aeonDispelling() {
- if (nullifier !== undefined && nullifier.IsReady) {
- const buff = target.ModifiersBook.GetBuffByName("modifier_item_aeon_disk_buff"),
- aeon = target.GetItemByName("item_aeon_disk");
- if (aeon !== undefined && (target.HPPercent < (aeon.GetSpecialValue("health_threshold_pct") + 3) * 0.01 || buff !== undefined)) {
- tinker.CastTarget(nullifier, target);
- return true;
- }
- }
- return false;
- }
- function killCheck() {
- if (!ezKill.value) {
- return false;
- }
- if (Game.GameTime < lastCheckTime + 4) {
- return IsEZKillable;
- }
- const int = tinker.TotalIntelligence;
- let amp = tinker.SpellAmplification + tinker.GetTalentValue("special_bonus_unique_tinker_3") * -0.01,
- reqMana = 0,
- damage = 0;
- /*if (seal && seal.IsReady && abils.selected_flags[3]) {
- amp += seal.GetSpecialValue("resist_debuff") * -0.01;
- reqMana += seal.ManaCost;
- }*/
- if (eblade && eblade.IsReady && items.selected_flags[2]) {
- amp += eblade.GetSpecialValue("ethereal_damage_bonus") * -0.01;
- reqMana += eblade.ManaCost;
- damage += eblade.GetSpecialValue("blast_damage_base") + eblade.GetSpecialValue("blast_agility_multiplier") * int;
- }
- if (dagon && dagon.IsReady && items.selected_flags[4]) {
- reqMana += dagon.ManaCost;
- damage += dagon.GetSpecialValue("dagon");
- }
- if (laser && laser.IsReady && abils.selected_flags[0]) {
- const mult = laser.CooldownLenght <= 2 ? 2 : 1;
- damage += (laser.GetSpecialValue("laser_damage") + laser.GetSpecialValue("int_multiplier") * int) * mult;
- reqMana += laser.ManaCost * mult;
- }
- if (heat && heat.IsReady && abils.selected_flags[1]) {
- damage += heat.GetSpecialValue("damage");
- reqMana += heat.ManaCost;
- }
- damage *= 1 + amp - target.MagicDamageResist * 0.01;
- if (reqMana < tinker.Mana && target.HP <= damage) {
- lastCheckTime = Game.GameTime;
- return true;
- }
- return false;
- }
- function useItem(item, val) {
- if (item !== undefined && val && item.IsReady && tinker.IsInRange(target, item.CastRange)) {
- if (item === shiva) {
- tinker.CastNoTarget(item);
- return true;
- }
- if (item === dagon && debuffed) {
- tinker.CastTarget(item, target);
- return true;
- }
- /*if (item === veil) {
- sky.CastPosition(item, target.NetworkPosition);
- return true;
- }*/
- if (item !== dagon) {
- tinker.CastTarget(item, target);
- return true;
- }
- }
- return false;
- }
- function castAbility(ability, val, near = false) {
- if (ability !== undefined && val && ability.IsReady) {
- if (ability === heat) {
- tinker.CastNoTarget(ability);
- return true;
- }
- if (ability === rearm) {
- /*if (debuffed && !IsEZKillable) {
- CastNoTarget(ability);
- return true;
- }*/
- tinker.CastNoTarget(ability);
- return true;
- /*if (ability === march) {
- tinker.CastNoTarget(ability)
- if (soulRing.value && soulring !== undefined && soulring.IsReady) {
- tinker.CastNoTarget(soulring);
- return;
- }
- return true;
- } */
- } else {
- let trgt = near ? nearest : target;
- tinker.CastTarget(ability, trgt);
- return true;
- }
- }
- return false;
- }
- /*function CastToPrediction(near = false) {
- let trgt = near ? nearest : target;
- if (trgt.ModifiersBook.HasAnyBuffByNames(["modifier_rune_haste"])) {
- if (trgt.IsRooted) {
- tinker.CastPosition(flare, IsFront(CloseInPredict, near));
- } else return;
- }
- if (trgt.IsHexed || trgt.IsRooted) {
- sky.CastPosition(flare, IsFront(CloseInPredict, near));
- return;
- }
- sky.CastPosition(flare, IsFront(FarPredict, near));
- }
- function IsFront(delay, near = false) {
- let trgt = near ? nearest : target,
- adjusment = 0;
- if (delay === 610) {
- adjusment = 300;
- } else adjusment = trgt.IdealSpeed;
- return trgt.InFront(delay / 1000 * adjusment);
- }*/
- function useBlink() {
- if (blinkV.value && blink !== undefined && blink.IsReady) {
- if (target.IsInRange(tinker, 600)) {
- return false;
- }
- let castRange = blink.GetSpecialValue("blink_range") + tinker.CastRangeBonus,
- distance = target.NetworkPosition.Subtract(tinker.NetworkPosition),
- disToTarget = tinker.Distance(target);
- distance.SetZ(0);
- distance.Normalize();
- if (disToTarget > castRange) {
- let di = disToTarget - castRange,
- minus = 0;
- if (di < blinkRadius.value) {
- minus = blinkRadius.value - di;
- }
- distance.ScaleTo(castRange - 1 - minus);
- } else {
- distance.ScaleTo(disToTarget - blinkRadius.value - 1);
- }
- tinker.CastPosition(blink, tinker.NetworkPosition.Add(distance));
- return true;
- }
- return false;
- }
- function getAbils() {
- laser = tinker.GetAbilityByName("tinker_laser");
- heat = tinker.GetAbilityByName("tinker_heat_seeking_missile");
- march = tinker.GetAbilityByName("tinker_march_of_the_machines");
- rearm = tinker.GetAbilityByName("tinker_rearm");
- }
- function getItems() {
- nullifier = tinker.GetItemByName("item_nullifier");
- hex = tinker.GetItemByName("item_sheepstick");
- eblade = tinker.GetItemByName("item_ethereal_blade");
- dagon = tinker.GetItemByName(/item_dagon/);
- shiva = tinker.GetItemByName("item_shivas_guard");
- soulring = tinker.GetItemByName("item_soul_ring");
- blink = tinker.GetItemByName("item_blink");
- }
- function IsDebuffed() {
- if (eblade && eblade.IsReady && items.selected_flags[2] && target.ModifiersBook.HasBuffByName("modifier_item_ethereal_blade_slow")) {
- return false;
- }
- if (march && march.IsReady && target.ModifiersBook.HasBuffByName("modifier_tinker_march_of_the_machines")) {
- return false;
- }
- if (heat && heat.IsReady && target.ModifiersBook.HasBuffByName("modifier_tinker_heat_seeking_missile_slow")) {
- return false;
- }
- /*if(rearm && rearm.IsReady && target.ModifiersBook.HasBuffByName("modifier_tinker_rearm")) {
- return false;
- }*/
- return true;
- }
- function checkMods(near = false) {
- let trgt = near ? nearest : target;
- if (trgt === undefined) {
- return false;
- }
- if (bmcheck.value && trgt.ModifiersBook.HasAnyBuffByNames(["modifier_item_blade_mail_reflect"])) {
- return false;
- }
- if (trgt.ModifiersBook.HasAnyBuffByNames(mods)) {
- return false;
- }
- return true;
- }
- function popLink(item, val) {
- if (val && item !== undefined && item.IsReady) {
- tinker.CastTarget(item, target, false, false);
- return true;
- }
- return false;
- }
- EventsSDK.on("Update", cmd => {
- if (!active.value || !Game.IsInGame || Game.IsPaused || tinker === undefined || !tinker.IsAlive) {
- return;
- }
- let Me = LocalPlayer.Hero;
- if (Me.ModifiersBook.HasBuffByName(("modifier_tinker_rearm"))) //{
- return;
- //}
- let _a = heroes;
- let _f = hero => {
- return hero.Distance(Utils.CursorWorldVec) <= cursorRadius.value && hero.IsAlive;
- };
- let _r = [];
- for (let _i = _a.length; _i--;) {
- if (_f(_a[_i], _i, _a)) {
- _r.push(_a[_i]);
- }
- }
- nearest = ArrayExtensions.orderBy(_r, ent => {
- return ent.Distance(Utils.CursorWorldVec);
- })[0];
- if (heatShot.value && heat !== undefined) {
- let _a2 = heroes;
- let _f2 = hero => {
- return hero.Distance(tinker) <= heat.CastRange && hero.IsAlive && hero.IsVisible;
- };
- let _r2 = [];
- for (let _i2 = _a2.length; _i2--;) {
- if (_f2(_a2[_i2], _i2, _a2)) {
- _r2.push(_a2[_i2]);
- }
- }
- heatenemy = ArrayExtensions.orderBy(_r2, ent => {
- return ent.Distance(tinker);
- })[0];
- }
- });
- EventsSDK.on("Draw", () => {
- if (!active.value || !Game.IsInGame || Game.IsPaused || tinker === undefined || !tinker.IsAlive) {
- return;
- }
- if (drawTargetParticle.value) {
- if (targetParticle === undefined && (nearest !== undefined || target !== undefined)) {
- targetParticle = ParticlesSDK.Create("particles/ui_mouseactions/range_finder_tower_aoe.vpcf", ParticleAttachment_t.PATTACH_ABSORIGIN, nearest);
- }
- if (targetParticle !== undefined) {
- if (nearest === undefined && target === undefined) {
- ParticlesSDK.Destroy(targetParticle, true);
- targetParticle = undefined;
- } else {
- ParticlesSDK.SetControlPoint(targetParticle, 2, tinker.Position);
- ParticlesSDK.SetControlPoint(targetParticle, 6, new Vector3(1));
- ParticlesSDK.SetControlPoint(targetParticle, 7, (target || nearest).Position);
- }
- }
- }
- if (heatShot.value) {
- if (!heat.IsReady || heatenemy === undefined && heatparticle !== undefined || currentheat !== heatenemy && heatparticle !== undefined) {
- if (heatparticle !== undefined) {
- ParticlesSDK.Destroy(heatparticle, true);
- }
- heatparticle = undefined;
- currentheat = heatenemy;
- }
- if (heatparticle === undefined && heatenemy !== undefined && heat.IsReady) {
- heatparticle = ParticlesSDK.Create("particles/units/heroes/hero_tinker/tinker_heat_seeking_missile.vpcf", ParticleAttachment_t.PATTACH_CUSTOMORIGIN);
- }
- if (heatparticle !== undefined && heat.IsReady) {
- const pos = heatenemy.Position;
- pos.AddScalarZ(310);
- ParticlesSDK.SetControlPoint(heatparticle, 0, pos);
- ParticlesSDK.SetControlPoint(heatparticle, 1, pos);
- ParticlesSDK.SetControlPoint(heatparticle, 2, new Vector3(heatenemy.IdealSpeed));
- }
- }
- if (drawStatus.value) {
- let text = ["TinkerCombo", `Current target: ${target !== undefined ? target.Name : "none"}`];
- const wSize = RendererSDK.WindowSize;
- let _a3 = text;
- let _f3 = (val, i) => {
- RendererSDK.Text(val, new Vector2(wSize.x / 100 * statusPosX.value, wSize.y / 100 * statusPosY.value + i * textSize.value), new Color(255, 255, 255, 255), "Radiance", textSize.value);
- };
- for (let _i3 = _a3.length; _i3--;) {
- _f3(_a3[_i3], _i3, _a3);
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement