public static void OnLoad() { const string champName = "Lucian"; var spellSubmenu = new Menu(champName + " - Cleanser", champName + "Cleanser"); //Spell Cleanser Menu var spellCleanserMenu = new Menu("Cleanser - Spell Cleanser", "com.idzlucian.cleanser.spell"); foreach (var spell in QssSpells.Where(h => GetChampByName(h.ChampName) != null)) { var sMenu = new Menu(spell.SpellName, champName + spell.SpellBuff); sMenu.AddItem( new MenuItem("com.idzlucian.cleanser.spell." + spell.SpellBuff + "A", "Always").SetValue( !spell.OnlyKill)); sMenu.AddItem( new MenuItem("com.idzlucian.cleanser.spell." + spell.SpellBuff + "K", "Only if killed by it") .SetValue(spell.OnlyKill)); sMenu.AddItem( new MenuItem("com.idzlucian.cleanser.spell." + spell.SpellBuff + "D", "Delay before cleanse") .SetValue(new Slider((int)spell.Delay, 0, 10000))); spellCleanserMenu.AddSubMenu(sMenu); } //Bufftype cleanser menu var buffCleanserMenu = new Menu( "Cleanser - Bufftype Cleanser", champName + "com.idzlucian.cleanser.bufftype"); foreach (var buffType in Buffs) { buffCleanserMenu.AddItem(new MenuItem(champName + buffType, buffType.ToString()).SetValue(true)); } buffCleanserMenu.AddItem( new MenuItem("com.idzlucian.cleanser.bufftype.minbuffs", "Min Buffs").SetValue(new Slider(2, 1, 5))); var allyMenu = new Menu("Cleanser - Use On", "UseOn"); foreach (var ally in HeroManager.Allies) { allyMenu.AddItem( new MenuItem("com.idzlucian.cleanser.allies.useon." + ally.ChampionName, ally.ChampionName).SetValue (true)); } spellSubmenu.AddItem(new MenuItem("com.idzlucian.cleanser.items.qss", "Use QSS").SetValue(true)); spellSubmenu.AddItem( new MenuItem("com.idzlucian.cleanser.items.scimitar", "Use Mercurial Scimitar").SetValue(true)); spellSubmenu.AddItem( new MenuItem("com.idzlucian.cleanser.items.dervish", "Use Dervish Blade").SetValue(true)); spellSubmenu.AddItem( new MenuItem("com.idzlucian.cleanser.items.michael", "Use Mikael's Crucible").SetValue(true)); spellSubmenu.AddItem(new MenuItem("com.idzlucian.cleanser.items.cleanse", "Use Cleanse").SetValue(true)); spellSubmenu.AddItem( new MenuItem("com.idzlucian.cleanser.hpbuffer", "Health Buffer").SetValue(new Slider(20))); spellSubmenu.AddItem( new MenuItem("com.idzlucian.cleanser.delay", "Global Delay (Prevents Lag)").SetValue( new Slider(100, 0, 200))); spellSubmenu.AddSubMenu(spellCleanserMenu); spellSubmenu.AddSubMenu(buffCleanserMenu); spellSubmenu.AddSubMenu(allyMenu); MenuInstance.AddSubMenu(spellSubmenu); //Subscribe the Events Game.OnUpdate += Game_OnGameUpdate; }
/// <summary> /// Will Cleanse only on Kill /// </summary> private static void KillCleansing() { if (OneReady()) { QssSpell mySpell = null; if ( QssSpells.Where( spell => ObjectManager.Player.HasBuff(spell.SpellBuff, true) && SpellEnabledOnKill(spell.SpellBuff) && GetChampByName(spell.ChampName).GetSpellDamage(ObjectManager.Player, spell.Slot) > ObjectManager.Player.Health + HealthBuffer) .OrderBy( spell => GetChampByName(spell.ChampName).GetSpellDamage(ObjectManager.Player, spell.Slot)) .Any()) { mySpell = QssSpells.Where( spell => ObjectManager.Player.HasBuff(spell.SpellBuff, true) && SpellEnabledOnKill(spell.SpellBuff)) .OrderBy( spell => GetChampByName(spell.ChampName).GetSpellDamage(ObjectManager.Player, spell.Slot)) .First(); } if (mySpell != null) { UseCleanser(mySpell, ObjectManager.Player); } } if (!MichaelReady()) { return; } //Ally Cleansing var allies = ObjectManager.Player.GetAlliesInRange(600f); var highestAlly = ObjectManager.Player; var highestDamage = 0f; QssSpell highestSpell = null; foreach (var ally in allies) { QssSpell theSpell = null; if ( QssSpells.Where( spell => ally.HasBuff(spell.SpellBuff, true) && SpellEnabledOnKill(spell.SpellBuff) && GetChampByName(spell.ChampName).GetSpellDamage(ally, spell.Slot) > ally.Health + HealthBuffer) .OrderBy(spell => GetChampByName(spell.ChampName).GetSpellDamage(ally, spell.Slot)) .Any()) { theSpell = QssSpells.Where( spell => ally.HasBuff(spell.SpellBuff, true) && SpellEnabledOnKill(spell.SpellBuff)) .OrderBy(spell => GetChampByName(spell.ChampName).GetSpellDamage(ally, spell.Slot)) .First(); } if (theSpell != null) { var damageDone = GetChampByName(theSpell.ChampName).GetSpellDamage(ally, theSpell.Slot); if (damageDone >= highestDamage && MenuHelper.IsMenuEnabled("com.idzlucian.cleanser.allies.useon." + ally.ChampionName)) { highestSpell = theSpell; highestDamage = (float)damageDone; highestAlly = ally; } } } if (!highestAlly.IsMe && highestSpell != null) { UseCleanser(highestSpell, highestAlly); } }