예제 #1
0
        public override void OnCast()
        {
            if (CheckSequence())
            {
                bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Summoner, false, true);

                BaseCreature summon = new SummonedDaemon();

                summon.StoreBaseSummonValues();

                double duration = 4.0 * Caster.Skills[SkillName.Magery].Value;

                if (enhancedSpellcast)
                {
                    duration *= SpellHelper.EnhancedSummonDurationMultiplier;

                    summon.DamageMin = (int)((double)summon.DamageMin * SpellHelper.EnhancedSummonDamageMultiplier);
                    summon.DamageMax = (int)((double)summon.DamageMax * SpellHelper.EnhancedSummonDamageMultiplier);

                    summon.SetHitsMax((int)((double)summon.HitsMax * SpellHelper.EnhancedSummonHitPointsMultiplier));
                    summon.Hits = summon.HitsMax;
                }

                summon.SetDispelResistance(Caster, enhancedSpellcast, 0);

                int spellHue = Enhancements.GetMobileSpellHue(Caster, Enhancements.SpellType.SummonDaemon);

                summon.Hue = spellHue;

                SpellHelper.Summon(summon, Caster, 0x217, TimeSpan.FromSeconds(duration), false, false);
            }

            FinishSequence();
        }
예제 #2
0
        public override void OnCast()
        {
            if (CheckSequence())
            {
                TimeSpan duration = TimeSpan.FromSeconds((2 * Caster.Skills.Magery.Fixed) / 5);

                if (Caster.EraAOS)                 /* Why two diff daemons? TODO: solve this */
                {
                    BaseCreature m_Daemon = new SummonedDaemon();
                    SpellHelper.Summon(m_Daemon, Caster, 0x216, duration, false, false);
                    m_Daemon.FixedParticles(0x3728, 8, 20, 5042, EffectLayer.Head);
                }
                else if (Caster.EraUOR)
                {
                    SpellHelper.Summon(new Daemon(), Caster, 0x216, duration, false, false);
                }
                else
                {
                    // HACK: Convert to T2A mechanis.
                    SpellHelper.Summon(new Daemon(), Caster, 0x216, duration, false, false);
                }
            }

            FinishSequence();
        }
예제 #3
0
        public override void OnCast()
        {
            if (CheckSequence())
            {
                TimeSpan duration = TimeSpan.FromSeconds((2 * Caster.Skills.Magery.Fixed) / 5);

                if (Core.AOS)                    /* Why two diff daemons? TODO: solve this */
                {
                    BaseCreature m_Daemon = new SummonedDaemon();
                    SpellHelper.Summon(m_Daemon, Caster, 0x216, duration, false, false);
                    m_Daemon.FixedParticles(0x3728, 8, 20, 5042, EffectLayer.Head);
                    if (Caster is BaseCreature)
                    {
                        m_Daemon.ControlOrder = OrderType.Guard;
                        if (Caster.Combatant != null)
                        {
                            m_Daemon.Combatant = Caster.Combatant;
                        }
                    }
                }
                else
                {
                    SpellHelper.Summon(new Daemon(), Caster, 0x216, duration, false, false);
                }
            }

            FinishSequence();
        }
예제 #4
0
        public override void OnCast()
        {
            if (CheckSequence())
            {
                TimeSpan duration = TimeSpan.FromSeconds((2 * Caster.Skills.Magery.Fixed) / 5);

                BaseCreature m_Daemon = new SummonedDaemon();
                SpellHelper.Summon(m_Daemon, Caster, 0x216, duration, false, false);
                m_Daemon.FixedParticles(0x3728, 8, 20, 5042, EffectLayer.Head);
            }

            FinishSequence();
        }
예제 #5
0
        public override void OnCast()
        {
            if (this.CheckSequence())
            {
                TimeSpan duration = TimeSpan.FromSeconds((2 * this.Caster.Skills.Magery.Fixed) / 5);

                if (Core.AOS)  /* Why two diff daemons? TODO: solve this */
                {
                    BaseCreature m_Daemon = new SummonedDaemon();
                    SpellHelper.Summon(m_Daemon, this.Caster, 0x216, duration, false, false);
                    m_Daemon.FixedParticles(0x3728, 8, 20, 5042, EffectLayer.Head);
                }
                else
                {
                    SpellHelper.Summon(new Daemon(), this.Caster, 0x216, duration, false, false);
                }
                Titles.AwardKarma(this.Caster, -50, true);
            }

            this.FinishSequence();
        }
예제 #6
0
        public override void OnCast()
        {
            if (CheckSequence())
            {
                TimeSpan duration = TimeSpan.FromSeconds((Caster.Skills[SkillName.Magery].Value + Caster.Skills[SkillName.EvalInt].Value) * 9);

                if (Caster.CheckTargetSkill(SkillName.EvalInt, Caster, 0.0, 120.0))
                {
                    BaseCreature m_Daemon = new SummonedDaemonGreater();
                    SpellHelper.Summon(m_Daemon, Caster, 0x216, duration, false, false);
                    m_Daemon.FixedParticles(0x3728, 8, 20, 5042, Server.Items.CharacterDatabase.GetMySpellHue(Caster, 0), 0, EffectLayer.Head);
                }
                else
                {
                    BaseCreature m_Daemon = new SummonedDaemon();
                    SpellHelper.Summon(m_Daemon, Caster, 0x216, duration, false, false);
                    m_Daemon.FixedParticles(0x3728, 8, 20, 5042, Server.Items.CharacterDatabase.GetMySpellHue(Caster, 0), 0, EffectLayer.Head);
                }
            }

            FinishSequence();
        }
예제 #7
0
        public override void OnCast()
        {
            if (this.CheckSequence())
            {
                TimeSpan duration = TimeSpan.FromSeconds((2 * this.Caster.Skills.Magery.Fixed) / 5);
                var      ssDurationBonusSeconds = this.Caster.Skills[SkillName.SpiritSpeak].Value;
                duration.Add(TimeSpan.FromSeconds(ssDurationBonusSeconds));

                if (Core.AOS)  /* Why two diff daemons? TODO: solve this */
                {
                    BaseCreature m_Daemon = new SummonedDaemon();
                    SpellHelper.Summon(m_Daemon, this.Caster, 0x216, duration, false, false);
                    m_Daemon.FixedParticles(0x3728, 8, 20, 5042, EffectLayer.Head);
                }
                else
                {
                    SpellHelper.Summon(new Daemon(), this.Caster, 0x216, duration, false, false);
                }
            }

            this.FinishSequence();
        }