예제 #1
0
 public override float CallAndWait(ProjectileController projControl)
 {
     Debug.Log("castSpell " + spell + " " + projControl);
     Debug.Log(projControl + " controler");
     spell.Cast(projControl.transform, false, new Vector3(Random.Range(_minOff.x, _maxOff.x), Random.Range(_minOff.y, _maxOff.y), 0));
     return(0);
 }
예제 #2
0
        public override void Rebuff()
        {
            if (!Player.IsMainhandEnchanted())
            {
                UseMoreUsefulEnchanceSpell();
                return;
            }

            if (ShouldRebuffLightingShield())
            {
                SpellBook.Cast(SpellNames.LightningShield);
            }
        }
예제 #3
0
        private bool UseMoreUsefulEnchanceSpell()
        {
            var spell = EnchanmentSpellsPriority
                        .FirstOrDefault(spellName => SpellBook.GetSpellRank(spellName) > 0);

            if (string.IsNullOrEmpty(spell))
            {
                return(false);
            }

            SpellBook.Cast(spell);

            return(true);
        }
예제 #4
0
 public void shoot(SpellBook spell)
 {
     //ScreenShake.instance.shake (.01f * spells[currentSpell].cost);
     ScreenShake.instance.shake(.2f);
     if (spell.chargesCurrent == spell.nextChargesTillReload + 1)
     {
         lastShot.Play();
     }
     else
     {
         shootSource.pitch = Random.Range(.992f, 1.08f);
         shootSource.Play();
     }
     spell.Cast(transform, true);
 }
예제 #5
0
    public void shoot()
    {
        if (Time.time - lastShootTime < coolDown)
        {
            return;
        }
        lastShootTime = Time.time;
        if (ShotFired != null)
        {
            ShotFired();
        }

        //ScreenShake.instance.shake (.001f * current_spell.mana);
        audioSource.Play();
        current_spell.Cast(transform, parentsRotation);
    }
예제 #6
0
        public override void Pull(WoWUnit target)
        {
            if (!target.CanBeKilled() || Player.IsCasting())
            {
                return;
            }

            if (Player.IsInCombat && SpellBook.IsSpellReady(SpellNames.EarthShock) && target.InRange(20))
            {
                SpellBook.Cast(SpellNames.EarthShock);
                return;
            }

            if (!Player.IsInCombat && Player.ManaPercent > 60 && SpellBook.IsSpellReady(SpellNames.LightningBolt) && target.InRange(28))
            {
                SpellBook.Cast(SpellNames.LightningBolt);
                return;
            }

            _combatPosition = Enums.CombatPosition.Before;
            SpellBook.Attack();
        }
예제 #7
0
        public override void Fight(IEnumerable <WoWUnit> possibleTargets)
        {
            if (possibleTargets == null)
            {
                return;
            }

            var target = possibleTargets.FirstOrDefault();

            if (!target.CanBeKilled() || Player.IsCasting())
            {
                return;
            }

            if (!target.Equals(Target))
            {
                Player.SetTarget(target);
            }

            //if (target.InRange(15))
            //{
            //    SuppressBotMovement = true;
            //}

            if (Player.HealthPercent <= 10)
            {
                var potion = Bag
                             .GetPotionsSortedByPriority()
                             .Where(item => item.Info.RequiredLevel < Player.Level)
                             .FirstOrDefault();

                if (potion?.CanUse() == true)
                {
                    potion.Use();
                    return;
                }
            }

            if (Player.HealthPercent < 50 && SpellBook.IsSpellReady(SpellNames.HealingWave))
            {
                SpellBook.Cast(SpellNames.HealingWave);
                return;
            }

            if (World.GetAttackers().Count() >= 1)
            {
                if (HasTotem(ItemNames.Totems.EarthTotem) && Player.CanCastSpell(SpellNames.StoneclawTotem))
                {
                    SpellBook.Cast(SpellNames.StoneclawTotem);
                    return;
                }

                if (HasTotem(ItemNames.Totems.EarthTotem) && IsTotemSpawned(SpellNames.StoneskinTotem) && Player.CanCastSpell(SpellNames.StoneskinTotem))
                {
                    SpellBook.Cast(SpellNames.StoneskinTotem);
                    return;
                }

                if (HasTotem(ItemNames.Totems.WaterTotem) && IsTotemSpawned(SpellNames.HealingStreamTotem) && Player.CanCastSpell(SpellNames.HealingStreamTotem))
                {
                    SpellBook.Cast(SpellNames.HealingStreamTotem);
                    return;
                }
            }

            if (target.CanBeKilled() &&
                target.DistanceToPlayer > 20 &&
                target.DistanceToPlayer < 30 &&
                Player.ManaPercent > 50 &&
                SpellBook.IsSpellReady(SpellNames.LightningBolt))
            {
                SpellBook.Cast(SpellNames.LightningBolt);
                return;
            }

            // if target cast something we prefer to interrupt it
            if (target.CanBeKilled() && target.IsCasting() && Player.CanCastSpell(SpellNames.EarthShock))
            {
                SpellBook.Cast(SpellNames.EarthShock);
                return;
            }

            if (Player.CanCastSpell(SpellNames.Stormstrike))
            {
                SpellBook.Cast(SpellNames.Stormstrike);
                return;
            }

            if (target.CanBeKilled() && target.InRange(20) && Player.ManaPercent > 40)
            {
                if (!target.GotDebuff(SpellNames.FlameShock) && Player.CanCastSpell(SpellNames.FlameShock))
                {
                    SpellBook.Cast(SpellNames.FlameShock);
                    return;
                }

                if (Player.CanCastSpell(SpellNames.FrostShock))
                {
                    SpellBook.Cast(SpellNames.FrostShock);
                    return;
                }

                // or earth
                if (Player.CanCastSpell(SpellNames.EarthShock))
                {
                    SpellBook.Cast(SpellNames.EarthShock);
                    return;
                }
            }

            if (HasTotem(ItemNames.Totems.FireTotem) && Player.CanCastSpell(SpellNames.SearingTotem) && IsTotemSpawned(SpellNames.SearingTotem))
            {
                SpellBook.Cast(SpellNames.SearingTotem);
                return;
            }

            _combatPosition = Enums.CombatPosition.Before;
            SpellBook.Attack();
        }