Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,57 @@
using System;
using Server.Items;
using Server.Engines.Quests;
namespace Server.Mobiles
{
public class Dierdre : HumilityQuestMobile
{
public override int Greeting { get { return 1075744; } }
[Constructable]
public Dierdre()
: base("Dierdre", "the Beggar")
{
}
public Dierdre(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
this.InitStats(100, 100, 25);
this.Female = true;
this.Race = Race.Human;
this.Body = 0x191;
this.Hue = Race.RandomSkinHue();
this.HairItemID = Race.RandomHair(true);
this.HairHue = Race.RandomHairHue();
}
public override void InitOutfit()
{
this.AddItem(new Backpack());
this.AddItem(new Sandals());
this.AddItem(new FancyShirt());
this.AddItem(new PlainDress());
}
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();
}
}
}

View File

@@ -0,0 +1,89 @@
using System;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests
{
public class Gareth : MondainQuester
{
[Constructable]
public Gareth()
: base("Gareth", "the Emissary of the RBC")
{
m_NextTalk = DateTime.UtcNow;
}
public Gareth(Serial serial)
: base(serial)
{
}
public override Type[] Quests
{
get { return new Type[] { typeof(TheQuestionsQuest) }; }
}
public override void OnOfferFailed()
{
Say(1075787); // I feel that thou hast yet more to learn about Humility... Please ponder these things further, and visit me again on the 'morrow.
}
public override void InitBody()
{
InitStats(100, 100, 25);
Female = false;
Race = Race.Human;
Body = 0x190;
Hue = 0x83EA;
HairItemID = 0x2049;
}
public override void InitOutfit()
{
AddItem(new Backpack());
AddItem(new Boots());
AddItem(new BodySash());
AddItem(new FancyShirt(6));
AddItem(new LongPants());
}
private DateTime m_NextTalk;
public override void OnMovement(Mobile m, Point3D oldLocation)
{
if (m_NextTalk < DateTime.UtcNow && m is PlayerMobile && m.Backpack != null && m.InRange(Location, 8))
{
PlayerMobile pm = (PlayerMobile)m;
WhosMostHumbleQuest quest = QuestHelper.GetQuest(pm, typeof(WhosMostHumbleQuest)) as WhosMostHumbleQuest;
if (quest != null)
{
Item chain = pm.Backpack.FindItemByType(typeof(IronChain));
if (chain != null && chain.QuestItem)
{
SayTo(m, 1075773);
m_NextTalk = DateTime.UtcNow + TimeSpan.FromSeconds(10);
}
}
}
}
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();
m_NextTalk = DateTime.UtcNow;
}
}
}

View File

