public static float GetComboDamage(AIHeroClient t) { if (!t.IsValidTarget(W.Range * 20)) { return(0); } var fComboDamage = 0d; if (Q.IsReady()) { var baseAttackSpeed = 0.656 + (0.656 / 100 * (Player.Level - 1) * 1.5); var qExtraAttackSpeed = new double[] { 30, 50, 70, 90, 110 }[Q.Level - 1]; var attackDelay = (float)(baseAttackSpeed + (baseAttackSpeed / 100 * qExtraAttackSpeed)); attackDelay = (float)Math.Round(attackDelay, 2); attackDelay *= 5; attackDelay *= (float)Math.Floor(Player.TotalAttackDamage); fComboDamage += attackDelay; } if (E.IsReady()) { fComboDamage += TristanaData.GetEDamage(t); //E.GetDamage(t); } if (R.IsReady()) { fComboDamage += R.GetDamage(t); } return((float)fComboDamage); }
public override void Game_OnGameUpdate(EventArgs args) { var getEMarkedEnemy = TristanaData.GetEMarkedEnemy; if (getEMarkedEnemy != null) { if (TargetSelector.GetSelectedTarget() == null) Orbwalker.ForceTarget(getEMarkedEnemy); TargetSelector.SetTarget(getEMarkedEnemy); } else { var attackRange = Orbwalking.GetRealAutoAttackRange(Player); TargetSelector.SetTarget(TargetSelector.GetTarget(attackRange, TargetSelector.DamageType.Physical)); } Q.Range = Player.AttackRange + (Player.BoundingRadius * 2); E.Range = Player.AttackRange + (Player.BoundingRadius * 2); R.Range = Player.AttackRange + (Player.BoundingRadius * 2); var useW = W.IsReady() && GetValue<bool>("UseWC"); var useWc = W.IsReady() && GetValue<bool>("UseWCS"); var useR = R.IsReady() && GetValue<bool>("UseRC"); var useRB = R.IsReady() && GetValue<bool>("UseRB"); if (useRB && Player.HealthPercentage() < 40) { var enemy = HeroManager.Enemies.OrderBy(target => target.TotalAttackDamage) .LastOrDefault(targ => Player.Distance(targ) <= 275 && targ.IsMelee()); if(enemy != null && enemy.IsValidTarget()) { R.CastOnUnit(enemy); } } if (ComboActive) { Obj_AI_Hero t; if (TristanaData.GetEMarkedEnemy != null) { TargetSelector.SetTarget(TristanaData.GetEMarkedEnemy); } if (useW) { t = TristanaData.GetTarget(W.Range); if (t.IsValidTarget() && t.Health < TristanaData.GetWDamage) W.Cast(t); } if (useWc) { t = TristanaData.GetTarget(W.Range); if (t.IsValidTarget() && TristanaData.GetEMarkedCount == 4) W.Cast(t); } if (useR) { var tar = TristanaData.GetTarget(R.Range); if (!tar.IsValidTarget()) return; if (Player.GetSpellDamage(tar, SpellSlot.R) - 30 > tar.Health && tar.Health > Player.GetAutoAttackDamage(tar, true)) { R.CastOnUnit(tar); } } } }
public override void Game_OnGameUpdate(EventArgs args) { if (!Orbwalking.CanMove(100)) { return; } var getEMarkedEnemy = TristanaData.GetEMarkedEnemy; if (getEMarkedEnemy != null) { TargetSelector.SetTarget(getEMarkedEnemy); } else { var attackRange = Orbwalking.GetRealAutoAttackRange(Player); TargetSelector.SetTarget(TargetSelector.GetTarget(attackRange, TargetSelector.DamageType.Physical)); } Q.Range = 600 + 5 * (Player.Level - 1); E.Range = 630 + 7 * (Player.Level - 1); R.Range = 630 + 7 * (Player.Level - 1); if (GetValue <KeyBind>("UseETH").Active) { if (Player.HasBuff("Recall")) { return; } var t = TristanaData.GetTarget(E.Range); if (t.IsValidTarget() && E.IsReady() && canUseE(t)) { E.CastOnUnit(t); } } var useW = W.IsReady() && GetValue <bool>("UseWC"); var useWc = W.IsReady() && GetValue <bool>("UseWCS"); var useWks = W.IsReady() && GetValue <bool>("UseWKs"); var useE = E.IsReady() && GetValue <bool>("UseE" + (ComboActive ? "C" : "H")); var useR = R.IsReady() && GetValue <bool>("UseRM") && R.IsReady(); if (ComboActive || HarassActive) { Obj_AI_Hero t; if (TristanaData.GetEMarkedEnemy != null) { t = TristanaData.GetEMarkedEnemy; TargetSelector.SetTarget(TristanaData.GetEMarkedEnemy); } else { t = TristanaData.GetTarget(W.Range); } if (useE && canUseE(t)) { if (E.IsReady() && t.IsValidTarget(E.Range)) { E.CastOnUnit(t); } } if (useW) { t = TristanaData.GetTarget(W.Range); if (t.IsValidTarget()) { W.Cast(t); } } else if (useWks) { t = TristanaData.GetTarget(W.Range); if (t.IsValidTarget() && t.Health < TristanaData.GetWDamage) { W.Cast(t); } } else if (useWc) { t = TristanaData.GetTarget(W.Range); if (t.IsValidTarget() && TristanaData.GetEMarkedCount == 4) { W.Cast(t); } } } if (ComboActive) { if (useR) { var t = TristanaData.GetTarget(R.Range - 20); if (!t.IsValidTarget()) { return; } if (Player.GetSpellDamage(t, SpellSlot.R) - 30 < t.Health || t.Health < Player.GetAutoAttackDamage(t, true)) { return; } R.CastOnUnit(t); } } }