fix: Converts houses/deeds to serialization generator (#2288)
### Summary * Converts HouseDeeds to serialization generator * Converts Houses to serialization generator * Converts ContestHouses to serialization generator
This commit is contained in:
parent
d984961b38
commit
771cb50919
63 changed files with 1872 additions and 2528 deletions
133
Projects/UOContent/Multis/HouseDeed.cs
Normal file
133
Projects/UOContent/Multis/HouseDeed.cs
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
using ModernUO.Serialization;
|
||||
|
||||
namespace Server.Multis.Deeds;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public abstract partial class HouseDeed : Item
|
||||
{
|
||||
[SerializableField(0)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private Point3D _offset;
|
||||
|
||||
[SerializableField(1)]
|
||||
[SerializedCommandProperty(AccessLevel.GameMaster)]
|
||||
private int _multiID;
|
||||
|
||||
public HouseDeed(int id, Point3D offset) : base(0x14F0)
|
||||
{
|
||||
LootType = LootType.Newbied;
|
||||
|
||||
_multiID = id;
|
||||
_offset = offset;
|
||||
}
|
||||
|
||||
public virtual Direction HouseDirection => Direction.South;
|
||||
|
||||
public abstract Rectangle2D[] Area { get; }
|
||||
|
||||
public override double DefaultWeight => 1.0;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
else if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from))
|
||||
{
|
||||
from.SendLocalizedMessage(501271); // You already own a house, you may not place another!
|
||||
}
|
||||
else
|
||||
{
|
||||
/* House placement cancellation could result in a
|
||||
* 60 second delay in the return of your deed.
|
||||
*/
|
||||
from.SendLocalizedMessage(1010433);
|
||||
|
||||
from.Target = new HousePlacementTarget(this);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract BaseHouse GetHouse(Mobile owner);
|
||||
|
||||
public void OnPlacement(Mobile from, Point3D p)
|
||||
{
|
||||
if (Deleted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
else if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from))
|
||||
{
|
||||
from.SendLocalizedMessage(501271); // You already own a house, you may not place another!
|
||||
}
|
||||
else
|
||||
{
|
||||
var center = new Point3D(p.X - Offset.X, p.Y - Offset.Y, p.Z - Offset.Z);
|
||||
var res = HousePlacement.Check(from, MultiID, center, out var toMove, HouseDirection);
|
||||
|
||||
switch (res)
|
||||
{
|
||||
case HousePlacementResult.Valid:
|
||||
{
|
||||
var house = GetHouse(from);
|
||||
house.MoveToWorld(center, from.Map);
|
||||
Delete();
|
||||
|
||||
for (var i = 0; i < toMove.Count; ++i)
|
||||
{
|
||||
var o = toMove[i];
|
||||
|
||||
if (o is Mobile mobile)
|
||||
{
|
||||
mobile.Location = house.BanLocation;
|
||||
}
|
||||
else if (o is Item item)
|
||||
{
|
||||
item.Location = house.BanLocation;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case HousePlacementResult.BadItem:
|
||||
case HousePlacementResult.BadLand:
|
||||
case HousePlacementResult.BadStatic:
|
||||
case HousePlacementResult.BadRegionHidden:
|
||||
{
|
||||
// The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain.
|
||||
from.SendLocalizedMessage(1043287);
|
||||
break;
|
||||
}
|
||||
case HousePlacementResult.NoSurface:
|
||||
{
|
||||
from.SendMessage(
|
||||
"The house could not be created here. Part of the foundation would not be on any surface."
|
||||
);
|
||||
break;
|
||||
}
|
||||
case HousePlacementResult.BadRegion:
|
||||
{
|
||||
from.SendLocalizedMessage(501265); // Housing cannot be created in this area.
|
||||
break;
|
||||
}
|
||||
case HousePlacementResult.BadRegionTemp:
|
||||
{
|
||||
// Lord British has decreed a 'no build' period, thus you cannot build this house at this time.
|
||||
from.SendLocalizedMessage(501270);
|
||||
break;
|
||||
}
|
||||
case HousePlacementResult.BadRegionRaffle:
|
||||
{
|
||||
// You must have a deed for this plot of land in order to build here.
|
||||
from.SendLocalizedMessage(1150493);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue