83 lines
2.1 KiB
C#
83 lines
2.1 KiB
C#
using System;
|
|
using Server.Engines.BuffIcons;
|
|
|
|
namespace Server.Network;
|
|
|
|
public sealed class AddBuffPacket : Packet
|
|
{
|
|
public AddBuffPacket(Serial m, BuffInfo info)
|
|
: this(
|
|
m,
|
|
info.ID,
|
|
info.TitleCliloc,
|
|
info.SecondaryCliloc,
|
|
info.Args,
|
|
info.Duration
|
|
)
|
|
{
|
|
}
|
|
|
|
public AddBuffPacket(
|
|
Serial mob, BuffIcon iconID, int titleCliloc, int secondaryCliloc, TextDefinition args,
|
|
TimeSpan length
|
|
)
|
|
: base(0xDF)
|
|
{
|
|
var hasArgs = args != null;
|
|
|
|
EnsureCapacity(hasArgs ? 48 + args.ToString().Length * 2 : 44);
|
|
Stream.Write(mob);
|
|
|
|
Stream.Write((short)iconID); // ID
|
|
Stream.Write((short)0x1); // Type 0 for removal. 1 for add 2 for Data
|
|
|
|
Stream.Fill(4);
|
|
|
|
Stream.Write((short)iconID); // ID
|
|
Stream.Write((short)0x01); // Type 0 for removal. 1 for add 2 for Data
|
|
|
|
Stream.Fill(4);
|
|
|
|
Stream.Write((short)Math.Max(length.TotalSeconds, 0)); // Time in seconds
|
|
|
|
Stream.Fill(3);
|
|
Stream.Write(titleCliloc);
|
|
Stream.Write(secondaryCliloc);
|
|
|
|
if (!hasArgs)
|
|
{
|
|
// m_Stream.Fill( 2 );
|
|
Stream.Fill(10);
|
|
}
|
|
else
|
|
{
|
|
Stream.Fill(4);
|
|
Stream.Write((short)0x1); // Unknown -> Possibly something saying 'hey, I have more data!'?
|
|
Stream.Fill(2);
|
|
|
|
// m_Stream.WriteLittleUniNull( "\t#1018280" );
|
|
Stream.WriteLittleUniNull($"\t{args}");
|
|
|
|
Stream.Write((short)0x1); // Even more Unknown -> Possibly something saying 'hey, I have more data!'?
|
|
Stream.Fill(2);
|
|
}
|
|
}
|
|
}
|
|
|
|
public sealed class RemoveBuffPacket : Packet
|
|
{
|
|
public RemoveBuffPacket(Serial mob, BuffInfo info) : this(mob, info.ID)
|
|
{
|
|
}
|
|
|
|
public RemoveBuffPacket(Serial mob, BuffIcon iconID) : base(0xDF)
|
|
{
|
|
EnsureCapacity(13);
|
|
Stream.Write(mob);
|
|
|
|
Stream.Write((short)iconID); // ID
|
|
Stream.Write((short)0x0); // Type 0 for removal. 1 for add 2 for Data
|
|
|
|
Stream.Fill(4);
|
|
}
|
|
}
|