#W# Source and Scripts added. Added Scripts/Settings.cs to expose some basic tweak able settings.

This commit is contained in:
WarrentyExpired 2026-08-06 11:06:05 -04:00
parent b51c58f514
commit 3045c83799
3512 changed files with 627673 additions and 0 deletions

View file

@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class AbbatoirAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new AbbatoirDeed(); } }
[Constructable]
public AbbatoirAddon()
{
AddComponent( new AddonComponent( 0x120E ), -1, -1, 0 );
AddComponent( new AddonComponent( 0x120F ), 0, -1, 0 );
AddComponent( new AddonComponent( 0x1210 ), 1, -1, 0 );
AddComponent( new AddonComponent( 0x1215 ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x1216 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1211 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1214 ), -1, 1, 0 );
AddComponent( new AddonComponent( 0x1213 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x1212 ), 1, 1, 0 );
}
public AbbatoirAddon( Serial serial ) : base( serial )
{
}
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 AbbatoirDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new AbbatoirAddon(); } }
public override int LabelNumber{ get{ return 1044329; } } // abbatoir
[Constructable]
public AbbatoirDeed()
{
}
public AbbatoirDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,285 @@
using System;
using Server;
namespace Server.Items
{
[Server.Engines.Craft.Anvil]
public class AnvilComponent : AddonComponent
{
[Constructable]
public AnvilComponent( int itemID ) : base( itemID )
{
}
public AnvilComponent( Serial serial ) : base( serial )
{
}
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();
}
}
[Server.Engines.Craft.Forge]
public class ForgeComponent : AddonComponent
{
[Constructable]
public ForgeComponent( int itemID ) : base( itemID )
{
}
public ForgeComponent( Serial serial ) : base( serial )
{
}
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 LocalizedAddonComponent : AddonComponent
{
private int m_LabelNumber;
[CommandProperty( AccessLevel.GameMaster )]
public int Number
{
get{ return m_LabelNumber; }
set{ m_LabelNumber = value; InvalidateProperties(); }
}
public override int LabelNumber{ get{ return m_LabelNumber; } }
[Constructable]
public LocalizedAddonComponent( int itemID, int labelNumber ) : base( itemID )
{
m_LabelNumber = labelNumber;
}
public LocalizedAddonComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) m_LabelNumber );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_LabelNumber = reader.ReadInt();
break;
}
}
}
}
public class AddonComponent : Item, IChopable
{
private Point3D m_Offset;
private BaseAddon m_Addon;
[CommandProperty( AccessLevel.GameMaster )]
public BaseAddon Addon
{
get
{
return m_Addon;
}
set
{
m_Addon = value;
}
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D Offset
{
get
{
return m_Offset;
}
set
{
m_Offset = value;
}
}
[Hue, CommandProperty( AccessLevel.GameMaster )]
public override int Hue
{
get
{
return base.Hue;
}
set
{
base.Hue = value;
if ( m_Addon != null && m_Addon.ShareHue )
m_Addon.Hue = value;
}
}
public virtual bool NeedsWall{ get{ return false; } }
public virtual Point3D WallPosition{ get{ return Point3D.Zero; } }
[Constructable]
public AddonComponent( int itemID ) : base( itemID )
{
Movable = false;
ApplyLightTo( this );
}
public AddonComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( m_Addon != null )
m_Addon.OnComponentUsed( this, from );
}
public void OnChop( Mobile from )
{
if ( m_Addon != null && from.InRange( GetWorldLocation(), 3 ) )
m_Addon.OnChop( from );
else
from.SendLocalizedMessage( 500446 ); // That is too far away.
}
public override void OnLocationChange( Point3D old )
{
if ( m_Addon != null )
m_Addon.Location = new Point3D( X - m_Offset.X, Y - m_Offset.Y, Z - m_Offset.Z );
}
public override void OnMapChange()
{
if ( m_Addon != null )
m_Addon.Map = Map;
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if ( m_Addon != null )
m_Addon.Delete();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( m_Addon );
writer.Write( m_Offset );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
case 0:
{
m_Addon = reader.ReadItem() as BaseAddon;
m_Offset = reader.ReadPoint3D();
if ( m_Addon != null )
m_Addon.OnComponentLoaded( this );
ApplyLightTo( this );
break;
}
}
if ( version < 1 && Weight == 0 )
Weight = -1;
}
public static void ApplyLightTo( Item item )
{
if ( (item.ItemData.Flags & TileFlag.LightSource) == 0 )
return; // not a light source
int itemID = item.ItemID;
for ( int i = 0; i < m_Entries.Length; ++i )
{
LightEntry entry = m_Entries[i];
int[] toMatch = entry.m_ItemIDs;
bool contains = false;
for ( int j = 0; !contains && j < toMatch.Length; ++j )
contains = ( itemID == toMatch[j] );
if ( contains )
{
item.Light = entry.m_Light;
return;
}
}
}
private static LightEntry[] m_Entries = new LightEntry[]
{
new LightEntry( LightType.WestSmall, 1122, 1123, 1124, 1141, 1142, 1143, 1144, 1145, 1146, 2347, 2359, 2360, 2361, 2362, 2363, 2364, 2387, 2388, 2389, 2390, 2391, 2392 ),
new LightEntry( LightType.NorthSmall, 1131, 1133, 1134, 1147, 1148, 1149, 1150, 1151, 1152, 2352, 2373, 2374, 2375, 2376, 2377, 2378, 2401, 2402, 2403, 2404, 2405, 2406 ),
new LightEntry( LightType.Circle300, 6526, 6538, 6571 ),
new LightEntry( LightType.Circle150, 5703, 6587 )
};
private class LightEntry
{
public LightType m_Light;
public int[] m_ItemIDs;
public LightEntry( LightType light, params int[] itemIDs )
{
m_Light = light;
m_ItemIDs = itemIDs;
}
}
}
}

View file

