ExX
Member
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;
}
}
}
}