Esempio n. 1
0
        // Creates the trap(spell)
        private ISpellHandler MakeTrap()
        {
            DBSpell dbs = new DBSpell
            {
                Name         = "irritatin wisp",
                Icon         = 4107,
                ClientEffect = 5435,
                DamageType   = 15,
                Target       = "Enemy",
                Radius       = 0,
                Type         = "DirectDamage",
                Damage       = 80,
                Value        = 0,
                Duration     = 0,
                Frequency    = 0,
                Pulse        = 0,
                PulsePower   = 0,
                Power        = 0,
                CastTime     = 0,
                Range        = 1500
            };

            Spell     s  = new Spell(dbs, 50);
            SpellLine sl = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);

            return(ScriptMgr.CreateSpellHandler(m_pet, s, sl));
        }
        /// <summary>
        /// Action
        /// </summary>
        /// <param></param>
        public override void Execute(GameLiving living)
        {
            if (CheckPreconditions(living, DEAD | SITTING | MEZZED | STUNNED))
            {
                return;
            }

            if (!(living is GamePlayer player))
            {
                return;
            }

            Spell         subspell     = SkillBase.GetSpellByID(7063);
            ISpellHandler spellhandler = ScriptMgr.CreateSpellHandler(player, subspell, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));

            if (player.Group == null)
            {
                spellhandler.StartSpell(player);
            }
            else
            {
                foreach (GamePlayer member in player.Group.GetPlayersInTheGroup())
                {
                    if (member != null)
                    {
                        spellhandler.StartSpell(member);
                    }
                }
            }

            DisableSkill(living);
        }
Esempio n. 3
0
        /// <summary>
        /// Restore All Effect From PlayerXEffect Data Table
        /// </summary>
        public virtual void RestoreAllEffects()
        {
            GamePlayer player = m_owner as GamePlayer;

            if (player == null || player.DBCharacter == null || GameServer.Database == null)
            {
                return;
            }

            var effs = GameServer.Database.SelectObjects <PlayerXEffect>("`ChardID` = @ChardID", new QueryParameter("@ChardID", player.ObjectId));

            if (effs == null)
            {
                return;
            }

            foreach (PlayerXEffect eff in effs)
            {
                if (eff.SpellLine == GlobalSpellsLines.Reserved_Spells)
                {
                    continue;
                }

                bool  good  = true;
                Spell spell = SkillBase.GetSpellByID(eff.Var1);

                if (spell == null)
                {
                    good = false;
                }

                SpellLine line = null;

                if (!Util.IsEmpty(eff.SpellLine))
                {
                    line = SkillBase.GetSpellLine(eff.SpellLine, false);
                    if (line == null)
                    {
                        good = false;
                    }
                }
                else
                {
                    good = false;
                }

                if (good)
                {
                    ISpellHandler   handler = ScriptMgr.CreateSpellHandler(player, spell, line);
                    GameSpellEffect e;
                    e = new GameSpellEffect(handler, eff.Duration, spell.Frequency);
                    e.RestoredEffect = true;
                    int[] vars = { eff.Var1, eff.Var2, eff.Var3, eff.Var4, eff.Var5, eff.Var6 };
                    e.RestoreVars = vars;
                    e.Start(player);
                }

                GameServer.Database.DeleteObject(eff);
            }
        }