@ -0,0 +1,171 @@
using System;
using System.Collections.Generic;
using Server;
using Server.ContextMenus;
namespace Server.Items
{
public class AddonContainerComponent : Item, IChopable
{
public virtual bool NeedsWall { get { return false; } }
public virtual Point3D WallPosition { get { return Point3D.Zero; } }
private Point3D m_Offset;
private BaseAddonContainer m_Addon;
[CommandProperty( AccessLevel.GameMaster )]
public BaseAddonContainer Addon
{
get { return m_Addon; }
set { m_Addon = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D Offset
{
get { return m_Offset; }
set { m_Offset = value; }
}
[Hue, CommandProperty( AccessLevel.GameMaster )]
public override int Hue
{
get { return base.Hue; }
set
{
base.Hue = value;
if ( m_Addon != null && m_Addon.ShareHue )
m_Addon.Hue = value;
}
}
[Constructable]
public AddonContainerComponent( int itemID ) : base( itemID )
{
Movable = false;
AddonComponent.ApplyLightTo( this );
}
public AddonContainerComponent( Serial serial ) : base( serial )
{
}
public override bool OnDragDrop( Mobile from, Item dropped )
{
if ( Addon != null )
return Addon.OnDragDrop( from, dropped );
return false;
}
public override void OnDoubleClick( Mobile from )
{
if ( m_Addon != null )
m_Addon.OnComponentUsed( this, from );
}
public override void OnLocationChange( Point3D old )
{
if ( m_Addon != null )
m_Addon.Location = new Point3D( X - m_Offset.X, Y - m_Offset.Y, Z - m_Offset.Z );
}
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
{
if ( m_Addon != null )
m_Addon.GetContextMenuEntries( from, list );
}
public override void OnMapChange()
{
if ( m_Addon != null )
m_Addon.Map = Map;
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
if ( m_Addon != null )
m_Addon.Delete();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( m_Addon );
writer.Write( m_Offset );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_Addon = reader.ReadItem() as BaseAddonContainer;
m_Offset = reader.ReadPoint3D();
if ( m_Addon != null )
m_Addon.OnComponentLoaded( this );
AddonComponent.ApplyLightTo( this );
}
public virtual void OnChop( Mobile from )
{
if ( m_Addon != null && from.InRange( GetWorldLocation(), 3 ) )
m_Addon.OnChop( from );
else
from.SendLocalizedMessage( 500446 ); // That is too far away.
}
}
public class LocalizedContainerComponent : AddonContainerComponent
{
private int m_LabelNumber;
public override int LabelNumber
{
get
{
if ( m_LabelNumber > 0 )
return m_LabelNumber;
return base.LabelNumber;
}
}
public LocalizedContainerComponent( int itemID, int labelNumber ) : base( itemID )
{
m_LabelNumber = labelNumber;
}
public LocalizedContainerComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( m_LabelNumber );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_LabelNumber = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class AlchemistTableEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new AlchemistTableEastDeed(); } }
[Constructable]
public AlchemistTableEastAddon()
{
AddComponent( new AddonComponent( 0x2DD3 ), 0, 0, 0 );
}
public AlchemistTableEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class AlchemistTableEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new AlchemistTableEastAddon(); } }
public override int LabelNumber{ get{ return 1073397; } } // alchemist table (east)
[Constructable]
public AlchemistTableEastDeed()
{
}
public AlchemistTableEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class AlchemistTableSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new AlchemistTableSouthDeed(); } }
[Constructable]
public AlchemistTableSouthAddon()
{
AddComponent( new AddonComponent( 0x2DD4 ), 0, 0, 0 );
}
public AlchemistTableSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class AlchemistTableSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new AlchemistTableSouthAddon(); } }
public override int LabelNumber{ get{ return 1073396; } } // alchemist table (south)
[Constructable]
public AlchemistTableSouthDeed()
{
}
public AlchemistTableSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class AnvilEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new AnvilEastDeed(); } }
[Constructable]
public AnvilEastAddon()
{
AddComponent( new AnvilComponent( 0xFAF ), 0, 0, 0 );
}
public AnvilEastAddon( Serial serial ) : base( serial )
{
}
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 AnvilEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new AnvilEastAddon(); } }
public override int LabelNumber{ get{ return 1044333; } } // anvil (east)
[Constructable]
public AnvilEastDeed()
{
}
public AnvilEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class AnvilSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new AnvilSouthDeed(); } }
[Constructable]
public AnvilSouthAddon()
{
AddComponent( new AnvilComponent( 0xFB0 ), 0, 0, 0 );
}
public AnvilSouthAddon( Serial serial ) : base( serial )
{
}
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 AnvilSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new AnvilSouthAddon(); } }
public override int LabelNumber{ get{ return 1044334; } } // anvil (south)
[Constructable]
public AnvilSouthDeed()
{
}
public AnvilSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ArcaneBookshelfEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ArcaneBookshelfEastDeed(); } }
[Constructable]
public ArcaneBookshelfEastAddon()
{
AddComponent( new AddonComponent( 0x3084 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3085 ), -1, 0, 0 );
}
public ArcaneBookshelfEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ArcaneBookshelfEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ArcaneBookshelfEastAddon(); } }
public override int LabelNumber{ get{ return 1073371; } } // arcane bookshelf (east)
[Constructable]
public ArcaneBookshelfEastDeed()
{
}
public ArcaneBookshelfEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ArcaneBookshelfSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ArcaneBookshelfSouthDeed(); } }
[Constructable]
public ArcaneBookshelfSouthAddon()
{
AddComponent( new AddonComponent( 0x3087 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3086 ), 0, 1, 0 );
}
public ArcaneBookshelfSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ArcaneBookshelfSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ArcaneBookshelfSouthAddon(); } }
public override int LabelNumber{ get{ return 1072871; } } // arcane bookshelf (south)
[Constructable]
public ArcaneBookshelfSouthDeed()
{
}
public ArcaneBookshelfSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using Server;
namespace Server.Items
{
public class ArcaneCircleAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ArcaneCircleDeed(); } }
[Constructable]
public ArcaneCircleAddon()
{
AddComponent( new AddonComponent( 0x3083 ), -1, -1, 0 );
AddComponent( new AddonComponent( 0x3080 ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x3082 ), 0, -1, 0 );
AddComponent( new AddonComponent( 0x3081 ), 1, -1, 0 );
AddComponent( new AddonComponent( 0x307D ), -1, 1, 0 );
AddComponent( new AddonComponent( 0x307F ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x307E ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x307C ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x307B ), 1, 1, 0 );
}
public ArcaneCircleAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
if ( version == 0 )
ValidationQueue<ArcaneCircleAddon>.Add( this );
}
public void Validate()
{
foreach ( AddonComponent c in Components )
{
if ( c.ItemID == 0x3083 )
{
c.Offset = new Point3D( -1, -1, 0 );
c.MoveToWorld( new Point3D( X + c.Offset.X, Y + c.Offset.Y, Z + c.Offset.Z ), Map );
}
}
}
}
public class ArcaneCircleDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ArcaneCircleAddon(); } }
public override int LabelNumber{ get{ return 1072703; } } // arcane circle
[Constructable]
public ArcaneCircleDeed()
{
}
public ArcaneCircleDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class ArcanistStatueEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ArcanistStatueEastDeed(); } }
[Constructable]
public ArcanistStatueEastAddon()
{
AddComponent( new AddonComponent( 0x2D0E ), 0, 0, 0 );
}
public ArcanistStatueEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ArcanistStatueEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ArcanistStatueEastAddon(); } }
public override int LabelNumber{ get{ return 1072886; } } // arcanist statue (east)
[Constructable]
public ArcanistStatueEastDeed()
{
}
public ArcanistStatueEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class ArcanistStatueSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ArcanistStatueSouthDeed(); } }
[Constructable]
public ArcanistStatueSouthAddon()
{
AddComponent( new AddonComponent( 0x2D0F ), 0, 0, 0 );
}
public ArcanistStatueSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ArcanistStatueSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ArcanistStatueSouthAddon(); } }
public override int LabelNumber{ get{ return 1072885; } } // arcanist statue (south)
[Constructable]
public ArcanistStatueSouthDeed()
{
}
public ArcanistStatueSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,367 @@
using System;
using System.Collections;
using Server;
using Server.Network;
namespace Server.Items
{
[FlipableAttribute( 0x100A/*East*/, 0x100B/*South*/ )]
public class ArcheryButte : AddonComponent
{
private double m_MinSkill;
private double m_MaxSkill;
private int m_Arrows, m_Bolts;
private DateTime m_LastUse;
[CommandProperty( AccessLevel.GameMaster )]
public double MinSkill
{
get{ return m_MinSkill; }
set{ m_MinSkill = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public double MaxSkill
{
get{ return m_MaxSkill; }
set{ m_MaxSkill = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public DateTime LastUse
{
get{ return m_LastUse; }
set{ m_LastUse = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool FacingEast
{
get{ return ( ItemID == 0x100A ); }
set{ ItemID = value ? 0x100A : 0x100B; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Arrows
{
get{ return m_Arrows; }
set{ m_Arrows = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int Bolts
{
get{ return m_Bolts; }
set{ m_Bolts = value; }
}
[Constructable]
public ArcheryButte() : this( 0x100A )
{
}
public ArcheryButte( int itemID ) : base( itemID )
{
m_MinSkill = -25.0;
m_MaxSkill = +25.0;
}
public ArcheryButte( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( (m_Arrows > 0 || m_Bolts > 0) && from.InRange( GetWorldLocation(), 1 ) )
Gather( from );
else
Fire( from );
}
public void Gather( Mobile from )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500592 ); // You gather the arrows and bolts.
if ( m_Arrows > 0 )
from.AddToBackpack( new Arrow( m_Arrows ) );
if ( m_Bolts > 0 )
from.AddToBackpack( new Bolt( m_Bolts ) );
m_Arrows = 0;
m_Bolts = 0;
m_Entries = null;
}
private static TimeSpan UseDelay = TimeSpan.FromSeconds( 2.0 );
private class ScoreEntry
{
private int m_Total;
private int m_Count;
public int Total{ get{ return m_Total; } set{ m_Total = value; } }
public int Count{ get{ return m_Count; } set{ m_Count = value; } }
public void Record( int score )
{
m_Total += score;
m_Count += 1;
}
public ScoreEntry()
{
}
}
private Hashtable m_Entries;
private ScoreEntry GetEntryFor( Mobile from )
{
if ( m_Entries == null )
m_Entries = new Hashtable();
ScoreEntry e = (ScoreEntry)m_Entries[from];
if ( e == null )
m_Entries[from] = e = new ScoreEntry();
return e;
}
public void Fire( Mobile from )
{
BaseRanged bow = from.Weapon as BaseRanged;
if ( bow == null )
{
SendLocalizedMessageTo( from, 500593 ); // You must practice with ranged weapons on this.
return;
}
if ( DateTime.UtcNow < (m_LastUse + UseDelay) )
return;
Point3D worldLoc = GetWorldLocation();
if ( FacingEast ? from.X <= worldLoc.X : from.Y <= worldLoc.Y )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500596 ); // You would do better to stand in front of the archery butte.
return;
}
if ( FacingEast ? from.Y != worldLoc.Y : from.X != worldLoc.X )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500597 ); // You aren't properly lined up with the archery butte to get an accurate shot.
return;
}
if ( !from.InRange( worldLoc, 6 ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500598 ); // You are too far away from the archery butte to get an accurate shot.
return;
}
else if ( from.InRange( worldLoc, 4 ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500599 ); // You are too close to the target.
return;
}
Container pack = from.Backpack;
Type ammoType = bow.AmmoType;
bool isArrow = ( ammoType == typeof( Arrow ) );
bool isBolt = ( ammoType == typeof( Bolt ) );
bool isKnown = ( isArrow || isBolt );
if ( pack == null || !pack.ConsumeTotal( ammoType, 1 ) )
{
if ( isArrow )
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500594 ); // You do not have any arrows with which to practice.
else if ( isBolt )
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500595 ); // You do not have any crossbow bolts with which to practice.
else
SendLocalizedMessageTo( from, 500593 ); // You must practice with ranged weapons on this.
return;
}
m_LastUse = DateTime.UtcNow;
from.Direction = from.GetDirectionTo( GetWorldLocation() );
bow.PlaySwingAnimation( from );
from.MovingEffect( this, bow.EffectID, 18, 1, false, false );
ScoreEntry se = GetEntryFor( from );
if ( !from.CheckSkill( bow.Skill, m_MinSkill, m_MaxSkill ) )
{
from.PlaySound( bow.MissSound );
PublicOverheadMessage( MessageType.Regular, 0x3B2, 500604, from.Name ); // You miss the target altogether.
se.Record( 0 );
if ( se.Count == 1 )
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1062719, se.Total.ToString() );
else
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1042683, String.Format( "{0}\t{1}", se.Total, se.Count ) );
return;
}
Effects.PlaySound( Location, Map, 0x2B1 );
double rand = Utility.RandomDouble();
int area, score, splitScore;
if ( 0.10 > rand )
{
area = 0; // bullseye
score = 50;
splitScore = 100;
}
else if ( 0.25 > rand )
{
area = 1; // inner ring
score = 10;
splitScore = 20;
}
else if ( 0.50 > rand )
{
area = 2; // middle ring
score = 5;
splitScore = 15;
}
else
{
area = 3; // outer ring
score = 2;
splitScore = 5;
}
bool split = ( isKnown && ((m_Arrows + m_Bolts) * 0.02) > Utility.RandomDouble() );
if ( split )
{
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1010027 + area, String.Format( "{0}\t{1}", from.Name, isArrow ? "arrow" : "bolt" ) );
}
else
{
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1010035 + area, from.Name );
if ( isArrow )
++m_Arrows;
else if ( isBolt )
++m_Bolts;
}
se.Record( split ? splitScore : score );
if ( se.Count == 1 )
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1062719, se.Total.ToString() );
else
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1042683, String.Format( "{0}\t{1}", se.Total, se.Count ) );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
writer.Write( m_MinSkill );
writer.Write( m_MaxSkill );
writer.Write( m_Arrows );
writer.Write( m_Bolts );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_MinSkill = reader.ReadDouble();
m_MaxSkill = reader.ReadDouble();
m_Arrows = reader.ReadInt();
m_Bolts = reader.ReadInt();
if ( m_MinSkill == 0.0 && m_MaxSkill == 30.0 )
{
m_MinSkill = -25.0;
m_MaxSkill = +25.0;
}
break;
}
}
}
}
public class ArcheryButteAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ArcheryButteDeed(); } }
[Constructable]
public ArcheryButteAddon()
{
AddComponent( new ArcheryButte( 0x100A ), 0, 0, 0 );
}
public ArcheryButteAddon( Serial serial ) : base( serial )
{
}
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 ArcheryButteDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ArcheryButteAddon(); } }
public override int LabelNumber{ get{ return 1024106; } } // archery butte
[Constructable]
public ArcheryButteDeed()
{
}
public ArcheryButteDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,392 @@
using System;
using System.Collections;
using Server;
using Server.Multis;
using Server.Gumps;
using Server.Network;
using Server.Prompts;
using System.Collections.Generic;
namespace Server.Items
{
public class BallotBox : AddonComponent
{
public static readonly int MaxTopicLines = 6;
public override int LabelNumber{ get{ return 1041006; } } // a ballot box
private string[] m_Topic;
private List<Mobile> m_Yes;
private List<Mobile> m_No;
public string[] Topic
{
get{ return m_Topic; }
}
public List<Mobile> Yes
{
get{ return m_Yes; }
}
public List<Mobile> No
{
get{ return m_No; }
}
[Constructable]
public BallotBox() : base( 0x9A8 )
{
m_Topic = new string[0];
m_Yes = new List<Mobile>();
m_No = new List<Mobile>();
}
public BallotBox( Serial serial ) : base( serial )
{
}
public void ClearTopic()
{
m_Topic = new string[0];
ClearVotes();
}
public void AddLineToTopic( string line )
{
if ( m_Topic.Length >= MaxTopicLines )
return;
string[] newTopic = new string[m_Topic.Length + 1];
m_Topic.CopyTo( newTopic, 0 );
newTopic[m_Topic.Length] = line;
m_Topic = newTopic;
ClearVotes();
}
public void ClearVotes()
{
Yes.Clear();
No.Clear();
}
public bool IsOwner( Mobile from )
{
if ( from.AccessLevel >= AccessLevel.GameMaster )
return true;
BaseHouse house = BaseHouse.FindHouseAt( this );
return ( house != null && house.IsOwner( from ) );
}
public bool HasVoted( Mobile from )
{
return ( Yes.Contains( from ) || No.Contains( from ) );
}
public override bool OnDragDrop( Mobile from, Item dropped )
{
SendLocalizedMessageTo( from, 500369 ); // I'm a ballot box, not a container!
return false;
}
public override void OnDoubleClick( Mobile from )
{
if ( !from.InRange( this.GetWorldLocation(), 2 ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
else
{
bool isOwner = IsOwner( from );
from.SendGump( new InternalGump( this, isOwner ) );
}
}
private class InternalGump : Gump
{
private BallotBox m_Box;
public InternalGump( BallotBox box, bool isOwner ) : base( 110, 70 )
{
m_Box = box;
AddBackground( 0, 0, 400, 350, 0xA28 );
if ( isOwner )
AddHtmlLocalized( 0, 15, 400, 35, 1011000, false, false ); // <center>Ballot Box Owner's Menu</center>
else
AddHtmlLocalized( 0, 15, 400, 35, 1011001, false, false ); // <center>Ballot Box -- Vote Here!</center>
AddHtmlLocalized( 0, 50, 400, 35, 1011002, false, false ); // <center>Topic</center>
int lineCount = box.Topic.Length;
AddBackground( 25, 90, 350, Math.Max( 20 * lineCount, 20 ), 0x1400 );
for ( int i = 0; i < lineCount; i++ )
{
string line = box.Topic[i];
if ( !String.IsNullOrEmpty( line ) )
AddLabelCropped( 30, 90 + i * 20, 340, 20, 0x3E3, line );
}
int yesCount = box.Yes.Count;
int noCount = box.No.Count;
int totalVotes = yesCount + noCount;
AddHtmlLocalized( 0, 215, 400, 35, 1011003, false, false ); // <center>votes</center>
if ( !isOwner )
AddButton( 20, 240, 0xFA5, 0xFA7, 3, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 55, 242, 25, 35, 1011004, false, false ); // aye:
AddLabel( 78, 242, 0x0, String.Format( "[{0}]", yesCount ) );
if ( !isOwner )
AddButton( 20, 275, 0xFA5, 0xFA7, 4, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 55, 277, 25, 35, 1011005, false, false ); // nay:
AddLabel( 78, 277, 0x0, String.Format( "[{0}]", noCount ) );
if ( totalVotes > 0 )
{
AddImageTiled( 130, 242, ( yesCount * 225 ) / totalVotes, 10, 0xD6 );
AddImageTiled( 130, 277, ( noCount * 225 ) / totalVotes, 10, 0xD6 );
}
AddButton( 45, 305, 0xFA5, 0xFA7, 0, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 80, 308, 40, 35, 1011008, false, false ); // done
if ( isOwner )
{
AddButton( 120, 305, 0xFA5, 0xFA7, 1, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 155, 308, 100, 35, 1011006, false, false ); // change topic
AddButton( 240, 305, 0xFA5, 0xFA7, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 275, 308, 300, 100, 1011007, false, false ); // reset votes
}
}
public override void OnResponse( NetState sender, RelayInfo info )
{
if ( m_Box.Deleted || info.ButtonID == 0 )
return;
Mobile from = sender.Mobile;
if ( from.Map != m_Box.Map || !from.InRange( m_Box.GetWorldLocation(), 2 ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
return;
}
bool isOwner = m_Box.IsOwner( from );
switch ( info.ButtonID )
{
case 1: // change topic
{
if ( isOwner )
{
m_Box.ClearTopic();
from.SendLocalizedMessage( 500370, "", 0x35 ); // Enter a line of text for your ballot, and hit ENTER. Hit ESC after the last line is entered.
from.Prompt = new TopicPrompt( m_Box );
}
break;
}
case 2: // reset votes
{
if ( isOwner )
{
m_Box.ClearVotes();
from.SendLocalizedMessage( 500371 ); // Votes zeroed out.
}
goto default;
}
case 3: // aye
{
if ( !isOwner )
{
if ( m_Box.HasVoted( from ) )
{
from.SendLocalizedMessage( 500374 ); // You have already voted on this ballot.
}
else
{
m_Box.Yes.Add( from );
from.SendLocalizedMessage( 500373 ); // Your vote has been registered.
}
}
goto default;
}
case 4: // nay
{
if ( !isOwner )
{
if ( m_Box.HasVoted( from ) )
{
from.SendLocalizedMessage( 500374 ); // You have already voted on this ballot.
}
else
{
m_Box.No.Add( from );
from.SendLocalizedMessage( 500373 ); // Your vote has been registered.
}
}
goto default;
}
default:
{
from.SendGump( new InternalGump( m_Box, isOwner ) );
break;
}
}
}
}
private class TopicPrompt : Prompt
{
private BallotBox m_Box;
public TopicPrompt( BallotBox box )
{
m_Box = box;
}
public override void OnResponse( Mobile from, string text )
{
if ( m_Box.Deleted || !m_Box.IsOwner( from ) )
return;
if ( from.Map != m_Box.Map || !from.InRange( m_Box.GetWorldLocation(), 2 ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
return;
}
m_Box.AddLineToTopic( text.TrimEnd() );
if ( m_Box.Topic.Length < MaxTopicLines )
{
from.SendLocalizedMessage( 500377, "", 0x35 ); // Next line or ESC to finish:
from.Prompt = new TopicPrompt( m_Box );
}
else
{
from.SendLocalizedMessage( 500376, "", 0x35 ); // Ballot entry complete.
from.SendGump( new InternalGump( m_Box, true ) );
}
}
public override void OnCancel( Mobile from )
{
if ( m_Box.Deleted || !m_Box.IsOwner( from ) )
return;
if ( from.Map != m_Box.Map || !from.InRange( m_Box.GetWorldLocation(), 2 ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
return;
}
from.SendLocalizedMessage( 500376, "", 0x35 ); // Ballot entry complete.
from.SendGump( new InternalGump( m_Box, true ) );
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
writer.WriteEncodedInt( m_Topic.Length );
for ( int i = 0; i < m_Topic.Length; i++ )
writer.Write( (string) m_Topic[i] );
writer.Write( m_Yes, true );
writer.Write( m_No, true );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Topic = new string[reader.ReadEncodedInt()];
for ( int i = 0; i < m_Topic.Length; i++ )
m_Topic[i] = reader.ReadString();
m_Yes = reader.ReadStrongMobileList();
m_No = reader.ReadStrongMobileList();
}
}
public class BallotBoxAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new BallotBoxDeed(); } }
public BallotBoxAddon()
{
AddComponent( new BallotBox(), 0, 0, 0 );
}
public BallotBoxAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class BallotBoxDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new BallotBoxAddon(); } }
public override int LabelNumber{ get{ return 1044327; } } // ballot box
[Constructable]
public BallotBoxDeed()
{
}
public BallotBoxDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,296 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Server;
using Server.Multis;
using Server.Regions;
namespace Server.Items
{
public enum AddonFitResult
{
Valid,
Blocked,
NotInHouse,
DoorTooClose,
NoWall,
DoorsNotClosed
}
public interface IAddon
{
Item Deed{ get; }
bool CouldFit( IPoint3D p, Map map );
}
public abstract class BaseAddon : Item, IChopable, IAddon
{
#region Mondain's Legacy
private CraftResource m_Resource;
[CommandProperty( AccessLevel.GameMaster )]
public CraftResource Resource
{
get{ return m_Resource; }
set
{
if ( m_Resource != value )
{
m_Resource = value;
Hue = CraftResources.GetHue( m_Resource );
InvalidateProperties();
}
}
}
#endregion
private List<AddonComponent> m_Components;
public void AddComponent( AddonComponent c, int x, int y, int z )
{
if ( Deleted )
return;
m_Components.Add( c );
c.Addon = this;
c.Offset = new Point3D( x, y, z );
c.MoveToWorld( new Point3D( X + x, Y + y, Z + z ), Map );
}
public BaseAddon() : base( 1 )
{
Movable = false;
Visible = false;
m_Components = new List<AddonComponent>();
}
public virtual bool RetainDeedHue{ get{ return false; } }
public virtual void OnChop( Mobile from )
{
BaseHouse house = BaseHouse.FindHouseAt( this );
if ( house != null && house.IsOwner( from ) && house.Addons.Contains( this ) )
{
Effects.PlaySound( GetWorldLocation(), Map, 0x3B3 );
from.SendLocalizedMessage( 500461 ); // You destroy the item.
int hue = 0;
if ( RetainDeedHue )
{
for ( int i = 0; hue == 0 && i < m_Components.Count; ++i )
{
AddonComponent c = m_Components[i];
if ( c.Hue != 0 )
hue = c.Hue;
}
}
Delete();
house.Addons.Remove( this );
BaseAddonDeed deed = Deed;
if ( deed != null )
{
if ( RetainDeedHue )
deed.Hue = hue;
from.AddToBackpack( deed );
}
}
}
public virtual BaseAddonDeed Deed{ get{ return null; } }
Item IAddon.Deed
{
get{ return this.Deed; }
}
public List<AddonComponent> Components
{
get
{
return m_Components;
}
}
public BaseAddon( Serial serial ) : base( serial )
{
}
public bool CouldFit( IPoint3D p, Map map )
{
BaseHouse h = null;
return ( CouldFit( p, map, null, ref h ) == AddonFitResult.Valid );
}
public virtual AddonFitResult CouldFit( IPoint3D p, Map map, Mobile from, ref BaseHouse house )
{
if ( Deleted )
return AddonFitResult.Blocked;
foreach ( AddonComponent c in m_Components )
{
Point3D p3D = new Point3D( p.X + c.Offset.X, p.Y + c.Offset.Y, p.Z + c.Offset.Z );
if ( !map.CanFit( p3D.X, p3D.Y, p3D.Z, c.ItemData.Height, false, true, ( c.Z == 0 ) ) )
return AddonFitResult.Blocked;
else if ( !CheckHouse( from, p3D, map, c.ItemData.Height, ref house ) )
return AddonFitResult.NotInHouse;
if ( c.NeedsWall )
{
Point3D wall = c.WallPosition;
if ( !IsWall( p3D.X + wall.X, p3D.Y + wall.Y, p3D.Z + wall.Z, map ) )
return AddonFitResult.NoWall;
}
}
ArrayList doors = house.Doors;
for ( int i = 0; i < doors.Count; ++i )
{
BaseDoor door = doors[i] as BaseDoor;
Point3D doorLoc = door.GetWorldLocation();
int doorHeight = door.ItemData.CalcHeight;
foreach ( AddonComponent c in m_Components )
{
Point3D addonLoc = new Point3D( p.X + c.Offset.X, p.Y + c.Offset.Y, p.Z + c.Offset.Z );
int addonHeight = c.ItemData.CalcHeight;
if ( Utility.InRange( doorLoc, addonLoc, 1 ) && (addonLoc.Z == doorLoc.Z || ((addonLoc.Z + addonHeight) > doorLoc.Z && (doorLoc.Z + doorHeight) > addonLoc.Z)) )
return AddonFitResult.DoorTooClose;
}
}
return AddonFitResult.Valid;
}
public static bool CheckHouse( Mobile from, Point3D p, Map map, int height, ref BaseHouse house )
{
house = BaseHouse.FindHouseAt( p, map, height );
if ( house == null || ( from != null && !house.IsOwner( from ) ) )
return false;
return true;
}
public static bool IsWall( int x, int y, int z, Map map )
{
if ( map == null )
return false;
StaticTile[] tiles = map.Tiles.GetStaticTiles( x, y, true );
for ( int i = 0; i < tiles.Length; ++i )
{
StaticTile t = tiles[i];
ItemData id = TileData.ItemTable[t.ID & TileData.MaxItemValue];
if ( (id.Flags & TileFlag.Wall) != 0 && (z + 16) > t.Z && (t.Z + t.Height) > z )
return true;
}
return false;
}
public virtual void OnComponentLoaded( AddonComponent c )
{
}
public virtual void OnComponentUsed( AddonComponent c, Mobile from )
{
}
public override void OnLocationChange( Point3D oldLoc )
{
if ( Deleted )
return;
foreach ( AddonComponent c in m_Components )
c.Location = new Point3D( X + c.Offset.X, Y + c.Offset.Y, Z + c.Offset.Z );
}
public override void OnMapChange()
{
if ( Deleted )
return;
foreach ( AddonComponent c in m_Components )
c.Map = Map;
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
foreach ( AddonComponent c in m_Components )
c.Delete();
}
public virtual bool ShareHue{ get{ return true; } }
[Hue, CommandProperty( AccessLevel.GameMaster )]
public override int Hue
{
get
{
return base.Hue;
}
set
{
if ( base.Hue != value )
{
base.Hue = value;
if ( !Deleted && this.ShareHue && m_Components != null )
{
foreach ( AddonComponent c in m_Components )
c.Hue = value;
}
}
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.WriteItemList<AddonComponent>( m_Components );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
case 0:
{
m_Components = reader.ReadStrongItemList<AddonComponent>();
break;
}
}
if ( version < 1 && Weight == 0 )
Weight = -1;
}
}
}

View file

@ -0,0 +1,307 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Server;
using Server.Multis;
using Server.Regions;
namespace Server.Items
{
public abstract class BaseAddonContainer : BaseContainer, IChopable, IAddon
{
public override bool DisplayWeight { get { return false; } }
[Hue, CommandProperty( AccessLevel.GameMaster )]
public override int Hue
{
get
{
return base.Hue;
}
set
{
if ( base.Hue != value )
{
base.Hue = value;
if ( !Deleted && this.ShareHue && m_Components != null )
{
Hue = value;
foreach ( AddonContainerComponent c in m_Components )
c.Hue = value;
}
}
}
}
private CraftResource m_Resource;
[CommandProperty( AccessLevel.GameMaster )]
public CraftResource Resource
{
get { return m_Resource; }
set
{
if ( m_Resource != value )
{
m_Resource = value;
Hue = CraftResources.GetHue( m_Resource );
InvalidateProperties();
}
}
}
Item IAddon.Deed
{
get { return this.Deed; }
}
public virtual bool RetainDeedHue { get { return false; } }
public virtual bool NeedsWall { get { return false; } }
public virtual bool ShareHue { get { return true; } }
public virtual Point3D WallPosition { get { return Point3D.Zero; } }
public virtual BaseAddonContainerDeed Deed { get { return null; } }
private List<AddonContainerComponent> m_Components;
public List<AddonContainerComponent> Components
{
get { return m_Components; }
}
public BaseAddonContainer( int itemID ) : base( itemID )
{
AddonComponent.ApplyLightTo( this );
m_Components = new List<AddonContainerComponent>();
}
public BaseAddonContainer( Serial serial ) : base( serial )
{
}
public override void OnLocationChange( Point3D oldLoc )
{
base.OnLocationChange( oldLoc );
if ( Deleted )
return;
foreach ( AddonContainerComponent c in m_Components )
c.Location = new Point3D( X + c.Offset.X, Y + c.Offset.Y, Z + c.Offset.Z );
}
public override void OnMapChange()
{
base.OnMapChange();
if ( Deleted )
return;
foreach ( AddonContainerComponent c in m_Components )
c.Map = Map;
}
public override void OnDelete()
{
BaseHouse house = BaseHouse.FindHouseAt( this );
if ( house != null )
house.Addons.Remove( this );
base.OnDelete();
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
if ( !CraftResources.IsStandard( m_Resource ) )
list.Add( CraftResources.GetLocalizationNumber( m_Resource ) );
}
public override void OnAfterDelete()
{
base.OnAfterDelete();
foreach ( AddonContainerComponent c in m_Components )
c.Delete();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.WriteItemList<AddonContainerComponent>( m_Components );
writer.Write( (int) m_Resource );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_Components = reader.ReadStrongItemList<AddonContainerComponent>();
m_Resource = (CraftResource) reader.ReadInt();
AddonComponent.ApplyLightTo( this );
}
public virtual void DropItemsToGround()
{
for ( int i = Items.Count - 1; i >= 0; i-- )
Items[ i ].MoveToWorld( Location );
}
public void AddComponent( AddonContainerComponent c, int x, int y, int z )
{
if ( Deleted )
return;
m_Components.Add( c );
c.Addon = this;
c.Offset = new Point3D( x, y, z );
c.MoveToWorld( new Point3D( X + x, Y + y, Z + z ), Map );
}
public AddonFitResult CouldFit( IPoint3D p, Map map, Mobile from, ref BaseHouse house )
{
if ( Deleted )
return AddonFitResult.Blocked;
foreach ( AddonContainerComponent c in m_Components )
{
Point3D p3D = new Point3D( p.X + c.Offset.X, p.Y + c.Offset.Y, p.Z + c.Offset.Z );
if ( !map.CanFit( p3D.X, p3D.Y, p3D.Z, c.ItemData.Height, false, true, ( c.Z == 0 ) ) )
return AddonFitResult.Blocked;
else if ( !BaseAddon.CheckHouse( from, p3D, map, c.ItemData.Height, ref house ) )
return AddonFitResult.NotInHouse;
if ( c.NeedsWall )
{
Point3D wall = c.WallPosition;
if ( !BaseAddon.IsWall( p3D.X + wall.X, p3D.Y + wall.Y, p3D.Z + wall.Z, map ) )
return AddonFitResult.NoWall;
}
}
Point3D p3 = new Point3D( p.X, p.Y, p.Z );
if ( !map.CanFit( p3.X, p3.Y, p3.Z, ItemData.Height, false, true, ( Z == 0 ) ) )
return AddonFitResult.Blocked;
else if ( !BaseAddon.CheckHouse( from, p3, map, ItemData.Height, ref house ) )
return AddonFitResult.NotInHouse;
if ( NeedsWall )
{
Point3D wall = WallPosition;
if ( !BaseAddon.IsWall( p3.X + wall.X, p3.Y + wall.Y, p3.Z + wall.Z, map ) )
return AddonFitResult.NoWall;
}
if ( house != null )
{
ArrayList doors = house.Doors;
for ( int i = 0; i < doors.Count; ++i )
{
BaseDoor door = doors[ i ] as BaseDoor;
if ( door != null && door.Open )
return AddonFitResult.DoorsNotClosed;
Point3D doorLoc = door.GetWorldLocation();
int doorHeight = door.ItemData.CalcHeight;
foreach ( AddonContainerComponent c in m_Components )
{
Point3D addonLoc = new Point3D( p.X + c.Offset.X, p.Y + c.Offset.Y, p.Z + c.Offset.Z );
int addonHeight = c.ItemData.CalcHeight;
if ( Utility.InRange( doorLoc, addonLoc, 1 ) && ( addonLoc.Z == doorLoc.Z || ( ( addonLoc.Z + addonHeight ) > doorLoc.Z && ( doorLoc.Z + doorHeight ) > addonLoc.Z ) ) )
return AddonFitResult.DoorTooClose;
}
Point3D addonLo = new Point3D( p.X, p.Y, p.Z );
int addonHeigh = ItemData.CalcHeight;
if ( Utility.InRange( doorLoc, addonLo, 1 ) && ( addonLo.Z == doorLoc.Z || ( ( addonLo.Z + addonHeigh ) > doorLoc.Z && ( doorLoc.Z + doorHeight ) > addonLo.Z ) ) )
return AddonFitResult.DoorTooClose;
}
}
return AddonFitResult.Valid;
}
public bool CouldFit( IPoint3D p, Map map )
{
BaseHouse house = null;
return ( CouldFit( p, map, null, ref house ) == AddonFitResult.Valid );
}
public virtual void OnChop( Mobile from )
{
BaseHouse house = BaseHouse.FindHouseAt( this );
if ( house != null && house.IsOwner( from ) )
{
if ( !IsSecure )
{
Effects.PlaySound( GetWorldLocation(), Map, 0x3B3 );
from.SendLocalizedMessage( 500461 ); // You destroy the item.
int hue = 0;
if ( RetainDeedHue )
{
for ( int i = 0; hue == 0 && i < m_Components.Count; ++i )
{
AddonContainerComponent c = m_Components[ i ];
if ( c.Hue != 0 )
hue = c.Hue;
}
}
DropItemsToGround();
Delete();
house.Addons.Remove( this );
BaseAddonContainerDeed deed = Deed;
if ( deed != null )
{
deed.Resource = Resource;
if ( RetainDeedHue )
deed.Hue = hue;
from.AddToBackpack( deed );
}
}
else
from.SendLocalizedMessage( 1074870 ); // This item must be unlocked/unsecured before re-deeding it.
}
}
public virtual void OnComponentLoaded( AddonContainerComponent c )
{
}
public virtual void OnComponentUsed( AddonContainerComponent c, Mobile from )
{
}
}
}

View file

@ -0,0 +1,165 @@
using System;
using Server;
using Server.Multis;
using Server.Targeting;
using Server.Engines.Craft;
namespace Server.Items
{
[Flipable( 0x14F0, 0x14EF )]
public abstract class BaseAddonContainerDeed : Item, ICraftable
{
public abstract BaseAddonContainer Addon{ get; }
private CraftResource m_Resource;
[CommandProperty( AccessLevel.GameMaster )]
public CraftResource Resource
{
get{ return m_Resource; }
set
{
if ( m_Resource != value )
{
m_Resource = value;
Hue = CraftResources.GetHue( m_Resource );
InvalidateProperties();
}
}
}
public BaseAddonContainerDeed() : base( 0x14F0 )
{
Weight = 1.0;
if ( !Core.AOS )
LootType = LootType.Newbied;
}
public BaseAddonContainerDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
// version 1
writer.Write( (int) m_Resource );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
m_Resource = (CraftResource) reader.ReadInt();
break;
}
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
from.Target = new InternalTarget( this );
else
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
}
public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
if ( !CraftResources.IsStandard( m_Resource ) )
list.Add( CraftResources.GetLocalizationNumber( m_Resource ) );
}
#region ICraftable
public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue )
{
Type resourceType = typeRes;
if ( resourceType == null )
resourceType = craftItem.Resources.GetAt( 0 ).ItemType;
Resource = CraftResources.GetFromType( resourceType );
CraftContext context = craftSystem.GetContext( from );
if ( context != null && context.DoNotColor )
Hue = 0;
return quality;
}
#endregion
private class InternalTarget : Target
{
private BaseAddonContainerDeed m_Deed;
public InternalTarget( BaseAddonContainerDeed deed ) : base( -1, true, TargetFlags.None )
{
m_Deed = deed;
CheckLOS = false;
}
protected override void OnTarget( Mobile from, object targeted )
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
if ( p == null || map == null || m_Deed.Deleted )
return;
if ( m_Deed.IsChildOf( from.Backpack ) )
{
BaseAddonContainer addon = m_Deed.Addon;
addon.Resource = m_Deed.Resource;
Server.Spells.SpellHelper.GetSurfaceTop( ref p );
BaseHouse house = null;
AddonFitResult res = addon.CouldFit( p, map, from, ref house );
if ( res == AddonFitResult.Valid )
addon.MoveToWorld( new Point3D( p ), map );
else if ( res == AddonFitResult.Blocked )
from.SendLocalizedMessage( 500269 ); // You cannot build that there.
else if ( res == AddonFitResult.NotInHouse )
from.SendLocalizedMessage( 500274 ); // You can only place this in a house that you own!
else if ( res == AddonFitResult.DoorsNotClosed )
from.SendMessage( "You must close all house doors before placing this." );
else if ( res == AddonFitResult.DoorTooClose )
from.SendLocalizedMessage( 500271 ); // You cannot build near the door.
else if ( res == AddonFitResult.NoWall )
from.SendLocalizedMessage( 500268 ); // This object needs to be mounted on something.
if ( res == AddonFitResult.Valid )
{
m_Deed.Delete();
house.Addons.Add( addon );
house.AddSecure( from, addon );
}
else
{
addon.Delete();
}
}
else
{
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
}
}
}
}

