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
{
ArrayList toMove;
Point3D center = new Point3D(p.X - m_Offset.X, p.Y - m_Offset.Y, p.Z - m_Offset.Z);
HousePlacementResult res = HousePlacement.Check(from, m_MultiID, center, out toMove, HasEastFacingDoor());
switch (res)
{
case HousePlacementResult.Valid:
{
if (from.AccessLevel < AccessLevel.GameMaster && BaseHouse.HasAccountHouse(from))
{
from.SendLocalizedMessage(501271); // You already own a house, you may not place another!
return;
}
BaseHouse house = GetHouse(from);
//For Custom house, drop z-level by -8 <--- May need to revise after we add more custom houses
if (house is SmallStoneTempleHouse || house is MagistrateHouse || house is SandstoneSpaHouse || house is ArbiterEstate)
{
center.Z -= 8;
}
house.MoveToWorld(center, from.Map);
Delete();
for (int i = 0; i < toMove.Count; ++i)
{
object o = toMove[i];
if (o is Mobile)
{
((Mobile)o).Location = house.BanLocation;
}
else if (o is Item)
{
((Item)o).Location = house.BanLocation;
}
}
break;
}
case HousePlacementResult.BadRegionExistingHouse:
{
from.SendMessage(149, "A house already exists at that location.");
break;
}
case HousePlacementResult.BadRegionHidden:
{
from.SendMessage(149, "That location does not allow housing.");
break;
}
case HousePlacementResult.BadItem:
case HousePlacementResult.BadLand:
case HousePlacementResult.BadStatic:
{
from.SendMessage(149, "House placement failed: White fire indicates tiles blocked by terrain and Blue fire indicates tiles violating housing proximity limits.");
//from.SendLocalizedMessage(1043287); // The house could not be created here. Either something is blocking the house, or the house would not be on valid terrain.
break;
}
case HousePlacementResult.NoSurface:
{
from.SendMessage(149, "House placement failed: White fire indicates tiles blocked by terrain and Blue fire indicates tiles violating housing proximity limits.");
//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:
{
from.SendLocalizedMessage(501270); //Lord British has decreed a 'no build' period, thus you cannot build this house at this time.
break;
}
case HousePlacementResult.BadRegionRaffle:
{
from.SendLocalizedMessage(1150493); // You must have a deed for this plot of land in order to build here.
break;
}
}
}
}