@@ -0,0 +1,256 @@
using System;
using Server.Items;
using System.Collections.Generic;
using Server.Mobiles;
namespace Server.Engines.Quests
{
public class HumilityQuestMobile : BaseVendor
{
public virtual int Greeting { get { return 0; } }
public override bool IsActiveVendor { get { return false; } }
public override bool IsInvulnerable { get { return true; } }
public override bool CanTeach { get { return false; } }
public override bool PlayerRangeSensitive { get { return false; } }
private List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
public override void InitSBInfo()
{
}
public HumilityQuestMobile(string name) : base(null)
{
Name = name;
m_NextGreet = DateTime.UtcNow;
}
public HumilityQuestMobile(string name, string title) : base(title)
{
Name = name;
m_NextGreet = DateTime.UtcNow;
}
public static List<HumilityQuestMobile> Instance { get { return m_Instances; } }
private static List<HumilityQuestMobile> m_Instances = new List<HumilityQuestMobile>();
public HumilityQuestMobile(Serial serial) : base(serial)
{
}
private DateTime m_NextGreet;
public override void OnMovement(Mobile m, Point3D oldLocation)
{
PlayerMobile pm = m as PlayerMobile;
if (pm == null || !pm.InRange(this.Location, 3))
return;
WhosMostHumbleQuest quest = QuestHelper.GetQuest(pm, typeof(WhosMostHumbleQuest)) as WhosMostHumbleQuest;
if (quest != null)
{
if (m_NextGreet < DateTime.UtcNow && pm is PlayerMobile)
{
Item item = pm.FindItemOnLayer(Layer.Cloak);
if (item is GreyCloak && ((GreyCloak)item).Owner == null && Greeting > 0)
{
SayTo(pm, Greeting);
m_NextGreet = DateTime.UtcNow + TimeSpan.FromSeconds(5);
}
}
}
}
public override void OnDoubleClick(Mobile from)
{
PlayerMobile pm = from as PlayerMobile;
if (pm == null || !InRange(from.Location, 3))
return;
WhosMostHumbleQuest quest = QuestHelper.GetQuest(pm, typeof(WhosMostHumbleQuest)) as WhosMostHumbleQuest;
if (quest != null && pm.Backpack != null && !quest.HasGivenTo(this))
{
Item item = from.FindItemOnLayer(Layer.Cloak);
if (item is GreyCloak && ((GreyCloak)item).Owner == null)
{
int idx = HumilityQuestMobileInfo.GetNPCIndex(this.GetType());
if (idx > -1 && quest.Infos.ContainsKey(idx) && idx < quest.Infos.Count)
{
Type needs = quest.Infos[idx].Needs;
Item need = from.Backpack.FindItemByType(needs);
// Found needed item
if (need != null)
{
need.Delete();
quest.RemoveQuestItem(need);
Item nextItem = Loot.Construct(quest.Infos[idx].Gives);
if (nextItem != null)
{
from.Backpack.DropItem(nextItem);
quest.AddQuestItem(nextItem, this);
if (this is Sean)
SayTo(from, Greeting + 3, String.Format("#{0}", quest.Infos[idx].NeedsLoc));
else
SayTo(from, Greeting + 4, String.Format("#{0}\t#{1}", quest.Infos[idx].NeedsLoc, quest.Infos[idx].GivesLoc));
}
}
else //Didn't find needed item
{
from.SendGump(new HumilityItemQuestGump(this, quest, idx));
}
}
else
Console.WriteLine("Error finding index for {0}", this);
}
else
base.OnDoubleClick(from);
}
}
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();
m_NextGreet = DateTime.UtcNow;
}
}
public class HumilityQuestMobileInfo
{
// Greeting(say), Greeting2(gump), Desire(say), Gift(say), OnExchange(say)
private Type m_Needs;
private Type m_Gives;
private int m_NeedsLoc;
private int m_GivesLoc;
public Type Needs { get { return m_Needs; } }
public Type Gives { get { return m_Gives; } }
public int NeedsLoc { get { return m_NeedsLoc; } }
public int GivesLoc { get { return m_GivesLoc; } }
public HumilityQuestMobileInfo(Type needs, Type gives, int needsLoc, int givesLoc)
{
m_Needs = needs;
m_Gives = gives;
m_NeedsLoc = needsLoc;
m_GivesLoc = givesLoc;
}
public HumilityQuestMobileInfo(GenericReader reader)
{
int version = reader.ReadInt();
int needs = reader.ReadInt();
int gives = reader.ReadInt();
m_Needs = m_ItemTypes[needs];
if (gives == -1)
m_Gives = typeof(IronChain);
else
m_Gives = m_ItemTypes[gives];
m_NeedsLoc = reader.ReadInt();
m_GivesLoc = reader.ReadInt();
}
public void Serialize(GenericWriter writer)
{
writer.Write((int)0);
int needs = Array.IndexOf(m_ItemTypes, m_Needs);
writer.Write(needs);
int gives = Array.IndexOf(m_ItemTypes, m_Gives);
writer.Write(gives);
writer.Write(m_NeedsLoc);
writer.Write(m_GivesLoc);
}
public static int GetNPCIndex(Type type)
{
for (int i = 0; i < m_MobileTypes.Length; i++)
{
if (m_MobileTypes[i] == type)
return i;
}
return -1;
}
public static int GetLoc(Type type)
{
for (int i = 0; i < m_ItemTypes.Length; i++)
{
if (type == m_ItemTypes[i])
return m_ItemLocs[i];
}
return -1;
}
public static Type[] ItemTypes { get { return m_ItemTypes; } }
private static Type[] m_ItemTypes = new Type[]
{
typeof(BrassRing),
typeof(SeasonedSkillet),
typeof(VillageCauldron),
typeof(ShortStool),
typeof(FriendshipMug),
typeof(WornHammer),
typeof(PairOfWorkGloves),
typeof(IronChain)
};
public static int[] ItemLocs { get { return m_ItemLocs; } }
private static int[] m_ItemLocs = new int[]
{
1075778,
1075774,
1075775,
1075776,
1075777,
1075779,
1075780,
1075788
};
public static Type[] MobileTypes { get { return m_MobileTypes; } }
private static Type[] m_MobileTypes = new Type[]
{
typeof(Maribel),
typeof(Dierdre),
typeof(Kevin),
typeof(Jason),
typeof(Walton),
typeof(Nelson),
typeof(Sean)
};
}
}

