コード例 #1
0
        private void Mirage()
        {
            TeiravonMobile caster = (TeiravonMobile)this.ControlMaster;

            if (caster == null)
            {
                caster = (TeiravonMobile)this.SummonMaster;
            }

            if (caster == null)
            {
                return;
            }

            if (!caster.Warmode)
            {
                return;
            }
            MirrorImage.AddClone(caster);

            caster.FixedParticles(0x376A, 1, 14, 0x13B5, EffectLayer.Waist);
            caster.PlaySound(0x594);

            new Clone(caster).MoveToWorld(caster.Location, caster.Map);

            return;
        }
コード例 #2
0
        public static void ShapeshiftFunctions(bool shift, int slot, TeiravonMobile player)
        {
            int    slotnumber = slot - 1;
            int    difficulty = player.ShapeshiftSlotLevel[slotnumber];
            int    formhue    = player.ShapeshiftSlotHue[slotnumber];
            string formname   = player.ShapeshiftSlotName[slotnumber];

            DateTime ShapeshiftTime;

            if (shift)
            {
                player.DruidForm      = player.ShapeshiftSlot[slotnumber];
                player.DruidFormGroup = player.ShapeshiftSlotLevel[slotnumber];
                if (!player.Shapeshifted)
                {
                    player.ShapeshiftHue = player.Hue;
                }
                if (player.DruidFormGroup == 5)
                {
                    player.Send(Server.Network.SpeedMode.Run);
                }

                player.FixedParticles(0x377A, 1, 50, 9949, 1153, 0, EffectLayer.Head);
                player.SendMessage("You begin to transform into an animal.");

                player.Paralyze(TimeSpan.FromSeconds(3.0));

                ShapeshiftTime = DateTime.Now + TimeSpan.FromSeconds(3.0);

                player.NameMod = player.ShapeshiftSlotName[slotnumber];
            }

            else
            {
                if (player.DruidFormGroup == 5)
                {
                    player.Send(Server.Network.SpeedMode.Disabled);
                }

                player.DruidForm      = 0;
                player.DruidFormGroup = -1;
                player.SendMessage("You begin transforming back to normal.");

                player.Paralyze(TimeSpan.FromSeconds(2.0));
                player.NameMod = null;

                ShapeshiftTime = DateTime.Now + TimeSpan.FromSeconds(2.0);
            }


            Timer m_Timer = new CustomTransformTimer(player, shift, slotnumber, difficulty, formhue, formname, ShapeshiftTime);

            m_Timer.Start();
        }
コード例 #3
0
            protected override void OnTick()
            {
                m_Summoner.FixedParticles(0x3779, 10, 100, 9502, 67, 7, EffectLayer.Head);
                m_Summoner.PlaySound(0x24A);
                m_Summoner.RevealingAction();

                if (!(m_Summoner.Mounted) && (m_Summoner.Body.IsHuman))
                {
                    m_Summoner.Animate(266, 7, 1, true, false, 0);
                }

                if (RunCount < MaxCount)
                {
                    RunCount++;
                    Timer m_EffectTimer = new EffectTimer(m_Summoner, RunCount, MaxCount, DateTime.Now + TimeSpan.FromSeconds(3.0));
                    m_EffectTimer.Start();
                }
            }
コード例 #4
0
        public static void GivePrayer(TeiravonMobile from)
        {
            TeiravonMobile Caster = from;
            int            min, max;

            min = 1 + (int)(Caster.Skills[SkillName.SpiritSpeak].Value * 0.25);
            max = min + Caster.PlayerLevel / 2;
            if (Caster.CheckSkill(SkillName.SpiritSpeak, 0.0, 120.0))
            {
                Caster.Mana += Utility.RandomMinMax(min, max);
                Caster.PublicOverheadMessage(MessageType.Emote, 0x3B2, true, "*Bows their head*");
                Caster.PlaySound(0x103);
                Caster.FixedParticles(0x375A, 1, 15, 9501, 391, 4, EffectLayer.Head);
                Caster.Freeze(TimeSpan.FromSeconds(1));
                return;
            }
            else
            {
                Caster.SendMessage("You are unable to clear your mind for prayer.");
                return;
            }
        }
コード例 #5
0
        public override void OnCast()
        {
            if (CheckSequence())
            {
                if (Caster is TeiravonMobile)
                {
                    TeiravonMobile tm_caster = (TeiravonMobile)Caster;
                    if (tm_caster.IsMage())
                    {
                        tm_caster.FixedParticles(0x375A, 9, 20, 5027, EffectLayer.Waist);
                        tm_caster.PlaySound(0x1F7);

                        int bonus = tm_caster.PlayerLevel * 5;

                        /*
                         * double spelllength = (tm_caster.Skills[SkillName.Magery].Value / 10) + 5.0;
                         * tm_caster.AddSkillMod( new TimedSkillMod( SkillName.MagicResist, true, bonus, TimeSpan.FromMinutes( spelllength ) ) );
                         * new InternalTimer( Caster ).Start();
                         */
                        tm_caster.VirtualArmorMod = (int)GetAosDamage(bonus, 2, 10);
                        string shield = tm_caster.VirtualArmorMod.ToString();
                        tm_caster.LocalOverheadMessage(MessageType.Emote, 90, true, shield);
                    }
                    else
                    {
                        ArrayList targets = new ArrayList();

                        Map map = Caster.Map;

                        if (map != null)
                        {
                            IPooledEnumerable eable = map.GetMobilesInRange(Caster.Location, 4);

                            foreach (Mobile m in eable)
                            {
                                if (Caster.CanBeBeneficial(m, false))
                                {
                                    targets.Add(m);
                                }
                            }

                            eable.Free();
                        }

                        Party party = Party.Get(Caster);

                        for (int i = 0; i < targets.Count; ++i)
                        {
                            Mobile m = (Mobile)targets[i];

                            if (m == Caster || (party != null && party.Contains(m)))
                            {
                                if (!Spells.Fourth.ArchProtectionSpell.Registry.ContainsKey(m))
                                {
                                    Caster.DoBeneficial(m);
                                    m.PlaySound(0x1E9);
                                    m.FixedParticles(0x375A, 9, 20, 5016, EffectLayer.Waist);
                                    Spells.Fourth.ArchProtectionSpell.Registry.Add(m, 1);
                                }
                            }
                        }
                    }
                }
            }
        }