private float CalcComboDamage(Obj_AI_Base target, bool q, bool w, bool e, bool r) { try { var manaCost = (w && W.IsReady() ? W.Instance.ManaCost : (q ? Q.Instance.ManaCost : 0)) * 2; var damage = (w && W.IsReady() ? W.GetDamage(target) : (q ? Q.GetDamage(target) : 0)) * 2; if (e) { var eMana = E.Instance.ManaCost; var eDamage = E.GetDamage(target); var count = target.IsNearTurret() && !target.IsFacing(Player) || target.IsNearTurret() && Player.HealthPercent <= 35 || !R.IsReady() ? 5 : 10; for (var i = 0; i < count; i++) { if (manaCost + eMana > Player.Mana) { break; } manaCost += eMana; damage += eDamage; } } if (r) { if (manaCost + R.Instance.ManaCost - 10 > Player.Mana) { return damage; } return damage + (R.IsReady() ? R.GetDamage(target) : 0); } return damage; } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return 0; }
private float CalcComboDamage(Obj_AI_Base target, bool q, bool e, bool r, bool extended) { try { var damage = 0f; if (Player.HasBuff("viktorpowertransferreturn") && Orbwalking.InAutoAttackRange(target)) { damage += CalcPassiveDamage(target); } if (q && Q.IsReady() && target.IsValidTarget(Q.Range)) { damage += Q.GetDamage(target); if (Orbwalking.InAutoAttackRange(target)) { damage += CalcPassiveDamage(target); } } if (e && E.IsReady() && target.IsValidTarget(MaxERange)) { damage += E.GetDamage(target); } if (r && R.IsReady() && target.IsValidTarget(extended ? R.Range + (R.Width * 0.45f) : R.Range)) { damage += R.GetDamage(target); int stacks; if (!IsSpellUpgraded(R)) { stacks = target.IsNearTurret(500f) ? 3 : 10; var endTimes = target.Buffs.Where( t => t.Type == BuffType.Charm || t.Type == BuffType.Snare || t.Type == BuffType.Knockup || t.Type == BuffType.Polymorph || t.Type == BuffType.Fear || t.Type == BuffType.Taunt || t.Type == BuffType.Stun).Select(t => t.EndTime).ToList(); if (endTimes.Any()) { var max = endTimes.Max(); if (max - Game.Time > 0.5f) { stacks = 14; } } } else { stacks = extended ? 12 : 14; } damage += (R.GetDamage(target, 1) * stacks); } return damage; } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return 0; }