Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,105 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class FifteenthAnniversaryLithographAddon : BaseAddon
{
[Constructable]
public FifteenthAnniversaryLithographAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(19508, 1154129), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(19507, 1154129), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(19506, 1154129), 0, -1, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(19510, 1154129), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(19509, 1154129), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(19511, 1154129), -1, 0, 0);
break;
}
}
public FifteenthAnniversaryLithographAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new FifteenthAnniversaryLithographDeed(); } }
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 FifteenthAnniversaryLithographDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154129; } } // 15th Anniversary Lithograph
private DirectionType _Direction;
[Constructable]
public FifteenthAnniversaryLithographDeed()
: base()
{
LootType = LootType.Blessed;
}
public FifteenthAnniversaryLithographDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new FifteenthAnniversaryLithographAddon(_Direction); } }
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,97 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class AlchemistsBookshelfAddon : BaseAddonContainer
{
public override BaseAddonContainerDeed Deed { get { return new AlchemistsBookshelfDeed(); } }
public override bool RetainDeedHue { get { return true; } }
public override int DefaultGumpID { get { return 0x4D; } }
public override int DefaultDropSound { get { return 0x42; } }
public override bool ForceShowProperties { get { return true; } }
[Constructable]
public AlchemistsBookshelfAddon(DirectionType type)
: base(type == DirectionType.South ? 0x4C24 : 0x4C25)
{
}
public AlchemistsBookshelfAddon(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class AlchemistsBookshelfDeed : BaseAddonContainerDeed, IRewardOption
{
public override BaseAddonContainer Addon { get { return new AlchemistsBookshelfAddon(_Direction); } }
public override int LabelNumber { get { return 1154192; } } // Alchemist Bookcase
private DirectionType _Direction;
[Constructable]
public AlchemistsBookshelfDeed()
: base()
{
LootType = LootType.Blessed;
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public AlchemistsBookshelfDeed(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,181 @@
using Server.Multis;
using System;
namespace Server.Items
{
public class BarrelSpongeAddon : BaseAddon, IDyable
{
public override bool ForceShowProperties { get { return true; } }
[CommandProperty(AccessLevel.GameMaster)]
public DateTime NextResourceCount { get; set; }
private int m_ResourceCount;
[CommandProperty(AccessLevel.GameMaster)]
public int ResourceCount { get { return m_ResourceCount; } set { m_ResourceCount = value; UpdateProperties(); } }
[Constructable]
public BarrelSpongeAddon()
: this(0, DateTime.UtcNow + TimeSpan.FromDays(7))
{
}
[Constructable]
public BarrelSpongeAddon(int resCount, DateTime nextuse)
{
NextResourceCount = nextuse;
ResourceCount = resCount;
AddComponent(new BarrelSpongeComponent(0x4C30), 0, 0, 0);
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public BarrelSpongeAddon(Serial serial)
: base(serial)
{
}
private readonly Type[] m_Potions = new Type[]
{
typeof(ShatterPotion),
typeof(FearEssence),
typeof(InvisibilityPotion),
typeof(GreaterConflagrationPotion),
typeof(ParasiticPotion),
typeof(ExplodingTarPotion),
typeof(GreaterConfusionBlastPotion)
};
public override void OnComponentUsed(AddonComponent component, Mobile from)
{
BaseHouse house = BaseHouse.FindHouseAt(from);
if (house != null && (house.IsOwner(from) || (house.LockDowns.ContainsKey(this) && house.LockDowns[this] == from)))
{
if (ResourceCount > 0)
{
Item item = Loot.Construct(m_Potions);
if (item == null)
return;
ResourceCount--;
from.AddToBackpack(item);
from.SendLocalizedMessage(1154176); // Potions have been placed in your backpack.
}
}
else
{
from.SendLocalizedMessage(502092); // You must be in your house to do this.
}
}
public override BaseAddonDeed Deed { get { return new BarrelSpongeDeed(); } }
private class BarrelSpongeComponent : LocalizedAddonComponent
{
public BarrelSpongeComponent(int id)
: base(id, 1098376) // Barrel Sponge
{
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
if (Addon is BarrelSpongeAddon)
{
list.Add(1154178, ((BarrelSpongeAddon)Addon).ResourceCount.ToString()); // Potions: ~1_COUNT~
}
}
public BarrelSpongeComponent(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
private void TryGiveResourceCount()
{
if (NextResourceCount < DateTime.UtcNow)
{
ResourceCount = Math.Min(140, m_ResourceCount + 35);
NextResourceCount = DateTime.UtcNow + TimeSpan.FromDays(7);
UpdateProperties();
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
TryGiveResourceCount();
writer.Write(m_ResourceCount);
writer.Write(NextResourceCount);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
m_ResourceCount = reader.ReadInt();
NextResourceCount = reader.ReadDateTime();
}
}
public class BarrelSpongeDeed : BaseAddonDeed
{
public override int LabelNumber { get { return 1098376; } } // Barrel Sponge
[Constructable]
public BarrelSpongeDeed()
{
LootType = LootType.Blessed;
}
public BarrelSpongeDeed(Serial serial)
: base(serial)
{
}
public override BaseAddon Addon { get { return new BarrelSpongeAddon(); } }
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,157 @@
using Server.Multis;
using Server.Targeting;
using System;
namespace Server.Items
{
public class BirdLamp : BaseLight, IFlipable, IAddon
{
public override int LabelNumber { get { return 1154188; } } // Bird Lamp
public override int LitItemID { get { return ItemID == 0x4C44 ? 0x4C45 : 0x4C47; } }
public override int UnlitItemID { get { return ItemID == 0x4C45 ? 0x4C44 : 0x4C46; } }
public int NorthID { get { return Burning ? 0x4C45 : 0x4C44; } }
public int WestID { get { return Burning ? 0x4C47 : 0x4C46; } }
[Constructable]
public BirdLamp()
: base(0x4C44)
{
Movable = false;
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle300;
Weight = 0.0;
}
public Item Deed { get { return new BirdLampDeed(); } }
public bool CouldFit(IPoint3D p, Map map)
{
return map.CanFit((Point3D)p, 20);
}
void IChopable.OnChop(Mobile from)
{
var house = BaseHouse.FindHouseAt(this);
if (house != null && (house.IsOwner(from) || (house.Addons.ContainsKey(this) && house.Addons[this] == from)))
{
Effects.PlaySound(GetWorldLocation(), Map, 0x3B3);
from.SendLocalizedMessage(500461); // You destroy the item.
Delete();
house.Addons.Remove(this);
from.AddToBackpack(Deed);
}
else
{
from.SendLocalizedMessage(1113134); // You can only redeed items in your own house!
}
}
public void OnFlip(Mobile from)
{
if (ItemID == NorthID)
ItemID = WestID;
else if (ItemID == WestID)
ItemID = NorthID;
}
public BirdLamp(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 BirdLampDeed : Item
{
public override int LabelNumber { get { return 1154188; } } // Bird Lamp
[Constructable]
public BirdLampDeed()
: base(0x14F0)
{
LootType = LootType.Blessed;
}
public BirdLampDeed(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 override void OnDoubleClick(Mobile from)
{
BaseHouse house = BaseHouse.FindHouseAt(from);
if (house != null && house.IsCoOwner(from))
{
from.BeginTarget(-1, true, TargetFlags.None, new TargetStateCallback(Placement_OnTarget), null);
}
else
{
from.SendLocalizedMessage(502092); // You must be in your house to do this.
}
}
public void Placement_OnTarget(Mobile from, object targeted, object state)
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
if (p == null || map == null || Deleted)
return;
if (IsChildOf(from.Backpack))
{
Point3D loc = new Point3D(p);
BaseHouse house = BaseHouse.FindHouseAt(loc, from.Map, 16);
if (house != null && house.IsCoOwner(from))
{
Item addon = new BirdLamp();
addon.MoveToWorld(loc, from.Map);
house.Addons[addon] = from;
Delete();
}
else
{
from.SendLocalizedMessage(1042036); // That location is not in your house.
}
}
else
{
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
}
}
}
}

View File

@@ -0,0 +1,112 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class BullTapestryAddon : BaseAddon, IDyable
{
[Constructable]
public BullTapestryAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(19619, 1154148), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(19618, 1154148), 0, 1, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(19617, 1154148), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(19616, 1154148), 0, 0, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public BullTapestryAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new BullTapestryDeed(); } }
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 BullTapestryDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154148; } } // Bull Tapestry
private DirectionType _Direction;
[Constructable]
public BullTapestryDeed()
: base()
{
LootType = LootType.Blessed;
}
public BullTapestryDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new BullTapestryAddon(_Direction); } }
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,71 @@
using System;
namespace Server.Items
{
public class CactusSpongeAddon : BaseAddon, IDyable
{
[Constructable]
public CactusSpongeAddon()
{
AddComponent(new AddonComponent(0x4C2E), 0, 0, 0);
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public CactusSpongeAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new CactusSpongeDeed(); } }
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 CactusSpongeDeed : BaseAddonDeed
{
public override int LabelNumber { get { return 1098374; } } // Cactus Sponge
[Constructable]
public CactusSpongeDeed()
{
LootType = LootType.Blessed;
}
public CactusSpongeDeed(Serial serial)
: base(serial)
{
}
public override BaseAddon Addon { get { return new CactusSpongeAddon(); } }
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,101 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class CastlePaintingAddon : BaseAddon
{
[Constructable]
public CastlePaintingAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(0x4C21, 1154184), 0, 0, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(0x4C20, 1154184), 0, 0, 0);
break;
}
}
public CastlePaintingAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new CastlePaintingDeed(); } }
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 CastlePaintingDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154184; } } // Castle Painting
private DirectionType _Direction;
[Constructable]
public CastlePaintingDeed()
: base()
{
LootType = LootType.Blessed;
}
public CastlePaintingDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new CastlePaintingAddon(_Direction); } }
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,157 @@
using Server.Multis;
using Server.Targeting;
using System;
namespace Server.Items
{
public class DragonLantern : BaseLight, IFlipable, IAddon
{
public override int LabelNumber { get { return 1098392; } } // dragon lantern
public override int LitItemID { get { return ItemID == 0x4C40 ? 0x4C41 : 0x4C43; } }
public override int UnlitItemID { get { return ItemID == 0x4C41 ? 0x4C40 : 0x4C42; } }
public int NorthID { get { return Burning ? 0x4C41 : 0x4C40; } }
public int WestID { get { return Burning ? 0x4C43 : 0x4C42; } }
[Constructable]
public DragonLantern()
: base(0x4C40)
{
Movable = false;
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle300;
Weight = 0.0;
}
public Item Deed { get { return new DragonLanternDeed(); } }
public bool CouldFit(IPoint3D p, Map map)
{
return map.CanFit((Point3D)p, 20);
}
void IChopable.OnChop(Mobile from)
{
var house = BaseHouse.FindHouseAt(this);
if (house != null && (house.IsOwner(from) || (house.Addons.ContainsKey(this) && house.Addons[this] == from)))
{
Effects.PlaySound(GetWorldLocation(), Map, 0x3B3);
from.SendLocalizedMessage(500461); // You destroy the item.
Delete();
house.Addons.Remove(this);
from.AddToBackpack(Deed);
}
else
{
from.SendLocalizedMessage(1113134); // You can only redeed items in your own house!
}
}
public void OnFlip(Mobile from)
{
if (ItemID == NorthID)
ItemID = WestID;
else if (ItemID == WestID)
ItemID = NorthID;
}
public DragonLantern(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 DragonLanternDeed : Item
{
public override int LabelNumber { get { return 1098392; } } // dragon lantern
[Constructable]
public DragonLanternDeed()
: base(0x14F0)
{
LootType = LootType.Blessed;
}
public DragonLanternDeed(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 override void OnDoubleClick(Mobile from)
{
BaseHouse house = BaseHouse.FindHouseAt(from);
if (house != null && house.IsCoOwner(from))
{
from.BeginTarget(-1, true, TargetFlags.None, new TargetStateCallback(Placement_OnTarget), null);
}
else
{
from.SendLocalizedMessage(502092); // You must be in your house to do this.
}
}
public void Placement_OnTarget(Mobile from, object targeted, object state)
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
if (p == null || map == null || Deleted)
return;
if (IsChildOf(from.Backpack))
{
Point3D loc = new Point3D(p);
BaseHouse house = BaseHouse.FindHouseAt(loc, from.Map, 16);
if (house != null && house.IsCoOwner(from))
{
Item addon = new DragonLantern();
addon.MoveToWorld(loc, from.Map);
house.Addons[addon] = from;
Delete();
}
else
{
from.SendLocalizedMessage(1042036); // That location is not in your house.
}
}
else
{
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
}
}
}
}

View File

@@ -0,0 +1,112 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class EmbroideredTapestryAddon : BaseAddon, IDyable
{
[Constructable]
public EmbroideredTapestryAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(19610, 1154143), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(19611, 1154143), 0, 1, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(19609, 1154143), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(19608, 1154143), 0, 0, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public EmbroideredTapestryAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new EmbroideredTapestryDeed(); } }
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 EmbroideredTapestryDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154143; } } // Embroidered Tapestry
private DirectionType _Direction;
[Constructable]
public EmbroideredTapestryDeed()
: base()
{
LootType = LootType.Blessed;
}
public EmbroideredTapestryDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new EmbroideredTapestryAddon(_Direction); } }
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,196 @@
using System;
using Server.Gumps;
using Server.Multis;
namespace Server.Items
{
public class FirePaintingAddon : BaseAddon
{
public override bool ForceShowProperties { get { return true; } }
[CommandProperty(AccessLevel.GameMaster)]
public DateTime NextResourceCount { get; set; }
private int m_ResourceCount;
[CommandProperty(AccessLevel.GameMaster)]
public int ResourceCount { get { return m_ResourceCount; } set { m_ResourceCount = value; UpdateProperties(); } }
[Constructable]
public FirePaintingAddon(DirectionType type)
: this(type, 0, DateTime.UtcNow + TimeSpan.FromDays(7))
{
}
[Constructable]
public FirePaintingAddon(DirectionType type, int resCount, DateTime nextuse)
{
NextResourceCount = nextuse;
ResourceCount = resCount;
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(0x4C29, 1098378), 0, 0, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(0x4C28, 1098378), 0, 0, 0);
break;
}
}
public FirePaintingAddon(Serial serial)
: base(serial)
{
}
public override void OnComponentUsed(AddonComponent component, Mobile from)
{
BaseHouse house = BaseHouse.FindHouseAt(from);
if (house != null && (house.IsOwner(from) || (house.LockDowns.ContainsKey(this) && house.LockDowns[this] == from)))
{
if (ResourceCount > 0)
{
ResourceCount--;
Item item = ScrollOfTranscendence.CreateRandom(1, 1);
from.AddToBackpack(item);
from.SendLocalizedMessage(1154177); // Scrolls of Transcendence have been placed in your backpack.
}
}
else
{
from.SendLocalizedMessage(502092); // You must be in your house to do this.
}
}
public override BaseAddonDeed Deed { get { return new FirePaintingDeed(); } }
private class FirePaintingComponent : LocalizedAddonComponent
{
public FirePaintingComponent(int id)
: base(id, 1098378) // painting
{
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
if (Addon is FirePaintingAddon)
{
list.Add(1154179, ((FirePaintingAddon)Addon).ResourceCount.ToString()); // Scrolls of Transcendence: ~1_COUNT~
}
}
public FirePaintingComponent(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
private void TryGiveResourceCount()
{
if (NextResourceCount < DateTime.UtcNow)
{
ResourceCount = Math.Min(140, m_ResourceCount + 1);
NextResourceCount = DateTime.UtcNow + TimeSpan.FromDays(7);
UpdateProperties();
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
TryGiveResourceCount();
writer.Write(m_ResourceCount);
writer.Write(NextResourceCount);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
m_ResourceCount = reader.ReadInt();
NextResourceCount = reader.ReadDateTime();
}
}
public class FirePaintingDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154182; } } // Fire Painting
private DirectionType _Direction;
[Constructable]
public FirePaintingDeed()
: base()
{
LootType = LootType.Blessed;
}
public FirePaintingDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new FirePaintingAddon(_Direction); } }
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,71 @@
using System;
namespace Server.Items
{
public class FluffySpongeAddon : BaseAddon, IDyable
{
[Constructable]
public FluffySpongeAddon()
{
AddComponent(new AddonComponent(0x4C31), 0, 0, 0);
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public FluffySpongeAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new FluffySpongeDeed(); } }
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 FluffySpongeDeed : BaseAddonDeed
{
public override int LabelNumber { get { return 1098377; } } // Fluffy Sponge
[Constructable]
public FluffySpongeDeed()
{
LootType = LootType.Blessed;
}
public FluffySpongeDeed(Serial serial)
: base(serial)
{
}
public override BaseAddon Addon { get { return new FluffySpongeAddon(); } }
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,120 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class FourPostBedAddon : BaseAddon, IDyable
{
[Constructable]
public FourPostBedAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(0x4C71, 1154131), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C70, 1154131), 1, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C6E, 1154131), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C72, 1154131), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C73, 1154131), -1, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C6F, 1154131), -1, 1, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(0x4C69, 1154131), 1, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C68, 1154131), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C6D, 1154131), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C6C, 1154131), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C6A, 1154131), 1, -1, 0);
AddComponent(new LocalizedAddonComponent(0x4C6B, 1154131), 0, -1, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public FourPostBedAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new FourPostBedDeed(); } }
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 FourPostBedDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154131; } } // Four Post Bed
private DirectionType _Direction;
[Constructable]
public FourPostBedDeed()
: base()
{
LootType = LootType.Blessed;
}
public FourPostBedDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new FourPostBedAddon(_Direction); } }
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,116 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class GoldenTableAddon : BaseAddon, IDyable
{
[Constructable]
public GoldenTableAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(19624, 1154150), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(19627, 1154150), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(19626, 1154150), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(19625, 1154150), 1, 1, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(19623, 1154150), 1, 1, 0);
AddComponent(new LocalizedAddonComponent(19622, 1154150), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(19621, 1154150), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(19620, 1154150), 0, 0, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public GoldenTableAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new GoldenTableDeed(); } }
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 GoldenTableDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154150; } } // Golden Table
private DirectionType _Direction;
[Constructable]
public GoldenTableDeed()
: base()
{
LootType = LootType.Blessed;
}
public GoldenTableDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new GoldenTableAddon(_Direction); } }
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,110 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class HorsePaintingAddon : BaseAddon, IDyable
{
[Constructable]
public HorsePaintingAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(0x4C23, 1154186), 0, 0, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(0x4C22, 1154186), 0, 0, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public HorsePaintingAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new HorsePaintingDeed(); } }
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 HorsePaintingDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154186; } } // Horse Painting
private DirectionType _Direction;
[Constructable]
public HorsePaintingDeed()
: base()
{
LootType = LootType.Blessed;
}
public HorsePaintingDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new HorsePaintingAddon(_Direction); } }
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,157 @@
using Server.Multis;
using Server.Targeting;
using System;
namespace Server.Items
{
public class KoiLamp : BaseLight, IFlipable, IAddon
{
public override int LabelNumber { get { return 1154190; } } // Koi Lamp
public override int LitItemID { get { return ItemID == 0x4C48 ? 0x4C49 : 0x4C4B; } }
public override int UnlitItemID { get { return ItemID == 0x4C49 ? 0x4C48 : 0x4C4A; } }
public int NorthID { get { return Burning ? 0x4C49 : 0x4C48; } }
public int WestID { get { return Burning ? 0x4C4B : 0x4C4A; } }
[Constructable]
public KoiLamp()
: base(0x4C49)
{
Movable = false;
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle300;
Weight = 0.0;
}
public Item Deed { get { return new KoiLampDeed(); } }
public bool CouldFit(IPoint3D p, Map map)
{
return map.CanFit((Point3D)p, 20);
}
void IChopable.OnChop(Mobile from)
{
var house = BaseHouse.FindHouseAt(this);
if (house != null && (house.IsOwner(from) || (house.Addons.ContainsKey(this) && house.Addons[this] == from)))
{
Effects.PlaySound(GetWorldLocation(), Map, 0x3B3);
from.SendLocalizedMessage(500461); // You destroy the item.
Delete();
house.Addons.Remove(this);
from.AddToBackpack(Deed);
}
else
{
from.SendLocalizedMessage(1113134); // You can only redeed items in your own house!
}
}
public void OnFlip(Mobile from)
{
if (ItemID == NorthID)
ItemID = WestID;
else if (ItemID == WestID)
ItemID = NorthID;
}
public KoiLamp(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 KoiLampDeed : Item
{
public override int LabelNumber { get { return 1154190; } } // Koi Lamp
[Constructable]
public KoiLampDeed()
: base(0x14F0)
{
LootType = LootType.Blessed;
}
public KoiLampDeed(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 override void OnDoubleClick(Mobile from)
{
BaseHouse house = BaseHouse.FindHouseAt(from);
if (house != null && house.IsCoOwner(from))
{
from.BeginTarget(-1, true, TargetFlags.None, new TargetStateCallback(Placement_OnTarget), null);
}
else
{
from.SendLocalizedMessage(502092); // You must be in your house to do this.
}
}
public void Placement_OnTarget(Mobile from, object targeted, object state)
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
if (p == null || map == null || Deleted)
return;
if (IsChildOf(from.Backpack))
{
Point3D loc = new Point3D(p);
BaseHouse house = BaseHouse.FindHouseAt(loc, from.Map, 16);
if (house != null && house.IsCoOwner(from))
{
Item addon = new KoiLamp();
addon.MoveToWorld(loc, from.Map);
house.Addons[addon] = from;
Delete();
}
else
{
from.SendLocalizedMessage(1042036); // That location is not in your house.
}
}
else
{
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
}
}
}
}

View File

@@ -0,0 +1,116 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class MarbleTableAddon : BaseAddon, IDyable
{
[Constructable]
public MarbleTableAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(19635, 1154152), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(19634, 1154152), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(19633, 1154152), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(19632, 1154152), 1, 1, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(19631, 1154152), 1, 1, 0);
AddComponent(new LocalizedAddonComponent(19630, 1154152), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(19629, 1154152), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(19628, 1154152), 0, 0, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public MarbleTableAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new MarbleTableDeed(); } }
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 MarbleTableDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154152; } } // Marble Table
private DirectionType _Direction;
[Constructable]
public MarbleTableDeed()
: base()
{
LootType = LootType.Blessed;
}
public MarbleTableDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new MarbleTableAddon(_Direction); } }
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,112 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class MonasteryBellAddon : BaseAddon, IDyable
{
[Constructable]
public MonasteryBellAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new InstrumentedAddonComponent(0x4C94, 0x66C), 0, 0, 0);
AddComponent(new InstrumentedAddonComponent(0x4C95, 0x66C), 0, 1, 0);
break;
case DirectionType.South:
AddComponent(new InstrumentedAddonComponent(0x4C92, 0x66C), 1, 0, 0);
AddComponent(new InstrumentedAddonComponent(0x4C93, 0x66C), 0, 0, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public MonasteryBellAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new MonasteryBellDeed(); } }
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 MonasteryBellDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1098472; } } // monastery bell
private DirectionType _Direction;
[Constructable]
public MonasteryBellDeed()
: base()
{
LootType = LootType.Blessed;
}
public MonasteryBellDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new MonasteryBellAddon(_Direction); } }
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,120 @@
using System;
using Server.Gumps;
namespace Server.Items
{
public class OrnateBedAddon : BaseAddon, IDyable
{
[Constructable]
public OrnateBedAddon(DirectionType type)
{
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(0x4C7F, 1154133), 1, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C7A, 1154133), 0, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C7C, 1154133), -1, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C7E, 1154133), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C7B, 1154133), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C7D, 1154133), -1, 1, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(0x4C77, 1154133), 0, -1, 0);
AddComponent(new LocalizedAddonComponent(0x4C79, 1154133), 0, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C74, 1154133), 1, 0, 0);
AddComponent(new LocalizedAddonComponent(0x4C76, 1154133), 1, -1, 0);
AddComponent(new LocalizedAddonComponent(0x4C75, 1154133), 1, 1, 0);
AddComponent(new LocalizedAddonComponent(0x4C78, 1154133), 0, 0, 0);
break;
}
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public OrnateBedAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new OrnateBedDeed(); } }
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 OrnateBedDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154133; } } // Ornate Bed
private DirectionType _Direction;
[Constructable]
public OrnateBedDeed()
: base()
{
LootType = LootType.Blessed;
}
public OrnateBedDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new OrnateBedAddon(_Direction); } }
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,71 @@
using System;
namespace Server.Items
{
public class ShelfSpongeAddon : BaseAddon, IDyable
{
[Constructable]
public ShelfSpongeAddon()
{
AddComponent(new AddonComponent(0x4C2F), 0, 0, 0);
}
public virtual bool Dye(Mobile from, DyeTub sender)
{
if (Deleted)
return false;
Hue = sender.DyedHue;
return true;
}
public ShelfSpongeAddon(Serial serial)
: base(serial)
{
}
public override BaseAddonDeed Deed { get { return new ShelfSpongeDeed(); } }
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 ShelfSpongeDeed : BaseAddonDeed
{
public override int LabelNumber { get { return 1098375; } } // Shelf Sponge
[Constructable]
public ShelfSpongeDeed()
{
LootType = LootType.Blessed;
}
public ShelfSpongeDeed(Serial serial)
: base(serial)
{
}
public override BaseAddon Addon { get { return new ShelfSpongeAddon(); } }
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,196 @@
using System;
using Server.Gumps;
using Server.Multis;
namespace Server.Items
{
public class ShipPaintingAddon : BaseAddon
{
public override bool ForceShowProperties { get { return true; } }
[CommandProperty(AccessLevel.GameMaster)]
public DateTime NextResourceCount { get; set; }
private int m_ResourceCount;
[CommandProperty(AccessLevel.GameMaster)]
public int ResourceCount { get { return m_ResourceCount; } set { m_ResourceCount = value; UpdateProperties(); } }
[Constructable]
public ShipPaintingAddon(DirectionType type)
: this(type, 0, DateTime.UtcNow + TimeSpan.FromDays(7))
{
}
[Constructable]
public ShipPaintingAddon(DirectionType type, int resCount, DateTime nextuse)
{
NextResourceCount = nextuse;
ResourceCount = resCount;
switch (type)
{
case DirectionType.East:
AddComponent(new LocalizedAddonComponent(0x4C27, 1098378), 0, 0, 0);
break;
case DirectionType.South:
AddComponent(new LocalizedAddonComponent(0x4C26, 1098378), 0, 0, 0);
break;
}
}
public ShipPaintingAddon(Serial serial)
: base(serial)
{
}
public override void OnComponentUsed(AddonComponent component, Mobile from)
{
BaseHouse house = BaseHouse.FindHouseAt(from);
if (house != null && (house.IsOwner(from) || (house.LockDowns.ContainsKey(this) && house.LockDowns[this] == from)))
{
if (ResourceCount > 0)
{
ResourceCount--;
Item item = new HeavyPowderCharge();
from.AddToBackpack(item);
from.SendLocalizedMessage(1154174); // Powder charges have been placed in your backpack.
}
}
else
{
from.SendLocalizedMessage(502092); // You must be in your house to do this.
}
}
public override BaseAddonDeed Deed { get { return new ShipPaintingDeed(); } }
private class ShipPaintingComponent : LocalizedAddonComponent
{
public ShipPaintingComponent(int id)
: base(id, 1098378) // painting
{
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
if (Addon is ShipPaintingAddon)
{
list.Add(1154175, ((ShipPaintingAddon)Addon).ResourceCount.ToString()); // Powder Charges: ~1_COUNT~
}
}
public ShipPaintingComponent(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // Version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
private void TryGiveResourceCount()
{
if (NextResourceCount < DateTime.UtcNow)
{
ResourceCount = Math.Min(210, m_ResourceCount + 42);
NextResourceCount = DateTime.UtcNow + TimeSpan.FromDays(7);
UpdateProperties();
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
TryGiveResourceCount();
writer.Write(m_ResourceCount);
writer.Write(NextResourceCount);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
m_ResourceCount = reader.ReadInt();
NextResourceCount = reader.ReadDateTime();
}
}
public class ShipPaintingDeed : BaseAddonDeed, IRewardOption
{
public override int LabelNumber { get { return 1154180; } } // Ship Painting
private DirectionType _Direction;
[Constructable]
public ShipPaintingDeed()
: base()
{
LootType = LootType.Blessed;
}
public ShipPaintingDeed(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile from)
{
if (IsChildOf(from.Backpack))
{
from.CloseGump(typeof(AddonOptionGump));
from.SendGump(new AddonOptionGump(this, 1154194)); // Choose a Facing:
}
else
{
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
}
public void GetOptions(RewardOptionList list)
{
list.Add((int)DirectionType.South, 1075386); // South
list.Add((int)DirectionType.East, 1075387); // East
}
public void OnOptionSelected(Mobile from, int choice)
{
_Direction = (DirectionType)choice;
if (!Deleted)
base.OnDoubleClick(from);
}
public override BaseAddon Addon { get { return new ShipPaintingAddon(_Direction); } }
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,157 @@
using Server.Multis;
using Server.Targeting;
using System;
namespace Server.Items
{
public class TallLamp : BaseLight, IFlipable, IAddon
{
public override int LabelNumber { get { return 1098410; } } // tall lamp
public override int LitItemID { get { return ItemID == 0x4C52 ? 0x4C53 : 0x4C55; } }
public override int UnlitItemID { get { return ItemID == 0x4C53 ? 0x4C52 : 0x4C54; } }
public int NorthID { get { return Burning ? 0x4C53 : 0x4C52; } }
public int WestID { get { return Burning ? 0x4C55 : 0x4C54; } }
[Constructable]
public TallLamp()
: base(0x4C52)
{
Movable = false;
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle300;
Weight = 0.0;
}
public Item Deed { get { return new TallLampDeed(); } }
public bool CouldFit(IPoint3D p, Map map)
{
return map.CanFit((Point3D)p, 20);
}
void IChopable.OnChop(Mobile from)
{
var house = BaseHouse.FindHouseAt(this);
if (house != null && (house.IsOwner(from) || (house.Addons.ContainsKey(this) && house.Addons[this] == from)))
{
Effects.PlaySound(GetWorldLocation(), Map, 0x3B3);
from.SendLocalizedMessage(500461); // You destroy the item.
Delete();
house.Addons.Remove(this);
from.AddToBackpack(Deed);
}
else
{
from.SendLocalizedMessage(1113134); // You can only redeed items in your own house!
}
}
public void OnFlip(Mobile from)
{
if (ItemID == NorthID)
ItemID = WestID;
else if (ItemID == WestID)
ItemID = NorthID;
}
public TallLamp(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 TallLampDeed : Item
{
public override int LabelNumber { get { return 1098410; } } // tall lamp
[Constructable]
public TallLampDeed()
: base(0x14F0)
{
LootType = LootType.Blessed;
}
public TallLampDeed(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 override void OnDoubleClick(Mobile from)
{
BaseHouse house = BaseHouse.FindHouseAt(from);
if (house != null && house.IsCoOwner(from))
{
from.BeginTarget(-1, true, TargetFlags.None, new TargetStateCallback(Placement_OnTarget), null);
}
else
{
from.SendLocalizedMessage(502092); // You must be in your house to do this.
}
}
public void Placement_OnTarget(Mobile from, object targeted, object state)
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
if (p == null || map == null || Deleted)
return;
if (IsChildOf(from.Backpack))
{
Point3D loc = new Point3D(p);
BaseHouse house = BaseHouse.FindHouseAt(loc, from.Map, 16);
if (house != null && house.IsCoOwner(from))
{
Item addon = new TallLamp();
addon.MoveToWorld(loc, from.Map);
house.Addons[addon] = from;
Delete();
}
else
{
from.SendLocalizedMessage(1042036); // That location is not in your house.
}
}
else
{
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
}
}
}
}

View File

@@ -0,0 +1,58 @@
using System;
namespace Server.Items
{
[Flipable(0x4D0C, 0x4D0D)]
public class TheTokenBox : BaseContainer
{
public override int LabelNumber { get { return 1154209; } } // The King's Collection
public override int DefaultGumpID { get { return 0x4D0C; } }
[Constructable]
public TheTokenBox()
: base(0x4D0C)
{
Weight = 4.0;
DropItem(new FifteenthAnniversaryLithographDeed());
DropItem(new AlchemistsBookshelfDeed());
DropItem(new BarrelSpongeDeed());
DropItem(new BirdLampDeed());
DropItem(new BullTapestryDeed());
DropItem(new CactusSpongeDeed());
DropItem(new CastlePaintingDeed());
DropItem(new DragonLanternDeed());
DropItem(new EmbroideredTapestryDeed());
DropItem(new FirePaintingDeed());
DropItem(new FluffySpongeDeed());
DropItem(new FourPostBedDeed());
DropItem(new GoldenTableDeed());
DropItem(new HorsePaintingDeed());
DropItem(new KoiLampDeed());
DropItem(new MarbleTableDeed());
DropItem(new MonasteryBellDeed());
DropItem(new OrnateBedDeed());
DropItem(new ShelfSpongeDeed());
DropItem(new ShipPaintingDeed());
DropItem(new TallLampDeed());
}
public TheTokenBox(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();
}
}
}