Esempio n. 4
0
        public void OnCommand(GameClient client, string[] args)
        {
            GamePlayer player     = client.Player as GamePlayer;
            long       BuffTick   = player.TempProperties.getProperty(Summon_Buff, 0L);
            long       changeTime = player.CurrentRegion.Time - BuffTick;

            if (changeTime < 30000)
            {
                player.Out.SendMessage("You must wait " + ((30000 - changeTime) / 1000).ToString() + " more second to attempt to use this command!", eChatType.CT_System, eChatLoc.CL_ChatWindow);
                return;
            }
            player.TempProperties.setProperty(Summon_Buff, player.CurrentRegion.Time);

            #endregion Command timer

            #region Command spell Loader
            if (client.Player.BountyPoints >= 100) // how many bps are need to summon the buffbot
            {
                SpellLine     line         = new SpellLine("BuffBotCast", "BuffBot Cast", "unknown", false);
                ISpellHandler spellHandler = ScriptMgr.CreateSpellHandler(client.Player, BuffBotSpell, line);
                if (spellHandler != null)
                {
                    spellHandler.StartSpell(client.Player);
                }
                client.Player.RemoveBountyPoints(100); // removes the amount of bps from the player
                client.Player.Out.SendMessage("You have summoned a Buffbot!", eChatType.CT_Important, eChatLoc.CL_SystemWindow);
                client.Player.SaveIntoDatabase();      // saves new amount of bps
                client.Player.Out.SendUpdatePlayer();  // updates players bps
            }
            #endregion command spell loader
            else
            {
                client.Player.Out.SendMessage("You don't have enough Bounty Pounts to summon a Buffbot!", eChatType.CT_System, eChatLoc.CL_SystemWindow);
            }
        }
        private ISpellHandler MakeTrap()
        {
            DBSpell dbs = new DBSpell();

            dbs.Name            = "Increased Essence Consumption";
            dbs.Icon            = 11020;
            dbs.ClientEffect    = 11020;
            dbs.DamageType      = 10;
            dbs.Target          = "Enemy";
            dbs.Radius          = 0;
            dbs.Type            = "PetLifedrain";
            dbs.Damage          = 70;
            dbs.LifeDrainReturn = 100;
            dbs.Value           = -100;
            dbs.Duration        = 0;
            dbs.Frequency       = 0;
            dbs.Pulse           = 0;
            dbs.PulsePower      = 0;
            dbs.Power           = 0;
            dbs.CastTime        = 0;
            dbs.Range           = 350;
            Spell     s  = new Spell(dbs, 50);
            SpellLine sl = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);

            return(ScriptMgr.CreateSpellHandler(m_pet, s, sl));
        }
Esempio n. 6
0
        private ISpellHandler MakeTrap()
        {
            DBSpell dbs = new DBSpell
            {
                Name            = "Increased Essence Consumption",
                Icon            = 11020,
                ClientEffect    = 11020,
                DamageType      = 10,
                Target          = "Enemy",
                Radius          = 0,
                Type            = "PetLifedrain",
                Damage          = 70,
                LifeDrainReturn = 100,
                Value           = -100,
                Duration        = 0,
                Frequency       = 0,
                Pulse           = 0,
                PulsePower      = 0,
                Power           = 0,
                CastTime        = 0,
                Range           = 350
            };

            Spell     s  = new Spell(dbs, 50);
            SpellLine sl = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);

            return(ScriptMgr.CreateSpellHandler(m_pet, s, sl));
        }
Esempio n. 7
0
        // Creates the trap(spell)
        private ISpellHandler MakeTrap()
        {
            DBSpell dbs = new DBSpell();

            dbs.Name         = "irritatin wisp";
            dbs.Icon         = 4107;
            dbs.ClientEffect = 5435;
            dbs.DamageType   = 15;
            dbs.Target       = "Enemy";
            dbs.Radius       = 0;
            dbs.Type         = "DirectDamage";
            dbs.Damage       = 80;
            dbs.Value        = 0;
            dbs.Duration     = 0;
            dbs.Frequency    = 0;
            dbs.Pulse        = 0;
            dbs.PulsePower   = 0;
            dbs.Power        = 0;
            dbs.CastTime     = 0;
            dbs.Range        = 1500;
            Spell     s  = new Spell(dbs, 50);
            SpellLine sl = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);

            return(ScriptMgr.CreateSpellHandler(m_pet, s, sl));
        }
