public void PassiveBonusToAllWeaponSpells() { var setting = new Settings { PrimaryWeapon = WeaponType.Hammer, SecondaryWeapon = WeaponType.Fist, FightLength = 1, TargetType = TargetType.Champion, Apl = "", }; var passive = new Passive2(); var spell = new Spell1(); var spell2 = new Spell2(); var spell3 = new Spell3(); var player = new Player(setting); player.Passives.Add(passive); player.Spells.Add(spell); player.Spells.Add(spell2); player.Spells.Add(spell3); player.NewRound(0, 0); Assert.IsTrue(player.HasPassive("Passive2")); Assert.IsTrue(player.Spells.Where(s => s.WeaponType == WeaponType.Hammer).All(sp => sp.PrimaryGimmickGain > 0)); Assert.IsTrue(player.Spells.First(s => s.WeaponType != WeaponType.Hammer).PrimaryGimmickGain == 0); }
public void PassiveBonusSpellOnlyCrit2() { var setting = new Settings { PrimaryWeapon = WeaponType.Hammer, SecondaryWeapon = WeaponType.Fist, FightLength = 1, TargetType = TargetType.Champion, Apl = "", }; var passive = new PassiveBonusSpell2(); var spell = new Spell2 { BonusCritChance = -100 }; var player = new Player(setting); player.Passives.Add(passive); player.Spells.Add(spell); var engine = new Engine(setting); var fight = engine.StartFight(player); var spells = fight.RoundResults .SelectMany(r => r.Attacks.Where(a => a.Spell is Spell2)).Count(); var bonusSpells = fight.RoundResults .SelectMany(r => r.Attacks.Where(a => a.Spell is PassiveBonusSpell2)).Count(); Assert.IsTrue(spells > 0); Assert.IsTrue(bonusSpells == 0); }
void PatternClear() { level++; Spell.SendMessage("PatternFinish"); Spell2.SendMessage("PatternFinish"); gameObject.GetComponent <BoxCollider2D>().enabled = false; Invoke("PatternRelpace", 2.0f); }
private static bool UseHeal() { if (Spell2 == null || !Spell2.CanBeCasted() || !Utils.SleepCheck(Spell2.StoredName()) || MyHero.Mana - Spell4.ManaCost <= Spell2.ManaCost) { return(false); } Spell2.UseAbility(MyHero); Utils.Sleep(500 + Game.Ping, Spell2.StoredName()); return(true); }
void SpellRun(bool runFirst) { Debug.Log("Pattern Start"); started = true; if (runFirst) { Spell.SendMessage("PatternStart", Launchers); Spell2.SendMessage("PatternStart", Launchers); } else { Spell3.SendMessage("PatternStart", Launchers); Spell4.SendMessage("PatternStart", Launchers); } }
void SpellShot() { int[] rand = new int[2]; gameObject.GetComponent <BoxCollider2D>().enabled = true; rand[0] = Random.Range(0, SpellLev.Length); rand[1] = Random.Range(0, SpellLev.Length); while (rand[0] == rand[1]) { rand[1] = Random.Range(0, 7); } Spell = SpellLev[rand[0]]; Spell2 = SpellLev[rand[1]]; Spell.SendMessage("PatternStart", Launchers); Spell2.SendMessage("PatternStart", Launchers); }
IEnumerator SpellClear() { if (!Level) { Spell.SendMessage("PatternFinish"); Spell2.SendMessage("PatternFinish"); Level = true; } else { Spell3.SendMessage("PatternFinish"); Spell4.SendMessage("PatternFinish"); } gameObject.GetComponent <BoxCollider2D>().enabled = false; yield return(new WaitForSeconds(2)); gameObject.GetComponent <BoxCollider2D>().enabled = true; Debug.Log("Pattern Cleared"); started = false; }
private static void ComboInAction(Hero target) { if (!Spell4.CanBeCasted() || Spell4.Level == 0 || !Utils.SleepCheck(Spell2.StoredName())) { return; } var neededMana = MyHero.Mana - Spell4.ManaCost; var allitems = MyHero.Inventory.Items.Where(x => x.CanBeCasted() && x.ManaCost <= neededMana); var isInvise = MyHero.IsInvisible(); var inventory = allitems.Where(x => Utils.SleepCheck(x.Name + MyHero.Handle)).ToList(); var underLink = target.IsLinkensProtected(); var distance = MyHero.Distance2D(target) - MyHero.HullRadius - target.HullRadius; if (underLink) { var linkerItems = inventory.Where(x => x.CanHit(target) && ItemsLinker.Keys.Contains(x.Name)).OrderByDescending(y => ItemsLinker[y.StoredName()]); foreach (var item in linkerItems) { item.UseAbility(target); Utils.Sleep(250, item.Name + MyHero.Handle); } if (linkerItems.Any(x => Utils.SleepCheck(x.Name + MyHero.Handle))) { return; } } var items = inventory.Where( x => Items.Keys.Contains(x.Name) && ((x.CastRange == 0 && distance <= 800) || x.CastRange >= distance)).OrderByDescending(y => Items[y.StoredName()]); if (Dagger != null && Dagger.CanBeCasted() && !isInvise && Utils.SleepCheck("dagger") && distance <= 1200 && distance > 150) { if (UseHeal()) { return; } var point = new Vector3( (float)(target.Position.X - 20 * Math.Cos(MyHero.FindAngleBetween(target.Position, true))), (float)(target.Position.Y - 20 * Math.Sin(MyHero.FindAngleBetween(target.Position, true))), 0); Dagger.UseAbility(point); Utils.Sleep(500, "dagger"); } else if (Utils.SleepCheck("attack_cd")) { Utils.Sleep(500, "attack_cd"); MyHero.Attack(target); } if (Bkb != null && Menu.Item("enabledAbilities").GetValue <AbilityToggler>().IsEnabled(Bkb.StoredName()) && Bkb.CanBeCasted() && Utils.SleepCheck(Bkb.StoredName()) && Spell4.CanHit(target)) { Bkb.UseAbility(); Utils.Sleep(500, Bkb.StoredName()); } foreach (var item in items) { if (item.StoredName() == "item_armlet") { if (!MyHero.HasModifier("modifier_item_armlet_unholy_strength")) { item.ToggleAbility(); Utils.Sleep(500, item.Name + MyHero.Handle); } continue; } if (item.IsAbilityBehavior(AbilityBehavior.NoTarget)) { item.UseAbility(); } if (item.IsAbilityBehavior(AbilityBehavior.UnitTarget)) { if (item.TargetTeamType == TargetTeamType.Enemy || item.TargetTeamType == TargetTeamType.All) { item.UseAbility(target); } else { item.UseAbility(MyHero); } } Utils.Sleep(500, item.Name + MyHero.Handle); } if (isInvise && Utils.SleepCheck("attack_cd_2")) { MyHero.Attack(target); Utils.Sleep(500 + Game.Ping, "attack_cd_2"); } else if (Utils.SleepCheck("ult")) { if (distance <= 200 /*Spell4.CanHit(target)*/) { UseHeal(); //if (items.Any(x => Utils.SleepCheck(x.Name + MyHero.Handle))) return; Utils.Sleep(100 + Game.Ping, "ult"); Spell4.UseAbility(target); } } }
public static void Loading_OnLoadingComplete(EventArgs args) { if (myHero.Hero != Champion.Vayne) { return; } Chat.Print("<font color=\"#F20000\"><b>Doctor Vayne:</b></font> Loaded!"); Chat.Print("Good Luck!"); Q = new Spell2(SpellSlot.Q); W = new Spell2(SpellSlot.W); E = new Spell2(SpellSlot.E, 590f); E.SetTargetted(0.25f, 2200f); R = new Spell2(SpellSlot.R); var slot = myHero.GetSpellSlotFromName("summonerheal"); if (slot != SpellSlot.Unknown) { Heal = new Spell.Active(slot, 600); } menu = MainMenu.AddMenu(AddonName, AddonName + " by " + Author + " v1.0"); menu.AddLabel(AddonName + " Doctor Vayne " + Author); menu.AddLabel("Good Luck!"); SubMenu["Combo"] = menu.AddSubMenu("连招", "Combo"); SubMenu["Combo"].AddGroupLabel("Q 设置"); SubMenu["Combo"].Add("Q", new CheckBox("使用 Q", true)); SubMenu["Combo"].Add("Qult", new CheckBox("大招智能 Q", true)); var Q1 = SubMenu["Combo"].Add("Qmode", new Slider("Q 模式", 0, 0, 1)); var Q2 = new[] { "智能", "鼠标位置" }; Q1.DisplayName = Q2[Q1.CurrentValue]; Q1.OnValueChange += delegate(ValueBase <int> sender, ValueBase <int> .ValueChangeArgs changeArgs) { sender.DisplayName = Q2[changeArgs.NewValue]; }; SubMenu["Combo"].AddSeparator(10); SubMenu["Combo"].Add("E", new CheckBox("使用 E", true)); SubMenu["Combo"].Add("ELast", new CheckBox("使用 E 击杀敌人", false)); SubMenu["Combo"].Add("PushDistance", new Slider("E 推距离", 380, 300, 425)); SubMenu["Combo"].Add("R", new CheckBox("使用 R", true)); SubMenu["Combo"].Add("R2", new Slider("范围内敌人数量 X 时", 2, 0, 5)); SubMenu["Combo"].Add("noaastealth", new CheckBox("隐身时不普攻", true)); SubMenu["Combo"].Add("noaastealth2", new Slider("范围内敌人数量 X 时", 2, 0, 5)); SubMenu["Combo"].AddSeparator(10); SubMenu["Combo"].AddGroupLabel("物品设置"); SubMenu["Combo"].Add("useItems", new CheckBox("使用物品", true)); SubMenu["Combo"].Add("myhp", new Slider("玩家生命低于X %时使用破败", 55, 0, 100)); SubMenu["Harass"] = menu.AddSubMenu("骚扰", "Harass"); SubMenu["Harass"].Add("Q", new CheckBox("使用 Q", true)); SubMenu["Harass"].Add("E", new CheckBox("使用 E", true)); SubMenu["LastHit"] = menu.AddSubMenu("尾兵", "LastHit"); SubMenu["LastHit"].Add("Q", new CheckBox("使用 Q", true)); SubMenu["LastHit"].Add("LastHitMana", new Slider("蓝量大于", 80, 0, 100)); SubMenu["LaneClear"] = menu.AddSubMenu("清线", "LaneClear"); SubMenu["LaneClear"].Add("Q", new CheckBox("使用 Q", true)); SubMenu["LaneClear"].Add("LaneClearMana", new Slider("蓝量大于", 85, 0, 100)); SubMenu["JungleClear"] = menu.AddSubMenu("清野", "JungleClear"); SubMenu["JungleClear"].Add("E", new CheckBox("使用 E", true)); SubMenu["JungleClear"].Add("JungleClearMana", new Slider("蓝量大于", 50, 0, 100)); SubMenu["Misc"] = menu.AddSubMenu("杂项", "Misc"); SubMenu["Misc"].AddGroupLabel("防突进/技能打断设置"); SubMenu["Misc"].Add("UseEInterrupt", new CheckBox("使用E防突进/技能打断", true)); SubMenu["Misc"].Add("AntiGapQ", new CheckBox("使用Q造成间距", true)); SubMenu["Misc"].AddSeparator(10); foreach (var hero in EntityManager.Heroes.Enemies.Where(x => x.IsEnemy)) { SubMenu["Misc"].Add(hero.ChampionName, new CheckBox("对英雄防突进/技能打断 " + hero.ChampionName, true)); } SubMenu["Misc"].AddSeparator(10); foreach (var enemy in EntityManager.Heroes.Enemies.Where(x => x.IsEnemy)) { SubMenu["Misc"].Add(enemy.ChampionName + "E", new CheckBox("对英雄使用E " + enemy.ChampionName, true)); } SubMenu["Misc"].AddSeparator(10); SubMenu["Misc"].AddGroupLabel("优先攻击W目标"); SubMenu["Misc"].Add("focusW", new CheckBox("优先攻击W目标触发3W", true)); SubMenu["Misc"].Add("waypoint", new CheckBox("显示目标行径", true)); SubMenu["Misc"].AddSeparator(10); SubMenu["Misc"].AddGroupLabel("治疗设置"); SubMenu["Misc"].Add("heal", new CheckBox("使用治疗", true)); SubMenu["Misc"].Add("hp", new Slider("生命低于", 25, 0, 100)); SubMenu["QSS"] = menu.AddSubMenu("自动解控", "QSS"); SubMenu["QSS"].AddGroupLabel("自动水银/米凯尔"); SubMenu["QSS"].Add("use", new KeyBind("使用水银/米凯尔", false, KeyBind.BindTypes.PressToggle, 'K')); SubMenu["QSS"].Add("delay", new Slider("延迟施放设置", 1000, 0, 2000)); buffs = new[] { BuffType.Blind, BuffType.Charm, BuffType.CombatDehancer, BuffType.Fear, BuffType.Flee, BuffType.Knockback, BuffType.Knockup, BuffType.Polymorph, BuffType.Silence, BuffType.Sleep, BuffType.Snare, BuffType.Stun, BuffType.Suppression, BuffType.Taunt, BuffType.Poison }; for (int i = 0; i < buffs.Length; i++) { SubMenu["QSS"].Add(buffs[i].ToString(), new CheckBox(buffs[i].ToString(), true)); } orbwalker = new Orbwalking.Orbwalker(menu); TargetSelector2.Initialize(); Spell2.Initialize(); Prediction2.Initialize(); _traps = new List <GameObject>(); Obj_AI_Base.OnProcessSpellCast += Obj_AI_Base_OnProcessSpellCast; Game.OnUpdate += Game_OnUpdate; Obj_AI_Base.OnSpellCast += Obj_AI_Base_OnSpellCast; Obj_AI_Base.OnCreate += Obj_AI_Base_OnCreate; Obj_AI_Base.OnDelete += Obj_AI_Base_OnDelete; Orbwalking.AfterAttack += Orbwalking_AfterAttack; Interrupter2.OnInterruptableTarget += Interrupter2_OnInterruptableTarget; AntiGapcloser.OnEnemyGapcloser += AntiGapcloser_OnEnemyGapcloser; Drawing.OnDraw += Drawing_OnDraw; Player.OnIssueOrder += Player_OnIssueOrder; }