fix: Codegens games (#1058)

This commit is contained in:
Kamron Batman 2022-06-13 17:31:56 -07:00 committed by GitHub
parent 5b48843045
commit 368160144b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 502 additions and 711 deletions

View file

@ -1,51 +1,37 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[Flippable(0xE1C, 0xFAD)]
[SerializationGenerator(0, false)]
public partial class Backgammon : BaseBoard
{
[Flippable(0xE1C, 0xFAD)]
public class Backgammon : BaseBoard
[Constructible]
public Backgammon() : base(0xE1C)
{
[Constructible]
public Backgammon() : base(0xE1C)
}
public override void CreatePieces()
{
for (var i = 0; i < 5; i++)
{
CreatePiece(new PieceWhiteChecker(this), 42, 17 * i + 6);
CreatePiece(new PieceBlackChecker(this), 42, 17 * i + 119);
CreatePiece(new PieceBlackChecker(this), 142, 17 * i + 6);
CreatePiece(new PieceWhiteChecker(this), 142, 17 * i + 119);
}
public Backgammon(Serial serial) : base(serial)
for (var i = 0; i < 3; i++)
{
CreatePiece(new PieceBlackChecker(this), 108, 17 * i + 6);
CreatePiece(new PieceWhiteChecker(this), 108, 17 * i + 153);
}
public override void CreatePieces()
for (var i = 0; i < 2; i++)
{
for (var i = 0; i < 5; i++)
{
CreatePiece(new PieceWhiteChecker(this), 42, 17 * i + 6);
CreatePiece(new PieceBlackChecker(this), 42, 17 * i + 119);
CreatePiece(new PieceBlackChecker(this), 142, 17 * i + 6);
CreatePiece(new PieceWhiteChecker(this), 142, 17 * i + 119);
}
for (var i = 0; i < 3; i++)
{
CreatePiece(new PieceBlackChecker(this), 108, 17 * i + 6);
CreatePiece(new PieceWhiteChecker(this), 108, 17 * i + 153);
}
for (var i = 0; i < 2; i++)
{
CreatePiece(new PieceWhiteChecker(this), 223, 17 * i + 6);
CreatePiece(new PieceBlackChecker(this), 223, 17 * i + 170);
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
CreatePiece(new PieceWhiteChecker(this), 223, 17 * i + 6);
CreatePiece(new PieceBlackChecker(this), 223, 17 * i + 170);
}
}
}

View file

@ -1,145 +1,129 @@
using System;
using System.Collections.Generic;
using ModernUO.Serialization;
using Server.ContextMenus;
using Server.Gumps;
using Server.Multis;
using Server.Network;
namespace Server.Items
namespace Server.Items;
[SerializationGenerator(2, false)]
public abstract partial class BaseBoard : Container, ISecurable
{
public abstract class BaseBoard : Container, ISecurable
[SerializableField(0)]
[SerializableFieldAttr("[CommandProperty(AccessLevel.GameMaster)]")]
private SecureLevel _level;
public BaseBoard(int itemID) : base(itemID)
{
public BaseBoard(int itemID) : base(itemID)
CreatePieces();
Weight = 5.0;
}
public override bool DisplaysContent => false; // Do not display (x items, y stones)
public override bool IsDecoContainer => false;
public override TimeSpan DecayTime => TimeSpan.FromDays(1.0);
public abstract void CreatePieces();
public void Reset()
{
for (var i = Items.Count - 1; i >= 0; --i)
{
CreatePieces();
Weight = 5.0;
}
public BaseBoard(Serial serial) : base(serial)
{
}
public override bool DisplaysContent => false; // Do not display (x items, y stones)
public override bool IsDecoContainer => false;
public override TimeSpan DecayTime => TimeSpan.FromDays(1.0);
[CommandProperty(AccessLevel.GameMaster)]
public SecureLevel Level { get; set; }
public abstract void CreatePieces();
public void Reset()
{
for (var i = Items.Count - 1; i >= 0; --i)
if (i < Items.Count)
{
if (i < Items.Count)
Items[i].Delete();
}
}
CreatePieces();
}
public void CreatePiece(BasePiece piece, int x, int y)
{
AddItem(piece);
piece.Location = new Point3D(x, y, 0);
}
private void Deserialize(IGenericReader reader, int version)
{
base.Deserialize(reader);
if (version == 1)
{
Level = (SecureLevel)reader.ReadInt();
}
}
public override bool OnDragDrop(Mobile from, Item dropped) =>
dropped is BasePiece piece && piece.Board == this && base.OnDragDrop(from, dropped);
public override bool OnDragDropInto(Mobile from, Item dropped, Point3D point)
{
if (dropped is BasePiece piece && piece.Board == this && base.OnDragDropInto(from, dropped, point))
{
if (RootParent == from)
{
from.SendSound(0x127, GetWorldLocation());
}
else
{
Span<byte> buffer = stackalloc byte[OutgoingEffectPackets.SoundPacketLength].InitializePacket();
foreach (var state in GetClientsInRange(2))
{
Items[i].Delete();
OutgoingEffectPackets.CreateSoundEffect(buffer, 0x127, GetWorldLocation());
state.Send(buffer);
}
}
CreatePieces();
return true;
}
public void CreatePiece(BasePiece piece, int x, int y)
return false;
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
if (ValidateDefault(from, this))
{
AddItem(piece);
piece.Location = new Point3D(x, y, 0);
list.Add(new DefaultEntry(from, this));
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(1); // version
SetSecureLevelEntry.AddTo(from, this, list);
}
writer.Write((int)Level);
public static bool ValidateDefault(Mobile from, BaseBoard board) =>
!board.Deleted && (from.AccessLevel >= AccessLevel.GameMaster || from.Alive &&
(board.IsChildOf(from.Backpack) || board.RootParent is not Mobile &&
board.Map == from.Map && from.InRange(board.GetWorldLocation(), 1) &&
BaseHouse.FindHouseAt(board)?.IsOwner(from) == true));
public class DefaultEntry : ContextMenuEntry
{
private readonly BaseBoard m_Board;
private readonly Mobile m_From;
public DefaultEntry(Mobile from, BaseBoard board) : base(
6162,
from.AccessLevel >= AccessLevel.GameMaster ? -1 : 1
)
{
m_From = from;
m_Board = board;
}
public override void Deserialize(IGenericReader reader)
public override void OnClick()
{
base.Deserialize(reader);
var version = reader.ReadInt();
if (version == 1)
if (ValidateDefault(m_From, m_Board))
{
Level = (SecureLevel)reader.ReadInt();
}
if (Weight == 1.0)
{
Weight = 5.0;
}
}
public override bool OnDragDrop(Mobile from, Item dropped) =>
dropped is BasePiece piece && piece.Board == this && base.OnDragDrop(from, dropped);
public override bool OnDragDropInto(Mobile from, Item dropped, Point3D point)
{
if (dropped is BasePiece piece && piece.Board == this && base.OnDragDropInto(from, dropped, point))
{
if (RootParent == from)
{
from.SendSound(0x127, GetWorldLocation());
}
else
{
Span<byte> buffer = stackalloc byte[OutgoingEffectPackets.SoundPacketLength].InitializePacket();
foreach (var state in GetClientsInRange(2))
{
OutgoingEffectPackets.CreateSoundEffect(buffer, 0x127, GetWorldLocation());
state.Send(buffer);
}
}
return true;
}
return false;
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
if (ValidateDefault(from, this))
{
list.Add(new DefaultEntry(from, this));
}
SetSecureLevelEntry.AddTo(from, this, list);
}
public static bool ValidateDefault(Mobile from, BaseBoard board) =>
!board.Deleted && (from.AccessLevel >= AccessLevel.GameMaster || from.Alive &&
(board.IsChildOf(from.Backpack) || board.RootParent is not Mobile &&
board.Map == from.Map && from.InRange(board.GetWorldLocation(), 1) &&
BaseHouse.FindHouseAt(board)?.IsOwner(from) == true));
public class DefaultEntry : ContextMenuEntry
{
private readonly BaseBoard m_Board;
private readonly Mobile m_From;
public DefaultEntry(Mobile from, BaseBoard board) : base(
6162,
from.AccessLevel >= AccessLevel.GameMaster ? -1 : 1
)
{
m_From = from;
m_Board = board;
}
public override void OnClick()
{
if (ValidateDefault(m_From, m_Board))
{
m_Board.Reset();
}
m_Board.Reset();
}
}
}

View file

@ -1,89 +1,67 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class BasePiece : Item
{
public class BasePiece : Item
[SerializableField(0)]
private BaseBoard _board;
public BasePiece(int itemID, BaseBoard board) : base(itemID) => _board = board;
public override bool IsVirtualItem => true;
public override bool CanTarget => false;
[AfterDeserialization(false)]
private void AfterDeserialization()
{
public BasePiece(int itemID, BaseBoard board) : base(itemID) => Board = board;
public BasePiece(Serial serial) : base(serial)
if (Board == null || Parent == null)
{
Delete();
}
public BaseBoard Board { get; set; }
public override bool IsVirtualItem => true;
public override bool CanTarget => false;
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
writer.Write(Board);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
switch (version)
{
case 0:
{
Board = (BaseBoard)reader.ReadEntity<Item>();
if (Board == null || Parent == null)
{
Delete();
}
break;
}
}
}
public override void OnSingleClick(Mobile from)
{
if (Board?.Deleted != false)
{
Delete();
}
else if (!IsChildOf(Board))
{
Board.DropItem(this);
}
else
{
base.OnSingleClick(from);
}
}
public override bool OnDragLift(Mobile from)
{
if (Board?.Deleted != false)
{
Delete();
return false;
}
if (!IsChildOf(Board))
{
Board.DropItem(this);
return false;
}
return true;
}
public override bool DropToMobile(Mobile from, Mobile target, Point3D p) => false;
public override bool DropToItem(Mobile from, Item target, Point3D p) =>
target == Board && p.X != -1 && p.Y != -1 && base.DropToItem(from, target, p);
public override bool DropToWorld(Mobile from, Point3D p) => false;
public override int GetLiftSound(Mobile from) => -1;
}
public override void OnSingleClick(Mobile from)
{
if (Board?.Deleted != false)
{
Delete();
}
else if (!IsChildOf(Board))
{
Board.DropItem(this);
}
else
{
base.OnSingleClick(from);
}
}
public override bool OnDragLift(Mobile from)
{
if (Board?.Deleted != false)
{
Delete();
return false;
}
if (!IsChildOf(Board))
{
Board.DropItem(this);
return false;
}
return true;
}
public override bool DropToMobile(Mobile from, Mobile target, Point3D p) => false;
public override bool DropToItem(Mobile from, Item target, Point3D p) =>
target == Board && p.X != -1 && p.Y != -1 && base.DropToItem(from, target, p);
public override bool DropToWorld(Mobile from, Point3D p) => false;
public override int GetLiftSound(Mobile from) => -1;
}

View file

@ -1,41 +1,27 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class CheckerBoard : BaseBoard
{
public class CheckerBoard : BaseBoard
[Constructible]
public CheckerBoard() : base(0xFA6)
{
[Constructible]
public CheckerBoard() : base(0xFA6)
{
}
}
public CheckerBoard(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1016449; // a checker board
public override int LabelNumber => 1016449; // a checker board
public override void CreatePieces()
public override void CreatePieces()
{
for (var i = 0; i < 4; i++)
{
for (var i = 0; i < 4; i++)
{
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 25);
CreatePiece(new PieceWhiteChecker(this), 50 * i + 70, 50);
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 75);
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 150);
CreatePiece(new PieceBlackChecker(this), 50 * i + 45, 175);
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 200);
}
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 25);
CreatePiece(new PieceWhiteChecker(this), 50 * i + 70, 50);
CreatePiece(new PieceWhiteChecker(this), 50 * i + 45, 75);
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 150);
CreatePiece(new PieceBlackChecker(this), 50 * i + 45, 175);
CreatePiece(new PieceBlackChecker(this), 50 * i + 70, 200);
}
}
}

