141 lines
3 KiB
C#
141 lines
3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using Server;
|
|
using Server.Engines.MLQuests.Gumps;
|
|
using Server.Gumps;
|
|
using Server.Items;
|
|
using Server.Mobiles;
|
|
using Server.Network;
|
|
|
|
namespace Server.Engines.MLQuests.Mobiles
|
|
{
|
|
public class SirHelper : Mage
|
|
{
|
|
private static readonly Gump m_Gump = new InfoNPCGump( 1078029, 1078028 );
|
|
private static readonly TimeSpan m_ShoutDelay = TimeSpan.FromSeconds( 20 );
|
|
private static readonly TimeSpan m_ShoutCooldown = TimeSpan.FromDays( 1 ); // TODO: Verify, could be a lot longer... or until a restart even
|
|
|
|
private DateTime m_NextShout;
|
|
|
|
public override bool IsActiveVendor { get { return false; } }
|
|
|
|
[Constructable]
|
|
public SirHelper()
|
|
{
|
|
Name = "Sir Helper";
|
|
Title = "the Profession Guide"; // TODO: Don't display in paperdoll
|
|
|
|
Hue = 0x83EA;
|
|
|
|
Direction = Direction.South;
|
|
Frozen = true;
|
|
}
|
|
|
|
public override void InitSBInfo()
|
|
{
|
|
}
|
|
|
|
public override bool GetGender()
|
|
{
|
|
return false; // male
|
|
}
|
|
|
|
public override void CheckMorph()
|
|
{
|
|
}
|
|
|
|
public override void InitOutfit()
|
|
{
|
|
HairItemID = 0x203C;
|
|
FacialHairItemID = 0x204D;
|
|
HairHue = FacialHairHue = 0x8A7;
|
|
|
|
AddItem( new Sandals() );
|
|
|
|
Item item;
|
|
|
|
item = new Cloak();
|
|
item.ItemID = 0x26AD;
|
|
item.Hue = 0x455;
|
|
AddItem( item );
|
|
|
|
item = new Robe();
|
|
item.ItemID = 0x26AE;
|
|
item.Hue = 0x4AB;
|
|
AddItem( item );
|
|
|
|
item = new Backpack();
|
|
item.Movable = false;
|
|
AddItem( item );
|
|
}
|
|
|
|
public override void OnDoubleClick( Mobile from )
|
|
{
|
|
if ( from.CanBeginAction( this ) )
|
|
{
|
|
from.BeginAction( this );
|
|
Timer.DelayCall<Mobile>( m_ShoutCooldown, EndLock, from );
|
|
}
|
|
|
|
MLQuestSystem.TurnToFace( this, from );
|
|
from.SendGump( m_Gump );
|
|
|
|
// Paperdoll doesn't open
|
|
//base.OnDoubleClick( from );
|
|
}
|
|
|
|
public override void OnThink()
|
|
{
|
|
base.OnThink();
|
|
|
|
if ( m_NextShout <= DateTime.UtcNow )
|
|
{
|
|
Packet shoutPacket = null;
|
|
|
|
foreach ( NetState state in GetClientsInRange( 12 ) )
|
|
{
|
|
Mobile m = state.Mobile;
|
|
|
|
if ( m.CanSee( this ) && m.InLOS( this ) && m.CanBeginAction( this ) )
|
|
{
|
|
if ( shoutPacket == null )
|
|
shoutPacket = Packet.Acquire( new MessageLocalized( Serial, Body, MessageType.Regular, 946, 3, 1078099, Name, "" ) ); // Double Click On Me For Help!
|
|
|
|
state.Send( shoutPacket );
|
|
}
|
|
}
|
|
|
|
Packet.Release( shoutPacket );
|
|
|
|
m_NextShout = DateTime.UtcNow + m_ShoutDelay;
|
|
}
|
|
}
|
|
|
|
private void EndLock( Mobile m )
|
|
{
|
|
m.EndAction( this );
|
|
}
|
|
|
|
public SirHelper( Serial serial )
|
|
: base( serial )
|
|
{
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.Write( (int) 0 ); // version
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadInt();
|
|
|
|
Frozen = true;
|
|
}
|
|
}
|
|
}
|