// 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); }
/// <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); } }
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)); }
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)); }
// 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)); }
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); } }
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); }
/// <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); }
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); } }
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); } }
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); }
// 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); }
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); } } }
// 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); }
// 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); }
/// <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; } } } }
// 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); }
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); }
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)); }
// 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); } }
// 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); }
// 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); }
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; } }
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); } }