private static void Drawing_OnDraw(EventArgs args) { if (Config.DrawVitals) { foreach (var vitals in EntityManager.Heroes.Enemies.Where(e => VitalManager.HasFioraPassiveBuff(e) && e.IsValidTarget()).Select(VitalManager.Vitals)) { foreach (var v in vitals.Where(v => v.ValidVital)) { //v.QPredVitalPos.DrawCircle(100, Color.AliceBlue); v.Vitalsector.Draw(System.Drawing.Color.AliceBlue, 2); } } } if (Config.DrawQ) { Q1.DrawRange(System.Drawing.Color.AliceBlue); } if (Config.DrawDamage) { foreach (var e in EntityManager.Heroes.Enemies.Where(e => e.IsValidTarget())) { e.DrawDamage(SpellManager.ComboDamage(e)); } } }
public static float RDamage(AIHeroClient target) { if (!R.IsLearned) { return(0); } return((VitalManager.VitalDamage(target) + Player.Instance.GetAutoAttackDamage(target)) * 4f); }
public static float ComboDamage(AIHeroClient target, bool r = true) { var qdmg = Q1.IsReady() ? QDamage(target) : 0; var wdmg = W.IsReady() ? WDamage(target) : 0; var edmg = E.IsReady() ? EDamage(target) : 0; var rdmg = r ? R.IsReady() ? RDamage(target) : VitalManager.VitalDamage(target) : VitalManager.VitalDamage(target); return(qdmg + wdmg + edmg + rdmg); }
private static bool useQ(bool gapCloser, bool shortQ, bool longQ, bool validVitals, AIHeroClient qtarget = null, bool turretCheck = false) { if (!Q1.IsReady()) { return(false); } if (qtarget == null) { qtarget = QTarget; } if (!qtarget.IsKillable()) { return(false); } var fuckpoppyW = EntityManager.Heroes.Enemies.Any(e => e.HasBuff("PoppyWZone") && e.IsValidTarget(300, false, qtarget.ServerPosition)); if (fuckpoppyW) { return(false); } if (shortQ || longQ) { var vital = VitalManager.vital(qtarget, validVitals); var vitalResult = VitalManager.CanQVital(vital, shortQ, longQ); if (vitalResult.HasValue) { if (SkillshotDetector.SkillshotsDetected.Any(s => s.WillHit(vitalResult.Value.To2D()))) { return(false); } if (turretCheck && vitalResult.Value.IsUnderEnemyTurret()) { return(false); } if (vital.Vitalsector.IsInside(Player.Instance.ServerPosition) && Orbwalker.CanAutoAttack) { return(false); } return(Q2.Cast(vitalResult.Value)); } } if (gapCloser) { } return(false); }
private Vector3?OverrideOrbwalkPosition() { if (!Config.orbwalk || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { return(null); } var target = QTarget; if (target == null) { return(null); } var AAvital = Config.orbAAVital && target.IsKillable(user.GetAutoAttackRange(target) * 1.15f) || !Config.orbAAVital && target.IsKillable(user.GetAutoAttackRange(target) * 1.35f); var vital = VitalManager.vital(target); if (vital == null) { return(null); } var orbRVital = Config.orbUltVital && vital.IsRVital || !Config.orbUltVital; var validpos = !vital.OrbWalkVitalPos.IsWall() && !vital.OrbWalkVitalPos.IsBuilding(); if (!validpos) { return(null); } if (orbRVital && AAvital) { return(vital.OrbWalkVitalPos); } return(null); }
public override void OnLoad() { Q1 = new Spell.Skillshot(SpellSlot.Q, 400, SkillShotType.Circular, 0, 3000, 50, DamageType.Physical) { AllowedCollisionCount = int.MaxValue }; Q2 = new Spell.Skillshot(SpellSlot.Q, 700, SkillShotType.Circular, 0, 3000, 50, DamageType.Physical) { AllowedCollisionCount = int.MaxValue }; W = new Spell.Skillshot(SpellSlot.W, 750, SkillShotType.Linear, 500, 3200, 70, DamageType.Magical) { AllowedCollisionCount = int.MaxValue }; E = new Spell.Active(SpellSlot.E, 275, DamageType.Physical); R = new Spell.Targeted(SpellSlot.R, 500, DamageType.True); Q1.AddRawDamage(new RawDamage { PreCalculatedDamage = (() => { if (!Q1.IsLearned) { return(0); } var index = Q1.Level - 1; var dmg = new[] { 65f, 75f, 85f, 95f, 105f }[index]; var bonus = new[] { 0.95f, 1f, 1.05f, 1.1f, 1.15f }[index] *Player.Instance.FlatPhysicalDamageMod; return(dmg + bonus); }), Source = Player.Instance, Spell = Q1, Stage = 1 }); Q2.AddRawDamage(new RawDamage { PreCalculatedDamage = (() => { if (!Q1.IsLearned) { return(0); } var index = Q1.Level - 1; var dmg = new[] { 65f, 75f, 85f, 95f, 105f }[index]; var bonus = new[] { 0.95f, 1f, 1.05f, 1.1f, 1.15f }[index] *Player.Instance.FlatPhysicalDamageMod; return(dmg + bonus); }), Source = Player.Instance, Spell = Q2, Stage = 1 }); W.AddRawDamage(new RawDamage { PreCalculatedDamage = (() => { if (!W.IsLearned) { return(0); } var index = W.Level - 1; var dmg = new[] { 90f, 130f, 170f, 210f, 250f }[index]; var bonus = Player.Instance.TotalMagicalDamage; return(dmg + bonus); }), Source = Player.Instance, Spell = W, Stage = 1 }); E.AddRawDamage(new RawDamage { PreCalculatedDamage = (() => { if (!E.IsLearned) { return(0); } var index = E.Level - 1; var mod = new[] { 1.4f, 1.55f, 1.7f, 1.85f, 2f }[index]; var dmg = Player.Instance.TotalAttackDamage; return(dmg * mod); }), Source = Player.Instance, Spell = E, Stage = 1 }); Config.Init(); VitalManager.Init(); SpellBlocker.Init(); Orbwalker.OverrideOrbwalkPosition += this.OverrideOrbwalkPosition; Orbwalker.OnPostAttack += this.Orbwalker_OnPostAttack; Orbwalker.OnUnkillableMinion += this.Orbwalker_OnUnkillableMinion; Drawing.OnEndScene += Drawing_OnDraw; Player.OnIssueOrder += Player_OnIssueOrder; Spellbook.OnCastSpell += Spellbook_OnCastSpell; }