private void CheckRecallingEnemies() { if (!Listing.config.Get <CheckBox>("on").CurrentValue) { return; } foreach (Listing.PortingEnemy portingEnemy in Listing.teleportingEnemies.OrderBy(x => x.Sender.Health)) { var enemy = portingEnemy.Sender; InvisibleEventArgs invisEntry = Listing.invisEnemiesList.FirstOrDefault(x => x.sender.Equals(enemy)); if (invisEntry == null) //enemy visible { return; } int recallEndTime = portingEnemy.StartTick + portingEnemy.Duration; float timeLeft = recallEndTime - Core.GameTickCount; float regedHealthRecallFinished = Algorithm.SimulateHealthRegen(enemy, invisEntry.StartTime, recallEndTime); float totalEnemyHOnRecallEnd = enemy.Health + regedHealthRecallFinished; float aioDmg = Damage.GetAioDmg(enemy, timeLeft, enemySpawn, totalEnemyHOnRecallEnd); float regenerationDelayTime = Algorithm.SimulateRealDelayTime(enemy, recallEndTime, aioDmg); bool force0Delay = Listing.config.Get <CheckBox>("humanizedDelayOff").CurrentValue; if (force0Delay) { regenerationDelayTime = 0; } if (!Damage.isRegenDelaySet) { Damage.SetRegenerationDelay(regenerationDelayTime, timeLeft); //new check but now with estimated reg delay float totalEnemyHpAtArrival = totalEnemyHOnRecallEnd + (regenerationDelayTime / 1000) * Algorithm.GetFountainReg(enemy); aioDmg = Damage.GetAioDmg(enemy, timeLeft, enemySpawn, totalEnemyHpAtArrival); } if (aioDmg > totalEnemyHOnRecallEnd) { if (regenerationDelayTime < Listing.config.Get <Slider>("minDelay").CurrentValue&& !Listing.config.Get <CheckBox>("humanizedDelayOff").CurrentValue) { Messaging.ProcessInfo(enemy.ChampionName, Messaging.MessagingType.DelayTooSmall, regenerationDelayTime); continue; } CheckUltCast(enemy, timeLeft, aioDmg, regenerationDelayTime); return; //clear every porting enemy expect the current target and return => wait for next loop run } if (aioDmg > 0) //dmg there but not enough { Messaging.ProcessInfo(enemy.ChampionName, Messaging.MessagingType.NotEnougDamage, aioDmg); } } }
private void OnOnEnemyInvisible(InvisibleEventArgs args) { Listing.visibleEnemies.Remove(args.sender); Listing.invisEnemiesList.Add(args); if (Listing.snipeMenu["snipeEnabled"].Cast <CheckBox>().CurrentValue) { var spell = me.Spellbook.GetSpell(SpellSlot.R); var cooldown = spell.CooldownExpires - Game.Time; if (cooldown <= 0 && me.Level >= 6) { Listing.Pathing.enemySnipeProcs.Add(new SnipePrediction(args)); } } }
private void OnOnEnemyInvisible(InvisibleEventArgs args) { Listing.visibleEnemies.Remove(args.sender); Listing.invisEnemiesList.Add(args); if (Listing.snipeMenu["snipeEnabled"].Cast<CheckBox>().CurrentValue) { var spell = me.Spellbook.GetSpell(SpellSlot.R); var cooldown = spell.CooldownExpires - Game.Time; if (cooldown <= 0 && me.Level >= 6) Listing.Pathing.enemySnipeProcs.Add(new SnipePrediction(args)); } }