Esempio n. 8
0
        public SongDelve(int id)
        {
            Spell spell = SkillBase.GetSpellByTooltipID((ushort)id);

            spellHandler = ScriptMgr.CreateSpellHandler(null, spell, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
            DelveType    = "Song";
            Index        = unchecked ((short)spellHandler.Spell.InternalID);
        }
 protected void CastSpell(GameLiving target)
 {
     if (target.IsAlive && _spell != null)
     {
         ISpellHandler dd = ScriptMgr.CreateSpellHandler(_player, _spell, _spellline);
         dd.IgnoreDamageCap = true;
         dd.StartSpell(target);
     }
 }
Esempio n. 10
0
 public override void Start(GameLiving target)
 {
     base.Start(target);
     if (target is GameNPC)
     {
         pet        = target as GameNPC;
         pbaoe      = ScriptMgr.CreateSpellHandler(EffectOwner, petSpell, petSpellLine);
         pulseTimer = new RegionTimer(EffectOwner, new RegionTimerCallback(PulseTimer), 1000);
         GameEventMgr.AddHandler(EffectOwner, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
     }
 }
        public void EventHandler(DOLEvent e, object sender, EventArgs arguments)
        {
            AttackFinishedEventArgs args = arguments as AttackFinishedEventArgs;

            if (args == null || args.AttackData == null)
            {
                return;
            }
            AttackData ad = args.AttackData;

            if (ad.AttackResult != GameLiving.eAttackResult.HitUnstyled && ad.AttackResult != GameLiving.eAttackResult.HitStyle)
            {
                return;
            }

            int baseChance = 0;

            if (ad.AttackType == AttackData.eAttackType.Ranged)
            {
                baseChance = (int)(Spell.Frequency * .0001);
            }
            else if (ad.IsMeleeAttack)
            {
                baseChance = ((int)Spell.Frequency);
                if (sender is GamePlayer)
                {
                    GamePlayer    player     = (GamePlayer)sender;
                    InventoryItem leftWeapon = player.Inventory.GetItem(eInventorySlot.LeftHandWeapon);
                    // if we can use left weapon, we have currently a weapon in left hand and we still have endurance,
                    // we can assume that we are using the two weapons.
                    if (player.CanUseLefthandedWeapon && leftWeapon != null && leftWeapon.Object_Type != (int)eObjectType.Shield)
                    {
                        baseChance /= 2;
                    }
                }
            }

            if (Util.Chance(15))
            {
                Spell         m_procSpell = SkillBase.GetSpellByID((int)Spell.Value);
                ISpellHandler handler     = ScriptMgr.CreateSpellHandler((GameLiving)sender, m_procSpell, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
                if (handler != null)
                {
                    if (m_procSpell.Target == "Enemy")
                    {
                        handler.StartSpell(ad.Target);
                    }
                    else if (m_procSpell.Target == "Self")
                    {
                        handler.StartSpell(ad.Attacker);
                    }
                }
            }
        }
        protected override void ResurrectLiving(GameLiving living)
        {
            base.ResurrectLiving(living);

            SpellLine line      = SkillBase.GetSpellLine("Summon Monster");
            Spell     castSpell = SkillBase.GetSpellByID(14078);

            ISpellHandler spellhandler = ScriptMgr.CreateSpellHandler(m_caster, castSpell, line);

            spellhandler.StartSpell(living);
        }
Esempio n. 13
0
        /// <summary>
        /// Action
        /// </summary>
        /// <param></param>
        public override void Execute(GameLiving living)
        {
            if (CheckPreconditions(living, DEAD | SITTING | MEZZED | STUNNED))
            {
                return;
            }

            GamePlayer player = living as GamePlayer;

            if (player?.Group != null)
            {
                foreach (GamePlayer member in player.Group.GetPlayersInTheGroup())
                {
                    if (member.CharacterClass.ID == 1 || member.CharacterClass.ID == 2) // Plate
                    {
                        Spell         spell1        = SkillBase.GetSpellByID(36005);    // 34 % Absorb-Spell
                        ISpellHandler spellhandler1 = ScriptMgr.CreateSpellHandler(player, spell1, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
                        spellhandler1.StartSpell(member);
                    }
                    else if (member.CharacterClass.ID == 9 || member.CharacterClass.ID == 10 || member.CharacterClass.ID == 23 || member.CharacterClass.ID == 49 || member.CharacterClass.ID == 58) // Leather
                    {
                        Spell         spell2        = SkillBase.GetSpellByID(36002);                                                                                                                // 10 % Absorb-Spell
                        ISpellHandler spellhandler2 = ScriptMgr.CreateSpellHandler(player, spell2, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
                        spellhandler2.StartSpell(member);
                    }
                    else if (member.CharacterClass.ID == 3 || member.CharacterClass.ID == 25 || member.CharacterClass.ID == 31 || member.CharacterClass.ID == 32 || member.CharacterClass.ID == 43 || member.CharacterClass.ID == 48 || member.CharacterClass.ID == 50 || member.CharacterClass.ID == 25) // Studderd
                    {
                        Spell         spell3        = SkillBase.GetSpellByID(36003);                                                                                                                                                                                                                      // 19 % Absorb-Spell
                        ISpellHandler spellhandler3 = ScriptMgr.CreateSpellHandler(player, spell3, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
                        spellhandler3.StartSpell(member);
                    }
                    else if (member.CharacterClass.ID == 4 || member.CharacterClass.ID == 6 || member.CharacterClass.ID == 11 || member.CharacterClass.ID == 19 || member.CharacterClass.ID == 21 || member.CharacterClass.ID == 22 || member.CharacterClass.ID == 24 || member.CharacterClass.ID == 26 || member.CharacterClass.ID == 28 || member.CharacterClass.ID == 34 || member.CharacterClass.ID == 44 || member.CharacterClass.ID == 45 || member.CharacterClass.ID == 46 || member.CharacterClass.ID == 47) // Chain
                    {
                        Spell         spell4        = SkillBase.GetSpellByID(36004);                                                                                                                                                                                                                                                                                                                                                                                                                                 // 24 % Absorb-Spell
                        ISpellHandler spellhandler4 = ScriptMgr.CreateSpellHandler(player, spell4, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
                        spellhandler4.StartSpell(member);
                    }
                    else
                    {
                        Spell         spell5        = SkillBase.GetSpellByID(36001); // 0 % Absorb-Spell
                        ISpellHandler spellhandler5 = ScriptMgr.CreateSpellHandler(player, spell5, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
                        spellhandler5.StartSpell(member);
                    }
                }
            }
            else
            {
                player?.Out.SendMessage("You need a group for this Ability!", eChatType.CT_SpellResisted, eChatLoc.CL_SystemWindow);
                return;
            }

            DisableSkill(living);
        }
Esempio n. 14
0
 protected override void CastSpell(GameLiving target)
 {
     if (!target.IsAlive)
     {
         return;
     }
     if (GameServer.ServerRules.IsAllowedToAttack(m_caster, target, true))
     {
         ISpellHandler stun = ScriptMgr.CreateSpellHandler(m_caster, s, sl);
         stun.StartSpell(target);
     }
 }
Esempio n. 15
0
        protected override void CastSpell(GameLiving target)
        {
            if (!target.IsAlive)
            {
                return;
            }

            if (GameServer.ServerRules.IsAllowedToAttack(Caster, target, true))
            {
                ISpellHandler damage = ScriptMgr.CreateSpellHandler(Caster, _spell, _spellLine);
                damage.StartSpell(target);
            }
        }
Esempio n. 16
0
 public override void FinishSpellCast(GameLiving target)
 {
     if (m_spell.SubSpellID > 0)
     {
         Spell spell = SkillBase.GetSpellByID(m_spell.SubSpellID);
         if (spell != null && spell.SubSpellID == 0)
         {
             ISpellHandler spellhandler = ScriptMgr.CreateSpellHandler(m_caster, spell, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
             spellhandler.StartSpell(Caster);
         }
     }
     base.FinishSpellCast(target);
 }
Esempio n. 17
0
        // constructor
        public FOPSpellHandler(GameLiving caster, Spell spell, SpellLine line)
            : base(caster, spell, line)
        {
            ApplyOnNPC = false;

            // Construct a new font.
            font = new GameFont
            {
                Model           = 2583,
                Name            = spell.Name,
                Realm           = caster.Realm,
                X               = caster.X,
                Y               = caster.Y,
                Z               = caster.Z,
                CurrentRegionID = caster.CurrentRegionID,
                Heading         = caster.Heading,
                Owner           = (GamePlayer)caster
            };

            // Construct the font spell
            dbs = new DBSpell
            {
                Name            = spell.Name,
                Icon            = 7212,
                ClientEffect    = 7212,
                Damage          = spell.Damage,
                DamageType      = (int)spell.DamageType,
                Target          = "Realm",
                Radius          = 0,
                Type            = "PowerOverTime",
                Value           = spell.Value,
                Duration        = spell.ResurrectHealth,
                Frequency       = spell.ResurrectMana,
                Pulse           = 0,
                PulsePower      = 0,
                LifeDrainReturn = spell.LifeDrainReturn,
                Power           = 0,
                CastTime        = 0,
                Range           = WorldMgr.VISIBILITY_DISTANCE,
                Message1        = spell.Message1,
                Message2        = spell.Message2,
                Message3        = spell.Message3,
                Message4        = spell.Message4
            };

            sRadius = 350;
            s       = new Spell(dbs, 1);
            sl      = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);
            heal    = ScriptMgr.CreateSpellHandler(Caster, s, sl);
        }
Esempio n. 18
0
        public void CastBuffs()
        {
            while (_mBuffs.Count > 0)
            {
                var con = (Container)_mBuffs.Dequeue();

                var spellHandler = ScriptMgr.CreateSpellHandler(this, con.Spell, con.SpellLine);

                if (spellHandler != null)
                {
                    spellHandler.StartSpell(con.Target);
                }
            }
        }
Esempio n. 19
0
        // constructor
        public SpeedWrapWardSpellHandler(GameLiving caster, Spell spell, SpellLine line)
            : base(caster, spell, line)
        {
            ApplyOnCombat = true;
            Friendly      = false;

            // Construct a new mine.
            font = new GameFont
            {
                Model           = 2586,
                Name            = spell.Name,
                Realm           = caster.Realm,
                X               = caster.X,
                Y               = caster.Y,
                Z               = caster.Z,
                CurrentRegionID = caster.CurrentRegionID,
                Heading         = caster.Heading,
                Owner           = (GamePlayer)caster
            };

            // Construct the mine spell
            dbs = new DBSpell
            {
                Name            = spell.Name,
                Icon            = 7237,
                ClientEffect    = 7237,
                Damage          = spell.Damage,
                DamageType      = (int)spell.DamageType,
                Target          = "Enemy",
                Radius          = 0,
                Type            = "SpeedWrap",
                Value           = spell.Value,
                Duration        = spell.ResurrectHealth,
                Frequency       = spell.ResurrectMana,
                Pulse           = 0,
                PulsePower      = 0,
                LifeDrainReturn = spell.LifeDrainReturn,
                Power           = 0,
                CastTime        = 0,
                Range           = WorldMgr.VISIBILITY_DISTANCE
            };

            sRadius        = 1000;
            dbs.SpellGroup = 9;
            s    = new Spell(dbs, 50);
            sl   = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);
            heal = ScriptMgr.CreateSpellHandler(Caster, s, sl);
        }
Esempio n. 20
0
        // constructor
        public SiegeWreckerSpellHandler(GameLiving caster, Spell spell, SpellLine line)
            : base(caster, spell, line)
        {
            Unstealth = false;

            // Construct a new mine.
            mine = new GameMine
            {
                Model           = 2591,
                Name            = spell.Name,
                Realm           = caster.Realm,
                X               = caster.X,
                Y               = caster.Y,
                Z               = caster.Z,
                MaxSpeedBase    = 0,
                CurrentRegionID = caster.CurrentRegionID,
                Heading         = caster.Heading,
                Owner           = (GamePlayer)caster
            };

            // Construct the mine spell
            dbs = new DBSpell
            {
                Name            = spell.Name,
                Icon            = 7301,
                ClientEffect    = 7301,
                Damage          = spell.Damage,
                DamageType      = (int)spell.DamageType,
                Target          = "Enemy",
                Radius          = 0,
                Type            = "DirectDamage",
                Value           = spell.Value,
                Duration        = spell.ResurrectHealth,
                Frequency       = spell.ResurrectMana,
                Pulse           = 0,
                PulsePower      = 0,
                LifeDrainReturn = spell.LifeDrainReturn,
                Power           = 0,
                CastTime        = 0,
                Range           = WorldMgr.VISIBILITY_DISTANCE
            };

            sRadius = 350;
            s       = new Spell(dbs, 1);
            sl      = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);
            trap    = ScriptMgr.CreateSpellHandler(Caster, s, sl);
        }
Esempio n. 21
0
        /// <summary>
        /// Handler fired whenever effect target is attacked
        /// </summary>
        /// <param name="e"></param>
        /// <param name="sender"></param>
        /// <param name="arguments"></param>
        protected override void EventHandler(DOLEvent e, object sender, EventArgs arguments)
        {
            AttackedByEnemyEventArgs args = arguments as AttackedByEnemyEventArgs;

            if (args == null || args.AttackData == null || args.AttackData.AttackType == AttackData.eAttackType.Spell)
            {
                return;
            }

            AttackData ad = args.AttackData;

            if (ad.AttackResult != GameLiving.eAttackResult.HitUnstyled && ad.AttackResult != GameLiving.eAttackResult.HitStyle)
            {
                return;
            }

            int baseChance = Spell.Frequency / 100;

            if (ad.AttackType == AttackData.eAttackType.MeleeDualWield)
            {
                baseChance /= 2;
            }

            if (baseChance < 1)
            {
                baseChance = 1;
            }

            if (Util.Chance(baseChance))
            {
                ISpellHandler handler = ScriptMgr.CreateSpellHandler((GameLiving)sender, m_procSpell, m_procSpellLine);
                if (handler != null)
                {
                    switch (m_procSpell.Target.ToLower())
                    {
                    case "enemy":
                        handler.StartSpell(ad.Attacker);
                        break;

                    default:
                        handler.StartSpell(ad.Target);
                        break;
                    }
                }
            }
        }
Esempio n. 22
0
        // constructor
        public FOPSpellHandler(GameLiving caster, Spell spell, SpellLine line)
            : base(caster, spell, line)
        {
            ApplyOnNPC = false;

            //Construct a new font.
            font                 = new GameFont();
            font.Model           = 2583;
            font.Name            = spell.Name;
            font.Realm           = caster.Realm;
            font.X               = caster.X;
            font.Y               = caster.Y;
            font.Z               = caster.Z;
            font.CurrentRegionID = caster.CurrentRegionID;
            font.Heading         = caster.Heading;
            font.Owner           = (GamePlayer)caster;

            // Construct the font spell
            dbs                 = new DBSpell();
            dbs.Name            = spell.Name;
            dbs.Icon            = 7212;
            dbs.ClientEffect    = 7212;
            dbs.Damage          = spell.Damage;
            dbs.DamageType      = (int)spell.DamageType;
            dbs.Target          = "Realm";
            dbs.Radius          = 0;
            dbs.Type            = "PowerOverTime";
            dbs.Value           = spell.Value;
            dbs.Duration        = spell.ResurrectHealth;
            dbs.Frequency       = spell.ResurrectMana;
            dbs.Pulse           = 0;
            dbs.PulsePower      = 0;
            dbs.LifeDrainReturn = spell.LifeDrainReturn;
            dbs.Power           = 0;
            dbs.CastTime        = 0;
            dbs.Range           = WorldMgr.VISIBILITY_DISTANCE;
            dbs.Message1        = spell.Message1;
            dbs.Message2        = spell.Message2;
            dbs.Message3        = spell.Message3;
            dbs.Message4        = spell.Message4;
            sRadius             = 350;
            s    = new Spell(dbs, 1);
            sl   = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);
            heal = ScriptMgr.CreateSpellHandler(m_caster, s, sl);
        }
Esempio n. 23
0
            protected override void OnTick()
            {
                GameLiving target = m_boltTarget;
                GameLiving caster = (GameLiving)m_actionSource;

                if (target == null)
                {
                    return;
                }
                if (target.CurrentRegion.ID != caster.CurrentRegion.ID)
                {
                    return;
                }
                if (target.ObjectState != GameObject.eObjectState.Active)
                {
                    return;
                }
                if (!target.IsAlive)
                {
                    return;
                }
                if (target == null)
                {
                    return;
                }
                if (!target.IsAlive || target.ObjectState != GameLiving.eObjectState.Active)
                {
                    return;
                }

                AttackData ad = m_handler.CalculateDamageToTarget(target, 1);

                ad.Damage = (int)m_handler.Spell.Damage;
                m_handler.SendDamageMessages(ad);
                m_handler.DamageTarget(ad, false);

                //if (m_handler.Spell.SubSpellID != 0) Spell subspell = m_handler.SkillBase.GetSpellByID(m_handler.Spell.SubSpellID);
                if (m_handler.Spell.SubSpellID != 0 && SkillBase.GetSpellByID(m_handler.Spell.SubSpellID) != null)
                {
                    ISpellHandler spellhandler = ScriptMgr.CreateSpellHandler(caster, SkillBase.GetSpellByID(m_handler.Spell.SubSpellID), SkillBase.GetSpellLine("Mob Spells"));
                    spellhandler.StartSpell(target);
                }

                target.StartInterruptTimer(target.SpellInterruptDuration, AttackData.eAttackType.Spell, caster);
            }
Esempio n. 24
0
        public override int OnEffectExpires(GameSpellEffect effect, bool noMessages)
        {
            if (effect.Owner is GamePlayer)
            {
                GamePlayer player   = effect.Owner as GamePlayer;
                Spell      subspell = SkillBase.GetSpellByID(Spell.ResurrectMana);
                if (subspell != null)
                {
                    subspell.Level = Spell.Level;
                    ISpellHandler spellhandler = ScriptMgr.CreateSpellHandler(Caster, subspell, SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells));
                    spellhandler?.StartSpell(Caster);
                }

                GameEventMgr.RemoveHandler(player, GameLivingEvent.AttackedByEnemy, new DOLEventHandler(OnAttack));
            }

            return(base.OnEffectExpires(effect, noMessages));
        }
Esempio n. 25
0
        // constructor
        public SenseDullingCloudSpellHandler(GameLiving caster, Spell spell, SpellLine line)
            : base(caster, spell, line)
        {
            // Construct a new storm.
            storm = new GameStorm
            {
                Realm           = caster.Realm,
                X               = caster.X,
                Y               = caster.Y,
                Z               = caster.Z,
                CurrentRegionID = caster.CurrentRegionID,
                Heading         = caster.Heading,
                Owner           = (GamePlayer)caster,
                Movable         = true
            };

            // Construct the storm spell
            dbs = new DBSpell
            {
                Name            = spell.Name,
                Icon            = 7305,
                ClientEffect    = 7305,
                Damage          = spell.Damage,
                DamageType      = (int)spell.DamageType,
                Target          = "Enemy",
                Radius          = 0,
                Type            = "StormAcuityDebuff",
                Value           = spell.Value,
                Duration        = spell.ResurrectHealth,
                Frequency       = spell.ResurrectMana,
                Pulse           = 0,
                PulsePower      = 0,
                LifeDrainReturn = spell.LifeDrainReturn,
                Power           = 0,
                CastTime        = 0,
                Range           = WorldMgr.VISIBILITY_DISTANCE
            };

            // should be 2
            sRadius = 350;
            s       = new Spell(dbs, 1);
            sl      = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);
            tempest = ScriptMgr.CreateSpellHandler(Caster, s, sl);
        }
 protected override void CastSpell(GameLiving target)
 {
     if (!target.IsAlive)
     {
         return;
     }
     if (GameServer.ServerRules.IsAllowedToAttack(m_caster, target, true))
     {
         int dealDamage = damage;
         if (getCurrentPulse() <= 6)
         {
             dealDamage = (int)Math.Round(((double)getCurrentPulse() / 6 * damage));
         }
         dbs.Damage = dealDamage;
         s          = new Spell(dbs, 1);
         ISpellHandler dd = ScriptMgr.CreateSpellHandler(m_caster, s, sl);
         dd.StartSpell(target);
     }
 }
Esempio n. 27
0
        // constructor
        public SpeedWrapWardSpellHandler(GameLiving caster, Spell spell, SpellLine line)
            : base(caster, spell, line)
        {
            ApplyOnCombat = true;
            Friendly      = false;

            //Construct a new mine.
            font                 = new GameFont();
            font.Model           = 2586;
            font.Name            = spell.Name;
            font.Realm           = caster.Realm;
            font.X               = caster.X;
            font.Y               = caster.Y;
            font.Z               = caster.Z;
            font.CurrentRegionID = caster.CurrentRegionID;
            font.Heading         = caster.Heading;
            font.Owner           = (GamePlayer)caster;

            // Construct the mine spell
            dbs                 = new DBSpell();
            dbs.Name            = spell.Name;
            dbs.Icon            = 7237;
            dbs.ClientEffect    = 7237;
            dbs.Damage          = spell.Damage;
            dbs.DamageType      = (int)spell.DamageType;
            dbs.Target          = "Enemy";
            dbs.Radius          = 0;
            dbs.Type            = "SpeedWrap";
            dbs.Value           = spell.Value;
            dbs.Duration        = spell.ResurrectHealth;
            dbs.Frequency       = spell.ResurrectMana;
            dbs.Pulse           = 0;
            dbs.PulsePower      = 0;
            dbs.LifeDrainReturn = spell.LifeDrainReturn;
            dbs.Power           = 0;
            dbs.CastTime        = 0;
            dbs.Range           = WorldMgr.VISIBILITY_DISTANCE;
            sRadius             = 1000;
            dbs.SpellGroup      = 9;
            s    = new Spell(dbs, 50);
            sl   = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);
            heal = ScriptMgr.CreateSpellHandler(m_caster, s, sl);
        }
Esempio n. 28
0
        // constructor
        public SiegeWreckerSpellHandler(GameLiving caster, Spell spell, SpellLine line)
            : base(caster, spell, line)
        {
            Unstealth = false;

            //Construct a new mine.
            mine                 = new GameMine();
            mine.Model           = 2591;
            mine.Name            = spell.Name;
            mine.Realm           = caster.Realm;
            mine.X               = caster.X;
            mine.Y               = caster.Y;
            mine.Z               = caster.Z;
            mine.MaxSpeedBase    = 0;
            mine.CurrentRegionID = caster.CurrentRegionID;
            mine.Heading         = caster.Heading;
            mine.Owner           = (GamePlayer)caster;

            // Construct the mine spell
            dbs                 = new DBSpell();
            dbs.Name            = spell.Name;
            dbs.Icon            = 7301;
            dbs.ClientEffect    = 7301;
            dbs.Damage          = spell.Damage;
            dbs.DamageType      = (int)spell.DamageType;
            dbs.Target          = "Enemy";
            dbs.Radius          = 0;
            dbs.Type            = "DirectDamage";
            dbs.Value           = spell.Value;
            dbs.Duration        = spell.ResurrectHealth;
            dbs.Frequency       = spell.ResurrectMana;
            dbs.Pulse           = 0;
            dbs.PulsePower      = 0;
            dbs.LifeDrainReturn = spell.LifeDrainReturn;
            dbs.Power           = 0;
            dbs.CastTime        = 0;
            dbs.Range           = WorldMgr.VISIBILITY_DISTANCE;
            sRadius             = 350;
            s    = new Spell(dbs, 1);
            sl   = SkillBase.GetSpellLine(GlobalSpellsLines.Reserved_Spells);
            trap = ScriptMgr.CreateSpellHandler(m_caster, s, sl);
        }
Esempio n. 29
0
        public virtual void CastSpellnoLOSchecks(Spell spell, SpellLine line)
        {
            if ((m_runningSpellHandler != null && spell.CastTime > 0))
            {
                Notify(GameLivingEvent.CastFailed, this, new CastFailedEventArgs(null, CastFailedEventArgs.Reasons.AlreadyCasting));
                return;
            }
            ISpellHandler spellhandler = ScriptMgr.CreateSpellHandler(this, spell, line);

            if (spellhandler != null)
            {
                m_runningSpellHandler              = spellhandler;
                spellhandler.CastingCompleteEvent += new CastingCompleteCallback(OnAfterSpellCastSequence);
                spellhandler.CastSpell();
            }
            else
            {
                return;
            }
        }
Esempio n. 30
0
        protected override void CastSpell(GameLiving target)
        {
            if (!target.IsAlive)
            {
                return;
            }

            if (GameServer.ServerRules.IsAllowedToAttack(Caster, target, true))
            {
                int dealDamage = _damage;
                if (CurrentPulse <= 6)
                {
                    dealDamage = (int)Math.Round((double)CurrentPulse / 6 * _damage);
                }

                _dbSpell.Damage = dealDamage;
                _spell          = new Spell(_dbSpell, 1);
                ISpellHandler dd = ScriptMgr.CreateSpellHandler(Caster, _spell, _spellLine);
                dd.StartSpell(target);
            }
        }