public override bool OnBeforeDeath()
        {
            if ( !NoKillAwards )
            {
                GivePowerScrolls();

                Map map = this.Map;

                if ( map != null )
                {
                    for ( int x = -12; x <= 12; ++x )
                    {
                        for ( int y = -12; y <= 12; ++y )
                        {
                            double dist = Math.Sqrt(x*x+y*y);

                            if ( dist <= 12 )
                                new GoodiesTimer( map, X + x, Y + y ).Start();
                        }
                    }
                }
            }
            //Added by Blady:
            if ( SpellHelper.IsFeluccaT2A(this.Map, this.Location) && Utility.RandomDouble() < 0.6 && Backpack != null )
            {
                BaseArmor armor = null;
                switch (Utility.Random(6))
                {
                    case 0: armor = new SunArmor(); break;
                    case 1: armor = new SunGloves(); break;
                    case 2: armor = new SunArms(); break;
                    case 3: armor = new SunLegs(); break;
                    case 4: armor = new SunGorget(); break;
                    case 5: armor = new SunHelm(); break;
                }
                if (armor != null)
                    PackItem(armor);
            }

            return base.OnBeforeDeath();
        }
            protected override void OnTick()
            {
                if ( m_NextSkillTime != m_From.NextSkillTime || m_NextSpellTime != m_From.NextSpellTime || m_NextActionTime != m_From.NextActionTime )
                {
                    Terminate();
                    return;
                }

                if ( m_LastMoveTime != m_From.LastMoveTime )
                {
                    m_From.SendLocalizedMessage( 503023 ); // You cannot move around while digging up treasure. You will need to start digging anew.
                    Terminate();
                    return;
                }

                int z = ( m_Chest != null ) ? m_Chest.Z + m_Chest.ItemData.Height : int.MinValue;
                int height = 16;

                if ( z > m_Location.Z )
                    height -= ( z - m_Location.Z );
                else
                    z = m_Location.Z;

                if ( !m_Map.CanFit( m_Location.X, m_Location.Y, z, height, true, true, false ) )
                {
                    m_From.SendLocalizedMessage( 503024 ); // You stop digging because something is directly on top of the treasure chest.
                    Terminate();
                    return;
                }

                m_Count++;

                m_From.RevealingAction();
                m_From.Direction = m_From.GetDirectionTo( m_Location );

                if ( m_Count > 1 && m_Dirt1 == null )
                {
                    m_Dirt1 = new TreasureChestDirt();
                    m_Dirt1.MoveToWorld( m_Location, m_Map );

                    m_Dirt2 = new TreasureChestDirt();
                    m_Dirt2.MoveToWorld( new Point3D( m_Location.X, m_Location.Y - 1, m_Location.Z ), m_Map );
                }

                if ( m_Count == 5 )
                {
                    m_Dirt1.Turn1();
                }
                else if ( m_Count == 10 )
                {
                    m_Dirt1.Turn2();
                    m_Dirt2.Turn2();
                }
                else if ( m_Count > 10 )
                {
                    if ( m_Chest == null )
                    {
                        m_Chest = new TreasureMapChest( m_From, m_TreasureMap.Level, true );
                        m_Chest.MoveToWorld( new Point3D( m_Location.X, m_Location.Y, m_Location.Z - 15 ), m_Map );
                    }
                    else
                    {
                        m_Chest.Z++;
                    }

                    Effects.PlaySound( m_Chest, m_Map, 0x33B );
                }

                if ( m_Chest != null && m_Chest.Location.Z >= m_Location.Z )
                {
                    Stop();
                    m_From.EndAction( typeof( TreasureMap ) );

                    m_Chest.Temporary = false;
                    m_TreasureMap.Completed = true;
                    m_TreasureMap.CompletedBy = m_From;

                    //Added by Blady:
                    if (Utility.Random(80) < Math.Max(2, m_TreasureMap.Level))
                    {
                        BaseCreature bc = Spawn( m_TreasureMap.Level, m_Chest.Location, m_Chest.Map, null, true );
                        if ( bc != null )
                        {
                            m_Chest.Guardians.Add( bc );
                            bc.Hue = 2213;
                            bc.Title = "The Sun Guardian";
                            BaseArmor armor = null;
                            switch (Utility.Random(6))
                            {
                                case 0: armor = new SunArmor(); break;
                                case 1: armor = new SunGloves(); break;
                                case 2: armor = new SunArms(); break;
                                case 3: armor = new SunLegs(); break;
                                case 4: armor = new SunGorget(); break;
                                case 5: armor = new SunHelm(); break;
                            }
                            if (armor != null)
                                bc.PackItem(armor);
                        }
                    }

                    int spawns;
                    switch ( m_TreasureMap.Level )
                    {
                        case 0: spawns = 3; break;
                        case 1: spawns = 0; break;
                        default: spawns = 4; break;
                    }

                    for ( int i = 0; i < spawns; ++i )
                    {
                        BaseCreature bc = Spawn( m_TreasureMap.Level, m_Chest.Location, m_Chest.Map, null, true );

                        if ( bc != null )
                            m_Chest.Guardians.Add( bc );
                    }
                }
                else
                {
                    if ( m_From.Body.IsHuman && !m_From.Mounted )
                        m_From.Animate( 11, 5, 1, true, false, 0 );

                    new SoundTimer( m_From, 0x125 + (m_Count % 2) ).Start();
                }
            }