AvatarsConquest/Scripts/Multis/Deeds.cs

959 lines
No EOL
21 KiB
C#

using Server;
using System;
using System.Collections;
using Server.Multis;
using Server.Targeting;
using Server.Items;
namespace Server.Multis.Deeds
{
public class HousePlacementTarget : MultiTarget
{
private HouseDeed m_Deed;
public HousePlacementTarget( HouseDeed deed ) : base( deed.MultiID, deed.Offset )
{
m_Deed = deed;
}
protected override void OnTarget( Mobile from, object o )
{
IPoint3D ip = o as IPoint3D;
if ( ip != null )
{
if ( ip is Item )
ip = ((Item)ip).GetWorldTop();
Point3D p = new Point3D( ip );
Region reg = Region.Find( new Point3D( p ), from.Map );
if ( from.AccessLevel >= AccessLevel.GameMaster || reg.AllowHousing( from, p ) )
m_Deed.OnPlacement( from, p );
else if ( reg.IsPartOf( typeof( TreasureRegion ) ) || reg.IsPartOf( typeof( UnderworldEntrance ) ) )
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.
else
from.SendLocalizedMessage( 501265 ); // Housing can not be created in this area.
}
}
}
public abstract class HouseDeed : Item
{
private int m_MultiID;
private Point3D m_Offset;
[CommandProperty( AccessLevel.GameMaster )]
public int MultiID
{
get
{
return m_MultiID;
}
set
{
m_MultiID = value;
}
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D Offset
{
get
{
return m_Offset;
}
set
{
m_Offset = value;
}
}
public HouseDeed( int id, Point3D offset ) : base( 0x14F0 )
{
Weight = 1.0;
m_MultiID = id;
m_Offset = offset;
}
public HouseDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( m_Offset );
writer.Write( m_MultiID );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_Offset = reader.ReadPoint3D();
goto case 0;
}
case 0:
{
m_MultiID = reader.ReadInt();
break;
}
}
if ( Weight == 0.0 )
Weight = 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
{
from.SendLocalizedMessage( 1010433 ); /* House placement cancellation could result in a
* 60 second delay in the return of your deed.
*/
from.Target = new HousePlacementTarget( this );
}
}
public abstract BaseHouse GetHouse( Mobile owner );
public abstract Rectangle2D[] Area{ get; }
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
{
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 );
switch ( res )
{
case HousePlacementResult.Valid:
{
BaseHouse house = GetHouse( from );
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.BadItem:
case HousePlacementResult.BadLand:
case HousePlacementResult.BadStatic:
case HousePlacementResult.BadRegionHidden:
{
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( "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;
}
}
}
}
}
public class BlueTentDeed : HouseDeed
{
public override int LabelNumber{ get{ return 1041217; } } // deed to a blue tent
[Constructable]
public BlueTentDeed() : base( 0x70, new Point3D( 0, 0, 0 ) )
{
}
public BlueTentDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new BlueTent( owner );
}
public override Rectangle2D[] Area{ get{ return BlueTent.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class GreenTentDeed : HouseDeed
{
public override int LabelNumber{ get{ return 1041218; } } // deed to a green tent
[Constructable]
public GreenTentDeed() : base( 0x72, new Point3D( 0, 0, 0 ) )
{
}
public GreenTentDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new GreenTent( owner );
}
public override Rectangle2D[] Area{ get{ return SmallOldHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class StonePlasterHouseDeed : HouseDeed
{
[Constructable]
public StonePlasterHouseDeed() : base( 0x64, new Point3D( 0, 4, 0 ) )
{
}
public StonePlasterHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallOldHouse( owner, 0x64 );
}
public override int LabelNumber{ get{ return 1041211; } }
public override Rectangle2D[] Area{ get{ return SmallOldHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class FieldStoneHouseDeed : HouseDeed
{
[Constructable]
public FieldStoneHouseDeed() : base( 0x66, new Point3D( 0, 4, 0 ) )
{
}
public FieldStoneHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallOldHouse( owner, 0x66 );
}
public override int LabelNumber{ get{ return 1041212; } }
public override Rectangle2D[] Area{ get{ return SmallOldHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class SmallBrickHouseDeed : HouseDeed
{
[Constructable]
public SmallBrickHouseDeed() : base( 0x68, new Point3D( 0, 4, 0 ) )
{
}
public SmallBrickHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallOldHouse( owner, 0x68 );
}
public override int LabelNumber{ get{ return 1041213; } }
public override Rectangle2D[] Area{ get{ return SmallOldHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class WoodHouseDeed : HouseDeed
{
[Constructable]
public WoodHouseDeed() : base( 0x6A, new Point3D( 0, 4, 0 ) )
{
}
public WoodHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallOldHouse( owner, 0x6A );
}
public override int LabelNumber{ get{ return 1041214; } }
public override Rectangle2D[] Area{ get{ return SmallOldHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class WoodPlasterHouseDeed : HouseDeed
{
[Constructable]
public WoodPlasterHouseDeed() : base( 0x6C, new Point3D( 0, 4, 0 ) )
{
}
public WoodPlasterHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallOldHouse( owner, 0x6C );
}
public override int LabelNumber{ get{ return 1041215; } }
public override Rectangle2D[] Area{ get{ return SmallOldHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class ThatchedRoofCottageDeed : HouseDeed
{
[Constructable]
public ThatchedRoofCottageDeed() : base( 0x6E, new Point3D( 0, 4, 0 ) )
{
}
public ThatchedRoofCottageDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallOldHouse( owner, 0x6E );
}
public override int LabelNumber{ get{ return 1041216; } }
public override Rectangle2D[] Area{ get{ return SmallOldHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class BrickHouseDeed : HouseDeed
{
[Constructable]
public BrickHouseDeed() : base( 0x74, new Point3D( -1, 7, 0 ) )
{
}
public BrickHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new GuildHouse( owner );
}
public override int LabelNumber{ get{ return 1041219; } }
public override Rectangle2D[] Area{ get{ return GuildHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class TwoStoryWoodPlasterHouseDeed : HouseDeed
{
[Constructable]
public TwoStoryWoodPlasterHouseDeed() : base( 0x76, new Point3D( -3, 7, 0 ) )
{
}
public TwoStoryWoodPlasterHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new TwoStoryHouse( owner, 0x76 );
}
public override int LabelNumber{ get{ return 1041220; } }
public override Rectangle2D[] Area{ get{ return TwoStoryHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class TwoStoryStonePlasterHouseDeed : HouseDeed
{
[Constructable]
public TwoStoryStonePlasterHouseDeed() : base( 0x78, new Point3D( -3, 7, 0 ) )
{
}
public TwoStoryStonePlasterHouseDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new TwoStoryHouse( owner, 0x78 );
}
public override int LabelNumber{ get{ return 1041221; } }
public override Rectangle2D[] Area{ get{ return TwoStoryHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class TowerDeed : HouseDeed
{
[Constructable]
public TowerDeed() : base( 0x7A, new Point3D( 0, 7, 0 ) )
{
}
public TowerDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new Tower( owner );
}
public override int LabelNumber{ get{ return 1041222; } }
public override Rectangle2D[] Area{ get{ return Tower.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class KeepDeed : HouseDeed
{
[Constructable]
public KeepDeed() : base( 0x7C, new Point3D( 0, 11, 0 ) )
{
}
public KeepDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new Keep( owner );
}
public override int LabelNumber{ get{ return 1041223; } }
public override Rectangle2D[] Area{ get{ return Keep.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class CastleDeed : HouseDeed
{
[Constructable]
public CastleDeed() : base( 0x7E, new Point3D( 0, 16, 0 ) )
{
}
public CastleDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new Castle( owner );
}
public override int LabelNumber{ get{ return 1041224; } }
public override Rectangle2D[] Area{ get{ return Castle.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class LargePatioDeed : HouseDeed
{
[Constructable]
public LargePatioDeed() : base( 0x8C, new Point3D( -4, 7, 0 ) )
{
}
public LargePatioDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new LargePatioHouse( owner );
}
public override int LabelNumber{ get{ return 1041231; } }
public override Rectangle2D[] Area{ get{ return LargePatioHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class LargeMarbleDeed : HouseDeed
{
[Constructable]
public LargeMarbleDeed() : base( 0x96, new Point3D( -4, 7, 0 ) )
{
}
public LargeMarbleDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new LargeMarbleHouse( owner );
}
public override int LabelNumber{ get{ return 1041236; } }
public override Rectangle2D[] Area{ get{ return LargeMarbleHouse.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class SmallTowerDeed : HouseDeed
{
[Constructable]
public SmallTowerDeed() : base( 0x98, new Point3D( 3, 4, 0 ) )
{
}
public SmallTowerDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallTower( owner );
}
public override int LabelNumber{ get{ return 1041237; } }
public override Rectangle2D[] Area{ get{ return SmallTower.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class LogCabinDeed : HouseDeed
{
[Constructable]
public LogCabinDeed() : base( 0x9A, new Point3D( 1, 6, 0 ) )
{
}
public LogCabinDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new LogCabin( owner );
}
public override int LabelNumber{ get{ return 1041238; } }
public override Rectangle2D[] Area{ get{ return LogCabin.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class SandstonePatioDeed : HouseDeed
{
[Constructable]
public SandstonePatioDeed() : base( 0x9C, new Point3D( -1, 4, 0 ) )
{
}
public SandstonePatioDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SandStonePatio( owner );
}
public override int LabelNumber{ get{ return 1041239; } }
public override Rectangle2D[] Area{ get{ return SandStonePatio.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class VillaDeed : HouseDeed
{
[Constructable]
public VillaDeed() : base( 0x9E, new Point3D( 3, 6, 0 ) )
{
}
public VillaDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new TwoStoryVilla( owner );
}
public override int LabelNumber{ get{ return 1041240; } }
public override Rectangle2D[] Area{ get{ return TwoStoryVilla.AreaArray; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class StoneWorkshopDeed : HouseDeed
{
[Constructable]
public StoneWorkshopDeed() : base( 0xA0, new Point3D( -1, 4, 0 ) )
{
}
public StoneWorkshopDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallShop( owner, 0xA0 );
}
public override int LabelNumber{ get{ return 1041241; } }
public override Rectangle2D[] Area{ get{ return SmallShop.AreaArray2; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class MarbleWorkshopDeed : HouseDeed
{
[Constructable]
public MarbleWorkshopDeed() : base( 0xA2, new Point3D( -1, 4, 0 ) )
{
}
public MarbleWorkshopDeed( Serial serial ) : base( serial )
{
}
public override BaseHouse GetHouse( Mobile owner )
{
return new SmallShop( owner, 0xA2 );
}
public override int LabelNumber{ get{ return 1041242; } }
public override Rectangle2D[] Area{ get{ return SmallShop.AreaArray1; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}