Files
abysmal-isle/Scripts/Mobiles/NPCs/Vrulkax.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

119 lines
3.6 KiB
C#

using System;
using Server.Items;
using System.Collections.Generic;
using Server.Mobiles;
namespace Server.Engines.Quests
{
public class Vrulkax : BaseVendor
{
protected readonly List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return this.m_SBInfos; } }
public override bool IsActiveVendor { get { return false; } }
public override bool IsInvulnerable { get { return true; } }
public override void InitSBInfo()
{
}
[Constructable]
public Vrulkax()
: base("the Exalted Artificer")
{
Name = "Vrulkax";
}
private Type[][] _Table =
{
new Type[] { typeof(BritchesOfWarding), typeof(GargishBritchesOfWarding) },
new Type[] { typeof(GlovesOfFeudalGrip), typeof(GargishKiltOfFeudalVise) },
new Type[] { typeof(CuffsOfTheArchmage), typeof(GargishCuffsOfTheArchmage) },
new Type[] { typeof(BritchesOfWarding), typeof(GargishBritchesOfWarding) },
new Type[] { typeof(BowOfTheInfiniteSwarm), typeof(GlaiveOfTheInfiniteSwarm) }
};
public override bool OnDragDrop(Mobile from, Item dropped)
{
foreach (Type[] t in _Table)
{
if (dropped is IDurability && t[0] == dropped.GetType())
{
IDurability dur = dropped as IDurability;
if (dur != null && dur.MaxHitPoints == 255 && dur.HitPoints == 255)
{
var item = Loot.Construct(t[1]);
if (item != null)
{
from.AddToBackpack(item);
dropped.Delete();
return true;
}
}
else
{
SayTo(from, 1157368); // I can only work with artifacts that are in pristine condition.
return false;
}
}
}
SayTo(from, 1157365); // I'm sorry, I cannot accept this item.
return false;
}
private DateTime _NextSpeak;
public override void OnMovement(Mobile m, Point3D oldLocation)
{
if (_NextSpeak < DateTime.UtcNow && m is PlayerMobile && InRange(m.Location, 5) && InLOS(m))
{
Say(1157369); // I am the Exalted Artificer. Hand me select human artifacts to convert them for gargoyle use.
_NextSpeak = DateTime.UtcNow + TimeSpan.FromSeconds(25);
}
base.OnMovement(m, oldLocation);
}
public Vrulkax(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
InitStats(100, 100, 25);
CantWalk = true;
Race = Race.Gargoyle;
Hue = 34545;
HairItemID = 0x4259;
HairHue = 0x0;
}
public override void InitOutfit()
{
AddItem(new SerpentStoneStaff());
AddItem(new GargishClothChest(902));
AddItem(new GargishClothArms(902));
AddItem(new GargishClothKilt(902));
}
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();
}
}
}