I am working on a NPC quest chain. Everything works perfectly except for 2 little things. His title is clickable, and he is killable. I am unsure why my two override's arent working. They don't shoot out any compile errors or anything. Here is the full script.

Code:
using System;
using System.Collections.Generic;
using Server.Items;
using Server.ContextMenus;
using Server.Gumps;
using Server.Accounting;

namespace Server.Mobiles
{
	[CorpseName( "Corpse Of link" )]
	public class Link : BaseCreature
	{

		private static bool m_Talked;
		string[] LinkSay = new string[] 
		{ 
			"Please save the princess",
			"Shadow Link has captured the princess!",
			"I have failed her..."
		}; 

		public override bool ClickTitle{ get{ return false; } }	
		public override bool IsInvulnerable { get { return true; } }

		[Constructable]
		public Link() : base( AIType.AI_Melee, FightMode.Aggressor, 10, 1, 0.2, 0.4 )
		{
			
			SpeechHue = Utility.RandomDyedHue();

            		Name = "Link";
			Title = "Hero of Hyrule";
			Body = 185;
			//CantWalk = true;
			Hue = 0;
			
			HairItemID = 8252;
			HairHue = 0x41c;
			
			SetStr( 90, 110 );
			SetDex( 90, 110 );
			SetInt( 60, 80);

			SetHits( 250, 300 );

			SetDamage( 15, 22 );

			SetDamageType( ResistanceType.Physical, 100 );

			SetResistance( ResistanceType.Physical, 10, 20 );
			SetResistance( ResistanceType.Fire, 35, 50 );
			SetResistance( ResistanceType.Cold, 35, 50 );
			SetResistance( ResistanceType.Poison, 35, 50 );

			SetSkill( SkillName.MagicResist, 50.0, 60.0 );
			SetSkill( SkillName.Tactics, 60.0, 80.0 );
			SetSkill( SkillName.Wrestling, 60.0, 80.0 );
			SetSkill( SkillName.Swords, 60.0, 80.0 );
			
			VirtualArmor = 20;
			
			Item gloves = new LeatherGloves();
				gloves.Movable = false;
				gloves.Hue = 0x745;
			AddItem( gloves );
			Item chest = new LeatherChest();
				chest.Movable = false;
				chest.Hue = 0x48;
			AddItem( chest );
			Item legs = new LongPants();
				legs.Movable = false;
				legs.Hue = 0x47e;
			AddItem( legs );
			Item cap = new Cap();
				cap.Movable = false;
				cap.Hue = 0x48;
			AddItem( cap );
			Item boots = new Boots();
				boots.Movable = false;
				boots.Hue = 0x745;
			AddItem( boots );
			
			Item shield = new OrderShield();
				shield.Movable = false;
			AddItem( shield );
			Item sword = new VikingSword();
				sword.Movable = false;
			AddItem( sword );

			Fame = 5000;
			Karma = 8000;

		}

        		public override void OnMovement( Mobile m, Point3D oldLocation ) 
			    	{												    
       		  		if( m_Talked == false ) 
        	  		{ 
      		      			if ( m.InRange( this, 3 ) && m is PlayerMobile) 
        				{			    
					   			m_Talked = true; 
					   			SayRandom( LinkSay, this ); 
           		   			    this.Move( GetDirectionTo( m.Location ) );
			 		   			SpamTimer t = new SpamTimer(); 
           		   			t.Start(); 
							} 
        	  		} 
			}


    	  		private class SpamTimer : Timer 
			{ 
		   		public SpamTimer() : base( TimeSpan.FromMinutes( 2 ) ) 
	       	   		{ 
          				Priority = TimerPriority.OneMinute; 
       		   		} 

         	   		protected override void OnTick() 
        	   		{ 
           				m_Talked = false; 
        	   		} 
      			}
			
			private static void SayRandom( string[] say, Mobile m ) 
	        	{ 
	           		m.Say( say[Utility.Random( say.Length )] ); 
			}


		public Link( Serial serial ) : base( serial )
		{
		}
		
		public override void GetContextMenuEntries( Mobile from,  List<ContextMenuEntry> list ) 
	        { 
	                base.GetContextMenuEntries( from, list ); 
        	        list.Add( new LinkEntry( from, this ) ); 
	        } 

		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();
		}
		
		public class LinkEntry : ContextMenuEntry
		{
			private Mobile m_Mobile;
			private Mobile m_Giver;
			
			public LinkEntry( Mobile from, Mobile giver ) : base( 6146, 3 )
			{
				m_Mobile = from;
				m_Giver = giver;
			}

			public override void OnClick()
			{

                          	if( !( m_Mobile is PlayerMobile ) )
					return;
				
				PlayerMobile mobile = (PlayerMobile) m_Mobile;

				{
					if ( ! mobile.HasGump( typeof( LinkQuestStartGump ) ) )
					{
						mobile.SendGump( new LinkQuestStartGump( mobile ));
						
					} 
				}
			}
		}
		
		public override bool OnDragDrop( Mobile from, Item dropped )
		{          		
         	Mobile m = from;
			PlayerMobile pm = from as PlayerMobile;
			Account acct = (Account)from.Account;
			bool ZeldaQuestStarter = Convert.ToBoolean(acct.GetTag("ZeldaQuestComplete"));

			if ( pm != null && dropped is ZeldaNote )
         		{
					if (!ZeldaQuestStarter)
						{
							dropped.Delete();
							pm.SendGump( new LinkQuestCompleteGump(m) );
							//acct.SetTag("ZeldaQuestComplete", "True");
							
							 return true;
						}
					else
						{
							SayTo( from, "You have already shown me this note and been rewarded,.." );
							
							return false;
						}
				
         		}
         	else	
				{
					SayTo( from, "How is this proof of the Princess's freedom? This is no time for games." );
					
					return false;
     			}
		}
	
	}
}
 
Could just set as Blessed = true;
  1. Name = "Link";
  2. Title = "Hero of Hyrule";
  3. Body = 185;
  4. Blessed = true;
 
Back