View file

@ -0,0 +1,129 @@
using System;
using System.Collections.Generic;
using Server;
using Server.Multis;
using Server.Targeting;
namespace Server.Items
{
[Flipable( 0x14F0, 0x14EF )]
public abstract class BaseAddonDeed : Item
{
public abstract BaseAddon Addon{ get;
}
#region Mondain's Legacy
private CraftResource m_Resource;
[CommandProperty( AccessLevel.GameMaster )]
public CraftResource Resource
{
get{ return m_Resource; }
set
{
if ( m_Resource != value )
{
m_Resource = value;
Hue = CraftResources.GetHue( m_Resource );
InvalidateProperties();
}
}
}
#endregion
public BaseAddonDeed() : base( 0x14F0 )
{
Weight = 1.0;
if ( !Core.AOS )
LootType = LootType.Newbied;
}
public BaseAddonDeed( Serial serial ) : base( serial )
{
}
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();
if ( Weight == 0.0 )
Weight = 1.0;
}
public override void OnDoubleClick( Mobile from )
{
if ( IsChildOf( from.Backpack ) )
from.Target = new InternalTarget( this );
else
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
private class InternalTarget : Target
{
private BaseAddonDeed m_Deed;
public InternalTarget( BaseAddonDeed deed ) : base( -1, true, TargetFlags.None )
{
m_Deed = deed;
CheckLOS = false;
}
protected override void OnTarget( Mobile from, object targeted )
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
if ( p == null || map == null || m_Deed.Deleted )
return;
if ( m_Deed.IsChildOf( from.Backpack ) )
{
BaseAddon addon = m_Deed.Addon;
Server.Spells.SpellHelper.GetSurfaceTop( ref p );
BaseHouse house = null;
AddonFitResult res = addon.CouldFit( p, map, from, ref house );
if ( res == AddonFitResult.Valid )
addon.MoveToWorld( new Point3D( p ), map );
else if ( res == AddonFitResult.Blocked )
from.SendLocalizedMessage( 500269 ); // You cannot build that there.
else if ( res == AddonFitResult.NotInHouse )
from.SendLocalizedMessage( 500274 ); // You can only place this in a house that you own!
else if ( res == AddonFitResult.DoorTooClose )
from.SendLocalizedMessage( 500271 ); // You cannot build near the door.
else if ( res == AddonFitResult.NoWall )
from.SendLocalizedMessage( 500268 ); // This object needs to be mounted on something.
if ( res == AddonFitResult.Valid )
{
m_Deed.Delete();
house.Addons.Add( addon );
}
else
{
addon.Delete();
}
}
else
{
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
}
}
}
}
}

View file

