fix(core): Converts some player packets (#372)
- [X] Converts some player packets Note: - Not caching weather packet because it is copying directly from stackalloc using aggressive inlining. Don't need to do more optimizations.
This commit is contained in:
parent
67c23bf9ad
commit
a59fda6a3a
12 changed files with 350 additions and 276 deletions
|
|
@ -0,0 +1,115 @@
|
|||
using System;
|
||||
using Server.HuePickers;
|
||||
|
||||
namespace Server.Network
|
||||
{
|
||||
public sealed class StatLockInfo : Packet
|
||||
{
|
||||
public StatLockInfo(Mobile m) : base(0xBF)
|
||||
{
|
||||
EnsureCapacity(12);
|
||||
|
||||
Stream.Write((short)0x19);
|
||||
Stream.Write((byte)2);
|
||||
Stream.Write(m.Serial);
|
||||
Stream.Write((byte)0);
|
||||
|
||||
var lockBits = ((int)m.StrLock << 4) | ((int)m.DexLock << 2) | (int)m.IntLock;
|
||||
|
||||
Stream.Write((byte)lockBits);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ChangeUpdateRange : Packet
|
||||
{
|
||||
private static readonly ChangeUpdateRange[] m_Cache = new ChangeUpdateRange[0x100];
|
||||
|
||||
public ChangeUpdateRange(int range) : base(0xC8, 2)
|
||||
{
|
||||
Stream.Write((byte)range);
|
||||
}
|
||||
|
||||
public static ChangeUpdateRange Instantiate(int range)
|
||||
{
|
||||
var idx = (byte)range;
|
||||
var p = m_Cache[idx];
|
||||
|
||||
if (p == null)
|
||||
{
|
||||
m_Cache[idx] = p = new ChangeUpdateRange(range);
|
||||
p.SetStatic();
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class DeathStatus : Packet
|
||||
{
|
||||
public static readonly Packet Dead = SetStatic(new DeathStatus(true));
|
||||
public static readonly Packet Alive = SetStatic(new DeathStatus(false));
|
||||
|
||||
public DeathStatus(bool dead) : base(0x2C, 2)
|
||||
{
|
||||
Stream.Write((byte)(dead ? 0 : 2));
|
||||
}
|
||||
|
||||
public static Packet Instantiate(bool dead) => dead ? Dead : Alive;
|
||||
}
|
||||
|
||||
public sealed class ToggleSpecialAbility : Packet
|
||||
{
|
||||
public ToggleSpecialAbility(int abilityID, bool active) : base(0xBF)
|
||||
{
|
||||
EnsureCapacity(7);
|
||||
|
||||
Stream.Write((short)0x25);
|
||||
|
||||
Stream.Write((short)abilityID);
|
||||
Stream.Write(active);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class DisplayProfile : Packet
|
||||
{
|
||||
public DisplayProfile(Serial m, string header, string body, string footer) : base(0xB8)
|
||||
{
|
||||
header ??= "";
|
||||
body ??= "";
|
||||
footer ??= "";
|
||||
|
||||
EnsureCapacity(12 + header.Length + footer.Length * 2 + body.Length * 2);
|
||||
|
||||
Stream.Write(m);
|
||||
Stream.WriteAsciiNull(header);
|
||||
Stream.WriteBigUniNull(footer);
|
||||
Stream.WriteBigUniNull(body);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class LiftRej : Packet
|
||||
{
|
||||
public LiftRej(LRReason reason) : base(0x27, 2)
|
||||
{
|
||||
Stream.Write((byte)reason);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class LogoutAck : Packet
|
||||
{
|
||||
public LogoutAck() : base(0xD1, 2)
|
||||
{
|
||||
Stream.Write((byte)0x01);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Weather : Packet
|
||||
{
|
||||
public Weather(int type, int density, int temp) : base(0x65, 4)
|
||||
{
|
||||
Stream.Write((byte)type);
|
||||
Stream.Write((byte)density);
|
||||
Stream.Write((byte)temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue