I also have taken the executioner mob and modified it to beef it up and add the drop.
I think I am starting to get the basics down for this.
Next I will have to try and expand this with maybe a quest NPC giving directions to where they might be found.
Why don't you add a little depth by making him talk?
private static bool m_Talked;
string[]WeaponSmugglerSay = new string[]
{
"He who knows when he can fight and when he cannot, will be victorious.",
"All war is based on deception.",
"feign inferiority and encourage his arrogance.",
"If you are far from the enemy, make him believe you are near.",
"If ignorant both of your enemy and yourself, you are certain to be in peril.",
"Thus, what is of supreme importance in war is to attack the enemy's strategy.",
};
I prefer to make my talking mobiles talk with a few restrictions and a spam timer is always good for realism.
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if( m_Talked == false )
{
if ( m.InRange( this, 3 ) && m is PlayerMobile)
{
m_Talked = true;
SayRandom(WeaponSmuggerSay, this );
this.Move( GetDirectionTo( m.Location ) );
SpamTimer t = new SpamTimer();
t.Start();
}
}
}
private class SpamTimer : Timer
{
public SpamTimer() : base( TimeSpan.FromSeconds( 12 ) )
{
Priority = TimerPriority.OneSecond;
}
protected override void OnTick()
{
m_Talked = false;
}
}
Also, not sure if you have played around with the base on death method at all but if this is a mobile that is going to be farmed I always like to add a specific drop chance as opposed to something that can be stolen from their pack. Maybe you could create greater/lesser boxes that drop that have a chance to drop differen't types and qualities of items?
public override void OnDeath(Container c)
{
base.OnDeath(c);
if ( 0.20 > Utility.RandomDouble() ) //Drop chance
{
switch(Utility.Random(4))
{
case 0: default: c.DropItem( new NoDachi() ); break;
case 1: c.DropItem( new ArmsOfTacticalExcellence() ); break;
case 2: c.DropItem( new AncientSamuraiDo() ); break;
case 3: c.DropItem( new Dagger() ); break;
}
}
}