Anasayfa
UO Sunucular
Forumlar
Profilim
Bilinmiyor 30-08-2009
using System;
using System.Collections;
using Server;
using Server.Items;

namespace Server.Mobiles
{
    [CorpseName( "a burning corpse" )]
    public class FireWyrm : BaseCreature
    {
        [Constructable]
        public FireWyrm () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
        {
            Body = 49;
            Hue = 0x489;
            Name = "a fire wyrm";
            BaseSoundID = 362;

            SetStr( 555, 820 );
            SetDex( 321, 370 );
            SetInt( 498, 657 );

            SetHits( 2800, 2980 );

            SetDamage( 38, 45 );

            SetDamageType( ResistanceType.Physical, 75 );
            SetDamageType( ResistanceType.Fire, 100 );

            SetResistance( ResistanceType.Physical, 80, 90 );
            SetResistance( ResistanceType.Fire, 100, 150 );
            SetResistance( ResistanceType.Cold, 40, 50 );
            SetResistance( ResistanceType.Poison, 50, 60 );
            SetResistance( ResistanceType.Energy, 80, 90 );

            SetSkill( SkillName.EvalInt, 190.1, 200.0 );
            SetSkill( SkillName.Magery, 199.1, 200.0 );
            SetSkill( SkillName.Meditation, 190.1, 200.0 );
            SetSkill( SkillName.MagicResist, 200.5, 250.0 );
            SetSkill( SkillName.Tactics, 180.1, 190.0 );
            SetSkill( SkillName.Wrestling, 180.1, 190.0 );

            Fame = 24000;
            Karma = -24000;

            VirtualArmor = 60;
           
Tamable = true;
                  MinTameSkill = 110.0;

                  ControlSlots = 4;

           
        }

        public override void GenerateLoot()
        {
            AddLoot( LootPack.FilthyRich, 3 );
            AddLoot( LootPack.MedScrolls, 2 );
        }
       
        public override bool HasBreath{ get{ return true; } } // fire breath enabled
        public override bool AutoDispel{ get{ return true; } }
        public override int TreasureMapLevel{ get{ return 4; } }
        public override int Meat{ get{ return 19; } }
        public override int Hides{ get{ return 20; } }
        public override HideType HideType{ get{ return HideType.Barbed; } }
        public override int Scales{ get{ return 9; } }
        public override ScaleType ScaleType{ get{ return ScaleType.White; } }

        public void FlameStrike()
        {
            ArrayList list = new ArrayList();

            foreach ( Mobile m in this.GetMobilesInRange( 10 ) )
            {
                if ( m == this || !CanBeHarmful( m ) )
                    continue;

                if ( m is BaseCreature && (((BaseCreature)m).Controled ||

((BaseCreature)m).Summoned || ((BaseCreature)m).Team != this.Team) )
                    list.Add( m );

            }

            foreach ( Mobile m in list )
            {
                DoHarmful( m );

                m.FixedParticles( 0x3709, 10, 30, 5052, EffectLayer.LeftFoot );
                m.PlaySound( 0x208 );

                m.SendMessage( "Your skin blisters as the fire burns you!" );

                int toStrike = Utility.RandomMinMax( 80, 90 );

                Hits += toStrike;
                m.Damage( toStrike, this );
            }
        }

        public override void OnGaveMeleeAttack( Mobile defender )//Attack yaptigi kisi
        {


           if (defender is PlayerMobile)//defender saldirigi kisi eger PlayerMobile a sahip ise

yani player ise
            {
                ControlOrder = OrderType.Stop;//ControlOrder(hayvanin control sekli) stop

yapiliyor.
                Say( "Adam gibi oyna." );//Opsiyonel.
            }
            else//eger saldirdigi bir player degilde yaratirk ise yapmasi gerekeni yapiyor
            {


                base.OnGaveMeleeAttack( defender );


                if (0.1 > Utility.RandomDouble())
                {
                    /* Grasping Claw
                     * Start cliloc: 1070836
                     * Effect: Physical resistance -15% for 5 seconds
                     * End cliloc: 1070838
                     * Effect: Type: "3" - From: "0x57D4F5B" (player) - To: "0x0" - ItemId:

"0x37B9" - ItemIdName: "glow" - FromLocation: "(1149 808, 32)" - ToLocation: "(1149 808, 32)" -

Speed: "10" - Duration: "5" - FixedDirection: "True" - Explode: "False"
                     */

                    ExpireTimer timer = (ExpireTimer)m_Table[defender];

                    if (timer != null)
                    {
                        timer.DoExpire();
                        defender.SendLocalizedMessage( 1070837 ); // The creature lands another

blow in your weakened state.
                    }
                    else
                        defender.SendLocalizedMessage( 1070836 );

                    int effect = -(defender.PhysicalResistance * 15 / 100);

                    ResistanceMod mod = new ResistanceMod( ResistanceType.Physical, effect );

                    defender.FixedEffect( 0x37B9, 10, 5 );
                    defender.AddResistanceMod( mod );

                    timer = new ExpireTimer( defender, mod, TimeSpan.FromSeconds( 5.0 ) );
                    timer.Start();
                    m_Table[defender] = timer;
                }
            }
        }

        private static Hashtable m_Table = new Hashtable();

        private class ExpireTimer : Timer
        {
            private Mobile m_Mobile;
            private ResistanceMod m_Mod;

            public ExpireTimer( Mobile m, ResistanceMod mod, TimeSpan delay )
                : base( delay )
            {
                m_Mobile = m;
                m_Mod = mod;
                Priority = TimerPriority.TwoFiftyMS;
            }

            public void DoExpire()
            {
                m_Mobile.RemoveResistanceMod( m_Mod );
                Stop();
                m_Table.Remove( m_Mobile );
            }

            protected override void OnTick()
            {
                m_Mobile.SendLocalizedMessage( 1070838 ); // Your resistance to physical attacks

has returned.
                DoExpire();
            }
        }

        public FireWyrm( Serial serial ) : base( serial )
        {
        }

        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
            writer.Write( (int) 0 );
        }

        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();
        }
    }
}

UO-Dev SPONSOR

UO-Dev SPONSOR

Henüz yorum yapılmamış. Yorum yazabilmek için giriş yapmanız gerekir.

Üyelerin oylama ortalaması (10 dışında) :

Henüz Oylanmamış

Oylar: 0