Пример #1
0
 public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
 {
     if (HasBuff(owner, "YasuoE"))
     {
         spell.SpellAnimation("SPELL3b", owner);
         AddParticleTarget(owner, "Yasuo_Base_EQ3_cas.troy", owner);
         AddParticleTarget(owner, "Yasuo_Base_EQ_SwordGlow.troy", owner, bone: "C_BUFFBONE_GLB_Weapon_1");
         foreach (var affectEnemys in GetUnitsInRange(owner, 270f, true))
         {
             if (affectEnemys is IAttackableUnit && affectEnemys.Team != owner.Team)
             {
                 affectEnemys.TakeDamage(owner, spell.Level * 20f + owner.Stats.AttackDamage.Total, DamageType.DAMAGE_TYPE_PHYSICAL, DamageSource.DAMAGE_SOURCE_ATTACK, false);
                 AddParticleTarget(owner, "Yasuo_Base_Q_WindStrike.troy", affectEnemys);
                 AddParticleTarget(owner, "Yasuo_Base_Q_windstrike_02.troy", affectEnemys);
                 AddParticleTarget(owner, "Yasuo_Base_Q_hit_tar.troy", affectEnemys);
                 DashToLocation((ObjAiBase)affectEnemys, affectEnemys.X + 10f, affectEnemys.Y + 10f, 13f, true, "RUN", 16.5f, travelTime: 1.15f);
             }
         }
     }
     else
     {
         spell.AddProjectile("YasuoQ3Mis", owner.X, owner.Y, trueCoords.X, trueCoords.Y);
         spell.SpellAnimation("SPELL1C", owner);
         (owner as IChampion).SetSpell("YasuoQW", 0, true);
         AddParticleTarget(owner, "Yasuo_Base_Q3_Hand.troy", owner);
         AddParticleTarget(owner, "Yasuo_Base_Q3_cast_sound.troy", owner);
     }
     if (HasBuff(owner, "YasuoQ02"))
     {
         RemoveBuff(owner, "YasuoQ02");
     }
 }
Пример #2
0
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            var to         = Vector2.Normalize(new Vector2(spell.X, spell.Y) - castcoords);
            var range      = to * 1500f;
            var trueCoords = castcoords + range;

            spell.AddProjectile("JavelinToss", castcoords.X, castcoords.Y, trueCoords.X, trueCoords.Y, true);
        }
Пример #3
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            var current    = new Vector2(owner.X, owner.Y);
            var to         = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current);
            var range      = to * 925;
            var trueCoords = current + range;

            spell.AddProjectile("RocketGrabMissile", trueCoords.X, trueCoords.Y);
        }
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            var current    = new Vector2(owner.X, owner.Y);
            var to         = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current);
            var range      = to * 900;
            var trueCoords = current + range;

            spell.AddProjectile("LucianWMissile", owner.X, owner.Y, trueCoords.X, trueCoords.Y);
        }
Пример #5
0
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            var current    = new Vector2(owner.X, owner.Y);
            var to         = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current);
            var range      = to * 1150;
            var trueCoords = current + range;

            spell.AddProjectile("CaitlynPiltoverPeacemaker", owner.X, owner.Y, trueCoords.X, trueCoords.Y, true);
        }
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            var current    = new Vector2(owner.X, owner.Y);
            var to         = Vector2.Normalize(new Vector2(target.X, target.Y) - current);
            var range      = to * 1150;
            var trueCoords = current + range;

            spell.AddProjectile("AkaliMota", owner.X, owner.Y, trueCoords.X, trueCoords.Y);
        }
Пример #7
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            var current    = new Vector2(owner.X, owner.Y);
            var to         = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current);
            var range      = to * 20000;
            var trueCoords = current + range;

            spell.AddProjectile("EzrealTrueshotBarrage", trueCoords.X, trueCoords.Y, true);
        }
