示例#1
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			m_Chyloth = reader.ReadMobile() as Chyloth;
			m_Dragon = reader.ReadMobile() as SkeletalDragon;

			if ( m_Chyloth != null )
				m_Chyloth.Delete();
		}
示例#2
0
        public virtual void EndSummonDragon()
        {
            if (this.Deleted || this.m_AngryAt == null)
                return;

            Map map = this.m_AngryAt.Map;

            if (map == null)
                return;

            if (!this.m_AngryAt.Region.IsPartOf("Doom"))
                return;

            this.PublicOverheadMessage(MessageType.Regular, 0x3B2, 1050015); // Feel the wrath of my legions!!!
            this.PublicOverheadMessage(MessageType.Regular, 0x3B2, false, "MUHAHAHAHA HAHAH HAHA"); // A wee bit crazy, aren't we?

            SkeletalDragon dragon = new SkeletalDragon();

            int offset = Utility.Random(8) * 2;

            bool foundLoc = false;

            for (int i = 0; i < m_Offsets.Length; i += 2)
            {
                int x = this.m_AngryAt.X + m_Offsets[(offset + i) % m_Offsets.Length];
                int y = this.m_AngryAt.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length];

                if (map.CanSpawnMobile(x, y, this.m_AngryAt.Z))
                {
                    dragon.MoveToWorld(new Point3D(x, y, this.m_AngryAt.Z), map);
                    foundLoc = true;
                    break;
                }
                else
                {
                    int z = map.GetAverageZ(x, y);

                    if (map.CanSpawnMobile(x, y, z))
                    {
                        dragon.MoveToWorld(new Point3D(x, y, z), map);
                        foundLoc = true;
                        break;
                    }
                }
            }

            if (!foundLoc)
                dragon.MoveToWorld(this.m_AngryAt.Location, map);

            dragon.Combatant = this.m_AngryAt;

            if (this.m_Bell != null)
                this.m_Bell.Dragon = dragon;
        }
示例#3
0
文件: Chyloth.cs 项目: rokann/JustUO
        public virtual void EndSummonDragon()
        {
            if (Deleted || AngryAt == null)
                return;

            var map = AngryAt.Map;

            if (map == null)
                return;

            if (!AngryAt.Region.IsPartOf("Doom"))
                return;

            PublicOverheadMessage(MessageType.Regular, 0x3B2, 1050015); // Feel the wrath of my legions!!!
            PublicOverheadMessage(MessageType.Regular, 0x3B2, false, "MUHAHAHAHA HAHAH HAHA");
                // A wee bit crazy, aren't we?

            var dragon = new SkeletalDragon();

            var offset = Utility.Random(8)*2;

            var foundLoc = false;

            for (var i = 0; i < m_Offsets.Length; i += 2)
            {
                var x = AngryAt.X + m_Offsets[(offset + i)%m_Offsets.Length];
                var y = AngryAt.Y + m_Offsets[(offset + i + 1)%m_Offsets.Length];

                if (map.CanSpawnMobile(x, y, AngryAt.Z))
                {
                    dragon.MoveToWorld(new Point3D(x, y, AngryAt.Z), map);
                    foundLoc = true;
                    break;
                }
                var z = map.GetAverageZ(x, y);

                if (map.CanSpawnMobile(x, y, z))
                {
                    dragon.MoveToWorld(new Point3D(x, y, z), map);
                    foundLoc = true;
                    break;
                }
            }

            if (!foundLoc)
                dragon.MoveToWorld(AngryAt.Location, map);

            dragon.Combatant = AngryAt;

            if (Bell != null)
                Bell.Dragon = dragon;
        }