Files
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

101 lines
3.2 KiB
C#

using System;
using Server.Mobiles;
using Server.Network;
using Server.Items;
namespace Server.Engines.Quests
{
public sealed class HeritagePacket : Packet
{
public static readonly Packet Close = Packet.SetStatic(new HeritagePacket(false, 0xFF));
public HeritagePacket(bool female, short type)
: base(0xBF)
{
this.EnsureCapacity(7);
this.m_Stream.Write((short)0x2A);
this.m_Stream.Write((byte)(female ? 1 : 0));
this.m_Stream.Write((byte)type);
}
}
public class PacketOverrides
{
public static void Initialize()
{
Timer.DelayCall(TimeSpan.Zero, new TimerCallback(Override));
}
public static void Override()
{
PacketHandlers.RegisterEncoded(0x32, true, new OnEncodedPacketReceive(QuestButton));
PacketHandlers.RegisterExtended(0x2A, true, new OnPacketReceive(HeritageTransform));
}
public static void QuestButton(NetState state, IEntity e, EncodedReader reader)
{
if (state.Mobile is PlayerMobile)
{
PlayerMobile from = (PlayerMobile)state.Mobile;
from.CloseGump(typeof(MondainQuestGump));
from.SendGump(new MondainQuestGump(from));
}
}
public static void HeritageTransform(NetState state, PacketReader reader)
{
Mobile m = state.Mobile;
if (reader.Size == 5)
{
m.SendLocalizedMessage(1073645); // You may try this again later...
}
else if (reader.Size == 15 && HeritageQuester.Check(m))
{
bool proceed = false;
if (HeritageQuester.IsPending(m))
{
proceed = true;
HeritageQuester quester = HeritageQuester.Pending(m);
m.Race = quester.Race;
quester.CheckCompleted(m, true); // removes done quests
if (m.Race == Race.Elf)
m.SendLocalizedMessage(1073653); // You are now fully initiated into the Elven culture.
else if (m.Race == Race.Human)
m.SendLocalizedMessage(1073654); // You are now fully human.
}
else if (RaceChangeToken.IsPending(m))
{
var race = RaceChangeToken.GetPendingRace(m);
if (race != null)
{
m.Race = race;
proceed = true;
m.SendLocalizedMessage(1111914); // You have successfully changed your race.
RaceChangeToken.OnRaceChange(m);
}
}
if(proceed)
{
m.Hue = reader.ReadUInt16();
m.HairItemID = reader.ReadUInt16();
m.HairHue = reader.ReadUInt16();
m.FacialHairItemID = reader.ReadUInt16();
m.FacialHairHue = reader.ReadUInt16();
}
}
HeritageQuester.RemovePending(m);
RaceChangeToken.RemovePending(m);
}
}
}