Пример #8
0
        public void OnFinishCasting(IObjAiBase owner, ISpell spell, IAttackableUnit target)
        {
            adder   = false;
            casting = true;

            _owner = owner as IChampion;
            var current = new Vector2(owner.X, owner.Y);
            var to      = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current);
            var range   = to * spell.SpellData.CastRangeDisplayOverride[0];

            trueCoords = current + range;

            CreateTimer(0.03f, () =>
            {
                owner.IsCastingSpell = true;
            });
            if (HasBuff(owner, "YasuoE"))
            {
                CurrentCastTime = MaxCastTimeQE;
                spell.SpellAnimation("SPELL1_Dash", owner);
                AddParticleTarget(owner, "Yasuo_Base_EQ3_cas.troy", owner);
                AddParticleTarget(owner, "Yasuo_Base_EQ_SwordGlow.troy", owner, bone: "C_BUFFBONE_GLB_Weapon_1");
                foreach (var affectEnemys in GetUnitsInRange(owner, 270f, true))
                {
                    if (affectEnemys is IAttackableUnit && affectEnemys.Team != owner.Team)
                    {
                        affectEnemys.TakeDamage(owner, spell.Level * 20f + owner.Stats.AttackDamage.Total, DamageType.DAMAGE_TYPE_PHYSICAL, DamageSource.DAMAGE_SOURCE_ATTACK, false);
                        AddParticleTarget(owner, "Yasuo_Base_Q_WindStrike.troy", affectEnemys);
                        AddParticleTarget(owner, "Yasuo_Base_Q_windstrike_02.troy", affectEnemys);
                        AddParticleTarget(owner, "Yasuo_Base_Q_hit_tar.troy", affectEnemys);
                        //DashToLocation((ObjAiBase)affectEnemys, affectEnemys.X + 10f, affectEnemys.Y + 10f, 13f, true, "RUN", 16.5f, travelTime: 1.15f);
                    }
                }
            }
            else
            {
                (owner as IChampion).StopChampionMovement();
                FaceDirection(owner, to, true, 0f);
                CurrentCastTime = MaxCastTime;

                spell.AddProjectile("YasuoQ3Mis", owner.X, owner.Y, trueCoords.X, trueCoords.Y);
                spell.SpellAnimation("SPELL1C", owner);

                AddParticleTarget(owner, "Yasuo_Base_Q3_Hand.troy", owner);
                AddParticleTarget(owner, "Yasuo_Base_Q3_cast_sound.troy", owner);
            }
            if (HasBuff(owner, "YasuoQ02"))
            {
                adder = true;
            }
        }
Пример #9
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            // Calculate net coords
            var current    = new Vector2(owner.X, owner.Y);
            var to         = Vector2.Normalize(new Vector2(spell.X, spell.Y) - current);
            var range      = to * 750;
            var trueCoords = current + range;

            // Calculate dash coords/vector
            var dash       = Vector2.Negate(to) * 500;
            var dashCoords = current + dash;

            DashToLocation(owner, dashCoords.X, dashCoords.Y, 1000, true, "Spell3b");
            spell.AddProjectile("CaitlynEntrapmentMissile", trueCoords.X, trueCoords.Y);
        }
Пример #10
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            var     current = new Vector2(owner.X, owner.Y);
            var     to      = new Vector2(spell.X, spell.Y) - current;
            Vector2 trueCoords;

            if (to.Length() > 1651)
            {
                to = Vector2.Normalize(to);
                var range = to * 1651;
                trueCoords = current + range;
            }
            else
            {
                trueCoords = new Vector2(spell.X, spell.Y);
            }

            spell.AddProjectile("OlafAxeThrowDamage", trueCoords.X, trueCoords.Y);
        }
Пример #11
0
        public void OnFinishCasting(IChampion owner, ISpell spell, IAttackableUnit target)
        {
            bool game = owner.RefGame.IsRunning;
            int  poof = rand.Next(1, 2);

            var health       = 150;
            var fearduration = 0.5f + (0.25 * (spell.Level - 1));
            var apbonus      = owner.Stats.AbilityPower.Total * 0.2f;
            var damage       = 35 + ((15 * (spell.Level - 1)) + apbonus);
            var attspeed     = 1 / 1.8f; // 1.8 attacks a second = .55... seconds per attack
            var castrange    = spell.SpellData.CastRange[0];
            var triggrange   = 300;
            var sightrange   = 600;
            var armor        = 50;
            var magresist    = 100;
            var spellPos     = new Vector2(spell.X, spell.Y);
            var ownerPos     = new Vector2(owner.X, owner.Y);

            if (owner.WithinRange(ownerPos, spellPos, castrange))
            {
                IMinion Jack = new Minion(owner.RefGame, owner, spell.X, spell.Y, "ShacoBox", "ShacoBox", sightrange, 0);
                owner.RefGame.ObjectManager.AddObject(Jack);
                Jack.SetVisibleByTeam(owner.Team, true);
                if (poof == 1)
                {
                    AddParticle(owner, "JackintheboxPoof.troy", spell.X, spell.Y);
                }
                else if (poof == 2)
                {
                    AddParticle(owner, "JackintheboxPoof2.troy", spell.X, spell.Y);
                }

                if (Jack.IsVisibleByTeam(owner.Team))
                {
                    try
                    {
                        CreateTimer(attspeed, () =>
                        {
                            if (!Jack.IsDead)
                            {
                                var units = GetUnitsInRange(Jack, sightrange, true);
                                foreach (var value in units)
                                {
                                    if (owner.Team != value.Team && value is AttackableUnit)
                                    {
                                        Jack.SetTargetUnit(value);
                                        Jack.AutoAttackTarget          = value;
                                        Jack.AutoAttackProjectileSpeed = 1450;
                                        Jack.AutoAttackHit(value);
                                        spell.AddProjectile("ShacoBoxBasicAttack", value.X, value.Y);
                                        value.TakeDamage(owner, damage, DamageType.DAMAGE_TYPE_MAGICAL, DamageSource.DAMAGE_SOURCE_ATTACK, false);
                                    }
                                }
                            }
                        });
                        CreateTimer(5, () =>
                        {
                            if (!Jack.IsDead)
                            {
                                Jack.Die(Jack);
                            }
                            LogInfo("Jack dead.");
                        });
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.ToString());
                    }
                }
            }
        }