private static int CreateSpell(Spell newSpell) { int spellID = spellIDCount++; newSpell.spellID = spellID; drawSpells.Add(spellID, newSpell); if (!(Evade.isDodgeDangerousEnabled() && EvadeHelper.GetSpellDangerLevel(newSpell) < 3) && Evade.menu.SubMenu("Spells").SubMenu(newSpell.info.charName + newSpell.info.spellName + "Settings") .Item(newSpell.info.spellName + "DodgeSpell").GetValue <bool>()) { if (newSpell.info.spellType == SpellType.Circular && Evade.menu.SubMenu("Main").Item("DodgeCircularSpells").GetValue <bool>() == false) { return(spellID); } spells.Add(spellID, newSpell); if (OnCreateSpell != null) { OnCreateSpell(newSpell); } } return(spellID); }
public void RemoveNonDangerousSpells() { foreach (var spell in spells.Values.ToList().Where( s => (EvadeHelper.GetSpellDangerLevel(s) < 3))) { DeleteSpell(spell.spellID); } }
public static void UseEvadeSpell() { if (!Evade.menu.SubMenu("Main").Item("UseEvadeSpells").GetValue <bool>()) { return; } //int posDangerlevel = EvadeHelper.CheckPosDangerLevel(myHero.ServerPosition.To2D(), 0); if (Evade.GetTickCount() - lastSpellEvadeCommand.timestamp < 1000) { return; } foreach (KeyValuePair <int, Spell> entry in SpellDetector.spells) { Spell spell = entry.Value; if (!Evade.lastPosInfo.undodgeableSpells.Contains(spell.spellID)) { continue; } foreach (var evadeSpell in evadeSpells) { if (Evade.menu.SubMenu("EvadeSpells").SubMenu(evadeSpell.charName + evadeSpell.name + "EvadeSpellSettings") .Item(evadeSpell.name + "UseEvadeSpell").GetValue <bool>() == false || GetSpellDangerLevel(evadeSpell) > EvadeHelper.GetSpellDangerLevel(spell) || !(myHero.Spellbook.CanUseSpell(evadeSpell.spellKey) == SpellState.Ready)) { continue; //can't use spell right now } if (evadeSpell.evadeType == EvadeType.Blink) { var posInfo = EvadeHelper.GetBestPositionBlink(); if (posInfo != null) { EvadeCommand.CastSpell(evadeSpell, posInfo.position); } } else if (evadeSpell.evadeType == EvadeType.Dash) { var posInfo = EvadeHelper.GetBestPositionDash(evadeSpell); if (posInfo != null) { if (evadeSpell.isReversed) { var dir = (posInfo.position - myHero.ServerPosition.To2D()).Normalized(); var range = myHero.ServerPosition.To2D().Distance(posInfo.position); var pos = myHero.ServerPosition.To2D() - dir * range; posInfo.position = pos; } EvadeCommand.CastSpell(evadeSpell, posInfo.position); } } else if (evadeSpell.evadeType == EvadeType.SpellShield) { EvadeCommand.CastSpell(evadeSpell); } return; } } }