public static void Add(Spell spell, bool readyCheck = true, bool enabled = true) { try { if (_menu == null) { return; } _menu.AddItem( new MenuItem(_menu.Name + "." + spell.Slot, spell.Slot.ToString().ToUpper()).SetValue(enabled)); if (readyCheck) { Functions.Add(spell.Slot.ToString(), hero => spell.IsReady() ? spell.GetDamage(hero) : 0); } else { Functions.Add(spell.Slot.ToString(), hero => spell.GetDamage(hero)); } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
public static void Farm(Spell spell, int minHit = 3, float overrideWidth = -1f, bool chargeMax = true, List<Obj_AI_Base> minions = null) { if (!spell.IsReady()) { return; } var spellWidth = overrideWidth > 0 ? overrideWidth : spell.Width; if (minions == null) { minions = MinionManager.GetMinions( (((chargeMax && spell.IsChargedSpell ? spell.ChargedMaxRange : spell.Range) + spellWidth) * 1.5f), MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth); } if (minions.Count == 0) { return; } if (minHit > 1) { var nearest = minions.OrderBy(m => m.Distance(ObjectManager.Player)).FirstOrDefault(); if (nearest != null && nearest.Team == GameObjectTeam.Neutral) { minHit = 1; } } if (spell.IsSkillshot) { if (spell.Type == SkillshotType.SkillshotCircle) { CircleFarm(spell, minions, minHit, overrideWidth); } else if (spell.Type == SkillshotType.SkillshotLine) { LineFarm(spell, minions, minHit, overrideWidth); } else if (spell.Type == SkillshotType.SkillshotCone) { ConeFarm(spell, minions, minHit, overrideWidth); } } else { var minion = minions.OrderBy(m => spell.IsKillable(m)) .FirstOrDefault( m => spell.IsInRange(m) && spell.GetDamage(m) > m.Health || m.Health - spell.GetDamage(m) > m.MaxHealth * 0.25f); if (minion != null) { spell.CastOnUnit(minion); } } }