@ -0,0 +1,269 @@
using System;
using Server;
namespace Server.Items
{
public class BrownBearRugEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new BrownBearRugEastDeed(); } }
[Constructable]
public BrownBearRugEastAddon()
{
AddComponent( new AddonComponent( 0x1E40 ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x1E41 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1E42 ), 1,-1, 0 );
AddComponent( new AddonComponent( 0x1E43 ), 0,-1, 0 );
AddComponent( new AddonComponent( 0x1E44 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1E45 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x1E46 ),-1, 1, 0 );
AddComponent( new AddonComponent( 0x1E47 ),-1, 0, 0 );
AddComponent( new AddonComponent( 0x1E48 ),-1,-1, 0 );
}
public BrownBearRugEastAddon( Serial serial ) : base( serial )
{
}
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 BrownBearRugEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new BrownBearRugEastAddon(); } }
public override int LabelNumber{ get{ return 1049397; } } // a brown bear rug deed facing east
[Constructable]
public BrownBearRugEastDeed()
{
}
public BrownBearRugEastDeed( Serial serial ) : base( serial )
{
}
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 BrownBearRugSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new BrownBearRugSouthDeed(); } }
[Constructable]
public BrownBearRugSouthAddon()
{
AddComponent( new AddonComponent( 0x1E36 ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x1E37 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x1E38 ),-1, 1, 0 );
AddComponent( new AddonComponent( 0x1E39 ),-1, 0, 0 );
AddComponent( new AddonComponent( 0x1E3A ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1E3B ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1E3C ), 1,-1, 0 );
AddComponent( new AddonComponent( 0x1E3D ), 0,-1, 0 );
AddComponent( new AddonComponent( 0x1E3E ),-1,-1, 0 );
}
public BrownBearRugSouthAddon( Serial serial ) : base( serial )
{
}
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 BrownBearRugSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new BrownBearRugSouthAddon(); } }
public override int LabelNumber{ get{ return 1049398; } } // a brown bear rug deed facing south
[Constructable]
public BrownBearRugSouthDeed()
{
}
public BrownBearRugSouthDeed( Serial serial ) : base( serial )
{
}
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 PolarBearRugEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new PolarBearRugEastDeed(); } }
[Constructable]
public PolarBearRugEastAddon()
{
AddComponent( new AddonComponent( 0x1E53 ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x1E54 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1E55 ), 1,-1, 0 );
AddComponent( new AddonComponent( 0x1E56 ), 0,-1, 0 );
AddComponent( new AddonComponent( 0x1E57 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1E58 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x1E59 ),-1, 1, 0 );
AddComponent( new AddonComponent( 0x1E5A ),-1, 0, 0 );
AddComponent( new AddonComponent( 0x1E5B ),-1,-1, 0 );
}
public PolarBearRugEastAddon( Serial serial ) : base( serial )
{
}
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 PolarBearRugEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new PolarBearRugEastAddon(); } }
public override int LabelNumber{ get{ return 1049399; } } // a polar bear rug deed facing east
[Constructable]
public PolarBearRugEastDeed()
{
}
public PolarBearRugEastDeed( Serial serial ) : base( serial )
{
}
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 PolarBearRugSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new PolarBearRugSouthDeed(); } }
[Constructable]
public PolarBearRugSouthAddon()
{
AddComponent( new AddonComponent( 0x1E49 ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x1E4A ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x1E4B ),-1, 1, 0 );
AddComponent( new AddonComponent( 0x1E4C ),-1, 0, 0 );
AddComponent( new AddonComponent( 0x1E4D ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1E4E ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1E4F ), 1,-1, 0 );
AddComponent( new AddonComponent( 0x1E50 ), 0,-1, 0 );
AddComponent( new AddonComponent( 0x1E51 ),-1,-1, 0 );
}
public PolarBearRugSouthAddon( Serial serial ) : base( serial )
{
}
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 PolarBearRugSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new PolarBearRugSouthAddon(); } }
public override int LabelNumber{ get{ return 1049400; } } // a polar bear rug deed facing south
[Constructable]
public PolarBearRugSouthDeed()
{
}
public PolarBearRugSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,70 @@
using System;
using Server;
namespace Server.Items
{
public class BloodPentagram : BaseAddon
{
[Constructable]
public BloodPentagram ()
{
AddComponent( new AddonComponent( 0x1CF9 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x1CF8 ), 0, 2, 0 );
AddComponent( new AddonComponent( 0x1CF7 ), 0, 3, 0 );
AddComponent( new AddonComponent( 0x1CF6 ), 0, 4, 0 );
AddComponent( new AddonComponent( 0x1CF5 ), 0, 5, 0 );
AddComponent( new AddonComponent( 0x1CFB ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1CFA ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x1D09 ), 1, 2, 0 );
AddComponent( new AddonComponent( 0x1D08 ), 1, 3, 0 );
AddComponent( new AddonComponent( 0x1D07 ), 1, 4, 0 );
AddComponent( new AddonComponent( 0x1CF4 ), 1, 5, 0 );
AddComponent( new AddonComponent( 0x1CFC ), 2, 0, 0 );
AddComponent( new AddonComponent( 0x1D0A ), 2, 1, 0 );
AddComponent( new AddonComponent( 0x1D11 ), 2, 2, 0 );
AddComponent( new AddonComponent( 0x1D10 ), 2, 3, 0 );
AddComponent( new AddonComponent( 0x1D06 ), 2, 4, 0 );
AddComponent( new AddonComponent( 0x1CF3 ), 2, 5, 0 );
AddComponent( new AddonComponent( 0x1CFD ), 3, 0, 0 );
AddComponent( new AddonComponent( 0x1D0B ), 3, 1, 0 );
AddComponent( new AddonComponent( 0x1D12 ), 3, 2, 0 );
AddComponent( new AddonComponent( 0x1D0F ), 3, 3, 0 );
AddComponent( new AddonComponent( 0x1D05 ), 3, 4, 0 );
AddComponent( new AddonComponent( 0x1CF2 ), 3, 5, 0 );
AddComponent( new AddonComponent( 0x1CFE ), 4, 0, 0 );
AddComponent( new AddonComponent( 0x1D0C ), 4, 1, 0 );
AddComponent( new AddonComponent( 0x1D0D ), 4, 2, 0 );
AddComponent( new AddonComponent( 0x1D0E ), 4, 3, 0 );
AddComponent( new AddonComponent( 0x1D04 ), 4, 4, 0 );
AddComponent( new AddonComponent( 0x1CF1 ), 4, 5, 0 );
AddComponent( new AddonComponent( 0x1CFF ), 5, 0, 0 );
AddComponent( new AddonComponent( 0x1D00 ), 5, 1, 0 );
AddComponent( new AddonComponent( 0x1D01 ), 5, 2, 0 );
AddComponent( new AddonComponent( 0x1D02 ), 5, 3, 0 );
AddComponent( new AddonComponent( 0x1D03 ), 5, 4, 0 );
}
public BloodPentagram( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,218 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
public class DartBoard : AddonComponent
{
public override bool NeedsWall{ get{ return true; } }
public override Point3D WallPosition{ get{ return this.East ? new Point3D( -1, 0, 0 ) : new Point3D( 0, -1, 0 ); } }
public bool East{ get{ return this.ItemID == 0x1E2F; } }
[Constructable]
public DartBoard() : this( true )
{
}
[Constructable]
public DartBoard( bool east ) : base( east ? 0x1E2F : 0x1E2E )
{
}
public DartBoard( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
Direction dir;
if ( from.Location != this.Location )
dir = from.GetDirectionTo( this );
else if ( this.East )
dir = Direction.West;
else
dir = Direction.North;
from.Direction = dir;
bool canThrow = true;
if ( !from.InRange( this, 4 ) || !from.InLOS( this ) )
canThrow = false;
else if ( this.East )
canThrow = ( dir == Direction.Left || dir == Direction.West || dir == Direction.Up );
else
canThrow = ( dir == Direction.Up || dir == Direction.North || dir == Direction.Right );
if ( canThrow )
Throw( from );
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public void Throw( Mobile from )
{
BaseKnife knife = from.Weapon as BaseKnife;
if ( knife == null )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 500751 ); // Try holding a knife...
return;
}
from.Animate( from.Mounted ? 26 : 9, 7, 1, true, false, 0 );
from.MovingEffect( this, knife.ItemID, 7, 1, false, false );
from.PlaySound( 0x238 );
double rand = Utility.RandomDouble();
int message;
if ( rand < 0.05 )
message = 500752; // BULLSEYE! 50 Points!
else if ( rand < 0.20 )
message = 500753; // Just missed the center! 20 points.
else if ( rand < 0.45 )
message = 500754; // 10 point shot.
else if ( rand < 0.70 )
message = 500755; // 5 pointer.
else if ( rand < 0.85 )
message = 500756; // 1 point. Bad throw.
else
message = 500757; // Missed.
PublicOverheadMessage( MessageType.Regular, 0x3B2, message );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class DartBoardEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new DartBoardEastDeed(); } }
public DartBoardEastAddon()
{
AddComponent( new DartBoard( true ), 0, 0, 0 );
}
public DartBoardEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class DartBoardEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new DartBoardEastAddon(); } }
public override int LabelNumber{ get{ return 1044326; } } // dartboard (east)
[Constructable]
public DartBoardEastDeed()
{
}
public DartBoardEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class DartBoardSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new DartBoardSouthDeed(); } }
public DartBoardSouthAddon()
{
AddComponent( new DartBoard( false ), 0, 0, 0 );
}
public DartBoardSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class DartBoardSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new DartBoardSouthAddon(); } }
public override int LabelNumber{ get{ return 1044325; } } // dartboard (south)
[Constructable]
public DartBoardSouthDeed()
{
}
public DartBoardSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenBedEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenBedEastDeed(); } }
[Constructable]
public ElvenBedEastAddon()
{
AddComponent( new AddonComponent( 0x304D ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x304C ), 1, 0, 0 );
}
public ElvenBedEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenBedEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenBedEastAddon(); } }
public override int LabelNumber{ get{ return 1072861; } } // elven bed (east)
[Constructable]
public ElvenBedEastDeed()
{
}
public ElvenBedEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenBedSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenBedSouthDeed(); } }
[Constructable]
public ElvenBedSouthAddon()
{
AddComponent( new AddonComponent( 0x3050 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3051 ), 0, -1, 0 );
}
public ElvenBedSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenBedSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenBedSouthAddon(); } }
public override int LabelNumber{ get{ return 1072860; } } // elven bed (south)
[Constructable]
public ElvenBedSouthDeed()
{
}
public ElvenBedSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenDresserEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenDresserEastDeed(); } }
[Constructable]
public ElvenDresserEastAddon()
{
AddComponent( new AddonComponent( 0x30E4 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x30E3 ), 0, -1, 0 );
}
public ElvenDresserEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenDresserEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenDresserEastAddon(); } }
public override int LabelNumber{ get{ return 1073388; } } // elven dresser (east)
[Constructable]
public ElvenDresserEastDeed()
{
}
public ElvenDresserEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenDresserSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenDresserSouthDeed(); } }
[Constructable]
public ElvenDresserSouthAddon()
{
AddComponent( new AddonComponent( 0x30E5 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x30E6 ), 1, 0, 0 );
}
public ElvenDresserSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenDresserSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenDresserSouthAddon(); } }
public override int LabelNumber{ get{ return 1072864; } } // elven dresser (south)
[Constructable]
public ElvenDresserSouthDeed()
{
}
public ElvenDresserSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenForgeAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenForgeDeed(); } }
[Constructable]
public ElvenForgeAddon()
{
AddComponent( new AddonComponent( 0x2DD8 ), 0, 0, 0 );
}
public ElvenForgeAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenForgeDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenForgeAddon(); } }
public override int LabelNumber{ get{ return 1072875; } } // squirrel statue (east)
[Constructable]
public ElvenForgeDeed()
{
}
public ElvenForgeDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenLoveseatEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenLoveseatEastDeed(); } }
[Constructable]
public ElvenLoveseatEastAddon()
{
AddComponent( new AddonComponent( 0x3089 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3088 ), 1, 0, 0 );
}
public ElvenLoveseatEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenLoveseatEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenLoveseatEastAddon(); } }
public override int LabelNumber{ get{ return 1073372; } } // elven loveseat (east)
[Constructable]
public ElvenLoveseatEastDeed()
{
}
public ElvenLoveseatEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenLoveseatSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenLoveseatSouthDeed(); } }
[Constructable]
public ElvenLoveseatSouthAddon()
{
AddComponent( new AddonComponent( 0x308A ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x308B ), 0, -1, 0 );
}
public ElvenLoveseatSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenLoveseatSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenLoveseatSouthAddon(); } }
public override int LabelNumber{ get{ return 1072867; } } // elven loveseat (south)
[Constructable]
public ElvenLoveseatSouthDeed()
{
}
public ElvenLoveseatSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,137 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenSpinningwheelEastAddon : BaseAddon, ISpinningWheel
{
public override BaseAddonDeed Deed{ get{ return new ElvenSpinningwheelEastDeed(); } }
[Constructable]
public ElvenSpinningwheelEastAddon()
{
AddComponent( new AddonComponent( 0x2DD9 ), 0, 0, 0 );
}
public ElvenSpinningwheelEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private Timer m_Timer;
public override void OnComponentLoaded( AddonComponent c )
{
switch ( c.ItemID )
{
case 0x2E3D:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
public bool Spinning{ get{ return m_Timer != null; } }
public void BeginSpin( SpinCallback callback, Mobile from, int hue )
{
m_Timer = new SpinTimer( this, callback, from, hue );
m_Timer.Start();
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x2DD9:
case 0x101C:
case 0x10A4: ++c.ItemID; break;
}
}
}
public void EndSpin( SpinCallback callback, Mobile from, int hue )
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = null;
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
if ( callback != null )
callback( this, from, hue );
}
private class SpinTimer : Timer
{
private ElvenSpinningwheelEastAddon m_Wheel;
private SpinCallback m_Callback;
private Mobile m_From;
private int m_Hue;
public SpinTimer( ElvenSpinningwheelEastAddon wheel, SpinCallback callback, Mobile from, int hue ) : base( TimeSpan.FromSeconds( 3.0 ) )
{
m_Wheel = wheel;
m_Callback = callback;
m_From = from;
m_Hue = hue;
Priority = TimerPriority.TwoFiftyMS;
}
protected override void OnTick()
{
m_Wheel.EndSpin( m_Callback, m_From, m_Hue );
}
}
}
public class ElvenSpinningwheelEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenSpinningwheelEastAddon(); } }
public override int LabelNumber{ get{ return 1073393; } } // elven spinning wheel (east)
[Constructable]
public ElvenSpinningwheelEastDeed()
{
}
public ElvenSpinningwheelEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,139 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenSpinningwheelSouthAddon : BaseAddon, ISpinningWheel
{
public override BaseAddonDeed Deed{ get{ return new ElvenSpinningwheelSouthDeed(); } }
[Constructable]
public ElvenSpinningwheelSouthAddon()
{
AddComponent( new AddonComponent( 0x2DDA ), 0, 0, 0 );
}
public ElvenSpinningwheelSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
private Timer m_Timer;
public override void OnComponentLoaded( AddonComponent c )
{
switch ( c.ItemID )
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
public bool Spinning{ get{ return m_Timer != null; } }
public void BeginSpin( SpinCallback callback, Mobile from, int hue )
{
m_Timer = new SpinTimer( this, callback, from, hue );
m_Timer.Start();
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x1015:
case 0x1019:
case 0x101C:
case 0x10A4: ++c.ItemID; break;
}
}
}
public void EndSpin( SpinCallback callback, Mobile from, int hue )
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = null;
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
if ( callback != null )
callback( this, from, hue );
}
private class SpinTimer : Timer
{
private ElvenSpinningwheelSouthAddon m_Wheel;
private SpinCallback m_Callback;
private Mobile m_From;
private int m_Hue;
public SpinTimer( ElvenSpinningwheelSouthAddon wheel, SpinCallback callback, Mobile from, int hue ) : base( TimeSpan.FromSeconds( 3.0 ) )
{
m_Wheel = wheel;
m_Callback = callback;
m_From = from;
m_Hue = hue;
Priority = TimerPriority.TwoFiftyMS;
}
protected override void OnTick()
{
m_Wheel.EndSpin( m_Callback, m_From, m_Hue );
}
}
}
public class ElvenSpinningwheelSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenSpinningwheelSouthAddon(); } }
public override int LabelNumber{ get{ return 1072878; } } // spinning wheel (south)
[Constructable]
public ElvenSpinningwheelSouthDeed()
{
}
public ElvenSpinningwheelSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenStoveEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenStoveEastDeed(); } }
[Constructable]
public ElvenStoveEastAddon()
{
AddComponent( new AddonComponent( 0x2DDB ), 0, 0, 0 );
}
public ElvenStoveEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenStoveEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenStoveEastAddon(); } }
public override int LabelNumber{ get{ return 1073395; } } // elven oven (east)
[Constructable]
public ElvenStoveEastDeed()
{
}
public ElvenStoveEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenStoveSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenStoveSouthDeed(); } }
[Constructable]
public ElvenStoveSouthAddon()
{
AddComponent( new AddonComponent( 0x2DDC ), 0, 0, 0 );
}
public ElvenStoveSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenStoveSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenStoveSouthAddon(); } }
public override int LabelNumber{ get{ return 1073394; } } // elven oven (south)
[Constructable]
public ElvenStoveSouthDeed()
{
}
public ElvenStoveSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenWashBasinEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenWashBasinEastDeed(); } }
[Constructable]
public ElvenWashBasinEastAddon()
{
AddComponent( new AddonComponent( 0x30DF ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x30E0 ), 0, 1, 0 );
}
public ElvenWashBasinEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenWashBasinEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenWashBasinEastAddon(); } }
public override int LabelNumber{ get{ return 1073387; } } // elven wash basin (east)
[Constructable]
public ElvenWashBasinEastDeed()
{
}
public ElvenWashBasinEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class ElvenWashBasinSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ElvenWashBasinSouthDeed(); } }
[Constructable]
public ElvenWashBasinSouthAddon()
{
AddComponent( new AddonComponent( 0x30E1 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x30E2 ), 1, 0, 0 );
}
public ElvenWashBasinSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ElvenWashBasinSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ElvenWashBasinSouthAddon(); } }
public override int LabelNumber{ get{ return 1072865; } } // elven wash basin (south)
[Constructable]
public ElvenWashBasinSouthDeed()
{
}
public ElvenWashBasinSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using Server;
namespace Server.Items
{
public class FancyElvenTableEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new FancyElvenTableEastDeed(); } }
[Constructable]
public FancyElvenTableEastAddon()
{
AddComponent( new AddonComponent( 0x3094 ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x3093 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3092 ), 1, 0, 0 );
}
public FancyElvenTableEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class FancyElvenTableEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new FancyElvenTableEastAddon(); } }
public override int LabelNumber{ get{ return 1073386; } } // hardwood table (east)
[Constructable]
public FancyElvenTableEastDeed()
{
}
public FancyElvenTableEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using Server;
namespace Server.Items
{
public class FancyElvenTableSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new FancyElvenTableSouthDeed(); } }
[Constructable]
public FancyElvenTableSouthAddon()
{
AddComponent( new AddonComponent( 0x3095 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x3096 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3097 ), 0, -1, 0 );
}
public FancyElvenTableSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class FancyElvenTableSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new FancyElvenTableSouthAddon(); } }
public override int LabelNumber{ get{ return 1073385; } } // hardwood table (south)
[Constructable]
public FancyElvenTableSouthDeed()
{
}
public FancyElvenTableSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,67 @@
using System;
using System.Text;
using System.Net;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Items
{
public class FireColumnAddon : BaseAddon
{
public override bool ShareHue
{
get { return false; }
}
[Constructable]
public FireColumnAddon()
: this( false )
{
}
[Constructable]
public FireColumnAddon( bool bloody )
{
AddComponent( new AddonComponent( 0x3A5 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3A5 ), 0, 0, 5 );
AddComponent( new AddonComponent( 0x3A5 ), 0, 0, 10 );
AddComponent( new AddonComponent( 0x3A5 ), 0, 0, 15 );
AddComponent( new AddonComponent( 0x19BB ), 0, 0, 21 );
AddComponent( new AddonComponent( 0x19AB ), 0, 0, 23 );
if ( bloody )
{
AddComponent( new AddonComponent( 0x122B ), -2, 0, 0 );
AddComponent( new AddonComponent( 0x122E ), 0, -2, 0 );
AddComponent( new AddonComponent( 0x122D ), -1, 1, 0 );
AddComponent( new AddonComponent( 0x122F ), 1, -1, 0 );
AddComponent( new AddonComponent( 0x122D ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x122A ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x122B ), 2, -1, 0 );
AddComponent( new AddonComponent( 0x122B ), 0, 2, 0 );
AddComponent( new AddonComponent( 0x122E ), 1, 1, 0 );
}
}
public FireColumnAddon( Serial serial )
: base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,230 @@
using System;
using System.Collections;
using Server;
using Server.Network;
using System.Collections.Generic;
namespace Server.Items
{
public interface IFlourMill
{
int MaxFlour{ get; }
int CurFlour{ get; set; }
}
public enum FlourMillStage
{
Empty,
Filled,
Working
}
public class FlourMillEastAddon : BaseAddon, IFlourMill
{
public override BaseAddonDeed Deed{ get{ return new FlourMillEastDeed(); } }
private int m_Flour;
private Timer m_Timer;
[CommandProperty( AccessLevel.GameMaster )]
public int MaxFlour
{
get{ return 2; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int CurFlour
{
get{ return m_Flour; }
set{ m_Flour = Math.Max( 0, Math.Min( value, MaxFlour ) ); UpdateStage(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool HasFlour
{
get{ return ( m_Flour > 0 ); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool IsFull
{
get{ return ( m_Flour >= MaxFlour ); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool IsWorking
{
get{ return ( m_Timer != null ); }
}
public void StartWorking( Mobile from )
{
if ( IsWorking )
return;
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerStateCallback( FinishWorking_Callback ), from );
UpdateStage();
}
private void FinishWorking_Callback( object state )
{
if ( m_Timer != null )
{
m_Timer.Stop();
m_Timer = null;
}
Mobile from = state as Mobile;
if ( from != null && !from.Deleted && !this.Deleted && IsFull )
{
SackFlour flour = new SackFlour();
flour.ItemID = ( Utility.RandomBool() ? 4153 : 4165 );
if ( from.PlaceInBackpack( flour ) )
{
m_Flour = 0;
}
else
{
flour.Delete();
from.SendLocalizedMessage( 500998 ); // There is not enough room in your backpack! You stop grinding.
}
}
UpdateStage();
}
private static int[][] m_StageTable = new int[][]
{
new int[]{ 0x1920, 0x1921, 0x1925 },
new int[]{ 0x1922, 0x1923, 0x1926 },
new int[]{ 0x1924, 0x1924, 0x1928 }
};
private int[] FindItemTable( int itemID )
{
for ( int i = 0; i < m_StageTable.Length; ++i )
{
int[] itemTable = m_StageTable[i];
for ( int j = 0; j < itemTable.Length; ++j )
{
if ( itemTable[j] == itemID )
return itemTable;
}
}
return null;
}
public void UpdateStage()
{
if ( IsWorking )
UpdateStage( FlourMillStage.Working );
else if ( HasFlour )
UpdateStage( FlourMillStage.Filled );
else
UpdateStage( FlourMillStage.Empty );
}
public void UpdateStage( FlourMillStage stage )
{
List<AddonComponent> components = this.Components;
int[][] stageTable = m_StageTable;
for ( int i = 0; i < components.Count; ++i )
{
AddonComponent component = components[i] as AddonComponent;
if ( component == null )
continue;
int[] itemTable = FindItemTable( component.ItemID );
if ( itemTable != null )
component.ItemID = itemTable[(int)stage];
}
}
public override void OnComponentUsed( AddonComponent c, Mobile from )
{
if ( !from.InRange( GetWorldLocation(), 4 ) || !from.InLOS( this ) )
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
else if ( !IsFull )
from.SendLocalizedMessage( 500997 ); // You need more wheat to make a sack of flour.
else
StartWorking( from );
}
[Constructable]
public FlourMillEastAddon()
{
AddComponent( new AddonComponent( 0x1920 ),-1, 0, 0 );
AddComponent( new AddonComponent( 0x1922 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1924 ), 1, 0, 0 );
}
public FlourMillEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( (int) m_Flour );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_Flour = reader.ReadInt();
break;
}
}
UpdateStage();
}
}
public class FlourMillEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new FlourMillEastAddon(); } }
public override int LabelNumber{ get{ return 1044347; } } // flour mill (east)
[Constructable]
public FlourMillEastDeed()
{
}
public FlourMillEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,216 @@
using System;
using System.Collections;
using Server;
using Server.Network;
using System.Collections.Generic;
namespace Server.Items
{
public class FlourMillSouthAddon : BaseAddon, IFlourMill
{
public override BaseAddonDeed Deed{ get{ return new FlourMillSouthDeed(); } }
private int m_Flour;
private Timer m_Timer;
[CommandProperty( AccessLevel.GameMaster )]
public int MaxFlour
{
get{ return 2; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int CurFlour
{
get{ return m_Flour; }
set{ m_Flour = Math.Max( 0, Math.Min( value, MaxFlour ) ); UpdateStage(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool HasFlour
{
get{ return ( m_Flour > 0 ); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool IsFull
{
get{ return ( m_Flour >= MaxFlour ); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool IsWorking
{
get{ return ( m_Timer != null ); }
}
public void StartWorking( Mobile from )
{
if ( IsWorking )
return;
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerStateCallback( FinishWorking_Callback ), from );
UpdateStage();
}
private void FinishWorking_Callback( object state )
{
if ( m_Timer != null )
{
m_Timer.Stop();
m_Timer = null;
}
Mobile from = state as Mobile;
if ( from != null && !from.Deleted && !this.Deleted && IsFull )
{
SackFlour flour = new SackFlour();
flour.ItemID = ( Utility.RandomBool() ? 4153 : 4165 );
if ( from.PlaceInBackpack( flour ) )
{
m_Flour = 0;
}
else
{
flour.Delete();
from.SendLocalizedMessage( 500998 ); // There is not enough room in your backpack! You stop grinding.
}
}
UpdateStage();
}
private static int[][] m_StageTable = new int[][]
{
new int[]{ 0x192C, 0x192D, 0x1931 },
new int[]{ 0x192E, 0x192F, 0x1932 },
new int[]{ 0x1930, 0x1930, 0x1934 }
};
private int[] FindItemTable( int itemID )
{
for ( int i = 0; i < m_StageTable.Length; ++i )
{
int[] itemTable = m_StageTable[i];
for ( int j = 0; j < itemTable.Length; ++j )
{
if ( itemTable[j] == itemID )
return itemTable;
}
}
return null;
}
public void UpdateStage()
{
if ( IsWorking )
UpdateStage( FlourMillStage.Working );
else if ( HasFlour )
UpdateStage( FlourMillStage.Filled );
else
UpdateStage( FlourMillStage.Empty );
}
public void UpdateStage( FlourMillStage stage )
{
List<AddonComponent> components = this.Components;
int[][] stageTable = m_StageTable;
for ( int i = 0; i < components.Count; ++i )
{
AddonComponent component = components[i] as AddonComponent;
if ( component == null )
continue;
int[] itemTable = FindItemTable( component.ItemID );
if ( itemTable != null )
component.ItemID = itemTable[(int)stage];
}
}
public override void OnComponentUsed( AddonComponent c, Mobile from )
{
if ( !from.InRange( GetWorldLocation(), 4 ) || !from.InLOS( this ) )
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
else if ( !IsFull )
from.SendLocalizedMessage( 500997 ); // You need more wheat to make a sack of flour.
else
StartWorking( from );
}
[Constructable]
public FlourMillSouthAddon()
{
AddComponent( new AddonComponent( 0x192C ), 0,-1, 0 );
AddComponent( new AddonComponent( 0x192E ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1930 ), 0, 1, 0 );
}
public FlourMillSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( (int) m_Flour );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_Flour = reader.ReadInt();
break;
}
}
UpdateStage();
}
}
public class FlourMillSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new FlourMillSouthAddon(); } }
public override int LabelNumber{ get{ return 1044348; } } // flour mill (south)
[Constructable]
public FlourMillSouthDeed()
{
}
public FlourMillSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,241 @@
using System;
using Server;
namespace Server.Items
{
public class LightFlowerTapestryEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LightFlowerTapestryEastDeed(); } }
[Constructable]
public LightFlowerTapestryEastAddon()
{
AddComponent( new AddonComponent( 0xFDC ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xFDB ), 0, 1, 0 );
}
public LightFlowerTapestryEastAddon( Serial serial ) : base( serial )
{
}
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 LightFlowerTapestryEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LightFlowerTapestryEastAddon(); } }
public override int LabelNumber{ get{ return 1049393; } } // a flower tapestry deed facing east
[Constructable]
public LightFlowerTapestryEastDeed()
{
}
public LightFlowerTapestryEastDeed( Serial serial ) : base( serial )
{
}
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 LightFlowerTapestrySouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LightFlowerTapestrySouthDeed(); } }
[Constructable]
public LightFlowerTapestrySouthAddon()
{
AddComponent( new AddonComponent( 0xFD9 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xFDA ), 1, 0, 0 );
}
public LightFlowerTapestrySouthAddon( Serial serial ) : base( serial )
{
}
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 LightFlowerTapestrySouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LightFlowerTapestrySouthAddon(); } }
public override int LabelNumber{ get{ return 1049394; } } // a flower tapestry deed facing south
[Constructable]
public LightFlowerTapestrySouthDeed()
{
}
public LightFlowerTapestrySouthDeed( Serial serial ) : base( serial )
{
}
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 DarkFlowerTapestryEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new DarkFlowerTapestryEastDeed(); } }
[Constructable]
public DarkFlowerTapestryEastAddon()
{
AddComponent( new AddonComponent( 0xFE0 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xFDF ), 0, 1, 0 );
}
public DarkFlowerTapestryEastAddon( Serial serial ) : base( serial )
{
}
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 DarkFlowerTapestryEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new DarkFlowerTapestryEastAddon(); } }
public override int LabelNumber{ get{ return 1049395; } } // a dark flower tapestry deed facing east
[Constructable]
public DarkFlowerTapestryEastDeed()
{
}
public DarkFlowerTapestryEastDeed( Serial serial ) : base( serial )
{
}
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 DarkFlowerTapestrySouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new DarkFlowerTapestrySouthDeed(); } }
[Constructable]
public DarkFlowerTapestrySouthAddon()
{
AddComponent( new AddonComponent( 0xFDD ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xFDE ), 1, 0, 0 );
}
public DarkFlowerTapestrySouthAddon( Serial serial ) : base( serial )
{
}
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 DarkFlowerTapestrySouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new DarkFlowerTapestrySouthAddon(); } }
public override int LabelNumber{ get{ return 1049396; } } // a dark flower tapestry deed facing south
[Constructable]
public DarkFlowerTapestrySouthDeed()
{
}
public DarkFlowerTapestrySouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,207 @@
using System;
using System.Text;
using System.Net;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Items
{
public class GiantWeb1 : BaseAddon
{
[Constructable]
public GiantWeb1()
{
int itemID = 4280;
int count = 5;
bool leftToRight = false;
for ( int i = 0; i < count; ++i )
AddComponent( new AddonComponent( itemID++ ), leftToRight ? i : count - 1 - i, -( leftToRight ? i : count - 1 - i ), 0 );
}
public GiantWeb1( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
public class GiantWeb2 : BaseAddon
{
[Constructable]
public GiantWeb2()
{
int itemID = 4285;
int count = 5;
bool leftToRight = true;
for ( int i = 0; i < count; ++i )
AddComponent( new AddonComponent( itemID++ ), leftToRight ? i : count - 1 - i, -( leftToRight ? i : count - 1 - i ), 0 );
}
public GiantWeb2( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
public class GiantWeb3 : BaseAddon
{
[Constructable]
public GiantWeb3()
{
int itemID = 4290;
int count = 4;
bool leftToRight = true;
for ( int i = 0; i < count; ++i )
AddComponent( new AddonComponent( itemID++ ), leftToRight ? i : count - 1 - i, -( leftToRight ? i : count - 1 - i ), 0 );
}
public GiantWeb3( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
public class GiantWeb4 : BaseAddon
{
[Constructable]
public GiantWeb4()
{
int itemID = 4294;
int count = 4;
bool leftToRight = false;
for ( int i = 0; i < count; ++i )
AddComponent( new AddonComponent( itemID++ ), leftToRight ? i : count - 1 - i, -( leftToRight ? i : count - 1 - i ), 0 );
}
public GiantWeb4( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
public class GiantWeb5 : BaseAddon
{
[Constructable]
public GiantWeb5()
{
int itemID = 4298;
int count = 4;
bool leftToRight = true;
for ( int i = 0; i < count; ++i )
AddComponent( new AddonComponent( itemID++ ), leftToRight ? i : count - 1 - i, -( leftToRight ? i : count - 1 - i ), 0 );
}
public GiantWeb5( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
public class GiantWeb6 : BaseAddon
{
[Constructable]
public GiantWeb6()
{
int itemID = 4302;
int count = 4;
bool leftToRight = false;
for ( int i = 0; i < count; ++i )
AddComponent( new AddonComponent( itemID++ ), leftToRight ? i : count - 1 - i, -( leftToRight ? i : count - 1 - i ), 0 );
}
public GiantWeb6( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
}

View file

@ -0,0 +1,538 @@
using System;
using Server;
namespace Server.Items
{
public class GozaMatEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new GozaMatEastDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public GozaMatEastAddon() : this( 0 )
{
}
[Constructable]
public GozaMatEastAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28a4, 1030688 ), 1, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x28a5, 1030688 ), 0, 0, 0 );
Hue = hue;
}
public GozaMatEastAddon( Serial serial ) : base( serial )
{
}
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 GozaMatEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new GozaMatEastAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030404; } } // goza (east)
[Constructable]
public GozaMatEastDeed()
{
}
public GozaMatEastDeed( Serial serial ) : base( serial )
{
}
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 GozaMatSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new GozaMatSouthDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public GozaMatSouthAddon() : this( 0 )
{
}
[Constructable]
public GozaMatSouthAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28a6, 1030688 ), 0, 1, 0 );
AddComponent( new LocalizedAddonComponent( 0x28a7, 1030688 ), 0, 0, 0 );
Hue = hue;
}
public GozaMatSouthAddon( Serial serial ) : base( serial )
{
}
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 GozaMatSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new GozaMatSouthAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030405; } } // goza (south)
[Constructable]
public GozaMatSouthDeed()
{
}
public GozaMatSouthDeed( Serial serial ) : base( serial )
{
}
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 SquareGozaMatEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SquareGozaMatEastDeed(); } }
public override int LabelNumber{ get{ return 1030688; } } // goza mat
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public SquareGozaMatEastAddon() : this( 0 )
{
}
[Constructable]
public SquareGozaMatEastAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28a8, 1030688 ), 0, 0, 0 );
Hue = hue;
}
public SquareGozaMatEastAddon( Serial serial ) : base( serial )
{
}
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 SquareGozaMatEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SquareGozaMatEastAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030407; } } // square goza (east)
[Constructable]
public SquareGozaMatEastDeed()
{
}
public SquareGozaMatEastDeed( Serial serial ) : base( serial )
{
}
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 SquareGozaMatSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SquareGozaMatSouthDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public SquareGozaMatSouthAddon() : this( 0 )
{
}
[Constructable]
public SquareGozaMatSouthAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28a9, 1030688 ), 0, 0, 0 );
Hue = hue;
}
public SquareGozaMatSouthAddon( Serial serial ) : base( serial )
{
}
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 SquareGozaMatSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SquareGozaMatSouthAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030406; } } // square goza (south)
[Constructable]
public SquareGozaMatSouthDeed()
{
}
public SquareGozaMatSouthDeed( Serial serial ) : base( serial )
{
}
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 BrocadeGozaMatEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new BrocadeGozaMatEastDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public BrocadeGozaMatEastAddon() : this( 0 )
{
}
[Constructable]
public BrocadeGozaMatEastAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28AB, 1030688 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x28AA, 1030688 ), 1, 0, 0 );
Hue = hue;
}
public BrocadeGozaMatEastAddon( Serial serial ) : base( serial )
{
}
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 BrocadeGozaMatEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new BrocadeGozaMatEastAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030408; } } // brocade goza (east)
[Constructable]
public BrocadeGozaMatEastDeed()
{
}
public BrocadeGozaMatEastDeed( Serial serial ) : base( serial )
{
}
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 BrocadeGozaMatSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new BrocadeGozaMatSouthDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public BrocadeGozaMatSouthAddon() : this( 0 )
{
}
[Constructable]
public BrocadeGozaMatSouthAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28AD, 1030688 ), 0, 0, 0 );
AddComponent( new LocalizedAddonComponent( 0x28AC, 1030688 ), 0, 1, 0 );
Hue = hue;
}
public BrocadeGozaMatSouthAddon( Serial serial ) : base( serial )
{
}
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 BrocadeGozaMatSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new BrocadeGozaMatSouthAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030409; } } // brocade goza (south)
[Constructable]
public BrocadeGozaMatSouthDeed()
{
}
public BrocadeGozaMatSouthDeed( Serial serial ) : base( serial )
{
}
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 BrocadeSquareGozaMatEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new BrocadeSquareGozaMatEastDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public BrocadeSquareGozaMatEastAddon() : this( 0 )
{
}
[Constructable]
public BrocadeSquareGozaMatEastAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28AE, 1030688 ), 0, 0, 0 );
Hue = hue;
}
public BrocadeSquareGozaMatEastAddon( Serial serial ) : base( serial )
{
}
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 BrocadeSquareGozaMatEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new BrocadeSquareGozaMatEastAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030411; } } // brocade square goza (east)
[Constructable]
public BrocadeSquareGozaMatEastDeed()
{
}
public BrocadeSquareGozaMatEastDeed( Serial serial ) : base( serial )
{
}
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 BrocadeSquareGozaMatSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new BrocadeSquareGozaMatSouthDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public BrocadeSquareGozaMatSouthAddon() : this( 0 )
{
}
[Constructable]
public BrocadeSquareGozaMatSouthAddon( int hue )
{
AddComponent( new LocalizedAddonComponent( 0x28AF, 1030688 ), 0, 0, 0 );
Hue = hue;
}
public BrocadeSquareGozaMatSouthAddon( Serial serial ) : base( serial )
{
}
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 BrocadeSquareGozaMatSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new BrocadeSquareGozaMatSouthAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1030410; } } // brocade square goza (south)
[Constructable]
public BrocadeSquareGozaMatSouthDeed()
{
}
public BrocadeSquareGozaMatSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class GrayBrickFireplaceEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new GrayBrickFireplaceEastDeed(); } }
[Constructable]
public GrayBrickFireplaceEastAddon()
{
AddComponent( new AddonComponent( 0x93D ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x937 ), 0, 1, 0 );
}
public GrayBrickFireplaceEastAddon( Serial serial ) : base( serial )
{
}
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 GrayBrickFireplaceEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new GrayBrickFireplaceEastAddon(); } }
public override int LabelNumber{ get{ return 1061846; } } // grey brick fireplace (east)
[Constructable]
public GrayBrickFireplaceEastDeed()
{
}
public GrayBrickFireplaceEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class GrayBrickFireplaceSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new GrayBrickFireplaceSouthDeed(); } }
[Constructable]
public GrayBrickFireplaceSouthAddon()
{
AddComponent( new AddonComponent( 0x94B ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x945 ), 0, 0, 0 );
}
public GrayBrickFireplaceSouthAddon( Serial serial ) : base( serial )
{
}
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 GrayBrickFireplaceSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new GrayBrickFireplaceSouthAddon(); } }
public override int LabelNumber{ get{ return 1061847; } } // grey brick fireplace (south)
[Constructable]
public GrayBrickFireplaceSouthDeed()
{
}
public GrayBrickFireplaceSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,102 @@
using System;
using System.Text;
using System.Net;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Items
{
public class JackOLantern : BaseAddon
{
public override bool ShareHue
{
get { return false; }
}
private AddonComponent GetComponent( int itemID, int hue )
{
AddonComponent ac = new AddonComponent( itemID );
ac.Hue = hue;
ac.Name = "jack-o-lantern";
return ac;
}
[Constructable]
public JackOLantern()
: this( 1 > Utility.Random( 2 ) )
{
}
[Constructable]
public JackOLantern( bool south )
{
AddComponent( new AddonComponent( 5703 ), 0, 0, +0 );
int hue = 1161;
//( 1 > Utility.Random( 5 ) ? 2118 : 1161 );
if ( !south )
{
AddComponent( GetComponent( 3178, 0000 ), 0, 0, -1 );
AddComponent( GetComponent( 3883, hue ), 0, 0, +1 );
AddComponent( GetComponent( 3862, hue ), 0, 0, +0 );
}
else
{
AddComponent( GetComponent( 3179, 0000 ), 0, 0, +0 );
AddComponent( GetComponent( 3885, hue ), 0, 0, -1 );
AddComponent( GetComponent( 3871, hue ), 0, 0, +0 );
}
}
public JackOLantern( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 2 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
if ( version == 0 )
{
Timer.DelayCall( TimeSpan.Zero, delegate()
{
for ( int i = 0; i < Components.Count; ++i )
{
AddonComponent ac = Components[i] as AddonComponent;
if ( ac != null && ac.Hue == 2118 )
ac.Hue = 1161;
}
} );
}
if ( version <= 1 )
{
Timer.DelayCall( TimeSpan.Zero, delegate()
{
for ( int i = 0; i < Components.Count; ++i )
{
AddonComponent ac = Components[i] as AddonComponent;
if ( ac != null )
ac.Name = "jack-o-lantern";
}
} );
}
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
namespace Server.Items
{
public class LargeBedEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LargeBedEastDeed(); } }
[Constructable]
public LargeBedEastAddon()
{
AddComponent( new AddonComponent( 0xA7D ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xA7C ), 0, 1, 0 );
AddComponent( new AddonComponent( 0xA79 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0xA78 ), 1, 1, 0 );
}
public LargeBedEastAddon( Serial serial ) : base( serial )
{
}
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 LargeBedEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LargeBedEastAddon(); } }
public override int LabelNumber{ get{ return 1044324; } } // large bed (east)
[Constructable]
public LargeBedEastDeed()
{
}
public LargeBedEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
namespace Server.Items
{
public class LargeBedSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LargeBedSouthDeed(); } }
[Constructable]
public LargeBedSouthAddon()
{
AddComponent( new AddonComponent( 0xA83 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xA7F ), 0, 1, 0 );
AddComponent( new AddonComponent( 0xA82 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0xA7E ), 1, 1, 0 );
}
public LargeBedSouthAddon( Serial serial ) : base( serial )
{
}
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 LargeBedSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LargeBedSouthAddon(); } }
public override int LabelNumber{ get{ return 1044323; } } // large bed (south)
[Constructable]
public LargeBedSouthDeed()
{
}
public LargeBedSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
namespace Server.Items
{
public class LargeForgeEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LargeForgeEastDeed(); } }
[Constructable]
public LargeForgeEastAddon()
{
AddComponent( new ForgeComponent( 0x1986 ), 0, 0, 0 );
AddComponent( new ForgeComponent( 0x198A ), 0, 1, 0 );
AddComponent( new ForgeComponent( 0x1996 ), 0, 2, 0 );
AddComponent( new ForgeComponent( 0x1992 ), 0, 3, 0 );
}
public LargeForgeEastAddon( Serial serial ) : base( serial )
{
}
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 LargeForgeEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LargeForgeEastAddon(); } }
public override int LabelNumber{ get{ return 1044331; } } // large forge (east)
[Constructable]
public LargeForgeEastDeed()
{
}
public LargeForgeEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
namespace Server.Items
{
public class LargeForgeSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LargeForgeSouthDeed(); } }
[Constructable]
public LargeForgeSouthAddon()
{
AddComponent( new ForgeComponent( 0x197A ), 0, 0, 0 );
AddComponent( new ForgeComponent( 0x197E ), 1, 0, 0 );
AddComponent( new ForgeComponent( 0x19A2 ), 2, 0, 0 );
AddComponent( new ForgeComponent( 0x199E ), 3, 0, 0 );
}
public LargeForgeSouthAddon( Serial serial ) : base( serial )
{
}
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 LargeForgeSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LargeForgeSouthAddon(); } }
public override int LabelNumber{ get{ return 1044332; } } // large forge (south)
[Constructable]
public LargeForgeSouthDeed()
{
}
public LargeForgeSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,73 @@
using System;
using Server;
namespace Server.Items
{
public class LargeStoneTableEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LargeStoneTableEastDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public LargeStoneTableEastAddon() : this( 0 )
{
}
[Constructable]
public LargeStoneTableEastAddon( int hue )
{
AddComponent( new AddonComponent( 0x1202 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1203 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x1201 ), 0, 2, 0 );
Hue = hue;
}
public LargeStoneTableEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class LargeStoneTableEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LargeStoneTableEastAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1044511; } } // large stone table (east)
[Constructable]
public LargeStoneTableEastDeed()
{
}
public LargeStoneTableEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,73 @@
using System;
using Server;
namespace Server.Items
{
public class LargeStoneTableSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new LargeStoneTableSouthDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public LargeStoneTableSouthAddon() : this( 0 )
{
}
[Constructable]
public LargeStoneTableSouthAddon( int hue )
{
AddComponent( new AddonComponent( 0x1205 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1206 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1204 ), 2, 0, 0 );
Hue = hue;
}
public LargeStoneTableSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class LargeStoneTableSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LargeStoneTableSouthAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1044512; } } // large stone table (South)
[Constructable]
public LargeStoneTableSouthDeed()
{
}
public LargeStoneTableSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,84 @@
using System;
using Server;
namespace Server.Items
{
public interface ILoom
{
int Phase{ get; set; }
}
public class LoomEastAddon : BaseAddon, ILoom
{
public override BaseAddonDeed Deed{ get{ return new LoomEastDeed(); } }
private int m_Phase;
public int Phase{ get{ return m_Phase; } set{ m_Phase = value; } }
[Constructable]
public LoomEastAddon()
{
AddComponent( new AddonComponent( 0x1060 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x105F ), 0, 1, 0 );
}
public LoomEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( (int) m_Phase );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_Phase = reader.ReadInt();
break;
}
}
}
}
public class LoomEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LoomEastAddon(); } }
public override int LabelNumber{ get{ return 1044343; } } // loom (east)
[Constructable]
public LoomEastDeed()
{
}
public LoomEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,79 @@
using System;
using Server;
namespace Server.Items
{
public class LoomSouthAddon : BaseAddon, ILoom
{
public override BaseAddonDeed Deed{ get{ return new LoomSouthDeed(); } }
private int m_Phase;
public int Phase{ get{ return m_Phase; } set{ m_Phase = value; } }
[Constructable]
public LoomSouthAddon()
{
AddComponent( new AddonComponent( 0x1061 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1062 ), 1, 0, 0 );
}
public LoomSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( (int) m_Phase );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_Phase = reader.ReadInt();
break;
}
}
}
}
public class LoomSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new LoomSouthAddon(); } }
public override int LabelNumber{ get{ return 1044344; } } // loom (south)
[Constructable]
public LoomSouthDeed()
{
}
public LoomSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using Server;
namespace Server.Items
{
public class MediumStoneTableEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new MediumStoneTableEastDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public MediumStoneTableEastAddon() : this( 0 )
{
}
[Constructable]
public MediumStoneTableEastAddon( int hue )
{
AddComponent( new AddonComponent( 0x1202 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1201 ), 0, 1, 0 );
Hue = hue;
}
public MediumStoneTableEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class MediumStoneTableEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new MediumStoneTableEastAddon( this.Hue ); } }
public override int LabelNumber{ get{ return 1044508; } } // stone table (east)
[Constructable]
public MediumStoneTableEastDeed()
{
}
public MediumStoneTableEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using Server;
namespace Server.Items
{
public class MediumStoneTableSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new MediumStoneTableSouthDeed(); } }
public override bool RetainDeedHue{ get{ return true; } }
[Constructable]
public MediumStoneTableSouthAddon() : this( 0 )
{
}
[Constructable]
public MediumStoneTableSouthAddon( int hue )
{
AddComponent( new AddonComponent( 0x1205 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x1204 ), 1, 0, 0 );
Hue = hue;
}
public MediumStoneTableSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class MediumStoneTableSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new MediumStoneTableSouthAddon( Hue ); } }
public override int LabelNumber{ get{ return 1044509; } } // stone table (South)
[Constructable]
public MediumStoneTableSouthDeed()
{
}
public MediumStoneTableSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using Server;
namespace Server.Items
{
public class OrnateElvenTableEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new OrnateElvenTableEastDeed(); } }
[Constructable]
public OrnateElvenTableEastAddon()
{
AddComponent( new AddonComponent( 0x308E ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x308D ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x308C ), 1, 0, 0 );
}
public OrnateElvenTableEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class OrnateElvenTableEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new OrnateElvenTableEastAddon(); } }
public override int LabelNumber{ get{ return 1073384; } } // ornate table (east)
[Constructable]
public OrnateElvenTableEastDeed()
{
}
public OrnateElvenTableEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using Server;
namespace Server.Items
{
public class OrnateElvenTableSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new OrnateElvenTableSouthDeed(); } }
[Constructable]
public OrnateElvenTableSouthAddon()
{
AddComponent( new AddonComponent( 0x308F ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x3090 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3091 ), 0, -1, 0 );
}
public OrnateElvenTableSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class OrnateElvenTableSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new OrnateElvenTableSouthAddon(); } }
public override int LabelNumber{ get{ return 1072869; } } // ornate table (south)
[Constructable]
public OrnateElvenTableSouthDeed()
{
}
public OrnateElvenTableSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class ParrotPerchAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new ParrotPerchDeed(); } }
[Constructable]
public ParrotPerchAddon()
{
AddComponent( new AddonComponent( 0x2FF4 ), 0, 0, 0 );
}
public ParrotPerchAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class ParrotPerchDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new ParrotPerchAddon(); } }
public override int LabelNumber{ get{ return 1072617; } } // parrot perch
[Constructable]
public ParrotPerchDeed()
{
}
public ParrotPerchDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class PentagramAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new PentagramDeed(); } }
[Constructable]
public PentagramAddon()
{
AddComponent( new AddonComponent( 0xFE7 ), -1, -1, 0 );
AddComponent( new AddonComponent( 0xFE8 ), 0, -1, 0 );
AddComponent( new AddonComponent( 0xFEB ), 1, -1, 0 );
AddComponent( new AddonComponent( 0xFE6 ), -1, 0, 0 );
AddComponent( new AddonComponent( 0xFEA ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xFEE ), 1, 0, 0 );
AddComponent( new AddonComponent( 0xFE9 ), -1, 1, 0 );
AddComponent( new AddonComponent( 0xFEC ), 0, 1, 0 );
AddComponent( new AddonComponent( 0xFED ), 1, 1, 0 );
}
public PentagramAddon( Serial serial ) : base( serial )
{
}
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 PentagramDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new PentagramAddon(); } }
public override int LabelNumber{ get{ return 1044328; } } // pentagram
[Constructable]
public PentagramDeed()
{
}
public PentagramDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,274 @@
using System;
using Server;
namespace Server.Items
{
[Flipable( 0x1EC0, 0x1EC3 )]
public class PickpocketDip : AddonComponent
{
private double m_MinSkill;
private double m_MaxSkill;
private Timer m_Timer;
[CommandProperty( AccessLevel.GameMaster )]
public double MinSkill
{
get{ return m_MinSkill; }
set{ m_MinSkill = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public double MaxSkill
{
get{ return m_MaxSkill; }
set{ m_MaxSkill = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool Swinging
{
get{ return ( m_Timer != null ); }
}
public PickpocketDip( int itemID ) : base( itemID )
{
m_MinSkill = -25.0;
m_MaxSkill = +25.0;
}
public void UpdateItemID()
{
int baseItemID = 0x1EC0 + (((ItemID - 0x1EC0) / 3) * 3);
ItemID = baseItemID + (Swinging ? 1 : 0);
}
public void BeginSwing()
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = new InternalTimer( this );
m_Timer.Start();
UpdateItemID();
}
public void EndSwing()
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = null;
UpdateItemID();
}
public void Use( Mobile from )
{
from.Direction = from.GetDirectionTo( GetWorldLocation() );
Effects.PlaySound( GetWorldLocation(), Map, 0x4F );
if ( from.CheckSkill( SkillName.Stealing, m_MinSkill, m_MaxSkill ) )
{
SendLocalizedMessageTo( from, 501834 ); // You successfully avoid disturbing the dip while searching it.
}
else
{
Effects.PlaySound( GetWorldLocation(), Map, 0x390 );
BeginSwing();
ProcessDelta();
SendLocalizedMessageTo( from, 501831 ); // You carelessly bump the dip and start it swinging.
}
}
public override void OnDoubleClick( Mobile from )
{
if ( !from.InRange( GetWorldLocation(), 1 ) )
SendLocalizedMessageTo( from, 501816 ); // You are too far away to do that.
else if ( Swinging )
SendLocalizedMessageTo( from, 501815 ); // You have to wait until it stops swinging.
else if ( from.Skills[SkillName.Stealing].Base >= m_MaxSkill )
SendLocalizedMessageTo( from, 501830 ); // Your ability to steal cannot improve any further by simply practicing on a dummy.
else if ( from.Mounted )
SendLocalizedMessageTo( from, 501829 ); // You can't practice on this while on a mount.
else
Use( from );
}
public PickpocketDip( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
writer.Write( m_MinSkill );
writer.Write( m_MaxSkill );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_MinSkill = reader.ReadDouble();
m_MaxSkill = reader.ReadDouble();
if ( m_MinSkill == 0.0 && m_MaxSkill == 30.0 )
{
m_MinSkill = -25.0;
m_MaxSkill = +25.0;
}
break;
}
}
UpdateItemID();
}
private class InternalTimer : Timer
{
private PickpocketDip m_Dip;
public InternalTimer( PickpocketDip dip ) : base( TimeSpan.FromSeconds( 3.0 ) )
{
m_Dip = dip;
Priority = TimerPriority.FiftyMS;
}
protected override void OnTick()
{
m_Dip.EndSwing();
}
}
}
public class PickpocketDipEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new PickpocketDipEastDeed(); } }
[Constructable]
public PickpocketDipEastAddon()
{
AddComponent( new PickpocketDip( 0x1EC3 ), 0, 0, 0 );
}
public PickpocketDipEastAddon( Serial serial ) : base( serial )
{
}
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 PickpocketDipEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new PickpocketDipEastAddon(); } }
public override int LabelNumber{ get{ return 1044337; } } // pickpocket dip (east)
[Constructable]
public PickpocketDipEastDeed()
{
}
public PickpocketDipEastDeed( Serial serial ) : base( serial )
{
}
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 PickpocketDipSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new PickpocketDipSouthDeed(); } }
[Constructable]
public PickpocketDipSouthAddon()
{
AddComponent( new PickpocketDip( 0x1EC0 ), 0, 0, 0 );
}
public PickpocketDipSouthAddon( Serial serial ) : base( serial )
{
}
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 PickpocketDipSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new PickpocketDipSouthAddon(); } }
public override int LabelNumber{ get{ return 1044338; } } // pickpocket dip (south)
[Constructable]
public PickpocketDipSouthDeed()
{
}
public PickpocketDipSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using System.Text;
using System.Net;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Items
{
public class PyramidAddon : BaseAddon
{
public override bool ShareHue
{
get { return false; }
}
[Constructable]
public PyramidAddon()
{
AddComponent( new AddonComponent( 1006 ), 0, 0, 5 );
for ( int o = 1; o <= 2; ++o )
{
AddComponent( new AddonComponent( 1011 ), -o, -o, ( 2 - o ) * 5 );
AddComponent( new AddonComponent( 1012 ), +o, +o, ( 2 - o ) * 5 );
AddComponent( new AddonComponent( 1013 ), +o, -o, ( 2 - o ) * 5 );
AddComponent( new AddonComponent( 1014 ), -o, +o, ( 2 - o ) * 5 );
}
for ( int o = -1; o <= 1; ++o )
{
AddComponent( new AddonComponent( 1007 ), o, 2, 0 );
AddComponent( new AddonComponent( 1008 ), 2, o, 0 );
AddComponent( new AddonComponent( 1009 ), o, -2, 0 );
AddComponent( new AddonComponent( 1010 ), -2, o, 0 );
}
AddComponent( new AddonComponent( 1007 ), 0, 1, 5 );
AddComponent( new AddonComponent( 1008 ), 1, 0, 5 );
AddComponent( new AddonComponent( 1009 ), 0, -1, 5 );
AddComponent( new AddonComponent( 1010 ), -1, 0, 5 );
}
public PyramidAddon( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
}

View file

@ -0,0 +1,180 @@
using System;
using Server;
using Server.Network;
namespace Server.Items
{
public class RejuvinationAddonComponent : AddonComponent
{
public RejuvinationAddonComponent( int itemID ) : base( itemID )
{
}
public RejuvinationAddonComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( from.BeginAction( typeof( RejuvinationAddonComponent ) ) )
{
from.FixedEffect( 0x373A, 1, 16 );
int random = Utility.Random( 1, 4 );
if ( random == 1 || random == 4 )
{
from.Hits = from.HitsMax;
SendLocalizedMessageTo( from, 500801 ); // A sense of warmth fills your body!
}
if ( random == 2 || random == 4 )
{
from.Mana = from.ManaMax;
SendLocalizedMessageTo( from, 500802 ); // A feeling of power surges through your veins!
}
if ( random == 3 || random == 4 )
{
from.Stam = from.StamMax;
SendLocalizedMessageTo( from, 500803 ); // You feel as though you've slept for days!
}
Timer.DelayCall( TimeSpan.FromHours( 2.0 ), new TimerStateCallback( ReleaseUseLock_Callback ), new object[]{ from, random } );
}
}
public virtual void ReleaseUseLock_Callback( object state )
{
object[] states = (object[])state;
Mobile from = (Mobile)states[0];
int random = (int)states[1];
from.EndAction( typeof( RejuvinationAddonComponent ) );
if ( random == 4 )
{
from.Hits = from.HitsMax;
from.Mana = from.ManaMax;
from.Stam = from.StamMax;
SendLocalizedMessageTo( from, 500807 ); // You feel completely rejuvinated!
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public abstract class BaseRejuvinationAnkh : BaseAddon
{
public BaseRejuvinationAnkh()
{
}
public override bool HandlesOnMovement{ get{ return true; } }
private DateTime m_NextMessage;
public override void OnMovement( Mobile m, Point3D oldLocation )
{
base.OnMovement( m, oldLocation );
if ( m.Player && Utility.InRange( Location, m.Location, 3 ) && !Utility.InRange( Location, oldLocation, 3 ) )
{
if ( DateTime.UtcNow >= m_NextMessage )
{
if ( Components.Count > 0 )
((AddonComponent)Components[0]).SendLocalizedMessageTo( m, 1010061 ); // An overwhelming sense of peace fills you.
m_NextMessage = DateTime.UtcNow + TimeSpan.FromSeconds( 25.0 );
}
}
}
public BaseRejuvinationAnkh( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class RejuvinationAnkhWest : BaseRejuvinationAnkh
{
[Constructable]
public RejuvinationAnkhWest()
{
AddComponent( new RejuvinationAddonComponent( 0x3 ), 0, 0, 0 );
AddComponent( new RejuvinationAddonComponent( 0x2 ), 0, 1, 0 );
}
public RejuvinationAnkhWest( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
public class RejuvinationAnkhNorth : BaseRejuvinationAnkh
{
[Constructable]
public RejuvinationAnkhNorth()
{
AddComponent( new RejuvinationAddonComponent( 0x4 ), 0, 0, 0 );
AddComponent( new RejuvinationAddonComponent( 0x5 ), 1, 0, 0 );
}
public RejuvinationAnkhNorth( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,453 @@
using System;
using Server.Commands;
namespace Server.Items
{
public class SHTeleComponent : AddonComponent
{
private bool m_Active;
private SHTeleComponent m_TeleDest;
private Point3D m_TeleOffset;
[CommandProperty( AccessLevel.GameMaster )]
public bool Active
{
get { return m_Active; }
set
{
m_Active = value;
SHTeleporter sourceAddon = Addon as SHTeleporter;
if ( sourceAddon != null )
sourceAddon.ChangeActive( value );
}
}
[CommandProperty( AccessLevel.GameMaster )]
public Point3D TeleOffset
{
get { return m_TeleOffset; }
set { m_TeleOffset = value; }
}
[CommandProperty(AccessLevel.GameMaster)]
public Point3D TelePoint
{
get { return new Point3D( Location.X + TeleOffset.X, Location.Y + TeleOffset.Y, Location.Z + TeleOffset.Z ); }
set { m_TeleOffset = new Point3D( value.X - Location.X, value.Y - Location.Y, value.Z - Location.Z ); }
}
[CommandProperty( AccessLevel.GameMaster )]
public SHTeleComponent TeleDest
{
get { return m_TeleDest; }
set
{
m_TeleDest = value;
SHTeleporter sourceAddon = Addon as SHTeleporter;
if ( sourceAddon != null )
sourceAddon.ChangeDest( value );
}
}
public override string DefaultName
{
get { return "a hole"; }
}
[Constructable]
public SHTeleComponent() : this( 0x1775 )
{
}
[Constructable]
public SHTeleComponent( int itemID ) : this( itemID, new Point3D( 0, 0, 0 ) )
{
}
[Constructable]
public SHTeleComponent( int itemID, Point3D offset ) : base( itemID )
{
Movable = false;
Hue = 1;
m_Active = true;
m_TeleOffset = offset;
}
public SHTeleComponent( Serial serial ) : base( serial )
{
}
public override void OnDoubleClick( Mobile m )
{
if ( !m_Active || m_TeleDest == null || m_TeleDest.Deleted || m_TeleDest.Map == Map.Internal )
return;
if ( m.InRange( this, 3 ) )
{
Map map = m_TeleDest.Map;
Point3D p = m_TeleDest.TelePoint;
Server.Mobiles.BaseCreature.TeleportPets( m, p, map );
m.MoveToWorld( p, map );
}
else
{
m.SendLocalizedMessage( 1019045 ); // I can't reach that.
}
}
public override void OnDoubleClickDead( Mobile m )
{
OnDoubleClick( m );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 ); // version
writer.Write( m_Active );
writer.Write( m_TeleDest );
writer.Write( m_TeleOffset );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_Active = reader.ReadBool();
m_TeleDest = reader.ReadItem() as SHTeleComponent;
m_TeleOffset = reader.ReadPoint3D();
}
}
public class SHTeleporter : BaseAddon
{
public static void Initialize()
{
CommandSystem.Register( "SHTelGen", AccessLevel.Administrator, new CommandEventHandler( SHTelGen_OnCommand ) );
}
[Usage( "SHTelGen" )]
[Description( "Generates solen hives teleporters." )]
public static void SHTelGen_OnCommand( CommandEventArgs e )
{
World.Broadcast( 0x35, true, "Solen hives teleporters are being generated, please wait." );
DateTime startTime = DateTime.UtcNow;
int count = new SHTeleporterCreator().CreateSHTeleporters();
DateTime endTime = DateTime.UtcNow;
World.Broadcast( 0x35, true, "{0} solen hives teleporters have been created. The entire process took {1:F1} seconds.", count, (endTime - startTime).TotalSeconds );
}
public class SHTeleporterCreator
{
private int m_Count;
public SHTeleporterCreator()
{
m_Count = 0;
}
public static SHTeleporter FindSHTeleporter( Map map, Point3D p )
{
IPooledEnumerable eable = map.GetItemsInRange( p, 0 );
foreach ( Item item in eable )
{
if ( item is SHTeleporter && item.Z == p.Z )
{
eable.Free();
return (SHTeleporter)item;
}
}
eable.Free();
return null;
}
public SHTeleporter AddSHT( Map map, bool ext, int x, int y, int z )
{
Point3D p = new Point3D( x, y, z );
SHTeleporter tele = FindSHTeleporter( map, p );
if ( tele == null )
{
tele = new SHTeleporter( ext );
tele.MoveToWorld( p, map );
m_Count++;
}
return tele;
}
public static void Link( SHTeleporter tele1, SHTeleporter tele2 )
{
tele1.ChangeDest( tele2 );
tele2.ChangeDest( tele1 );
}
public void AddSHTCouple( Map map, bool ext1, int x1, int y1, int z1, bool ext2, int x2, int y2, int z2 )
{
SHTeleporter tele1 = AddSHT( map, ext1, x1, y1, z1 );
SHTeleporter tele2 = AddSHT( map, ext2, x2, y2, z2 );
Link( tele1, tele2 );
}
public void AddSHTCouple( bool ext1, int x1, int y1, int z1, bool ext2, int x2, int y2, int z2 )
{
AddSHTCouple( Map.Trammel, ext1, x1, y1, z1, ext2, x2, y2, z2 );
AddSHTCouple( Map.Felucca, ext1, x1, y1, z1, ext2, x2, y2, z2 );
}
public int CreateSHTeleporters()
{
SHTeleporter tele1, tele2;
AddSHTCouple( true, 2608, 763, 0, false, 5918, 1794, 0 );
AddSHTCouple( false, 5897, 1877, 0, false, 5871, 1867, 0 );
AddSHTCouple( false, 5852, 1848, 0, false, 5771, 1867, 0 );
tele1 = AddSHT( Map.Trammel, false, 5747, 1895, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Trammel, false, 5658, 1898, 0 );
Link( tele1, tele2 );
tele1 = AddSHT( Map.Felucca, false, 5747, 1895, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Felucca, false, 5658, 1898, 0 );
Link( tele1, tele2 );
AddSHTCouple( false, 5727, 1894, 0, false, 5756, 1794, 0 );
AddSHTCouple( false, 5784, 1929, 0, false, 5700, 1929, 0 );
tele1 = AddSHT( Map.Trammel, false, 5711, 1952, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Trammel, false, 5657, 1954, 0 );
Link( tele1, tele2 );
tele1 = AddSHT( Map.Felucca, false, 5711, 1952, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Felucca, false, 5657, 1954, 0 );
Link( tele1, tele2 );
tele1 = AddSHT( Map.Trammel, false, 5655, 2018, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Trammel, true, 1690, 2789, 0 );
Link( tele1, tele2 );
tele1 = AddSHT( Map.Felucca, false, 5655, 2018, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Felucca, true, 1690, 2789, 0 );
Link( tele1, tele2 );
AddSHTCouple( false, 5809, 1905, 0, false, 5876, 1891, 0 );
tele1 = AddSHT( Map.Trammel, false, 5814, 2015, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Trammel, false, 5913, 1893, 0 );
Link( tele1, tele2 );
tele1 = AddSHT( Map.Felucca, false, 5814, 2015, 0 );
tele1.LeftTele.TeleOffset = new Point3D( -1, 3, 0 );
tele2 = AddSHT( Map.Felucca, false, 5913, 1893, 0 );
Link( tele1, tele2 );
AddSHTCouple( false, 5919, 2021, 0, true, 1724, 814, 0 );
tele1 = AddSHT( Map.Trammel, false, 5654, 1791, 0 );
tele2 = AddSHT( Map.Trammel, true, 730, 1451, 0 );
Link( tele1, tele2 );
AddSHT( Map.Trammel, false, 5734, 1859, 0 ).ChangeDest( tele2 );
tele1 = AddSHT( Map.Felucca, false, 5654, 1791, 0 );
tele2 = AddSHT( Map.Felucca, true, 730, 1451, 0 );
Link( tele1, tele2 );
AddSHT( Map.Felucca, false, 5734, 1859, 0 ).ChangeDest( tele2 );
return m_Count;
}
}
private bool m_External;
private SHTeleComponent m_UpTele;
private SHTeleComponent m_RightTele;
private SHTeleComponent m_DownTele;
private SHTeleComponent m_LeftTele;
private bool m_Changing;
[CommandProperty( AccessLevel.GameMaster )]
public bool External { get { return m_External; } }
public SHTeleComponent UpTele { get { return m_UpTele; } }
public SHTeleComponent RightTele { get { return m_RightTele; } }
public SHTeleComponent DownTele { get { return m_DownTele; } }
public SHTeleComponent LeftTele { get { return m_LeftTele; } }
[Constructable]
public SHTeleporter() : this( true )
{
}
[Constructable]
public SHTeleporter( bool external )
{
m_Changing = false;
m_External = external;
if ( external )
{
AddComponent( new AddonComponent( 0x549 ), -1, -1, 0 );
AddComponent( new AddonComponent( 0x54D ), 0, -1, 0 );
AddComponent( new AddonComponent( 0x54E ), 1, -1, 0 );
AddComponent( new AddonComponent( 0x548 ), 2, -1, 0 );
AddComponent( new AddonComponent( 0x54B ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x53B ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x53B ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x544 ), 2, 0, 0 );
AddComponent( new AddonComponent( 0x54C ), -1, 1, 0 );
AddComponent( new AddonComponent( 0x53B ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x53B ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x545 ), 2, 1, 0 );
AddComponent( new AddonComponent( 0x547 ), -1, 2, 0 );
AddComponent( new AddonComponent( 0x541 ), 0, 2, 0 );
AddComponent( new AddonComponent( 0x543 ), 1, 2, 0 );
AddComponent( new AddonComponent( 0x540 ), 2, 2, 0 );
}
Point3D upOS = external ? new Point3D( -1, 0, 0 ) : new Point3D( -2, -1, 0 );
m_UpTele = new SHTeleComponent( external ? 0x1775 : 0x495, upOS );
AddComponent( m_UpTele, 0, 0, 0 );
Point3D rightOS = external ? new Point3D( -2, 0, 0 ) : new Point3D( 2, -1, 0 );
m_RightTele = new SHTeleComponent( external ? 0x1775 : 0x495, rightOS );
AddComponent( m_RightTele, 1, 0, 0 );
Point3D downOS = external ? new Point3D( -2, -1, 0 ) : new Point3D( 2, 2, 0 );
m_DownTele = new SHTeleComponent( external ? 0x1776 : 0x495, downOS );
AddComponent( m_DownTele, 1, 1, 0 );
Point3D leftOS = external ? new Point3D( -1, -1, 0 ) : new Point3D( -1, 2, 0 );
m_LeftTele = new SHTeleComponent( external ? 0x1775 : 0x495, leftOS );
AddComponent( m_LeftTele, 0, 1, 0 );
}
public SHTeleporter( Serial serial ) : base( serial )
{
m_Changing = false;
}
public override bool ShareHue{ get { return false; } }
public void ChangeActive( bool active )
{
if ( m_Changing )
return;
m_Changing = true;
m_UpTele.Active = active;
m_RightTele.Active = active;
m_DownTele.Active = active;
m_LeftTele.Active = active;
m_Changing = false;
}
public void ChangeDest( SHTeleComponent dest )
{
if ( m_Changing )
return;
m_Changing = true;
if ( dest == null || !(dest.Addon is SHTeleporter) )
{
m_UpTele.TeleDest = dest;
m_RightTele.TeleDest = dest;
m_DownTele.TeleDest = dest;
m_LeftTele.TeleDest = dest;
}
else
{
SHTeleporter destAddon = (SHTeleporter)dest.Addon;
m_UpTele.TeleDest = destAddon.UpTele;
m_RightTele.TeleDest = destAddon.RightTele;
m_DownTele.TeleDest = destAddon.DownTele;
m_LeftTele.TeleDest = destAddon.LeftTele;
}
m_Changing = false;
}
public void ChangeDest( SHTeleporter destAddon )
{
if ( m_Changing )
return;
m_Changing = true;
if ( destAddon != null )
{
m_UpTele.TeleDest = destAddon.UpTele;
m_RightTele.TeleDest = destAddon.RightTele;
m_DownTele.TeleDest = destAddon.DownTele;
m_LeftTele.TeleDest = destAddon.LeftTele;
}
else
{
m_UpTele.TeleDest = null;
m_RightTele.TeleDest = null;
m_DownTele.TeleDest = null;
m_LeftTele.TeleDest = null;
}
m_Changing = false;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 ); // version
writer.Write( m_External );
writer.Write( m_UpTele );
writer.Write( m_RightTele );
writer.Write( m_DownTele );
writer.Write( m_LeftTele );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_External = reader.ReadBool();
m_UpTele = (SHTeleComponent)reader.ReadItem();
m_RightTele = (SHTeleComponent)reader.ReadItem();
m_DownTele = (SHTeleComponent)reader.ReadItem();
m_LeftTele = (SHTeleComponent)reader.ReadItem();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class SandstoneFireplaceEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SandstoneFireplaceEastDeed(); } }
[Constructable]
public SandstoneFireplaceEastAddon()
{
AddComponent( new AddonComponent( 0x489 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x475 ), 0, 1, 0 );
}
public SandstoneFireplaceEastAddon( Serial serial ) : base( serial )
{
}
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 SandstoneFireplaceEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SandstoneFireplaceEastAddon(); } }
public override int LabelNumber{ get{ return 1061844; } } // sandstone fireplace (east)
[Constructable]
public SandstoneFireplaceEastDeed()
{
}
public SandstoneFireplaceEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class SandstoneFireplaceSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SandstoneFireplaceSouthDeed(); } }
[Constructable]
public SandstoneFireplaceSouthAddon()
{
AddComponent( new AddonComponent( 0x482 ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x47B ), 0, 0, 0 );
}
public SandstoneFireplaceSouthAddon( Serial serial ) : base( serial )
{
}
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 SandstoneFireplaceSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SandstoneFireplaceSouthAddon(); } }
public override int LabelNumber{ get{ return 1061845; } } // sandstone fireplace (south)
[Constructable]
public SandstoneFireplaceSouthDeed()
{
}
public SandstoneFireplaceSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,54 @@
using System;
using Server;
namespace Server.Items
{
public class SandstoneFountainAddon : BaseAddon
{
[Constructable]
public SandstoneFountainAddon()
{
int itemID = 0x19C3;
AddComponent( new AddonComponent( itemID++ ), -2, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, -2, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, -2, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), -2, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), -2, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, -2, 0 );
AddComponent( new AddonComponent( ++itemID ), -2, -2, 0 );
}
public SandstoneFountainAddon( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,54 @@
using System;
using System.Text;
using System.Net;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Items
{
public class SerpentPillarAddon : BaseAddon
{
[Constructable]
public SerpentPillarAddon()
{
AddComponent( new AddonComponent( 9020 ), -2, +1, 0 );
AddComponent( new AddonComponent( 9021 ), -2, +0, 0 );
AddComponent( new AddonComponent( 9022 ), -2, -1, 0 );
AddComponent( new AddonComponent( 9023 ), -2, -2, 0 );
AddComponent( new AddonComponent( 9024 ), -1, -2, 0 );
AddComponent( new AddonComponent( 9025 ), +0, -2, 0 );
AddComponent( new AddonComponent( 9026 ), +1, -2, 0 );
AddComponent( new AddonComponent( 9027 ), -1, +1, 0 );
AddComponent( new AddonComponent( 9028 ), -1, +0, 0 );
AddComponent( new AddonComponent( 9029 ), -1, -1, 0 );
AddComponent( new AddonComponent( 9030 ), +0, +1, 0 );
AddComponent( new AddonComponent( 9031 ), +0, +0, 0 );
AddComponent( new AddonComponent( 9032 ), +0, -1, 0 );
AddComponent( new AddonComponent( 9033 ), +1, +0, 0 );
AddComponent( new AddonComponent( 9034 ), +1, -1, 0 );
}
public SerpentPillarAddon( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using Server;
namespace Server.Items
{
public class ShrineOfWisdomAddon : BaseAddon
{
[Constructable]
public ShrineOfWisdomAddon()
{
AddComponent( new ShrineOfWisdomComponent( 0x14C3 ), 0, 0, 0 );
AddComponent( new ShrineOfWisdomComponent( 0x14C6 ), 1, 0, 0 );
AddComponent( new ShrineOfWisdomComponent( 0x14D4 ), 0, 1, 0 );
AddComponent( new ShrineOfWisdomComponent( 0x14D5 ), 1, 1, 0 );
Hue = 0x47E;
}
public ShrineOfWisdomAddon( Serial serial ) : base( serial )
{
}
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();
}
}
[Server.Engines.Craft.Forge]
public class ShrineOfWisdomComponent : AddonComponent
{
public override int LabelNumber{ get{ return 1062046; } } // Shrine of Wisdom
[Constructable]
public ShrineOfWisdomComponent( int itemID ) : base( itemID )
{
}
public ShrineOfWisdomComponent( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,44 @@
using System;
using System.Text;
using System.Net;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Items
{
public class SkullPileAddon : BaseAddon
{
[Constructable]
public SkullPileAddon()
{
AddComponent( new AddonComponent( 6872 ), 1, 1, 0 );
AddComponent( new AddonComponent( 6873 ), 0, 1, 0 );
AddComponent( new AddonComponent( 6874 ), -1, 1, 0 );
AddComponent( new AddonComponent( 6875 ), 0, 0, 0 );
AddComponent( new AddonComponent( 6876 ), 1, 0, 0 );
AddComponent( new AddonComponent( 6877 ), 1, -1, 0 );
AddComponent( new AddonComponent( 6878 ), 2, -1, 0 );
AddComponent( new AddonComponent( 6879 ), 2, 0, 0 );
}
public SkullPileAddon( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (byte) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadByte();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class SmallBedEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SmallBedEastDeed(); } }
[Constructable]
public SmallBedEastAddon()
{
AddComponent( new AddonComponent( 0xA5D ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xA62 ), 1, 0, 0 );
}
public SmallBedEastAddon( Serial serial ) : base( serial )
{
}
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 SmallBedEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SmallBedEastAddon(); } }
public override int LabelNumber{ get{ return 1044322; } } // small bed (east)
[Constructable]
public SmallBedEastDeed()
{
}
public SmallBedEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class SmallBedSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SmallBedSouthDeed(); } }
[Constructable]
public SmallBedSouthAddon()
{
AddComponent( new AddonComponent( 0xA63 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xA5C ), 0, 1, 0 );
}
public SmallBedSouthAddon( Serial serial ) : base( serial )
{
}
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 SmallBedSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SmallBedSouthAddon(); } }
public override int LabelNumber{ get{ return 1044321; } } // small bed (south)
[Constructable]
public SmallBedSouthDeed()
{
}
public SmallBedSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class SmallForgeAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SmallForgeDeed(); } }
[Constructable]
public SmallForgeAddon()
{
AddComponent( new ForgeComponent( 0xFB1 ), 0, 0, 0 );
}
public SmallForgeAddon( Serial serial ) : base( serial )
{
}
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 SmallForgeDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SmallForgeAddon(); } }
public override int LabelNumber{ get{ return 1044330; } } // small forge
[Constructable]
public SmallForgeDeed()
{
}
public SmallForgeDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,170 @@
using System;
using System.Collections.Generic;
using Server;
using Server.Network;
using Server.Mobiles;
using Server.Spells;
namespace Server.Items
{
public class SolenAntHoleComponent : AddonComponent
{
public SolenAntHoleComponent( int itemID ) : base( itemID )
{
}
public override void OnDoubleClick( Mobile from )
{
if ( from.InRange( this, 2 ) )
{
Map map = Map;
if ( map == Map.Trammel || map == Map.Felucca )
{
from.MoveToWorld( new Point3D( 5922, 2024, 0 ), map );
PublicOverheadMessage( MessageType.Regular, 0x3B2, true, String.Format( "* {0} dives into the hole and disappears!*", from.Name ) );
}
}
else
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
}
public SolenAntHoleComponent( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SolenAntHole : BaseAddon
{
public override bool ShareHue { get { return false; } }
public override bool HandlesOnMovement { get { return true; } }
private List<Mobile> m_Spawned;
[Constructable]
public SolenAntHole() : base()
{
m_Spawned = new List<Mobile>();
AddComponent( new AddonComponent( 0x914 ), "dirt", 0, 0, 0, 0 );
AddComponent( new SolenAntHoleComponent( 0x122A ), "a hole", 0x1, 0, 0, 0 );
AddComponent( new AddonComponent( 0x1B23 ), "dirt", 0x970, 1, 1, 0 );
AddComponent( new AddonComponent( 0xEE0 ), "dirt", 0, 1, 0, 0 );
AddComponent( new AddonComponent( 0x1B24 ), "dirt", 0x970, 1, -1, 0 );
AddComponent( new AddonComponent( 0xEE1 ), "dirt", 0, 0, -1, 0 );
AddComponent( new AddonComponent( 0x1B25 ), "dirt", 0x970, -1, -1, 0 );
AddComponent( new AddonComponent( 0xEE2 ), "dirt", 0, -1, 0, 0 );
AddComponent( new AddonComponent( 0x1B26 ), "dirt", 0x970, -1, 1, 0 );
AddComponent( new AddonComponent( 0xED3 ), "dirt", 0, 0, 1, 0 );
}
public override void OnMovement( Mobile m, Point3D oldLocation )
{
if ( !m.Player || !m.Alive || m.Hidden || !SpawnKilled() )
return;
if ( Utility.InRange( Location, m.Location, 3 ) && !Utility.InRange( Location, oldLocation, 3 ) )
{
int count = 1 + Utility.Random( 4 );
for ( int i = 0; i < count; i++ )
SpawnAnt();
if ( 0.05 > Utility.RandomDouble() )
SpawnAnt( new Beetle() );
}
}
public void AddComponent( AddonComponent c, string name, int hue, int x, int y, int z )
{
c.Hue = hue;
c.Name = name;
AddComponent( c, x, y, z );
}
public void SpawnAnt()
{
int random = Utility.Random( 3 );
Map map = Map;
if ( map == Map.Trammel )
{
if ( random < 2 )
SpawnAnt( new RedSolenWorker() );
else
SpawnAnt( new RedSolenWarrior() );
}
else if ( map == Map.Felucca )
{
if ( random < 2 )
SpawnAnt( new BlackSolenWorker() );
else
SpawnAnt( new BlackSolenWarrior() );
}
}
public void SpawnAnt( BaseCreature ant )
{
m_Spawned.Add( ant );
Map map = Map;
Point3D p = Location;
for ( int i = 0; i < 5; i++ )
if ( SpellHelper.FindValidSpawnLocation( map, ref p, false ) )
break;
ant.MoveToWorld( p, map );
ant.Home = Location;
ant.RangeHome = 10;
}
public bool SpawnKilled()
{
for ( int i = m_Spawned.Count - 1; i >= 0; i-- )
{
if ( !m_Spawned[ i ].Alive || m_Spawned[ i ].Deleted )
m_Spawned.RemoveAt( i );
}
return m_Spawned.Count < 2;
}
public SolenAntHole( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
writer.WriteMobileList<Mobile>( m_Spawned );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
m_Spawned = reader.ReadStrongMobileList<Mobile>();
}
}
}

View file

@ -0,0 +1,147 @@
using System;
using Server;
namespace Server.Items
{
public delegate void SpinCallback( ISpinningWheel sender, Mobile from, int hue );
public interface ISpinningWheel
{
bool Spinning{ get; }
void BeginSpin( SpinCallback callback, Mobile from, int hue );
}
public class SpinningwheelEastAddon : BaseAddon, ISpinningWheel
{
public override BaseAddonDeed Deed{ get{ return new SpinningwheelEastDeed(); } }
[Constructable]
public SpinningwheelEastAddon()
{
AddComponent( new AddonComponent( 0x1019 ), 0, 0, 0 );
}
public SpinningwheelEastAddon( Serial serial ) : base( serial )
{
}
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();
}
private Timer m_Timer;
public override void OnComponentLoaded( AddonComponent c )
{
switch ( c.ItemID )
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
public bool Spinning{ get{ return m_Timer != null; } }
public void BeginSpin( SpinCallback callback, Mobile from, int hue )
{
m_Timer = new SpinTimer( this, callback, from, hue );
m_Timer.Start();
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x1015:
case 0x1019:
case 0x101C:
case 0x10A4: ++c.ItemID; break;
}
}
}
public void EndSpin( SpinCallback callback, Mobile from, int hue )
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = null;
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
if ( callback != null )
callback( this, from, hue );
}
private class SpinTimer : Timer
{
private SpinningwheelEastAddon m_Wheel;
private SpinCallback m_Callback;
private Mobile m_From;
private int m_Hue;
public SpinTimer( SpinningwheelEastAddon wheel, SpinCallback callback, Mobile from, int hue ) : base( TimeSpan.FromSeconds( 3.0 ) )
{
m_Wheel = wheel;
m_Callback = callback;
m_From = from;
m_Hue = hue;
Priority = TimerPriority.TwoFiftyMS;
}
protected override void OnTick()
{
m_Wheel.EndSpin( m_Callback, m_From, m_Hue );
}
}
}
public class SpinningwheelEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SpinningwheelEastAddon(); } }
public override int LabelNumber{ get{ return 1044341; } } // spining wheel (east)
[Constructable]
public SpinningwheelEastDeed()
{
}
public SpinningwheelEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,139 @@
using System;
using Server;
namespace Server.Items
{
public class SpinningwheelSouthAddon : BaseAddon, ISpinningWheel
{
public override BaseAddonDeed Deed{ get{ return new SpinningwheelSouthDeed(); } }
[Constructable]
public SpinningwheelSouthAddon()
{
AddComponent( new AddonComponent( 0x1015 ), 0, 0, 0 );
}
public SpinningwheelSouthAddon( Serial serial ) : base( serial )
{
}
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();
}
private Timer m_Timer;
public override void OnComponentLoaded( AddonComponent c )
{
switch ( c.ItemID )
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
public bool Spinning{ get{ return m_Timer != null; } }
public void BeginSpin( SpinCallback callback, Mobile from, int hue )
{
m_Timer = new SpinTimer( this, callback, from, hue );
m_Timer.Start();
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x1015:
case 0x1019:
case 0x101C:
case 0x10A4: ++c.ItemID; break;
}
}
}
public void EndSpin( SpinCallback callback, Mobile from, int hue )
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = null;
foreach ( AddonComponent c in Components )
{
switch ( c.ItemID )
{
case 0x1016:
case 0x101A:
case 0x101D:
case 0x10A5: --c.ItemID; break;
}
}
if ( callback != null )
callback( this, from, hue );
}
private class SpinTimer : Timer
{
private SpinningwheelSouthAddon m_Wheel;
private SpinCallback m_Callback;
private Mobile m_From;
private int m_Hue;
public SpinTimer( SpinningwheelSouthAddon wheel, SpinCallback callback, Mobile from, int hue ) : base( TimeSpan.FromSeconds( 3.0 ) )
{
m_Wheel = wheel;
m_Callback = callback;
m_From = from;
m_Hue = hue;
Priority = TimerPriority.TwoFiftyMS;
}
protected override void OnTick()
{
m_Wheel.EndSpin( m_Callback, m_From, m_Hue );
}
}
}
public class SpinningwheelSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SpinningwheelSouthAddon(); } }
public override int LabelNumber{ get{ return 1044342; } } // spining wheel (south)
[Constructable]
public SpinningwheelSouthDeed()
{
}
public SpinningwheelSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class SquirrelStatueEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SquirrelStatueEastDeed(); } }
[Constructable]
public SquirrelStatueEastAddon()
{
AddComponent( new AddonComponent( 0x2D10 ), 0, 0, 0 );
}
public SquirrelStatueEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SquirrelStatueEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SquirrelStatueEastAddon(); } }
public override int LabelNumber{ get{ return 1073398; } } // squirrel statue (east)
[Constructable]
public SquirrelStatueEastDeed()
{
}
public SquirrelStatueEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class SquirrelStatueSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SquirrelStatueSouthDeed(); } }
[Constructable]
public SquirrelStatueSouthAddon()
{
AddComponent( new AddonComponent( 0x2D11 ), 0, 0, 0 );
}
public SquirrelStatueSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class SquirrelStatueSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SquirrelStatueSouthAddon(); } }
public override int LabelNumber{ get{ return 1072884; } } // squirrel statue (south)
[Constructable]
public SquirrelStatueSouthDeed()
{
}
public SquirrelStatueSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class StoneFireplaceEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new StoneFireplaceEastDeed(); } }
[Constructable]
public StoneFireplaceEastAddon()
{
AddComponent( new AddonComponent( 0x959 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x953 ), 0, 1, 0 );
}
public StoneFireplaceEastAddon( Serial serial ) : base( serial )
{
}
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 StoneFireplaceEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new StoneFireplaceEastAddon(); } }
public override int LabelNumber{ get{ return 1061848; } } // stone fireplace (east)
[Constructable]
public StoneFireplaceEastDeed()
{
}
public StoneFireplaceEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class StoneFireplaceSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new StoneFireplaceSouthDeed(); } }
[Constructable]
public StoneFireplaceSouthAddon()
{
AddComponent( new AddonComponent( 0x967 ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x961 ), 0, 0, 0 );
}
public StoneFireplaceSouthAddon( Serial serial ) : base( serial )
{
}
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 StoneFireplaceSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new StoneFireplaceSouthAddon(); } }
public override int LabelNumber{ get{ return 1061849; } } // stone fireplace (south)
[Constructable]
public StoneFireplaceSouthDeed()
{
}
public StoneFireplaceSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,54 @@
using System;
using Server;
namespace Server.Items
{
public class StoneFountainAddon : BaseAddon
{
[Constructable]
public StoneFountainAddon()
{
int itemID = 0x1731;
AddComponent( new AddonComponent( itemID++ ), -2, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, +1, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), +1, -2, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, -2, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), +0, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), -2, +0, 0 );
AddComponent( new AddonComponent( itemID++ ), -2, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, -1, 0 );
AddComponent( new AddonComponent( itemID++ ), -1, -2, 0 );
AddComponent( new AddonComponent( ++itemID ), -2, -2, 0 );
}
public StoneFountainAddon( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class StoneOvenEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new StoneOvenEastDeed(); } }
[Constructable]
public StoneOvenEastAddon()
{
AddComponent( new AddonComponent( 0x92C ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x92B ), 0, 1, 0 );
}
public StoneOvenEastAddon( Serial serial ) : base( serial )
{
}
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 StoneOvenEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new StoneOvenEastAddon(); } }
public override int LabelNumber{ get{ return 1044345; } } // stone oven (east)
[Constructable]
public StoneOvenEastDeed()
{
}
public StoneOvenEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using Server;
namespace Server.Items
{
public class StoneOvenSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new StoneOvenSouthDeed(); } }
[Constructable]
public StoneOvenSouthAddon()
{
AddComponent( new AddonComponent( 0x931 ), -1, 0, 0 );
AddComponent( new AddonComponent( 0x930 ), 0, 0, 0 );
}
public StoneOvenSouthAddon( Serial serial ) : base( serial )
{
}
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 StoneOvenSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new StoneOvenSouthAddon(); } }
public override int LabelNumber{ get{ return 1044346; } } // stone oven (south)
[Constructable]
public StoneOvenSouthDeed()
{
}
public StoneOvenSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,237 @@
using System;
using Server;
namespace Server.Items
{
public class SmallStretchedHideEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SmallStretchedHideEastDeed(); } }
[Constructable]
public SmallStretchedHideEastAddon()
{
AddComponent( new AddonComponent( 0x1069 ), 0, 0, 0 );
}
public SmallStretchedHideEastAddon( Serial serial ) : base( serial )
{
}
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 SmallStretchedHideEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SmallStretchedHideEastAddon(); } }
public override int LabelNumber{ get{ return 1049401; } } // a small stretched hide deed facing east
[Constructable]
public SmallStretchedHideEastDeed()
{
}
public SmallStretchedHideEastDeed( Serial serial ) : base( serial )
{
}
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 SmallStretchedHideSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new SmallStretchedHideSouthDeed(); } }
[Constructable]
public SmallStretchedHideSouthAddon()
{
AddComponent( new AddonComponent( 0x107A ), 0, 0, 0 );
}
public SmallStretchedHideSouthAddon( Serial serial ) : base( serial )
{
}
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 SmallStretchedHideSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new SmallStretchedHideSouthAddon(); } }
public override int LabelNumber{ get{ return 1049402; } } // a small stretched hide deed facing south
[Constructable]
public SmallStretchedHideSouthDeed()
{
}
public SmallStretchedHideSouthDeed( Serial serial ) : base( serial )
{
}
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 MediumStretchedHideEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new MediumStretchedHideEastDeed(); } }
[Constructable]
public MediumStretchedHideEastAddon()
{
AddComponent( new AddonComponent( 0x106B ), 0, 0, 0 );
}
public MediumStretchedHideEastAddon( Serial serial ) : base( serial )
{
}
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 MediumStretchedHideEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new MediumStretchedHideEastAddon(); } }
public override int LabelNumber{ get{ return 1049403; } } // a medium stretched hide deed facing east
[Constructable]
public MediumStretchedHideEastDeed()
{
}
public MediumStretchedHideEastDeed( Serial serial ) : base( serial )
{
}
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 MediumStretchedHideSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new MediumStretchedHideSouthDeed(); } }
[Constructable]
public MediumStretchedHideSouthAddon()
{
AddComponent( new AddonComponent( 0x107C ), 0, 0, 0 );
}
public MediumStretchedHideSouthAddon( Serial serial ) : base( serial )
{
}
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 MediumStretchedHideSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new MediumStretchedHideSouthAddon(); } }
public override int LabelNumber{ get{ return 1049404; } } // a medium stretched hide deed facing south
[Constructable]
public MediumStretchedHideSouthDeed()
{
}
public MediumStretchedHideSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
namespace Server.Items
{
public class TallElvenBedEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new TallElvenBedEastDeed(); } }
[Constructable]
public TallElvenBedEastAddon()
{
AddComponent( new AddonComponent( 0x3054 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x3053 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x3055 ), 2, -1, 0 );
AddComponent( new AddonComponent( 0x3052 ), 2, 0, 0 );
}
public TallElvenBedEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class TallElvenBedEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new TallElvenBedEastAddon(); } }
public override int LabelNumber{ get{ return 1072859; } } // tall elven bed (east)
[Constructable]
public TallElvenBedEastDeed()
{
}
public TallElvenBedEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
namespace Server.Items
{
public class TallElvenBedSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new TallElvenBedSouthDeed(); } }
[Constructable]
public TallElvenBedSouthAddon()
{
AddComponent( new AddonComponent( 0x3058 ), 0, 0, 0 ); // angolo alto sx
AddComponent( new AddonComponent( 0x3057 ), -1, 1, 0 ); // angolo basso sx
AddComponent( new AddonComponent( 0x3059 ), 0, -1, 0 ); // angolo alto dx
AddComponent( new AddonComponent( 0x3056 ), 0, 1, 0 ); // angolo basso dx
}
public TallElvenBedSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class TallElvenBedSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new TallElvenBedSouthAddon(); } }
public override int LabelNumber{ get{ return 1072858; } } // tall elven bed (south)
[Constructable]
public TallElvenBedSouthDeed()
{
}
public TallElvenBedSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,106 @@
using System;
using Server;
namespace Server.Items
{
public class Telescope : BaseAddon
{
[Constructable]
public Telescope()
{
AddComponent( new AddonComponent( 0x1494 ), 0, 5, 0 );
AddComponent( new AddonComponent( 0x145B ), 0, 6, 0 );
AddComponent( new AddonComponent( 0x145A ), 0, 7, 0 );
AddComponent( new AddonComponent( 0x1495 ), 1, 4, 0 );
AddComponent( new AddonComponent( 0x145C ), 1, 7, 0 );
AddComponent( new AddonComponent( 0x145D ), 1, 8, 0 );
AddComponent( new AddonComponent( 0x1496 ), 2, 3, 0 );
AddComponent( new AddonComponent( 0x1499 ), 2, 4, 0 );
AddComponent( new AddonComponent( 0x148E ), 2, 6, 0 );
AddComponent( new AddonComponent( 0x1493 ), 2, 7, 0 );
AddComponent( new AddonComponent( 0x1492 ), 2, 8, 0 );
AddComponent( new AddonComponent( 0x145E ), 2, 9, 0 );
AddComponent( new AddonComponent( 0x1459 ), 2,10, 0 );
AddComponent( new AddonComponent( 0x1497 ), 3, 2, 0 );
AddComponent( new AddonComponent( 0x145F ), 3, 9, 0 );
AddComponent( new AddonComponent( 0x1461 ), 3,10, 0 );
AddComponent( new AddonComponent( 0x149A ), 4, 1, 0 );
AddComponent( new AddonComponent( 0x1498 ), 4, 2, 0 );
AddComponent( new AddonComponent( 0x148F ), 4, 4, 0 );
AddComponent( new AddonComponent( 0x148D ), 4, 6, 0 );
AddComponent( new AddonComponent( 0x1488 ), 4, 8, 0 );
AddComponent( new AddonComponent( 0x1460 ), 4, 9, 0 );
AddComponent( new AddonComponent( 0x1462 ), 4,10, 0 );
AddComponent( new AddonComponent( 0x147D ), 5, 0, 0 );
AddComponent( new AddonComponent( 0x1490 ), 5, 4, 0 );
AddComponent( new AddonComponent( 0x148B ), 5, 5, 0 );
AddComponent( new AddonComponent( 0x148A ), 5, 6, 0 );
AddComponent( new AddonComponent( 0x1486 ), 5, 7, 0 );
AddComponent( new AddonComponent( 0x1485 ), 5, 8, 0 );
AddComponent( new AddonComponent( 0x147C ), 6, 0, 0 );
AddComponent( new AddonComponent( 0x1491 ), 6, 4, 0 );
AddComponent( new AddonComponent( 0x148C ), 6, 5, 0 );
AddComponent( new AddonComponent( 0x1489 ), 6, 6, 0 );
AddComponent( new AddonComponent( 0x1487 ), 6, 7, 0 );
AddComponent( new AddonComponent( 0x1484 ), 6, 8, 0 );
AddComponent( new AddonComponent( 0x1463 ), 6,10, 0 );
AddComponent( new AddonComponent( 0x147B ), 7, 0, 0 );
AddComponent( new AddonComponent( 0x147F ), 7, 3, 0 );
AddComponent( new AddonComponent( 0x1480 ), 7, 4, 0 );
AddComponent( new AddonComponent( 0x1482 ), 7, 5, 0 );
AddComponent( new AddonComponent( 0x1469 ), 7, 6, 0 );
AddComponent( new AddonComponent( 0x1468 ), 7, 7, 0 );
AddComponent( new AddonComponent( 0x1465 ), 7, 8, 0 );
AddComponent( new AddonComponent( 0x1464 ), 7, 9, 0 );
AddComponent( new AddonComponent( 0x147A ), 8, 0, 0 );
AddComponent( new AddonComponent( 0x1479 ), 8, 1, 0 );
AddComponent( new AddonComponent( 0x1477 ), 8, 2, 0 );
AddComponent( new AddonComponent( 0x147E ), 8, 3, 0 );
AddComponent( new AddonComponent( 0x1481 ), 8, 4, 0 );
AddComponent( new AddonComponent( 0x1483 ), 8, 5, 0 );
AddComponent( new AddonComponent( 0x146A ), 8, 6, 0 );
AddComponent( new AddonComponent( 0x1467 ), 8, 7, 0 );
AddComponent( new AddonComponent( 0x1466 ), 8, 8, 0 );
AddComponent( new AddonComponent( 0x1478 ), 9, 1, 0 );
AddComponent( new AddonComponent( 0x1475 ), 9, 2, 0 );
AddComponent( new AddonComponent( 0x1474 ), 9, 3, 0 );
AddComponent( new AddonComponent( 0x146F ), 9, 4, 0 );
AddComponent( new AddonComponent( 0x146E ), 9, 5, 0 );
AddComponent( new AddonComponent( 0x146D ), 9, 6, 0 );
AddComponent( new AddonComponent( 0x146B ), 9, 7, 0 );
AddComponent( new AddonComponent( 0x1476 ),10, 2, 0 );
AddComponent( new AddonComponent( 0x1473 ),10, 3, 0 );
AddComponent( new AddonComponent( 0x1470 ),10, 4, 0 );
AddComponent( new AddonComponent( 0x1471 ),10, 5, 0 );
AddComponent( new AddonComponent( 0x1472 ),10, 6, 0 );
}
public Telescope( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,284 @@
using System;
using Server;
namespace Server.Items
{
[Flipable( 0x1070, 0x1074 )]
public class TrainingDummy : AddonComponent
{
private double m_MinSkill;
private double m_MaxSkill;
private Timer m_Timer;
[CommandProperty( AccessLevel.GameMaster )]
public double MinSkill
{
get{ return m_MinSkill; }
set{ m_MinSkill = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public double MaxSkill
{
get{ return m_MaxSkill; }
set{ m_MaxSkill = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool Swinging
{
get{ return ( m_Timer != null ); }
}
[Constructable]
public TrainingDummy() : this( 0x1074 )
{
}
[Constructable]
public TrainingDummy( int itemID ) : base( itemID )
{
m_MinSkill = -25.0;
m_MaxSkill = +25.0;
}
public void UpdateItemID()
{
int baseItemID = (ItemID / 2) * 2;
ItemID = baseItemID + (Swinging ? 1 : 0);
}
public void BeginSwing()
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = new InternalTimer( this );
m_Timer.Start();
}
public void EndSwing()
{
if ( m_Timer != null )
m_Timer.Stop();
m_Timer = null;
UpdateItemID();
}
public void OnHit()
{
UpdateItemID();
Effects.PlaySound( GetWorldLocation(), Map, Utility.RandomList( 0x3A4, 0x3A6, 0x3A9, 0x3AE, 0x3B4, 0x3B6 ) );
}
public void Use( Mobile from, BaseWeapon weapon )
{
BeginSwing();
from.Direction = from.GetDirectionTo( GetWorldLocation() );
weapon.PlaySwingAnimation( from );
from.CheckSkill( weapon.Skill, m_MinSkill, m_MaxSkill );
}
public override void OnDoubleClick( Mobile from )
{
BaseWeapon weapon = from.Weapon as BaseWeapon;
if ( weapon is BaseRanged )
SendLocalizedMessageTo( from, 501822 ); // You can't practice ranged weapons on this.
else if ( weapon == null || !from.InRange( GetWorldLocation(), weapon.MaxRange ) )
SendLocalizedMessageTo( from, 501816 ); // You are too far away to do that.
else if ( Swinging )
SendLocalizedMessageTo( from, 501815 ); // You have to wait until it stops swinging.
else if ( from.Skills[weapon.Skill].Base >= m_MaxSkill )
SendLocalizedMessageTo( from, 501828 ); // Your skill cannot improve any further by simply practicing with a dummy.
else if ( from.Mounted )
SendLocalizedMessageTo( from, 501829 ); // You can't practice on this while on a mount.
else
Use( from, weapon );
}
public TrainingDummy( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
writer.Write( m_MinSkill );
writer.Write( m_MaxSkill );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_MinSkill = reader.ReadDouble();
m_MaxSkill = reader.ReadDouble();
if ( m_MinSkill == 0.0 && m_MaxSkill == 30.0 )
{
m_MinSkill = -25.0;
m_MaxSkill = +25.0;
}
break;
}
}
UpdateItemID();
}
private class InternalTimer : Timer
{
private TrainingDummy m_Dummy;
private bool m_Delay = true;
public InternalTimer( TrainingDummy dummy ) : base( TimeSpan.FromSeconds( 0.25 ), TimeSpan.FromSeconds( 2.75 ) )
{
m_Dummy = dummy;
Priority = TimerPriority.FiftyMS;
}
protected override void OnTick()
{
if ( m_Delay )
m_Dummy.OnHit();
else
m_Dummy.EndSwing();
m_Delay = !m_Delay;
}
}
}
public class TrainingDummyEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new TrainingDummyEastDeed(); } }
[Constructable]
public TrainingDummyEastAddon()
{
AddComponent( new TrainingDummy( 0x1074 ), 0, 0, 0 );
}
public TrainingDummyEastAddon( Serial serial ) : base( serial )
{
}
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 TrainingDummyEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new TrainingDummyEastAddon(); } }
public override int LabelNumber{ get{ return 1044335; } } // training dummy (east)
[Constructable]
public TrainingDummyEastDeed()
{
}
public TrainingDummyEastDeed( Serial serial ) : base( serial )
{
}
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 TrainingDummySouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new TrainingDummySouthDeed(); } }
[Constructable]
public TrainingDummySouthAddon()
{
AddComponent( new TrainingDummy( 0x1070 ), 0, 0, 0 );
}
public TrainingDummySouthAddon( Serial serial ) : base( serial )
{
}
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 TrainingDummySouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new TrainingDummySouthAddon(); } }
public override int LabelNumber{ get{ return 1044336; } } // training dummy (south)
[Constructable]
public TrainingDummySouthDeed()
{
}
public TrainingDummySouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class WarriorStatueEastAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new WarriorStatueEastDeed(); } }
[Constructable]
public WarriorStatueEastAddon()
{
AddComponent( new AddonComponent( 0x2D12 ), 0, 0, 0 );
}
public WarriorStatueEastAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class WarriorStatueEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new WarriorStatueEastAddon(); } }
public override int LabelNumber{ get{ return 1072888; } } // warrior statue (east)
[Constructable]
public WarriorStatueEastDeed()
{
}
public WarriorStatueEastDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
namespace Server.Items
{
public class WarriorStatueSouthAddon : BaseAddon
{
public override BaseAddonDeed Deed{ get{ return new WarriorStatueSouthDeed(); } }
[Constructable]
public WarriorStatueSouthAddon()
{
AddComponent( new AddonComponent( 0x2D13 ), 0, 0, 0 );
}
public WarriorStatueSouthAddon( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class WarriorStatueSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new WarriorStatueSouthAddon(); } }
public override int LabelNumber{ get{ return 1072887; } } // warrior statue (south)
[Constructable]
public WarriorStatueSouthDeed()
{
}
public WarriorStatueSouthDeed( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,70 @@
using System;
using Server;
namespace Server.Items
{
public class WaterTroughEastAddon : BaseAddon, IWaterSource
{
public override BaseAddonDeed Deed{ get{ return new WaterTroughEastDeed(); } }
[Constructable]
public WaterTroughEastAddon()
{
AddComponent( new AddonComponent( 0xB41 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xB42 ), 0, 1, 0 );
}
public WaterTroughEastAddon( Serial serial ) : base( serial )
{
}
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 int Quantity
{
get{ return 500; }
set{}
}
}
public class WaterTroughEastDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new WaterTroughEastAddon(); } }
public override int LabelNumber{ get{ return 1044349; } } // water trough (east)
[Constructable]
public WaterTroughEastDeed()
{
}
public WaterTroughEastDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,70 @@
using System;
using Server;
namespace Server.Items
{
public class WaterTroughSouthAddon : BaseAddon, IWaterSource
{
public override BaseAddonDeed Deed{ get{ return new WaterTroughSouthDeed(); } }
[Constructable]
public WaterTroughSouthAddon()
{
AddComponent( new AddonComponent( 0xB43 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0xB44 ), 1, 0, 0 );
}
public WaterTroughSouthAddon( Serial serial ) : base( serial )
{
}
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 int Quantity
{
get{ return 500; }
set{}
}
}
public class WaterTroughSouthDeed : BaseAddonDeed
{
public override BaseAddon Addon{ get{ return new WaterTroughSouthAddon(); } }
public override int LabelNumber{ get{ return 1044350; } } // water trough (south)
[Constructable]
public WaterTroughSouthDeed()
{
}
public WaterTroughSouthDeed( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,87 @@
using System;
using Server;
namespace Server.Items
{
public class WaterVatEast : BaseAddon
{
[Constructable]
public WaterVatEast()
{
AddComponent( new AddonComponent( 0x1558 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x14DE ), -1, 1, 0 );
AddComponent( new AddonComponent( 0x1552 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x14DF ), 1, -1, 0 );
AddComponent( new AddonComponent( 0x1554 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1559 ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x1550 ), 1, 3, 0 );
AddComponent( new AddonComponent( 0x1555 ), 3, 1, 0 );
AddComponent( new AddonComponent( 0x14D7 ), 2, 2, 0 );
// Blockers
AddComponent( new AddonComponent( 0x21A4 ), 2, -1, 0 );
AddComponent( new AddonComponent( 0x21A4 ), 3, 0, 0 );
AddComponent( new AddonComponent( 0x21A4 ), -1, 2, 0 );
AddComponent( new AddonComponent( 0x21A4 ), 0, 3, 0 );
}
public WaterVatEast( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
public class WaterVatSouth : BaseAddon
{
[Constructable]
public WaterVatSouth()
{
AddComponent( new AddonComponent( 0x1558 ), 0, 0, 0 );
AddComponent( new AddonComponent( 0x14DE ), -1, 1, 0 );
AddComponent( new AddonComponent( 0x1552 ), 0, 1, 0 );
AddComponent( new AddonComponent( 0x14DF ), 1, -1, 0 );
AddComponent( new AddonComponent( 0x1554 ), 1, 0, 0 );
AddComponent( new AddonComponent( 0x1559 ), 1, 1, 0 );
AddComponent( new AddonComponent( 0x1551 ), 1, 3, 0 );
AddComponent( new AddonComponent( 0x1556 ), 3, 1, 0 );
AddComponent( new AddonComponent( 0x14D7 ), 2, 2, 0 );
// Blockers
AddComponent( new AddonComponent( 0x21A4 ), 2, -1, 0 );
AddComponent( new AddonComponent( 0x21A4 ), 3, 0, 0 );
AddComponent( new AddonComponent( 0x21A4 ), -1, 2, 0 );
AddComponent( new AddonComponent( 0x21A4 ), 0, 3, 0 );
}
public WaterVatSouth( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}