private static bool canKill(creepHealthTick c, Unit u) { legioncommanderAttackDelay = legioncommanderAttackDelay / (1 + ObjectMgr.LocalHero.AttackSpeedValue); var ping2ms = Game.Ping / 1000; var tickDmg = c.dmgPerTick; var myDamage = ObjectMgr.LocalHero.DamageAverage; var bonusDamage = ObjectMgr.LocalHero.BonusDamage; var damageWhileTurning = tickDmg * (GetTurnTime(u) + ping2ms); var damageWhileWinding = tickDmg * legioncommanderAttackDelay; //var damageWhileTravel = (ObjectMgr.LocalHero.Position.Distance(u.Position) / ObjectMgr.LocalHero.MovementSpeed) * tickDmg; if (u.DamageTaken(myDamage + bonusDamage + damageWhileTurning + damageWhileWinding, DamageType.Physical, ObjectMgr.LocalHero, false) >= c.health && (damageWhileTurning + damageWhileWinding) < c.health && ObjectMgr.LocalHero.Position.Distance2D(u) < ObjectMgr.LocalHero.AttackRange) { // Console.WriteLine("HEALTH: " + c.health.ToString() + " " + myDamage + " " + bonusDamage + " " + damageWhileTurning + " " + damageWhileWinding + " " + damageWhileTravel); if (u.Team == ObjectMgr.LocalHero.Team) { if (c.health < u.MaximumHealth / 2) { return true; } else { return false; } } else { return true; } } else { return false; } }
private static void Game_OnUpdate(EventArgs args) { if (!loaded) { me = ObjectMgr.LocalHero; if (!Game.IsInGame || me == null || me.ClassID != ClassID.CDOTA_Unit_Hero_Legion_Commander) { return; } loaded = true; Console.WriteLine("Jew legioncommander Loaded"); armlet = null; bMail = null; mjol = null; bkb = null; blinkDag = null; drawAArange(); } armlet = me.Inventory.Items.FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Item_Armlet); bMail = me.Inventory.Items.FirstOrDefault(x => x.Name == "item_blade_mail"); mjol = me.Inventory.Items.FirstOrDefault(x => x.Name == "item_mjollnir"); bkb = me.Inventory.Items.FirstOrDefault(x => x.Name == "item_black_king_bar"); blinkDag = me.Inventory.Items.FirstOrDefault(x => x.ClassID == ClassID.CDOTA_Item_BlinkDagger); CreepList = ObjectMgr.GetEntities<Creep>() .Where( minion => (minion.Team == ObjectMgr.LocalHero.Team || minion.Team == ObjectMgr.LocalHero.GetEnemyTeam()) && minion.IsAlive && ObjectMgr.LocalHero.Distance2D(minion) <= ObjectMgr.LocalHero.AttackRange * 3) .OrderByDescending(minion => minion.ClassID == ClassID.CDOTA_BaseNPC_Creep_Siege) .ThenByDescending(minion => minion.Team == ObjectMgr.LocalHero.Team) .ThenBy(minion => minion.Health); //.ThenByDescending(minion => Math.Abs((int)minion.Health - (int)minion.MaximumHealth)) //.ThenBy(minion => minion.Health) //.ThenByDescending(minion => minion.MaximumHealth); FriendlyCreeps = ObjectMgr.GetEntities<Creep>() .Where( minion => minion.Team == ObjectMgr.LocalHero.Team && ObjectMgr.LocalHero.Distance2D(minion) <= ObjectMgr.LocalHero.AttackRange * 3); Enemies = ObjectMgr.GetEntities<Hero>() .Where( EnemyHero => EnemyHero.IsValidTarget() && ObjectMgr.LocalHero.Distance2D(EnemyHero) <= ObjectMgr.LocalHero.AttackRange) .OrderBy(EnemyHero => EnemyHero.Health); foreach (Creep c in CreepList) { if (!healthPredict.ContainsKey(c)) { creepHealthTick cht = new creepHealthTick(); cht.health = c.Health; cht.lastTick = Game.GameTime; cht.dmgPerTick = 0; healthPredict.Add(c, cht); } else { creepHealthTick lastval = healthPredict[c]; if (Game.GameTime - lastval.lastTick >= 1) { creepHealthTick newval = new creepHealthTick(); newval.health = c.Health; newval.lastTick = Game.GameTime; newval.dmgPerTick = (lastval.health - newval.health); healthPredict[c] = newval; } } } if (!Game.IsInGame || me == null || me.ClassID != ClassID.CDOTA_Unit_Hero_Legion_Commander) { loaded = false; Console.WriteLine("Jew Legion Commander Unloaded"); return; } if (Game.IsPaused) { return; } }