101 lines
3.2 KiB
C#
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);
|
|
}
|
|
}
|
|
} |