View file

@ -1,52 +1,23 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class PieceWhiteChecker : BasePiece
{
public class PieceWhiteChecker : BasePiece
public PieceWhiteChecker(BaseBoard board) : base(0x3584, board)
{
public PieceWhiteChecker(BaseBoard board) : base(0x3584, board)
{
}
public PieceWhiteChecker(Serial serial) : base(serial)
{
}
public override string DefaultName => "white checker";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceBlackChecker : BasePiece
{
public PieceBlackChecker(BaseBoard board) : base(0x358B, board)
{
}
public PieceBlackChecker(Serial serial) : base(serial)
{
}
public override string DefaultName => "black checker";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override string DefaultName => "white checker";
}
[SerializationGenerator(0, false)]
public partial class PieceBlackChecker : BasePiece
{
public PieceBlackChecker(BaseBoard board) : base(0x358B, board)
{
}
public override string DefaultName => "black checker";
}

View file

@ -1,302 +1,123 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class PieceWhiteKing : BasePiece
{
public class PieceWhiteKing : BasePiece
public PieceWhiteKing(BaseBoard board) : base(0x3587, board)
{
public PieceWhiteKing(BaseBoard board) : base(0x3587, board)
{
}
public PieceWhiteKing(Serial serial) : base(serial)
{
}
public override string DefaultName => "white king";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceBlackKing : BasePiece
{
public PieceBlackKing(BaseBoard board) : base(0x358E, board)
{
}
public PieceBlackKing(Serial serial) : base(serial)
{
}
public override string DefaultName => "black king";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceWhiteQueen : BasePiece
{
public PieceWhiteQueen(BaseBoard board) : base(0x358A, board)
{
}
public PieceWhiteQueen(Serial serial) : base(serial)
{
}
public override string DefaultName => "white queen";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceBlackQueen : BasePiece
{
public PieceBlackQueen(BaseBoard board) : base(0x3591, board)
{
}
public PieceBlackQueen(Serial serial) : base(serial)
{
}
public override string DefaultName => "black queen";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceWhiteRook : BasePiece
{
public PieceWhiteRook(BaseBoard board) : base(0x3586, board)
{
}
public PieceWhiteRook(Serial serial) : base(serial)
{
}
public override string DefaultName => "white rook";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceBlackRook : BasePiece
{
public PieceBlackRook(BaseBoard board) : base(0x358D, board)
{
}
public PieceBlackRook(Serial serial) : base(serial)
{
}
public override string DefaultName => "black rook";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceWhiteBishop : BasePiece
{
public PieceWhiteBishop(BaseBoard board) : base(0x3585, board)
{
}
public PieceWhiteBishop(Serial serial) : base(serial)
{
}
public override string DefaultName => "white bishop";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceBlackBishop : BasePiece
{
public PieceBlackBishop(BaseBoard board) : base(0x358C, board)
{
}
public PieceBlackBishop(Serial serial) : base(serial)
{
}
public override string DefaultName => "black bishop";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceWhiteKnight : BasePiece
{
public PieceWhiteKnight(BaseBoard board) : base(0x3588, board)
{
}
public PieceWhiteKnight(Serial serial) : base(serial)
{
}
public override string DefaultName => "white knight";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceBlackKnight : BasePiece
{
public PieceBlackKnight(BaseBoard board) : base(0x358F, board)
{
}
public PieceBlackKnight(Serial serial) : base(serial)
{
}
public override string DefaultName => "black knight";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceWhitePawn : BasePiece
{
public PieceWhitePawn(BaseBoard board) : base(0x3589, board)
{
}
public PieceWhitePawn(Serial serial) : base(serial)
{
}
public override string DefaultName => "white pawn";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public class PieceBlackPawn : BasePiece
{
public PieceBlackPawn(BaseBoard board) : base(0x3590, board)
{
}
public PieceBlackPawn(Serial serial) : base(serial)
{
}
public override string DefaultName => "black pawn";
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
}
public override string DefaultName => "white king";
}
[SerializationGenerator(0, false)]
public partial class PieceBlackKing : BasePiece
{
public PieceBlackKing(BaseBoard board) : base(0x358E, board)
{
}
public override string DefaultName => "black king";
}
[SerializationGenerator(0, false)]
public partial class PieceWhiteQueen : BasePiece
{
public PieceWhiteQueen(BaseBoard board) : base(0x358A, board)
{
}
public override string DefaultName => "white queen";
}
[SerializationGenerator(0, false)]
public partial class PieceBlackQueen : BasePiece
{
public PieceBlackQueen(BaseBoard board) : base(0x3591, board)
{
}
public override string DefaultName => "black queen";
}
[SerializationGenerator(0, false)]
public partial class PieceWhiteRook : BasePiece
{
public PieceWhiteRook(BaseBoard board) : base(0x3586, board)
{
}
public override string DefaultName => "white rook";
}
[SerializationGenerator(0, false)]
public partial class PieceBlackRook : BasePiece
{
public PieceBlackRook(BaseBoard board) : base(0x358D, board)
{
}
public override string DefaultName => "black rook";
}
[SerializationGenerator(0, false)]
public partial class PieceWhiteBishop : BasePiece
{
public PieceWhiteBishop(BaseBoard board) : base(0x3585, board)
{
}
public override string DefaultName => "white bishop";
}
[SerializationGenerator(0, false)]
public partial class PieceBlackBishop : BasePiece
{
public PieceBlackBishop(BaseBoard board) : base(0x358C, board)
{
}
public override string DefaultName => "black bishop";
}
[SerializationGenerator(0, false)]
public partial class PieceWhiteKnight : BasePiece
{
public PieceWhiteKnight(BaseBoard board) : base(0x3588, board)
{
}
public override string DefaultName => "white knight";
}
[SerializationGenerator(0, false)]
public partial class PieceBlackKnight : BasePiece
{
public PieceBlackKnight(BaseBoard board) : base(0x358F, board)
{
}
public override string DefaultName => "black knight";
}
[SerializationGenerator(0, false)]
public partial class PieceWhitePawn : BasePiece
{
public PieceWhitePawn(BaseBoard board) : base(0x3589, board)
{
}
public override string DefaultName => "white pawn";
}
[SerializationGenerator(0, false)]
public partial class PieceBlackPawn : BasePiece
{
public PieceBlackPawn(BaseBoard board) : base(0x3590, board)
{
}
public override string DefaultName => "black pawn";
}

View file

@ -1,66 +1,52 @@
namespace Server.Items
using ModernUO.Serialization;
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class Chessboard : BaseBoard
{
public class Chessboard : BaseBoard
[Constructible]
public Chessboard() : base(0xFA6)
{
[Constructible]
public Chessboard() : base(0xFA6)
}
public override int LabelNumber => 1016450; // a chessboard
public override void CreatePieces()
{
for (var i = 0; i < 8; i++)
{
CreatePiece(new PieceBlackPawn(this), 67, 25 * i + 17);
CreatePiece(new PieceWhitePawn(this), 192, 25 * i + 17);
}
public Chessboard(Serial serial) : base(serial)
{
}
// Rook
CreatePiece(new PieceBlackRook(this), 42, 5);
CreatePiece(new PieceBlackRook(this), 42, 180);
public override int LabelNumber => 1016450; // a chessboard
CreatePiece(new PieceWhiteRook(this), 216, 5);
CreatePiece(new PieceWhiteRook(this), 216, 180);
public override void CreatePieces()
{
for (var i = 0; i < 8; i++)
{
CreatePiece(new PieceBlackPawn(this), 67, 25 * i + 17);
CreatePiece(new PieceWhitePawn(this), 192, 25 * i + 17);
}
// Knight
CreatePiece(new PieceBlackKnight(this), 42, 30);
CreatePiece(new PieceBlackKnight(this), 42, 155);
// Rook
CreatePiece(new PieceBlackRook(this), 42, 5);
CreatePiece(new PieceBlackRook(this), 42, 180);
CreatePiece(new PieceWhiteKnight(this), 216, 30);
CreatePiece(new PieceWhiteKnight(this), 216, 155);
CreatePiece(new PieceWhiteRook(this), 216, 5);
CreatePiece(new PieceWhiteRook(this), 216, 180);
// Bishop
CreatePiece(new PieceBlackBishop(this), 42, 55);
CreatePiece(new PieceBlackBishop(this), 42, 130);
// Knight
CreatePiece(new PieceBlackKnight(this), 42, 30);
CreatePiece(new PieceBlackKnight(this), 42, 155);
CreatePiece(new PieceWhiteBishop(this), 216, 55);
CreatePiece(new PieceWhiteBishop(this), 216, 130);
CreatePiece(new PieceWhiteKnight(this), 216, 30);
CreatePiece(new PieceWhiteKnight(this), 216, 155);
// Queen
CreatePiece(new PieceBlackQueen(this), 42, 105);
CreatePiece(new PieceWhiteQueen(this), 216, 105);
// Bishop
CreatePiece(new PieceBlackBishop(this), 42, 55);
CreatePiece(new PieceBlackBishop(this), 42, 130);
CreatePiece(new PieceWhiteBishop(this), 216, 55);
CreatePiece(new PieceWhiteBishop(this), 216, 130);
// Queen
CreatePiece(new PieceBlackQueen(this), 42, 105);
CreatePiece(new PieceWhiteQueen(this), 216, 105);
// King
CreatePiece(new PieceBlackKing(this), 42, 80);
CreatePiece(new PieceWhiteKing(this), 216, 80);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
// King
CreatePiece(new PieceBlackKing(this), 42, 80);
CreatePiece(new PieceWhiteKing(this), 216, 80);
}
}

View file

@ -1,54 +1,39 @@
using ModernUO.Serialization;
using Server.Network;
namespace Server.Items
namespace Server.Items;
[SerializationGenerator(0, false)]
public partial class Dices : Item, ITelekinesisable
{
public class Dices : Item, ITelekinesisable
[Constructible]
public Dices() : base(0xFA7) => Weight = 1.0;
public void OnTelekinesis(Mobile from)
{
[Constructible]
public Dices() : base(0xFA7) => Weight = 1.0;
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x376A, 9, 32, 5022);
Effects.PlaySound(Location, Map, 0x1F5);
public Dices(Serial serial) : base(serial)
Roll(from);
}
public override void OnDoubleClick(Mobile from)
{
if (!from.InRange(GetWorldLocation(), 2))
{
return;
}
public void OnTelekinesis(Mobile from)
{
Effects.SendLocationParticles(EffectItem.Create(Location, Map, EffectItem.DefaultDuration), 0x376A, 9, 32, 5022);
Effects.PlaySound(Location, Map, 0x1F5);
Roll(from);
}
Roll(from);
}
public override void OnDoubleClick(Mobile from)
{
if (!from.InRange(GetWorldLocation(), 2))
{
return;
}
Roll(from);
}
public void Roll(Mobile from)
{
PublicOverheadMessage(
MessageType.Regular,
0,
false,
$"*{from.Name} rolls {Utility.Random(1, 6)}, {Utility.Random(1, 6)}*"
);
}
public override void Serialize(IGenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(IGenericReader reader)
{
base.Deserialize(reader);
var version = reader.ReadInt();
}
public void Roll(Mobile from)
{
PublicOverheadMessage(
MessageType.Regular,
0,
false,
$"*{from.Name} rolls {Utility.Random(1, 6)}, {Utility.Random(1, 6)}*"
);
}
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.Backgammon"
}

View file

@ -0,0 +1,11 @@
{
"version": 2,
"type": "Server.Items.BaseBoard",
"properties": [
{
"name": "Level",
"type": "Server.Multis.SecureLevel",
"rule": "EnumMigrationRule"
}
]
}

View file

@ -0,0 +1,11 @@
{
"version": 0,
"type": "Server.Items.BasePiece",
"properties": [
{
"name": "Board",
"type": "Server.Items.BaseBoard",
"rule": "SerializableInterfaceMigrationRule"
}
]
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.CheckerBoard"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.Chessboard"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.Dices"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceBlackBishop"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceBlackChecker"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceBlackKing"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceBlackKnight"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceBlackPawn"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceBlackQueen"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceBlackRook"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceWhiteBishop"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceWhiteChecker"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceWhiteKing"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceWhiteKnight"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceWhitePawn"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceWhiteQueen"
}

View file

@ -0,0 +1,4 @@
{
"version": 0,
"type": "Server.Items.PieceWhiteRook"
}