public static void Main() { var evade = new Evade(); }
private static void Events_OnLoad(object sender, EventArgs e) { _evade = new Evade(); }
private static void AddDetectedSpells() { bool spellAdded = false; foreach (KeyValuePair <int, Spell> entry in DetectedSpells) { Spell spell = entry.Value; float evadeTime, spellHitTime; spell.CanHeroEvade(MyHero, out evadeTime, out spellHitTime); spell.SpellHitTime = spellHitTime; spell.EvadeTime = evadeTime; var extraDelay = Game.Ping + Config.Properties.GetInt(ConfigValue.ExtraPingBuffer); if (spell.SpellHitTime - extraDelay < 1500 && CanHeroWalkIntoSpell(spell)) //if(true) { Spell newSpell = spell; int spellId = spell.SpellId; if (!DrawSpells.ContainsKey(spell.SpellId)) { DrawSpells.Add(spellId, newSpell); } //var spellFlyTime = Evade.GetTickCount - spell.startTime; if (spellHitTime < ConfigValue.SpellDetectionTime.GetInt()) { continue; } if (EvadeUtils.TickCount - spell.StartTime < ConfigValue.ReactionTime.GetInt()) { continue; } var dodgeInterval = ConfigValue.DodgeInterval.GetInt(); if (Evade.LastPosInfo != null && dodgeInterval > 0) { var timeElapsed = EvadeUtils.TickCount - Evade.LastPosInfo.Timestamp; if (dodgeInterval > timeElapsed) { //var delay = dodgeInterval - timeElapsed; //DelayAction.Add((int)delay, () => SpellDetector_OnProcessDetectedSpells()); continue; } } if (!Spells.ContainsKey(spell.SpellId)) { if (Config.Properties.GetSpell(newSpell.Info.SpellName).Dodge&& !(Evade.IsDodgeDangerousEnabled() && (int)newSpell.Dangerlevel < (int)SpellDangerLevel.High)) { if (newSpell.SpellType == SpellType.Circular && !ConfigValue.DodgeCircularSpells.GetBool()) { //return spellID; continue; } Spells.Add(spellId, newSpell); spellAdded = true; } } if (ConfigValue.CheckSpellCollision.GetBool() && spell.PredictedEndPos != Vector2.Zero) { spellAdded = false; } } } if (spellAdded && OnProcessDetectedSpells != null) { OnProcessDetectedSpells(); } }
private static void Events_OnClose(object sender, EventArgs e) { _evade = null; }