fix(core): Removes implicit cast between Serial and uint (#728)

* Fixes spellbooks using serial ctor
* Fixes misc items where someone thought they had an amount and it didn't
* Fixes all `Food` types.
This commit is contained in:
Kamron Batman 2021-08-25 00:27:19 -07:00 • committed by GitHub
parent 17521c9cd7
commit 0dc4acc164
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
74 changed files with 319 additions and 248 deletions

View file

@ -33,7 +33,7 @@ namespace Server.Items
{
var from = state.Mobile;
if (!(World.FindItem(reader.ReadUInt32()) is BaseBook book) || !book.Writable ||
if (!(World.FindItem((Serial)reader.ReadUInt32()) is BaseBook book) || !book.Writable ||
!from.InRange(book.GetWorldLocation(), 1) || !book.IsAccessibleTo(from))
{
return;
@ -52,7 +52,7 @@ namespace Server.Items
{
var from = state.Mobile;
if (!(World.FindItem(reader.ReadUInt32()) is BaseBook book) || !book.Writable ||
if (!(World.FindItem((Serial)reader.ReadUInt32()) is BaseBook book) || !book.Writable ||
!from.InRange(book.GetWorldLocation(), 1) || !book.IsAccessibleTo(from))
{
return;
@ -88,7 +88,7 @@ namespace Server.Items
{
var from = state.Mobile;
if (!(World.FindItem(reader.ReadUInt32()) is BaseBook book) || !book.Writable ||
if (!(World.FindItem((Serial)reader.ReadUInt32()) is BaseBook book) || !book.Writable ||
!from.InRange(book.GetWorldLocation(), 1) || !book.IsAccessibleTo(from))
{
return;

View file

@ -54,7 +54,7 @@ namespace Server.Network
int packetID = reader.ReadByte();
if (World.FindItem(reader.ReadUInt32()) is not BaseBulletinBoard board || !board.CheckRange(from))
if (World.FindItem((Serial)reader.ReadUInt32()) is not BaseBulletinBoard board || !board.CheckRange(from))
{
return;
}
@ -78,7 +78,7 @@ namespace Server.Network
public static void BBRequestContent(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
if (World.FindItem(reader.ReadUInt32()) is not BulletinMessage msg || msg.Parent != board)
if (World.FindItem((Serial)reader.ReadUInt32()) is not BulletinMessage msg || msg.Parent != board)
{
return;
}
@ -88,7 +88,7 @@ namespace Server.Network
public static void BBRequestHeader(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
if (World.FindItem(reader.ReadUInt32()) is not BulletinMessage msg || msg.Parent != board)
if (World.FindItem((Serial)reader.ReadUInt32()) is not BulletinMessage msg || msg.Parent != board)
{
return;
}
@ -98,7 +98,7 @@ namespace Server.Network
public static void BBPostMessage(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
var thread = World.FindItem(reader.ReadUInt32()) as BulletinMessage;
var thread = World.FindItem((Serial)reader.ReadUInt32()) as BulletinMessage;
if (thread != null && thread.Parent != board)
{
@ -153,7 +153,7 @@ namespace Server.Network
public static void BBRemoveMessage(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
{
if (World.FindItem(reader.ReadUInt32()) is not BulletinMessage msg || msg.Parent != board)
if (World.FindItem((Serial)reader.ReadUInt32()) is not BulletinMessage msg || msg.Parent != board)
{
return;
}

View file

@ -5,7 +5,7 @@ namespace Server.Items
{
public abstract class Food : Item
{
public Food(int itemID, int amount) : base(itemID)
public Food(int itemID, int amount = 1) : base(itemID)
{
Stackable = true;
Amount = amount;

View file

@ -63,7 +63,7 @@ namespace Server.Engines.Mahjong
public static void OnPacket(NetState state, CircularBufferReader reader, ref int packetLength)
{
var game = World.FindItem(reader.ReadUInt32()) as MahjongGame;
var game = World.FindItem((Serial)reader.ReadUInt32()) as MahjongGame;
game?.Players.CheckPlayers();

View file

@ -29,7 +29,7 @@ namespace Server.Network
{
var from = state.Mobile;
if (!(World.FindItem(reader.ReadUInt32()) is MapItem map))
if (!(World.FindItem((Serial)reader.ReadUInt32()) is MapItem map))
{
return;
}

View file

@ -227,8 +227,6 @@ namespace Server.Items
writer.WriteEncodedInt(TriggerRange);
}
private IEntity ReadEntity(IGenericReader reader) => World.FindEntity(reader.ReadUInt());
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
@ -243,8 +241,8 @@ namespace Server.Items
TriggerDelay = reader.ReadTimeSpan();
SoundDelay = reader.ReadTimeSpan();
m_Source = ReadEntity(reader);
m_Target = ReadEntity(reader);
m_Source = reader.ReadEntity<IEntity>();
m_Target = reader.ReadEntity<IEntity>();
Sequence = reader.ReadEntity<EffectController>();
FixedDirection = reader.ReadBool();