View File

@@ -0,0 +1,74 @@
using System;
using Server.Engines.Quests;
namespace Server.Mobiles
{
public class Jason : HumilityQuestMobile
{
public override int Greeting { get { return 1075764; } }
public override bool IsActiveVendor { get { return true; } }
public override bool CanTeach { get { return true; } }
public override bool CheckTeach(SkillName skill, Mobile from)
{
return (skill == SkillName.Forensics)
|| (skill == SkillName.Healing)
|| (skill == SkillName.SpiritSpeak)
|| (skill == SkillName.Swords);
}
public override void InitSBInfo()
{
SBInfos.Add(new SBHealer());
}
[Constructable]
public Jason()
: base("Jason", "the Healer")
{
SetSkill(SkillName.Forensics, 80.0, 100.0);
SetSkill(SkillName.SpiritSpeak, 80.0, 100.0);
SetSkill(SkillName.Swords, 80.0, 100.0);
}
public Jason(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
this.InitStats(100, 100, 25);
this.Female = false;
this.Race = Race.Human;
this.Body = 0x190;
this.Hue = Race.RandomSkinHue();
this.HairItemID = Race.RandomHair(false);
this.HairHue = Race.RandomHairHue();
}
public override void InitOutfit()
{
this.AddItem(new Server.Items.Backpack());
this.AddItem(new Server.Items.Robe(Utility.RandomYellowHue()));
this.AddItem(new Server.Items.Sandals());
}
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();
}
}
}

View File

@@ -0,0 +1,66 @@
using System;
using Server.Items;
using Server.Engines.Quests;
namespace Server.Mobiles
{
public class Kevin : HumilityQuestMobile
{
public override int Greeting { get { return 1075759; } }
public override bool IsActiveVendor { get { return true; } }
public override bool CanTeach { get { return true; } }
[Constructable]
public Kevin()
: base("Kevin", "the butcher")
{
SetSkill(SkillName.Anatomy, 45.0, 68.0);
}
public override void InitSBInfo()
{
SBInfos.Add(new SBButcher());
}
public Kevin(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
this.InitStats(100, 100, 25);
this.Female = false;
this.Race = Race.Human;
this.Body = 0x190;
this.Hue = Race.RandomSkinHue();
this.HairItemID = Race.RandomHair(false);
this.HairHue = Race.RandomHairHue();
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem(new Server.Items.HalfApron());
AddItem(new Server.Items.Cleaver());
}
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();
}
}
}

View File

@@ -0,0 +1,61 @@
using System;
using Server.Engines.Quests;
namespace Server.Mobiles
{
public class Maribel : HumilityQuestMobile
{
public override int Greeting { get { return 1075754; } }
public override bool IsActiveVendor { get { return true; } }
[Constructable]
public Maribel()
: base("Maribel", "the Waitress")
{
}
public override void InitSBInfo()
{
SBInfos.Add(new SBWaiter());
}
public Maribel(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
this.InitStats(100, 100, 25);
this.Female = true;
this.Race = Race.Human;
this.Body = 0x191;
this.Hue = 0x83EA;
this.HairItemID = 0x2049;
}
public override void InitOutfit()
{
this.AddItem(new Server.Items.Backpack());
this.AddItem(new Server.Items.Sandals());
this.AddItem(new Server.Items.FancyDress(2205));
}
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();
}
}
}

View File

@@ -0,0 +1,57 @@
using System;
using Server.Items;
using Server.Engines.Quests;
namespace Server.Mobiles
{
public class Nelson : HumilityQuestMobile
{
public override int Greeting { get { return 1075749; } }
[Constructable]
public Nelson()
: base("Nelson", "the Shepherd")
{
}
public Nelson(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
this.InitStats(100, 100, 25);
this.Female = false;
this.Race = Race.Human;
this.Body = 0x190;
this.Hue = Race.RandomSkinHue();
this.HairItemID = Race.RandomHair(false);
this.HairHue = Race.RandomHairHue();
}
public override void InitOutfit()
{
base.InitOutfit();
AddItem(new Server.Items.Robe(Utility.RandomGreenHue()));
AddItem(new Server.Items.ShepherdsCrook());
}
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();
}
}
}

View File

@@ -0,0 +1,72 @@
using System;
using Server.Items;
using Server.Engines.Quests;
namespace Server.Mobiles
{
public class Sean : HumilityQuestMobile
{
public override int Greeting { get { return 1075769; } }
public override bool IsActiveVendor { get { return true; } }
public override bool CanTeach { get { return true; } }
[Constructable]
public Sean()
: base("Sean", "the Blacksmith")
{
SetSkill(SkillName.ArmsLore, 36.0, 68.0);
SetSkill(SkillName.Blacksmith, 65.0, 88.0);
SetSkill(SkillName.Fencing, 60.0, 83.0);
SetSkill(SkillName.Macing, 61.0, 93.0);
SetSkill(SkillName.Swords, 60.0, 83.0);
SetSkill(SkillName.Tactics, 60.0, 83.0);
SetSkill(SkillName.Parry, 61.0, 93.0);
}
public override void InitSBInfo()
{
SBInfos.Add(new SBBlacksmith());
}
public Sean(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
InitStats(100, 100, 25);
Female = false;
Race = Race.Human;
Body = 0x190;
Hue = Race.RandomSkinHue();
HairItemID = Race.RandomHair(false);
HairHue = Race.RandomHairHue();
}
public override void InitOutfit()
{
base.InitOutfit();
SetWearable(new SmithHammer());
SetWearable(new FullApron());
}
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();
}
}
}

View File

@@ -0,0 +1,58 @@
using System;
using Server.Items;
using Server.Engines.Quests;
namespace Server.Mobiles
{
public class Walton : HumilityQuestMobile
{
public override int Greeting { get { return 1075739; } }
[Constructable]
public Walton()
: base("Walton", "the Horse Trainer")
{
}
public Walton(Serial serial)
: base(serial)
{
}
public override void InitBody()
{
this.InitStats(100, 100, 25);
this.Female = false;
this.Race = Race.Human;
this.Body = 0x190;
this.Hue = Race.RandomSkinHue();
this.HairItemID = Race.RandomHair(false);
this.HairHue = Race.RandomHairHue();
}
public override void InitOutfit()
{
this.AddItem(new Backpack());
this.AddItem(new FancyShirt());
this.AddItem(new Doublet(1109));
this.AddItem(new LongPants(Utility.RandomBlueHue()));
this.AddItem(new Boots());
}
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();
}
}
}