Reorganizes Project (#41)
This commit is contained in:
parent
08bf44af9a
commit
3614a66aee
3499 changed files with 79 additions and 55 deletions
68
Projects/Scripts/Items/Addons/AbbatoirAddon.cs
Normal file
68
Projects/Scripts/Items/Addons/AbbatoirAddon.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class AbbatoirAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new AbbatoirDeed();
|
||||
|
||||
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 AbbatoirDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public AbbatoirDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public AbbatoirDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AbbatoirAddon();
|
||||
public override int LabelNumber => 1044329; // abbatoir
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
262
Projects/Scripts/Items/Addons/AddonComponent.cs
Normal file
262
Projects/Scripts/Items/Addons/AddonComponent.cs
Normal file
|
|
@ -0,0 +1,262 @@
|
|||
using Server.Engines.Craft;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Anvil]
|
||||
public class AnvilComponent : AddonComponent
|
||||
{
|
||||
[Constructible]
|
||||
public AnvilComponent(int itemID) : base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public AnvilComponent(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();
|
||||
}
|
||||
}
|
||||
|
||||
[Forge]
|
||||
public class ForgeComponent : AddonComponent
|
||||
{
|
||||
[Constructible]
|
||||
public ForgeComponent(int itemID) : base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public ForgeComponent(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 LocalizedAddonComponent : AddonComponent
|
||||
{
|
||||
private int m_LabelNumber;
|
||||
|
||||
[Constructible]
|
||||
public LocalizedAddonComponent(int itemID, int labelNumber) : base(itemID)
|
||||
{
|
||||
m_LabelNumber = labelNumber;
|
||||
}
|
||||
|
||||
public LocalizedAddonComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Number
|
||||
{
|
||||
get => m_LabelNumber;
|
||||
set
|
||||
{
|
||||
m_LabelNumber = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override int LabelNumber => m_LabelNumber;
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(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 static LightEntry[] m_Entries =
|
||||
{
|
||||
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)
|
||||
};
|
||||
|
||||
[Constructible]
|
||||
public AddonComponent(int itemID) : base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
ApplyLightTo(this);
|
||||
}
|
||||
|
||||
public AddonComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public BaseAddon Addon{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Point3D Offset{ get; set; }
|
||||
|
||||
[Hue]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public override int Hue
|
||||
{
|
||||
get => base.Hue;
|
||||
set
|
||||
{
|
||||
base.Hue = value;
|
||||
|
||||
if (Addon?.ShareHue == true)
|
||||
Addon.Hue = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool NeedsWall => false;
|
||||
public virtual Point3D WallPosition => Point3D.Zero;
|
||||
|
||||
public void OnChop(Mobile from)
|
||||
{
|
||||
if (Addon != null && from.InRange(GetWorldLocation(), 3))
|
||||
Addon.OnChop(from);
|
||||
else
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
Addon?.OnComponentUsed(this, from);
|
||||
}
|
||||
|
||||
public override void OnLocationChange(Point3D old)
|
||||
{
|
||||
if (Addon != null)
|
||||
Addon.Location = new Point3D(X - Offset.X, Y - Offset.Y, Z - Offset.Z);
|
||||
}
|
||||
|
||||
public override void OnMapChange()
|
||||
{
|
||||
if (Addon != null)
|
||||
Addon.Map = Map;
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
base.OnAfterDelete();
|
||||
|
||||
Addon?.Delete();
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(Addon);
|
||||
writer.Write(Offset);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
case 0:
|
||||
{
|
||||
Addon = reader.ReadItem() as BaseAddon;
|
||||
Offset = reader.ReadPoint3D();
|
||||
|
||||
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 class LightEntry
|
||||
{
|
||||
public int[] m_ItemIDs;
|
||||
public LightType m_Light;
|
||||
|
||||
public LightEntry(LightType light, params int[] itemIDs)
|
||||
{
|
||||
m_Light = light;
|
||||
m_ItemIDs = itemIDs;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
155
Projects/Scripts/Items/Addons/AddonContainerComponent.cs
Normal file
155
Projects/Scripts/Items/Addons/AddonContainerComponent.cs
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
using System.Collections.Generic;
|
||||
using Server.ContextMenus;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class AddonContainerComponent : Item, IChopable
|
||||
{
|
||||
[Constructible]
|
||||
public AddonContainerComponent(int itemID) : base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
|
||||
AddonComponent.ApplyLightTo(this);
|
||||
}
|
||||
|
||||
public AddonContainerComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual bool NeedsWall => false;
|
||||
public virtual Point3D WallPosition => Point3D.Zero;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public BaseAddonContainer Addon{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Point3D Offset{ get; set; }
|
||||
|
||||
[Hue]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public override int Hue
|
||||
{
|
||||
get => base.Hue;
|
||||
set
|
||||
{
|
||||
base.Hue = value;
|
||||
|
||||
if (Addon?.ShareHue == true)
|
||||
Addon.Hue = value;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void OnChop(Mobile from)
|
||||
{
|
||||
if (Addon != null && from.InRange(GetWorldLocation(), 3))
|
||||
Addon.OnChop(from);
|
||||
else
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
if (Addon != null)
|
||||
return Addon.OnDragDrop(from, dropped);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
Addon?.OnComponentUsed(this, from);
|
||||
}
|
||||
|
||||
public override void OnLocationChange(Point3D old)
|
||||
{
|
||||
if (Addon != null)
|
||||
Addon.Location = new Point3D(X - Offset.X, Y - Offset.Y, Z - Offset.Z);
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
Addon?.GetContextMenuEntries(from, list);
|
||||
}
|
||||
|
||||
public override void OnMapChange()
|
||||
{
|
||||
if (Addon != null)
|
||||
Addon.Map = Map;
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
base.OnAfterDelete();
|
||||
|
||||
Addon?.Delete();
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(Addon);
|
||||
writer.Write(Offset);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Addon = reader.ReadItem() as BaseAddonContainer;
|
||||
Offset = reader.ReadPoint3D();
|
||||
|
||||
Addon?.OnComponentLoaded(this);
|
||||
|
||||
AddonComponent.ApplyLightTo(this);
|
||||
}
|
||||
}
|
||||
|
||||
public class LocalizedContainerComponent : AddonContainerComponent
|
||||
{
|
||||
private int m_LabelNumber;
|
||||
|
||||
public LocalizedContainerComponent(int itemID, int labelNumber) : base(itemID)
|
||||
{
|
||||
m_LabelNumber = labelNumber;
|
||||
}
|
||||
|
||||
public LocalizedContainerComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_LabelNumber > 0)
|
||||
return m_LabelNumber;
|
||||
|
||||
return base.LabelNumber;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(m_LabelNumber);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_LabelNumber = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/AlchemistTableEastAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/AlchemistTableEastAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class AlchemistTableEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public AlchemistTableEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2DD3), 0, 0, 0);
|
||||
}
|
||||
|
||||
public AlchemistTableEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new AlchemistTableEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public AlchemistTableEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public AlchemistTableEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AlchemistTableEastAddon();
|
||||
public override int LabelNumber => 1073397; // alchemist table (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/AlchemistTableSouthAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/AlchemistTableSouthAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class AlchemistTableSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public AlchemistTableSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2DD4), 0, 0, 0);
|
||||
}
|
||||
|
||||
public AlchemistTableSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new AlchemistTableSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public AlchemistTableSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public AlchemistTableSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AlchemistTableSouthAddon();
|
||||
public override int LabelNumber => 1073396; // alchemist table (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/AnvilEastAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/AnvilEastAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class AnvilEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public AnvilEastAddon()
|
||||
{
|
||||
AddComponent(new AnvilComponent(0xFAF), 0, 0, 0);
|
||||
}
|
||||
|
||||
public AnvilEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new AnvilEastDeed();
|
||||
|
||||
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 AnvilEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public AnvilEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public AnvilEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AnvilEastAddon();
|
||||
public override int LabelNumber => 1044333; // anvil (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/AnvilSouthAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/AnvilSouthAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class AnvilSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public AnvilSouthAddon()
|
||||
{
|
||||
AddComponent(new AnvilComponent(0xFB0), 0, 0, 0);
|
||||
}
|
||||
|
||||
public AnvilSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new AnvilSouthDeed();
|
||||
|
||||
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 AnvilSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public AnvilSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public AnvilSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AnvilSouthAddon();
|
||||
public override int LabelNumber => 1044334; // anvil (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ArcaneBookshelfEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ArcaneBookshelfEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ArcaneBookshelfEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ArcaneBookshelfEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x3084), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x3085), -1, 0, 0);
|
||||
}
|
||||
|
||||
public ArcaneBookshelfEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ArcaneBookshelfEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ArcaneBookshelfEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ArcaneBookshelfEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ArcaneBookshelfEastAddon();
|
||||
public override int LabelNumber => 1073371; // arcane bookshelf (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ArcaneBookshelfSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ArcaneBookshelfSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ArcaneBookshelfSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ArcaneBookshelfSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x3087), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x3086), 0, 1, 0);
|
||||
}
|
||||
|
||||
public ArcaneBookshelfSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ArcaneBookshelfSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ArcaneBookshelfSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ArcaneBookshelfSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ArcaneBookshelfSouthAddon();
|
||||
public override int LabelNumber => 1072871; // arcane bookshelf (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
81
Projects/Scripts/Items/Addons/ArcaneCircleAddon.cs
Normal file
81
Projects/Scripts/Items/Addons/ArcaneCircleAddon.cs
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ArcaneCircleAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new ArcaneCircleDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ArcaneCircleDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ArcaneCircleDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ArcaneCircleAddon();
|
||||
public override int LabelNumber => 1072703; // arcane circle
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/ArcanistStatueEastAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/ArcanistStatueEastAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ArcanistStatueEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ArcanistStatueEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2D0E), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ArcanistStatueEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ArcanistStatueEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ArcanistStatueEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ArcanistStatueEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ArcanistStatueEastAddon();
|
||||
public override int LabelNumber => 1072886; // arcanist statue (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/ArcanistStatueSouthAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/ArcanistStatueSouthAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ArcanistStatueSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ArcanistStatueSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2D0F), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ArcanistStatueSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ArcanistStatueSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ArcanistStatueSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ArcanistStatueSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ArcanistStatueSouthAddon();
|
||||
public override int LabelNumber => 1072885; // arcanist statue (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
330
Projects/Scripts/Items/Addons/ArcheryButteAddon.cs
Normal file
330
Projects/Scripts/Items/Addons/ArcheryButteAddon.cs
Normal file
|
|
@ -0,0 +1,330 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlippableAttribute( 0x100A/*East*/, 0x100B/*South*/ )]
|
||||
public class ArcheryButte : AddonComponent
|
||||
{
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public double MinSkill { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public double MaxSkill { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public DateTime LastUse { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool FacingEast
|
||||
{
|
||||
get => ItemID == 0x100A;
|
||||
set => ItemID = value ? 0x100A : 0x100B;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Arrows { get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Bolts { get; set; }
|
||||
|
||||
public ArcheryButte(int itemID = 0x100A) : base(itemID)
|
||||
{
|
||||
MinSkill = -25.0;
|
||||
MaxSkill = +25.0;
|
||||
}
|
||||
|
||||
public ArcheryButte( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( (Arrows > 0 || 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 ( Arrows > 0 )
|
||||
from.AddToBackpack( new Arrow( Arrows ) );
|
||||
|
||||
if ( Bolts > 0 )
|
||||
from.AddToBackpack( new Bolt( Bolts ) );
|
||||
|
||||
Arrows = 0;
|
||||
Bolts = 0;
|
||||
|
||||
m_Entries = null;
|
||||
}
|
||||
|
||||
private static TimeSpan UseDelay = TimeSpan.FromSeconds( 2.0 );
|
||||
|
||||
private class ScoreEntry
|
||||
{
|
||||
public int Total { get; set; }
|
||||
|
||||
public int Count { get; set; }
|
||||
|
||||
public void Record( int score )
|
||||
{
|
||||
Total += score;
|
||||
Count += 1;
|
||||
}
|
||||
|
||||
public ScoreEntry()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private Dictionary<Mobile, ScoreEntry> m_Entries;
|
||||
|
||||
private ScoreEntry GetEntryFor( Mobile from )
|
||||
{
|
||||
if ( m_Entries == null )
|
||||
m_Entries = new Dictionary<Mobile, ScoreEntry>();
|
||||
|
||||
if (!m_Entries.TryGetValue(from, out ScoreEntry e))
|
||||
m_Entries[from] = e = new ScoreEntry();
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
public void Fire( Mobile from )
|
||||
{
|
||||
if ( !(from.Weapon is BaseRanged bow) )
|
||||
{
|
||||
SendLocalizedMessageTo( from, 500593 ); // You must practice with ranged weapons on this.
|
||||
return;
|
||||
}
|
||||
|
||||
if ( DateTime.UtcNow < (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;
|
||||
}
|
||||
|
||||
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?.ConsumeTotal( ammoType ) != true)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
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, MinSkill, 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, $"{se.Total}\t{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 && ((Arrows + Bolts) * 0.02) > Utility.RandomDouble() );
|
||||
|
||||
if ( split )
|
||||
{
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1010027 + area,
|
||||
$"{from.Name}\t{(isArrow ? "arrow" : "bolt")}");
|
||||
}
|
||||
else
|
||||
{
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1010035 + area, from.Name );
|
||||
|
||||
if ( isArrow )
|
||||
++Arrows;
|
||||
else if ( isBolt )
|
||||
++Bolts;
|
||||
}
|
||||
|
||||
se.Record( split ? splitScore : score );
|
||||
|
||||
if ( se.Count == 1 )
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1062719, se.Total.ToString() );
|
||||
else
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, 1042683, $"{se.Total}\t{se.Count}");
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( 0 );
|
||||
|
||||
writer.Write( MinSkill );
|
||||
writer.Write( MaxSkill );
|
||||
writer.Write( Arrows );
|
||||
writer.Write( Bolts );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
MinSkill = reader.ReadDouble();
|
||||
MaxSkill = reader.ReadDouble();
|
||||
Arrows = reader.ReadInt();
|
||||
Bolts = reader.ReadInt();
|
||||
|
||||
if ( MinSkill == 0.0 && MaxSkill == 30.0 )
|
||||
{
|
||||
MinSkill = -25.0;
|
||||
MaxSkill = +25.0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ArcheryButteAddon : BaseAddon
|
||||
{
|
||||
public override BaseAddonDeed Deed => new ArcheryButteDeed();
|
||||
|
||||
[Constructible]
|
||||
public ArcheryButteAddon()
|
||||
{
|
||||
AddComponent( new ArcheryButte(), 0, 0, 0 );
|
||||
}
|
||||
|
||||
public ArcheryButteAddon( 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 ArcheryButteDeed : BaseAddonDeed
|
||||
{
|
||||
public override BaseAddon Addon => new ArcheryButteAddon();
|
||||
public override int LabelNumber => 1024106; // archery butte
|
||||
|
||||
[Constructible]
|
||||
public ArcheryButteDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ArcheryButteDeed( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
378
Projects/Scripts/Items/Addons/BallotBox.cs
Normal file
378
Projects/Scripts/Items/Addons/BallotBox.cs
Normal file
|
|
@ -0,0 +1,378 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
using Server.Prompts;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class BallotBox : AddonComponent
|
||||
{
|
||||
public static readonly int MaxTopicLines = 6;
|
||||
|
||||
[Constructible]
|
||||
public BallotBox() : base(0x9A8)
|
||||
{
|
||||
Topic = new string[0];
|
||||
Yes = new List<Mobile>();
|
||||
No = new List<Mobile>();
|
||||
}
|
||||
|
||||
public BallotBox(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1041006; // a ballot box
|
||||
|
||||
public string[] Topic{ get; private set; }
|
||||
|
||||
public List<Mobile> Yes{ get; private set; }
|
||||
|
||||
public List<Mobile> No{ get; private set; }
|
||||
|
||||
public void ClearTopic()
|
||||
{
|
||||
Topic = new string[0];
|
||||
|
||||
ClearVotes();
|
||||
}
|
||||
|
||||
public void AddLineToTopic(string line)
|
||||
{
|
||||
if (Topic.Length >= MaxTopicLines)
|
||||
return;
|
||||
|
||||
string[] newTopic = new string[Topic.Length + 1];
|
||||
Topic.CopyTo(newTopic, 0);
|
||||
newTopic[Topic.Length] = line;
|
||||
|
||||
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?.IsOwner(from) == true;
|
||||
}
|
||||
|
||||
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(GetWorldLocation(), 2))
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
else
|
||||
{
|
||||
bool isOwner = IsOwner(from);
|
||||
from.SendGump(new InternalGump(this, isOwner));
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
|
||||
writer.WriteEncodedInt(Topic.Length);
|
||||
|
||||
for (int i = 0; i < Topic.Length; i++)
|
||||
writer.Write(Topic[i]);
|
||||
|
||||
writer.Write(Yes, true);
|
||||
writer.Write(No, true);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
Topic = new string[reader.ReadEncodedInt()];
|
||||
|
||||
for (int i = 0; i < Topic.Length; i++)
|
||||
Topic[i] = reader.ReadString();
|
||||
|
||||
Yes = reader.ReadStrongMobileList();
|
||||
No = reader.ReadStrongMobileList();
|
||||
}
|
||||
|
||||
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); // <center>Ballot Box Owner's Menu</center>
|
||||
else
|
||||
AddHtmlLocalized(0, 15, 400, 35, 1011001); // <center>Ballot Box -- Vote Here!</center>
|
||||
|
||||
AddHtmlLocalized(0, 50, 400, 35, 1011002); // <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); // <center>votes</center>
|
||||
|
||||
if (!isOwner)
|
||||
AddButton(20, 240, 0xFA5, 0xFA7, 3);
|
||||
AddHtmlLocalized(55, 242, 25, 35, 1011004); // aye:
|
||||
AddLabel(78, 242, 0x0, $"[{yesCount}]");
|
||||
|
||||
if (!isOwner)
|
||||
AddButton(20, 275, 0xFA5, 0xFA7, 4);
|
||||
AddHtmlLocalized(55, 277, 25, 35, 1011005); // nay:
|
||||
AddLabel(78, 277, 0x0, $"[{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);
|
||||
AddHtmlLocalized(80, 308, 40, 35, 1011008); // done
|
||||
|
||||
if (isOwner)
|
||||
{
|
||||
AddButton(120, 305, 0xFA5, 0xFA7, 1);
|
||||
AddHtmlLocalized(155, 308, 100, 35, 1011006); // change topic
|
||||
|
||||
AddButton(240, 305, 0xFA5, 0xFA7, 2);
|
||||
AddHtmlLocalized(275, 308, 300, 100, 1011007); // 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 class BallotBoxAddon : BaseAddon
|
||||
{
|
||||
public BallotBoxAddon()
|
||||
{
|
||||
AddComponent(new BallotBox(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BallotBoxAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BallotBoxDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public BallotBoxDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public BallotBoxDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BallotBoxAddon();
|
||||
|
||||
public override int LabelNumber => 1044327; // ballot box
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
275
Projects/Scripts/Items/Addons/BaseAddon.cs
Normal file
275
Projects/Scripts/Items/Addons/BaseAddon.cs
Normal file
|
|
@ -0,0 +1,275 @@
|
|||
using System.Collections.Generic;
|
||||
using Server.Multis;
|
||||
|
||||
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
|
||||
{
|
||||
public BaseAddon() : base(1)
|
||||
{
|
||||
Movable = false;
|
||||
Visible = false;
|
||||
|
||||
Components = new List<AddonComponent>();
|
||||
}
|
||||
|
||||
public BaseAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual bool RetainDeedHue => false;
|
||||
|
||||
public virtual BaseAddonDeed Deed => null;
|
||||
|
||||
public List<AddonComponent> Components{ get; private set; }
|
||||
|
||||
public virtual bool ShareHue => true;
|
||||
|
||||
[Hue]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public override int Hue
|
||||
{
|
||||
get => base.Hue;
|
||||
set
|
||||
{
|
||||
if (base.Hue != value)
|
||||
{
|
||||
base.Hue = value;
|
||||
|
||||
if (!Deleted && ShareHue && Components != null)
|
||||
foreach (AddonComponent c in Components)
|
||||
c.Hue = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item IAddon.Deed => Deed;
|
||||
|
||||
public bool CouldFit(IPoint3D p, Map map)
|
||||
{
|
||||
BaseHouse h = null;
|
||||
return CouldFit(p, map, null, ref h) == AddonFitResult.Valid;
|
||||
}
|
||||
|
||||
public virtual void OnChop(Mobile from)
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
if (house?.IsOwner(from) == true && 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 < Components.Count; ++i)
|
||||
{
|
||||
AddonComponent c = 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 void AddComponent(AddonComponent c, int x, int y, int z)
|
||||
{
|
||||
if (Deleted)
|
||||
return;
|
||||
|
||||
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 virtual AddonFitResult CouldFit(IPoint3D p, Map map, Mobile from, ref BaseHouse house)
|
||||
{
|
||||
if (Deleted)
|
||||
return AddonFitResult.Blocked;
|
||||
|
||||
foreach (AddonComponent c in 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;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
List<BaseDoor> doors = house.Doors;
|
||||
|
||||
for (int i = 0; i < doors.Count; ++i)
|
||||
{
|
||||
BaseDoor door = doors[i];
|
||||
|
||||
Point3D doorLoc = door.GetWorldLocation();
|
||||
int doorHeight = door.ItemData.CalcHeight;
|
||||
|
||||
foreach (AddonComponent c in 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)
|
||||
{
|
||||
return from == null || BaseHouse.FindHouseAt(p, map, height)?.IsOwner(from) == 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 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 Components)
|
||||
c.Map = Map;
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
base.OnAfterDelete();
|
||||
|
||||
foreach (AddonComponent c in Components)
|
||||
c.Delete();
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.WriteItemList(Components);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
case 0:
|
||||
{
|
||||
Components = reader.ReadStrongItemList<AddonComponent>();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (version < 1 && Weight == 0)
|
||||
Weight = -1;
|
||||
}
|
||||
|
||||
#region Mondain's Legacy
|
||||
|
||||
private CraftResource m_Resource;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public CraftResource Resource
|
||||
{
|
||||
get => m_Resource;
|
||||
set
|
||||
{
|
||||
if (m_Resource != value)
|
||||
{
|
||||
m_Resource = value;
|
||||
Hue = CraftResources.GetHue(m_Resource);
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
296
Projects/Scripts/Items/Addons/BaseAddonContainer.cs
Normal file
296
Projects/Scripts/Items/Addons/BaseAddonContainer.cs
Normal file
|
|
@ -0,0 +1,296 @@
|
|||
using System.Collections.Generic;
|
||||
using Server.Multis;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseAddonContainer : BaseContainer, IChopable, IAddon
|
||||
{
|
||||
private CraftResource m_Resource;
|
||||
|
||||
public BaseAddonContainer(int itemID) : base(itemID)
|
||||
{
|
||||
AddonComponent.ApplyLightTo(this);
|
||||
|
||||
Components = new List<AddonContainerComponent>();
|
||||
}
|
||||
|
||||
public BaseAddonContainer(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool DisplayWeight => false;
|
||||
|
||||
[Hue]
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public override int Hue
|
||||
{
|
||||
get => base.Hue;
|
||||
set
|
||||
{
|
||||
if (base.Hue != value)
|
||||
{
|
||||
base.Hue = value;
|
||||
|
||||
if (!Deleted && ShareHue && Components != null)
|
||||
{
|
||||
Hue = value;
|
||||
|
||||
foreach (AddonContainerComponent c in Components)
|
||||
c.Hue = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public CraftResource Resource
|
||||
{
|
||||
get => m_Resource;
|
||||
set
|
||||
{
|
||||
if (m_Resource != value)
|
||||
{
|
||||
m_Resource = value;
|
||||
Hue = CraftResources.GetHue(m_Resource);
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual bool RetainDeedHue => false;
|
||||
public virtual bool NeedsWall => false;
|
||||
public virtual bool ShareHue => true;
|
||||
public virtual Point3D WallPosition => Point3D.Zero;
|
||||
public virtual BaseAddonContainerDeed Deed => null;
|
||||
|
||||
public List<AddonContainerComponent> Components{ get; private set; }
|
||||
|
||||
Item IAddon.Deed => Deed;
|
||||
|
||||
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?.IsOwner(from) == true)
|
||||
{
|
||||
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 < Components.Count; ++i)
|
||||
{
|
||||
AddonContainerComponent c = 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 override void OnLocationChange(Point3D oldLoc)
|
||||
{
|
||||
base.OnLocationChange(oldLoc);
|
||||
|
||||
if (Deleted)
|
||||
return;
|
||||
|
||||
foreach (AddonContainerComponent c in 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 Components)
|
||||
c.Map = Map;
|
||||
}
|
||||
|
||||
public override void OnDelete()
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
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 Components)
|
||||
c.Delete();
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.WriteItemList(Components);
|
||||
writer.Write((int)m_Resource);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
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;
|
||||
|
||||
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 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;
|
||||
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;
|
||||
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)
|
||||
{
|
||||
List<BaseDoor> doors = house.Doors;
|
||||
|
||||
for (int i = 0; i < doors.Count; ++i)
|
||||
{
|
||||
BaseDoor door = doors[i];
|
||||
|
||||
if (door?.Open == true)
|
||||
return AddonFitResult.DoorsNotClosed;
|
||||
|
||||
Point3D doorLoc = door.GetWorldLocation();
|
||||
int doorHeight = door.ItemData.CalcHeight;
|
||||
int addonHeight;
|
||||
|
||||
foreach (AddonContainerComponent c in Components)
|
||||
{
|
||||
Point3D addonLoc = new Point3D(p.X + c.Offset.X, p.Y + c.Offset.Y, p.Z + c.Offset.Z);
|
||||
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);
|
||||
addonHeight = ItemData.CalcHeight;
|
||||
|
||||
if (Utility.InRange(doorLoc, addonLo, 1) &&
|
||||
(addonLo.Z == doorLoc.Z || addonLo.Z + addonHeight > doorLoc.Z && doorLoc.Z + doorHeight > addonLo.Z))
|
||||
return AddonFitResult.DoorTooClose;
|
||||
}
|
||||
}
|
||||
|
||||
return AddonFitResult.Valid;
|
||||
}
|
||||
|
||||
public virtual void OnComponentLoaded(AddonContainerComponent c)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void OnComponentUsed(AddonContainerComponent c, Mobile from)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
167
Projects/Scripts/Items/Addons/BaseAddonContainerDeed.cs
Normal file
167
Projects/Scripts/Items/Addons/BaseAddonContainerDeed.cs
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
using System;
|
||||
using Server.Engines.Craft;
|
||||
using Server.Multis;
|
||||
using Server.Spells;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x14F0, 0x14EF)]
|
||||
public abstract class BaseAddonContainerDeed : Item, ICraftable
|
||||
{
|
||||
private CraftResource m_Resource;
|
||||
|
||||
public BaseAddonContainerDeed() : base(0x14F0)
|
||||
{
|
||||
Weight = 1.0;
|
||||
|
||||
if (!Core.AOS)
|
||||
LootType = LootType.Newbied;
|
||||
}
|
||||
|
||||
public BaseAddonContainerDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public abstract BaseAddonContainer Addon{ get; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public CraftResource Resource
|
||||
{
|
||||
get => m_Resource;
|
||||
set
|
||||
{
|
||||
if (m_Resource != value)
|
||||
{
|
||||
m_Resource = value;
|
||||
Hue = CraftResources.GetHue(m_Resource);
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#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?.DoNotColor == true)
|
||||
Hue = 0;
|
||||
|
||||
return quality;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(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));
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
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.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
128
Projects/Scripts/Items/Addons/BaseAddonDeed.cs
Normal file
128
Projects/Scripts/Items/Addons/BaseAddonDeed.cs
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
using Server.Multis;
|
||||
using Server.Spells;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x14F0, 0x14EF)]
|
||||
public abstract class BaseAddonDeed : Item
|
||||
{
|
||||
public BaseAddonDeed() : base(0x14F0)
|
||||
{
|
||||
Weight = 1.0;
|
||||
|
||||
if (!Core.AOS)
|
||||
LootType = LootType.Newbied;
|
||||
}
|
||||
|
||||
public BaseAddonDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public abstract BaseAddon Addon{ get; }
|
||||
|
||||
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();
|
||||
|
||||
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;
|
||||
|
||||
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.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Mondain's Legacy
|
||||
|
||||
private CraftResource m_Resource;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public CraftResource Resource
|
||||
{
|
||||
get => m_Resource;
|
||||
set
|
||||
{
|
||||
if (m_Resource != value)
|
||||
{
|
||||
m_Resource = value;
|
||||
Hue = CraftResources.GetHue(m_Resource);
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
266
Projects/Scripts/Items/Addons/BearRugs.cs
Normal file
266
Projects/Scripts/Items/Addons/BearRugs.cs
Normal file
|
|
@ -0,0 +1,266 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BrownBearRugEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new BrownBearRugEastDeed();
|
||||
|
||||
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 BrownBearRugEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrownBearRugEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public BrownBearRugEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrownBearRugEastAddon();
|
||||
public override int LabelNumber => 1049397; // a brown bear rug deed facing east
|
||||
|
||||
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 BrownBearRugSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new BrownBearRugSouthDeed();
|
||||
|
||||
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 BrownBearRugSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrownBearRugSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public BrownBearRugSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrownBearRugSouthAddon();
|
||||
public override int LabelNumber => 1049398; // a brown bear rug deed facing south
|
||||
|
||||
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 PolarBearRugEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new PolarBearRugEastDeed();
|
||||
|
||||
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 PolarBearRugEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PolarBearRugEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public PolarBearRugEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PolarBearRugEastAddon();
|
||||
public override int LabelNumber => 1049399; // a polar bear rug deed facing east
|
||||
|
||||
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 PolarBearRugSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new PolarBearRugSouthDeed();
|
||||
|
||||
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 PolarBearRugSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PolarBearRugSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public PolarBearRugSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PolarBearRugSouthAddon();
|
||||
public override int LabelNumber => 1049400; // a polar bear rug deed facing south
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Projects/Scripts/Items/Addons/BloodPentagram.cs
Normal file
67
Projects/Scripts/Items/Addons/BloodPentagram.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BloodPentagram : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
209
Projects/Scripts/Items/Addons/DartBoard.cs
Normal file
209
Projects/Scripts/Items/Addons/DartBoard.cs
Normal file
|
|
@ -0,0 +1,209 @@
|
|||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class DartBoard : AddonComponent
|
||||
{
|
||||
[Constructible]
|
||||
public DartBoard(bool east = true) : base(east ? 0x1E2F : 0x1E2E)
|
||||
{
|
||||
}
|
||||
|
||||
public DartBoard(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool NeedsWall => true;
|
||||
public override Point3D WallPosition => East ? new Point3D(-1, 0, 0) : new Point3D(0, -1, 0);
|
||||
|
||||
public bool East => ItemID == 0x1E2F;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
Direction dir;
|
||||
if (from.Location != Location)
|
||||
dir = from.GetDirectionTo(this);
|
||||
else if (East)
|
||||
dir = Direction.West;
|
||||
else
|
||||
dir = Direction.North;
|
||||
|
||||
from.Direction = dir;
|
||||
|
||||
bool canThrow;
|
||||
|
||||
if (!from.InRange(this, 4) || !from.InLOS(this))
|
||||
canThrow = false;
|
||||
else if (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)
|
||||
{
|
||||
if (!(from.Weapon is BaseKnife knife))
|
||||
{
|
||||
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 DartBoardEastAddon()
|
||||
{
|
||||
AddComponent(new DartBoard(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public DartBoardEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new DartBoardEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public DartBoardEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public DartBoardEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new DartBoardEastAddon();
|
||||
|
||||
public override int LabelNumber => 1044326; // dartboard (east)
|
||||
|
||||
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 DartBoardSouthAddon()
|
||||
{
|
||||
AddComponent(new DartBoard(false), 0, 0, 0);
|
||||
}
|
||||
|
||||
public DartBoardSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new DartBoardSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public DartBoardSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public DartBoardSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new DartBoardSouthAddon();
|
||||
|
||||
public override int LabelNumber => 1044325; // dartboard (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenBedEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenBedEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenBedEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenBedEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x304D), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x304C), 1, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenBedEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenBedEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenBedEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenBedEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenBedEastAddon();
|
||||
public override int LabelNumber => 1072861; // elven bed (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenBedSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenBedSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenBedSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenBedSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x3050), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x3051), 0, -1, 0);
|
||||
}
|
||||
|
||||
public ElvenBedSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenBedSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenBedSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenBedSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenBedSouthAddon();
|
||||
public override int LabelNumber => 1072860; // elven bed (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenDresserEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenDresserEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenDresserEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenDresserEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x30E4), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x30E3), 0, -1, 0);
|
||||
}
|
||||
|
||||
public ElvenDresserEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenDresserEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenDresserEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenDresserEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenDresserEastAddon();
|
||||
public override int LabelNumber => 1073388; // elven dresser (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenDresserSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenDresserSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenDresserSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenDresserSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x30E5), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x30E6), 1, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenDresserSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenDresserSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenDresserSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenDresserSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenDresserSouthAddon();
|
||||
public override int LabelNumber => 1072864; // elven dresser (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/ElvenForgeAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/ElvenForgeAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenForgeAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenForgeAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2DD8), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenForgeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenForgeDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenForgeDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenForgeDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenForgeAddon();
|
||||
public override int LabelNumber => 1072875; // squirrel statue (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenLoveseatEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenLoveseatEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenLoveseatEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenLoveseatEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x3089), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x3088), 1, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenLoveseatEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenLoveseatEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenLoveseatEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenLoveseatEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenLoveseatEastAddon();
|
||||
public override int LabelNumber => 1073372; // elven loveseat (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenLoveseatSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenLoveseatSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenLoveseatSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenLoveseatSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x308A), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x308B), 0, -1, 0);
|
||||
}
|
||||
|
||||
public ElvenLoveseatSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenLoveseatSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenLoveseatSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenLoveseatSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenLoveseatSouthAddon();
|
||||
public override int LabelNumber => 1072867; // elven loveseat (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
137
Projects/Scripts/Items/Addons/ElvenSpinningwheelEastAddon.cs
Normal file
137
Projects/Scripts/Items/Addons/ElvenSpinningwheelEastAddon.cs
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class ElvenSpinningwheelEastAddon : BaseAddon, ISpinningWheel
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public ElvenSpinningwheelEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2DD9), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenSpinningwheelEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenSpinningwheelEastDeed();
|
||||
|
||||
public bool Spinning => 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 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 override void OnComponentLoaded(AddonComponent c)
|
||||
{
|
||||
switch (c.ItemID)
|
||||
{
|
||||
case 0x2E3D:
|
||||
case 0x101D:
|
||||
case 0x10A5:
|
||||
--c.ItemID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void EndSpin(SpinCallback callback, Mobile from, int hue)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
callback?.Invoke(this, from, hue);
|
||||
}
|
||||
|
||||
private class SpinTimer : Timer
|
||||
{
|
||||
private SpinCallback m_Callback;
|
||||
private Mobile m_From;
|
||||
private int m_Hue;
|
||||
private ElvenSpinningwheelEastAddon m_Wheel;
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenSpinningwheelEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenSpinningwheelEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenSpinningwheelEastAddon();
|
||||
public override int LabelNumber => 1073393; // elven spinning wheel (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
139
Projects/Scripts/Items/Addons/ElvenSpinningwheelSouthAddon.cs
Normal file
139
Projects/Scripts/Items/Addons/ElvenSpinningwheelSouthAddon.cs
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class ElvenSpinningwheelSouthAddon : BaseAddon, ISpinningWheel
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public ElvenSpinningwheelSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2DDA), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenSpinningwheelSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenSpinningwheelSouthDeed();
|
||||
|
||||
public bool Spinning => 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 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 override void OnComponentLoaded(AddonComponent c)
|
||||
{
|
||||
switch (c.ItemID)
|
||||
{
|
||||
case 0x1016:
|
||||
case 0x101A:
|
||||
case 0x101D:
|
||||
case 0x10A5:
|
||||
--c.ItemID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void EndSpin(SpinCallback callback, Mobile from, int hue)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
callback?.Invoke(this, from, hue);
|
||||
}
|
||||
|
||||
private class SpinTimer : Timer
|
||||
{
|
||||
private SpinCallback m_Callback;
|
||||
private Mobile m_From;
|
||||
private int m_Hue;
|
||||
private ElvenSpinningwheelSouthAddon m_Wheel;
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenSpinningwheelSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenSpinningwheelSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenSpinningwheelSouthAddon();
|
||||
public override int LabelNumber => 1072878; // spinning wheel (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/ElvenStoveEastAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/ElvenStoveEastAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenStoveEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenStoveEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2DDB), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenStoveEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenStoveEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenStoveEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenStoveEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenStoveEastAddon();
|
||||
public override int LabelNumber => 1073395; // elven oven (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/ElvenStoveSouthAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/ElvenStoveSouthAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenStoveSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenStoveSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2DDC), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenStoveSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenStoveSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenStoveSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenStoveSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenStoveSouthAddon();
|
||||
public override int LabelNumber => 1073394; // elven oven (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenWashbasinEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenWashbasinEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenWashBasinEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenWashBasinEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x30DF), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x30E0), 0, 1, 0);
|
||||
}
|
||||
|
||||
public ElvenWashBasinEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenWashBasinEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenWashBasinEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenWashBasinEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenWashBasinEastAddon();
|
||||
public override int LabelNumber => 1073387; // elven wash basin (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/ElvenWashbasinSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/ElvenWashbasinSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ElvenWashBasinSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenWashBasinSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x30E1), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x30E2), 1, 0, 0);
|
||||
}
|
||||
|
||||
public ElvenWashBasinSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ElvenWashBasinSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenWashBasinSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ElvenWashBasinSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ElvenWashBasinSouthAddon();
|
||||
public override int LabelNumber => 1072865; // elven wash basin (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
62
Projects/Scripts/Items/Addons/FancyElvenTableEastAddon.cs
Normal file
62
Projects/Scripts/Items/Addons/FancyElvenTableEastAddon.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class FancyElvenTableEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new FancyElvenTableEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public FancyElvenTableEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public FancyElvenTableEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new FancyElvenTableEastAddon();
|
||||
public override int LabelNumber => 1073386; // hardwood table (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
62
Projects/Scripts/Items/Addons/FancyElvenTableSouthAddon.cs
Normal file
62
Projects/Scripts/Items/Addons/FancyElvenTableSouthAddon.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class FancyElvenTableSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new FancyElvenTableSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public FancyElvenTableSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public FancyElvenTableSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new FancyElvenTableSouthAddon();
|
||||
public override int LabelNumber => 1073385; // hardwood table (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
51
Projects/Scripts/Items/Addons/FireColumnAddon.cs
Normal file
51
Projects/Scripts/Items/Addons/FireColumnAddon.cs
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class FireColumnAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public FireColumnAddon(bool bloody = false)
|
||||
{
|
||||
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 bool ShareHue => false;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
213
Projects/Scripts/Items/Addons/FlourMillEastAddon.cs
Normal file
213
Projects/Scripts/Items/Addons/FlourMillEastAddon.cs
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public interface IFlourMill
|
||||
{
|
||||
int MaxFlour{ get; }
|
||||
int CurFlour{ get; set; }
|
||||
}
|
||||
|
||||
public enum FlourMillStage
|
||||
{
|
||||
Empty,
|
||||
Filled,
|
||||
Working
|
||||
}
|
||||
|
||||
public class FlourMillEastAddon : BaseAddon, IFlourMill
|
||||
{
|
||||
private static int[][] m_StageTable =
|
||||
{
|
||||
new[] { 0x1920, 0x1921, 0x1925 },
|
||||
new[] { 0x1922, 0x1923, 0x1926 },
|
||||
new[] { 0x1924, 0x1924, 0x1928 }
|
||||
};
|
||||
|
||||
private int m_Flour;
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new FlourMillEastDeed();
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool HasFlour => m_Flour > 0;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsFull => m_Flour >= MaxFlour;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsWorking => m_Timer != null;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int MaxFlour => 2;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int CurFlour
|
||||
{
|
||||
get => m_Flour;
|
||||
set
|
||||
{
|
||||
m_Flour = Math.Max(0, Math.Min(value, MaxFlour));
|
||||
UpdateStage();
|
||||
}
|
||||
}
|
||||
|
||||
public void StartWorking(Mobile from)
|
||||
{
|
||||
if (IsWorking)
|
||||
return;
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(5.0), FinishWorking_Callback, from);
|
||||
UpdateStage();
|
||||
}
|
||||
|
||||
private void FinishWorking_Callback(Mobile from)
|
||||
{
|
||||
if (m_Timer != null)
|
||||
{
|
||||
m_Timer.Stop();
|
||||
m_Timer = null;
|
||||
}
|
||||
|
||||
if (from?.Deleted == false && !Deleted && IsFull)
|
||||
{
|
||||
SackFlour flour = new SackFlour { 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 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 = Components;
|
||||
|
||||
int[][] stageTable = m_StageTable;
|
||||
|
||||
for (int i = 0; i < components.Count; ++i)
|
||||
{
|
||||
if (!(components[i] is AddonComponent component))
|
||||
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);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(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
|
||||
{
|
||||
[Constructible]
|
||||
public FlourMillEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public FlourMillEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new FlourMillEastAddon();
|
||||
public override int LabelNumber => 1044347; // flour mill (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
201
Projects/Scripts/Items/Addons/FlourMillSouthAddon.cs
Normal file
201
Projects/Scripts/Items/Addons/FlourMillSouthAddon.cs
Normal file
|
|
@ -0,0 +1,201 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class FlourMillSouthAddon : BaseAddon, IFlourMill
|
||||
{
|
||||
private static int[][] m_StageTable =
|
||||
{
|
||||
new[] { 0x192C, 0x192D, 0x1931 },
|
||||
new[] { 0x192E, 0x192F, 0x1932 },
|
||||
new[] { 0x1930, 0x1930, 0x1934 }
|
||||
};
|
||||
|
||||
private int m_Flour;
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new FlourMillSouthDeed();
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool HasFlour => m_Flour > 0;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsFull => m_Flour >= MaxFlour;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsWorking => m_Timer != null;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int MaxFlour => 2;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int CurFlour
|
||||
{
|
||||
get => m_Flour;
|
||||
set
|
||||
{
|
||||
m_Flour = Math.Max(0, Math.Min(value, MaxFlour));
|
||||
UpdateStage();
|
||||
}
|
||||
}
|
||||
|
||||
public void StartWorking(Mobile from)
|
||||
{
|
||||
if (IsWorking)
|
||||
return;
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(5.0), FinishWorking_Callback, from);
|
||||
UpdateStage();
|
||||
}
|
||||
|
||||
private void FinishWorking_Callback(Mobile from)
|
||||
{
|
||||
if (m_Timer != null)
|
||||
{
|
||||
m_Timer.Stop();
|
||||
m_Timer = null;
|
||||
}
|
||||
|
||||
if (from?.Deleted == false && !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 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 = Components;
|
||||
|
||||
int[][] stageTable = m_StageTable;
|
||||
|
||||
for (int i = 0; i < components.Count; ++i)
|
||||
{
|
||||
if (!(components[i] is AddonComponent component))
|
||||
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);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(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
|
||||
{
|
||||
[Constructible]
|
||||
public FlourMillSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public FlourMillSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new FlourMillSouthAddon();
|
||||
public override int LabelNumber => 1044348; // flour mill (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
238
Projects/Scripts/Items/Addons/FlowerTapestries.cs
Normal file
238
Projects/Scripts/Items/Addons/FlowerTapestries.cs
Normal file
|
|
@ -0,0 +1,238 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LightFlowerTapestryEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public LightFlowerTapestryEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xFDC), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xFDB), 0, 1, 0);
|
||||
}
|
||||
|
||||
public LightFlowerTapestryEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new LightFlowerTapestryEastDeed();
|
||||
|
||||
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 LightFlowerTapestryEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LightFlowerTapestryEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LightFlowerTapestryEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LightFlowerTapestryEastAddon();
|
||||
public override int LabelNumber => 1049393; // a flower tapestry deed facing east
|
||||
|
||||
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 LightFlowerTapestrySouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public LightFlowerTapestrySouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xFD9), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xFDA), 1, 0, 0);
|
||||
}
|
||||
|
||||
public LightFlowerTapestrySouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new LightFlowerTapestrySouthDeed();
|
||||
|
||||
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 LightFlowerTapestrySouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LightFlowerTapestrySouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LightFlowerTapestrySouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LightFlowerTapestrySouthAddon();
|
||||
public override int LabelNumber => 1049394; // a flower tapestry deed facing south
|
||||
|
||||
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 DarkFlowerTapestryEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public DarkFlowerTapestryEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xFE0), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xFDF), 0, 1, 0);
|
||||
}
|
||||
|
||||
public DarkFlowerTapestryEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new DarkFlowerTapestryEastDeed();
|
||||
|
||||
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 DarkFlowerTapestryEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public DarkFlowerTapestryEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public DarkFlowerTapestryEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new DarkFlowerTapestryEastAddon();
|
||||
public override int LabelNumber => 1049395; // a dark flower tapestry deed facing east
|
||||
|
||||
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 DarkFlowerTapestrySouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public DarkFlowerTapestrySouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xFDD), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xFDE), 1, 0, 0);
|
||||
}
|
||||
|
||||
public DarkFlowerTapestrySouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new DarkFlowerTapestrySouthDeed();
|
||||
|
||||
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 DarkFlowerTapestrySouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public DarkFlowerTapestrySouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public DarkFlowerTapestrySouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new DarkFlowerTapestrySouthAddon();
|
||||
public override int LabelNumber => 1049396; // a dark flower tapestry deed facing south
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
200
Projects/Scripts/Items/Addons/GiantWebs.cs
Normal file
200
Projects/Scripts/Items/Addons/GiantWebs.cs
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class GiantWeb1 : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public GiantWeb1()
|
||||
{
|
||||
int itemID = 4280;
|
||||
int count = 5;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
AddComponent(new AddonComponent(itemID++), count - 1 - 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
|
||||
{
|
||||
[Constructible]
|
||||
public GiantWeb2()
|
||||
{
|
||||
int itemID = 4285;
|
||||
int count = 5;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
AddComponent(new AddonComponent(itemID++), i,
|
||||
-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
|
||||
{
|
||||
[Constructible]
|
||||
public GiantWeb3()
|
||||
{
|
||||
int itemID = 4290;
|
||||
int count = 4;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
AddComponent(new AddonComponent(itemID++), i,
|
||||
-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
|
||||
{
|
||||
[Constructible]
|
||||
public GiantWeb4()
|
||||
{
|
||||
int itemID = 4294;
|
||||
int count = 4;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
AddComponent(new AddonComponent(itemID++), count - 1 - 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
|
||||
{
|
||||
[Constructible]
|
||||
public GiantWeb5()
|
||||
{
|
||||
int itemID = 4298;
|
||||
int count = 4;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
AddComponent(new AddonComponent(itemID++), i,
|
||||
-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
|
||||
{
|
||||
[Constructible]
|
||||
public GiantWeb6()
|
||||
{
|
||||
int itemID = 4302;
|
||||
int count = 4;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
AddComponent(new AddonComponent(itemID++), count - 1 - 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
495
Projects/Scripts/Items/Addons/GozaMats.cs
Normal file
495
Projects/Scripts/Items/Addons/GozaMats.cs
Normal file
|
|
@ -0,0 +1,495 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class GozaMatEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public GozaMatEastAddon(int hue = 0)
|
||||
{
|
||||
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 BaseAddonDeed Deed => new GozaMatEastDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 GozaMatEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public GozaMatEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public GozaMatEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new GozaMatEastAddon(Hue);
|
||||
public override int LabelNumber => 1030404; // goza (east)
|
||||
|
||||
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 GozaMatSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public GozaMatSouthAddon(int hue = 0)
|
||||
{
|
||||
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 BaseAddonDeed Deed => new GozaMatSouthDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 GozaMatSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public GozaMatSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public GozaMatSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new GozaMatSouthAddon(Hue);
|
||||
public override int LabelNumber => 1030405; // goza (south)
|
||||
|
||||
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 SquareGozaMatEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SquareGozaMatEastAddon(int hue = 0)
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x28a8, 1030688), 0, 0, 0);
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public SquareGozaMatEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SquareGozaMatEastDeed();
|
||||
public override int LabelNumber => 1030688; // goza mat
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 SquareGozaMatEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SquareGozaMatEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SquareGozaMatEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SquareGozaMatEastAddon(Hue);
|
||||
public override int LabelNumber => 1030407; // square goza (east)
|
||||
|
||||
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 SquareGozaMatSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SquareGozaMatSouthAddon(int hue = 0)
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x28a9, 1030688), 0, 0, 0);
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public SquareGozaMatSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SquareGozaMatSouthDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 SquareGozaMatSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SquareGozaMatSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SquareGozaMatSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SquareGozaMatSouthAddon(Hue);
|
||||
public override int LabelNumber => 1030406; // square goza (south)
|
||||
|
||||
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 BrocadeGozaMatEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeGozaMatEastAddon(int hue = 0)
|
||||
{
|
||||
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 BaseAddonDeed Deed => new BrocadeGozaMatEastDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 BrocadeGozaMatEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeGozaMatEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public BrocadeGozaMatEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrocadeGozaMatEastAddon(Hue);
|
||||
public override int LabelNumber => 1030408; // brocade goza (east)
|
||||
|
||||
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 BrocadeGozaMatSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeGozaMatSouthAddon(int hue = 0)
|
||||
{
|
||||
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 BaseAddonDeed Deed => new BrocadeGozaMatSouthDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 BrocadeGozaMatSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeGozaMatSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public BrocadeGozaMatSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrocadeGozaMatSouthAddon(Hue);
|
||||
public override int LabelNumber => 1030409; // brocade goza (south)
|
||||
|
||||
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 BrocadeSquareGozaMatEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeSquareGozaMatEastAddon(int hue = 0)
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x28AE, 1030688), 0, 0, 0);
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public BrocadeSquareGozaMatEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrocadeSquareGozaMatEastDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 BrocadeSquareGozaMatEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeSquareGozaMatEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public BrocadeSquareGozaMatEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrocadeSquareGozaMatEastAddon(Hue);
|
||||
public override int LabelNumber => 1030411; // brocade square goza (east)
|
||||
|
||||
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 BrocadeSquareGozaMatSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeSquareGozaMatSouthAddon(int hue = 0)
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x28AF, 1030688), 0, 0, 0);
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public BrocadeSquareGozaMatSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrocadeSquareGozaMatSouthDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 BrocadeSquareGozaMatSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrocadeSquareGozaMatSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public BrocadeSquareGozaMatSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrocadeSquareGozaMatSouthAddon(Hue);
|
||||
public override int LabelNumber => 1030410; // brocade square goza (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/GrayBrickFireplaceEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/GrayBrickFireplaceEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class GrayBrickFireplaceEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public GrayBrickFireplaceEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x93D), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x937), 0, 1, 0);
|
||||
}
|
||||
|
||||
public GrayBrickFireplaceEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new GrayBrickFireplaceEastDeed();
|
||||
|
||||
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 GrayBrickFireplaceEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public GrayBrickFireplaceEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public GrayBrickFireplaceEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new GrayBrickFireplaceEastAddon();
|
||||
public override int LabelNumber => 1061846; // grey brick fireplace (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class GrayBrickFireplaceSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public GrayBrickFireplaceSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x94B), -1, 0, 0);
|
||||
AddComponent(new AddonComponent(0x945), 0, 0, 0);
|
||||
}
|
||||
|
||||
public GrayBrickFireplaceSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new GrayBrickFireplaceSouthDeed();
|
||||
|
||||
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 GrayBrickFireplaceSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public GrayBrickFireplaceSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public GrayBrickFireplaceSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new GrayBrickFireplaceSouthAddon();
|
||||
public override int LabelNumber => 1061847; // grey brick fireplace (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
82
Projects/Scripts/Items/Addons/JackOLantern.cs
Normal file
82
Projects/Scripts/Items/Addons/JackOLantern.cs
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class JackOLantern : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public JackOLantern()
|
||||
: this(1 > Utility.Random(2))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
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 bool ShareHue => false;
|
||||
|
||||
private AddonComponent GetComponent(int itemID, int hue)
|
||||
{
|
||||
AddonComponent ac = new AddonComponent(itemID);
|
||||
|
||||
ac.Hue = hue;
|
||||
ac.Name = "jack-o-lantern";
|
||||
|
||||
return ac;
|
||||
}
|
||||
|
||||
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)
|
||||
if (Components[i] is AddonComponent ac && ac.Hue == 2118)
|
||||
ac.Hue = 1161;
|
||||
});
|
||||
|
||||
if (version <= 1)
|
||||
Timer.DelayCall(TimeSpan.Zero, delegate
|
||||
{
|
||||
for (int i = 0; i < Components.Count; ++i)
|
||||
if (Components[i] is AddonComponent ac)
|
||||
ac.Name = "jack-o-lantern";
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Projects/Scripts/Items/Addons/LargeBedEastAddon.cs
Normal file
63
Projects/Scripts/Items/Addons/LargeBedEastAddon.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LargeBedEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new LargeBedEastDeed();
|
||||
|
||||
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 LargeBedEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LargeBedEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LargeBedEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LargeBedEastAddon();
|
||||
public override int LabelNumber => 1044324; // large bed (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Projects/Scripts/Items/Addons/LargeBedSouthAddon.cs
Normal file
63
Projects/Scripts/Items/Addons/LargeBedSouthAddon.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LargeBedSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new LargeBedSouthDeed();
|
||||
|
||||
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 LargeBedSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LargeBedSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LargeBedSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LargeBedSouthAddon();
|
||||
public override int LabelNumber => 1044323; // large bed (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Projects/Scripts/Items/Addons/LargeForgeEastAddon.cs
Normal file
63
Projects/Scripts/Items/Addons/LargeForgeEastAddon.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LargeForgeEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new LargeForgeEastDeed();
|
||||
|
||||
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 LargeForgeEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LargeForgeEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LargeForgeEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LargeForgeEastAddon();
|
||||
public override int LabelNumber => 1044331; // large forge (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Projects/Scripts/Items/Addons/LargeForgeSouthAddon.cs
Normal file
63
Projects/Scripts/Items/Addons/LargeForgeSouthAddon.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LargeForgeSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new LargeForgeSouthDeed();
|
||||
|
||||
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 LargeForgeSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LargeForgeSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LargeForgeSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LargeForgeSouthAddon();
|
||||
public override int LabelNumber => 1044332; // large forge (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Projects/Scripts/Items/Addons/LargeStoneTableEastAddon.cs
Normal file
65
Projects/Scripts/Items/Addons/LargeStoneTableEastAddon.cs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LargeStoneTableEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public LargeStoneTableEastAddon(int hue = 0)
|
||||
{
|
||||
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 BaseAddonDeed Deed => new LargeStoneTableEastDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class LargeStoneTableEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LargeStoneTableEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LargeStoneTableEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LargeStoneTableEastAddon(Hue);
|
||||
public override int LabelNumber => 1044511; // large stone table (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Projects/Scripts/Items/Addons/LargeStoneTableSouthAddon.cs
Normal file
65
Projects/Scripts/Items/Addons/LargeStoneTableSouthAddon.cs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LargeStoneTableSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public LargeStoneTableSouthAddon(int hue = 0)
|
||||
{
|
||||
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 BaseAddonDeed Deed => new LargeStoneTableSouthDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class LargeStoneTableSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LargeStoneTableSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LargeStoneTableSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LargeStoneTableSouthAddon(Hue);
|
||||
public override int LabelNumber => 1044512; // large stone table (South)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
79
Projects/Scripts/Items/Addons/LoomEastAddon.cs
Normal file
79
Projects/Scripts/Items/Addons/LoomEastAddon.cs
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public interface ILoom
|
||||
{
|
||||
int Phase{ get; set; }
|
||||
}
|
||||
|
||||
public class LoomEastAddon : BaseAddon, ILoom
|
||||
{
|
||||
[Constructible]
|
||||
public LoomEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x1060), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x105F), 0, 1, 0);
|
||||
}
|
||||
|
||||
public LoomEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new LoomEastDeed();
|
||||
|
||||
public int Phase{ get; set; }
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(Phase);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Phase = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class LoomEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LoomEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LoomEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LoomEastAddon();
|
||||
public override int LabelNumber => 1044343; // loom (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
74
Projects/Scripts/Items/Addons/LoomSouthAddon.cs
Normal file
74
Projects/Scripts/Items/Addons/LoomSouthAddon.cs
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LoomSouthAddon : BaseAddon, ILoom
|
||||
{
|
||||
[Constructible]
|
||||
public LoomSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x1061), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x1062), 1, 0, 0);
|
||||
}
|
||||
|
||||
public LoomSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new LoomSouthDeed();
|
||||
|
||||
public int Phase{ get; set; }
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(Phase);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Phase = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class LoomSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LoomSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public LoomSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LoomSouthAddon();
|
||||
public override int LabelNumber => 1044344; // loom (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
64
Projects/Scripts/Items/Addons/MediumStoneTableEastAddon.cs
Normal file
64
Projects/Scripts/Items/Addons/MediumStoneTableEastAddon.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class MediumStoneTableEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStoneTableEastAddon(int hue = 0)
|
||||
{
|
||||
AddComponent(new AddonComponent(0x1202), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x1201), 0, 1, 0);
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public MediumStoneTableEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MediumStoneTableEastDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class MediumStoneTableEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStoneTableEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public MediumStoneTableEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MediumStoneTableEastAddon(Hue);
|
||||
public override int LabelNumber => 1044508; // stone table (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
64
Projects/Scripts/Items/Addons/MediumStoneTableSouthAddon.cs
Normal file
64
Projects/Scripts/Items/Addons/MediumStoneTableSouthAddon.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class MediumStoneTableSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStoneTableSouthAddon(int hue = 0)
|
||||
{
|
||||
AddComponent(new AddonComponent(0x1205), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x1204), 1, 0, 0);
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public MediumStoneTableSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MediumStoneTableSouthDeed();
|
||||
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class MediumStoneTableSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStoneTableSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public MediumStoneTableSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MediumStoneTableSouthAddon(Hue);
|
||||
public override int LabelNumber => 1044509; // stone table (South)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
62
Projects/Scripts/Items/Addons/OrnateElvenTableEastAddon.cs
Normal file
62
Projects/Scripts/Items/Addons/OrnateElvenTableEastAddon.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class OrnateElvenTableEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new OrnateElvenTableEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public OrnateElvenTableEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public OrnateElvenTableEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new OrnateElvenTableEastAddon();
|
||||
public override int LabelNumber => 1073384; // ornate table (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
62
Projects/Scripts/Items/Addons/OrnateElvenTableSouthAddon.cs
Normal file
62
Projects/Scripts/Items/Addons/OrnateElvenTableSouthAddon.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class OrnateElvenTableSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new OrnateElvenTableSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public OrnateElvenTableSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public OrnateElvenTableSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new OrnateElvenTableSouthAddon();
|
||||
public override int LabelNumber => 1072869; // ornate table (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/ParrotPerchAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/ParrotPerchAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ParrotPerchAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ParrotPerchAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2FF4), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ParrotPerchAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ParrotPerchDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public ParrotPerchDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public ParrotPerchDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ParrotPerchAddon();
|
||||
public override int LabelNumber => 1072617; // parrot perch
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
68
Projects/Scripts/Items/Addons/PentagramAddon.cs
Normal file
68
Projects/Scripts/Items/Addons/PentagramAddon.cs
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class PentagramAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new PentagramDeed();
|
||||
|
||||
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 PentagramDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PentagramDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public PentagramDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PentagramAddon();
|
||||
public override int LabelNumber => 1044328; // pentagram
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
258
Projects/Scripts/Items/Addons/PickpocketDips.cs
Normal file
258
Projects/Scripts/Items/Addons/PickpocketDips.cs
Normal file
|
|
@ -0,0 +1,258 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x1EC0, 0x1EC3)]
|
||||
public class PickpocketDip : AddonComponent
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
public PickpocketDip(int itemID) : base(itemID)
|
||||
{
|
||||
MinSkill = -25.0;
|
||||
MaxSkill = +25.0;
|
||||
}
|
||||
|
||||
public PickpocketDip(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public double MinSkill{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public double MaxSkill{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool Swinging => m_Timer != null;
|
||||
|
||||
public void UpdateItemID()
|
||||
{
|
||||
int baseItemID = 0x1EC0 + (ItemID - 0x1EC0) / 3 * 3;
|
||||
|
||||
ItemID = baseItemID + (Swinging ? 1 : 0);
|
||||
}
|
||||
|
||||
public void BeginSwing()
|
||||
{
|
||||
m_Timer?.Stop();
|
||||
|
||||
m_Timer = new InternalTimer(this);
|
||||
m_Timer.Start();
|
||||
|
||||
UpdateItemID();
|
||||
}
|
||||
|
||||
public void EndSwing()
|
||||
{
|
||||
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, MinSkill, 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.Stealing.Base >= 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 override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0);
|
||||
|
||||
writer.Write(MinSkill);
|
||||
writer.Write(MaxSkill);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
MinSkill = reader.ReadDouble();
|
||||
MaxSkill = reader.ReadDouble();
|
||||
|
||||
if (MinSkill == 0.0 && MaxSkill == 30.0)
|
||||
{
|
||||
MinSkill = -25.0;
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public PickpocketDipEastAddon()
|
||||
{
|
||||
AddComponent(new PickpocketDip(0x1EC3), 0, 0, 0);
|
||||
}
|
||||
|
||||
public PickpocketDipEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new PickpocketDipEastDeed();
|
||||
|
||||
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 PickpocketDipEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PickpocketDipEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public PickpocketDipEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PickpocketDipEastAddon();
|
||||
public override int LabelNumber => 1044337; // pickpocket dip (east)
|
||||
|
||||
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 PickpocketDipSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public PickpocketDipSouthAddon()
|
||||
{
|
||||
AddComponent(new PickpocketDip(0x1EC0), 0, 0, 0);
|
||||
}
|
||||
|
||||
public PickpocketDipSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new PickpocketDipSouthDeed();
|
||||
|
||||
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 PickpocketDipSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PickpocketDipSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public PickpocketDipSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PickpocketDipSouthAddon();
|
||||
public override int LabelNumber => 1044338; // pickpocket dip (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
53
Projects/Scripts/Items/Addons/PyramidAddon.cs
Normal file
53
Projects/Scripts/Items/Addons/PyramidAddon.cs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class PyramidAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 bool ShareHue => false;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
171
Projects/Scripts/Items/Addons/RejuvinationAnkhs.cs
Normal file
171
Projects/Scripts/Items/Addons/RejuvinationAnkhs.cs
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
using System;
|
||||
|
||||
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<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), () => ReleaseUseLock_Callback(from, random));
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void ReleaseUseLock_Callback(Mobile from, int random)
|
||||
{
|
||||
from.EndAction<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(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class BaseRejuvinationAnkh : BaseAddon
|
||||
{
|
||||
private DateTime m_NextMessage;
|
||||
|
||||
public BaseRejuvinationAnkh()
|
||||
{
|
||||
}
|
||||
|
||||
public BaseRejuvinationAnkh(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool HandlesOnMovement => true;
|
||||
|
||||
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)
|
||||
Components[0].SendLocalizedMessageTo(m, 1010061); // An overwhelming sense of peace fills you.
|
||||
|
||||
m_NextMessage = DateTime.UtcNow + TimeSpan.FromSeconds(25.0);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class RejuvinationAnkhWest : BaseRejuvinationAnkh
|
||||
{
|
||||
[Constructible]
|
||||
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(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class RejuvinationAnkhNorth : BaseRejuvinationAnkh
|
||||
{
|
||||
[Constructible]
|
||||
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(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
422
Projects/Scripts/Items/Addons/SHTeleporter.cs
Normal file
422
Projects/Scripts/Items/Addons/SHTeleporter.cs
Normal file
|
|
@ -0,0 +1,422 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using Server.Commands;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class SHTeleComponent : AddonComponent
|
||||
{
|
||||
private bool m_Active;
|
||||
private SHTeleComponent m_TeleDest;
|
||||
|
||||
[Constructible]
|
||||
public SHTeleComponent(int itemID = 0x1775) : this(itemID, new Point3D(0, 0, 0))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public SHTeleComponent(int itemID, Point3D offset) : base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
Hue = 1;
|
||||
|
||||
m_Active = true;
|
||||
TeleOffset = offset;
|
||||
}
|
||||
|
||||
public SHTeleComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool Active
|
||||
{
|
||||
get => m_Active;
|
||||
set
|
||||
{
|
||||
m_Active = value;
|
||||
|
||||
if (Addon is SHTeleporter sourceAddon)
|
||||
sourceAddon.ChangeActive(value);
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Point3D TeleOffset{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Point3D TelePoint
|
||||
{
|
||||
get => new Point3D(Location.X + TeleOffset.X, Location.Y + TeleOffset.Y, Location.Z + TeleOffset.Z);
|
||||
set => TeleOffset = new Point3D(value.X - Location.X, value.Y - Location.Y, value.Z - Location.Z);
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SHTeleComponent TeleDest
|
||||
{
|
||||
get => m_TeleDest;
|
||||
set
|
||||
{
|
||||
m_TeleDest = value;
|
||||
|
||||
if (Addon is SHTeleporter sourceAddon)
|
||||
sourceAddon.ChangeDest(value);
|
||||
}
|
||||
}
|
||||
|
||||
public override string DefaultName => "a hole";
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
if (!m_Active || m_TeleDest?.Deleted != false || m_TeleDest.Map == Map.Internal)
|
||||
return;
|
||||
|
||||
if (m.InRange(this, 3))
|
||||
{
|
||||
Map map = m_TeleDest.Map;
|
||||
Point3D p = m_TeleDest.TelePoint;
|
||||
|
||||
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(0); // version
|
||||
|
||||
writer.Write(m_Active);
|
||||
writer.Write(m_TeleDest);
|
||||
writer.Write(TeleOffset);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_Active = reader.ReadBool();
|
||||
m_TeleDest = reader.ReadItem() as SHTeleComponent;
|
||||
TeleOffset = reader.ReadPoint3D();
|
||||
}
|
||||
}
|
||||
|
||||
public class SHTeleporter : BaseAddon
|
||||
{
|
||||
private bool m_Changing;
|
||||
|
||||
[Constructible]
|
||||
public SHTeleporter(bool external = true)
|
||||
{
|
||||
m_Changing = false;
|
||||
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);
|
||||
UpTele = new SHTeleComponent(external ? 0x1775 : 0x495, upOS);
|
||||
AddComponent(UpTele, 0, 0, 0);
|
||||
|
||||
Point3D rightOS = external ? new Point3D(-2, 0, 0) : new Point3D(2, -1, 0);
|
||||
RightTele = new SHTeleComponent(external ? 0x1775 : 0x495, rightOS);
|
||||
AddComponent(RightTele, 1, 0, 0);
|
||||
|
||||
Point3D downOS = external ? new Point3D(-2, -1, 0) : new Point3D(2, 2, 0);
|
||||
DownTele = new SHTeleComponent(external ? 0x1776 : 0x495, downOS);
|
||||
AddComponent(DownTele, 1, 1, 0);
|
||||
|
||||
Point3D leftOS = external ? new Point3D(-1, -1, 0) : new Point3D(-1, 2, 0);
|
||||
LeftTele = new SHTeleComponent(external ? 0x1775 : 0x495, leftOS);
|
||||
AddComponent(LeftTele, 0, 1, 0);
|
||||
}
|
||||
|
||||
public SHTeleporter(Serial serial) : base(serial)
|
||||
{
|
||||
m_Changing = false;
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool External{ get; private set; }
|
||||
|
||||
public SHTeleComponent UpTele{ get; private set; }
|
||||
|
||||
public SHTeleComponent RightTele{ get; private set; }
|
||||
|
||||
public SHTeleComponent DownTele{ get; private set; }
|
||||
|
||||
public SHTeleComponent LeftTele{ get; private set; }
|
||||
|
||||
public override bool ShareHue => false;
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
CommandSystem.Register("SHTelGen", AccessLevel.Administrator, 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 void ChangeActive(bool active)
|
||||
{
|
||||
if (m_Changing)
|
||||
return;
|
||||
|
||||
m_Changing = true;
|
||||
|
||||
UpTele.Active = active;
|
||||
RightTele.Active = active;
|
||||
DownTele.Active = active;
|
||||
LeftTele.Active = active;
|
||||
|
||||
m_Changing = false;
|
||||
}
|
||||
|
||||
public void ChangeDest(SHTeleComponent dest)
|
||||
{
|
||||
if (m_Changing)
|
||||
return;
|
||||
|
||||
m_Changing = true;
|
||||
|
||||
if (!(dest?.Addon is SHTeleporter))
|
||||
{
|
||||
UpTele.TeleDest = dest;
|
||||
RightTele.TeleDest = dest;
|
||||
DownTele.TeleDest = dest;
|
||||
LeftTele.TeleDest = dest;
|
||||
}
|
||||
else
|
||||
{
|
||||
SHTeleporter destAddon = (SHTeleporter)dest.Addon;
|
||||
|
||||
UpTele.TeleDest = destAddon.UpTele;
|
||||
RightTele.TeleDest = destAddon.RightTele;
|
||||
DownTele.TeleDest = destAddon.DownTele;
|
||||
LeftTele.TeleDest = destAddon.LeftTele;
|
||||
}
|
||||
|
||||
m_Changing = false;
|
||||
}
|
||||
|
||||
public void ChangeDest(SHTeleporter destAddon)
|
||||
{
|
||||
if (m_Changing)
|
||||
return;
|
||||
|
||||
m_Changing = true;
|
||||
|
||||
if (destAddon != null)
|
||||
{
|
||||
UpTele.TeleDest = destAddon.UpTele;
|
||||
RightTele.TeleDest = destAddon.RightTele;
|
||||
DownTele.TeleDest = destAddon.DownTele;
|
||||
LeftTele.TeleDest = destAddon.LeftTele;
|
||||
}
|
||||
else
|
||||
{
|
||||
UpTele.TeleDest = null;
|
||||
RightTele.TeleDest = null;
|
||||
DownTele.TeleDest = null;
|
||||
LeftTele.TeleDest = null;
|
||||
}
|
||||
|
||||
m_Changing = false;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(External);
|
||||
|
||||
writer.Write(UpTele);
|
||||
writer.Write(RightTele);
|
||||
writer.Write(DownTele);
|
||||
writer.Write(LeftTele);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
External = reader.ReadBool();
|
||||
|
||||
UpTele = (SHTeleComponent)reader.ReadItem();
|
||||
RightTele = (SHTeleComponent)reader.ReadItem();
|
||||
DownTele = (SHTeleComponent)reader.ReadItem();
|
||||
LeftTele = (SHTeleComponent)reader.ReadItem();
|
||||
}
|
||||
|
||||
public class SHTeleporterCreator
|
||||
{
|
||||
private int m_Count;
|
||||
|
||||
public SHTeleporterCreator()
|
||||
{
|
||||
m_Count = 0;
|
||||
}
|
||||
|
||||
public static SHTeleporter FindSHTeleporter(Map map, Point3D p)
|
||||
{
|
||||
IPooledEnumerable<SHTeleporter> eable = map.GetItemsInRange<SHTeleporter>(p, 0);
|
||||
SHTeleporter teleporter = eable.FirstOrDefault(item => item.Z == p.Z);
|
||||
eable.Free();
|
||||
return teleporter;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/SandstoneFireplaceEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/SandstoneFireplaceEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SandstoneFireplaceEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SandstoneFireplaceEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x489), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x475), 0, 1, 0);
|
||||
}
|
||||
|
||||
public SandstoneFireplaceEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SandstoneFireplaceEastDeed();
|
||||
|
||||
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 SandstoneFireplaceEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SandstoneFireplaceEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SandstoneFireplaceEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SandstoneFireplaceEastAddon();
|
||||
public override int LabelNumber => 1061844; // sandstone fireplace (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SandstoneFireplaceSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SandstoneFireplaceSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x482), -1, 0, 0);
|
||||
AddComponent(new AddonComponent(0x47B), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SandstoneFireplaceSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SandstoneFireplaceSouthDeed();
|
||||
|
||||
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 SandstoneFireplaceSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SandstoneFireplaceSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SandstoneFireplaceSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SandstoneFireplaceSouthAddon();
|
||||
public override int LabelNumber => 1061845; // sandstone fireplace (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
51
Projects/Scripts/Items/Addons/SandstoneFountainAddon.cs
Normal file
51
Projects/Scripts/Items/Addons/SandstoneFountainAddon.cs
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SandstoneFountainAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
47
Projects/Scripts/Items/Addons/SerpentPillarAddon.cs
Normal file
47
Projects/Scripts/Items/Addons/SerpentPillarAddon.cs
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SerpentPillarAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
64
Projects/Scripts/Items/Addons/ShrineOfWisdomAddon.cs
Normal file
64
Projects/Scripts/Items/Addons/ShrineOfWisdomAddon.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
using Server.Engines.Craft;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class ShrineOfWisdomAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
[Forge]
|
||||
public class ShrineOfWisdomComponent : AddonComponent
|
||||
{
|
||||
[Constructible]
|
||||
public ShrineOfWisdomComponent(int itemID) : base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public ShrineOfWisdomComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062046; // Shrine of Wisdom
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
37
Projects/Scripts/Items/Addons/SkullPileAddon.cs
Normal file
37
Projects/Scripts/Items/Addons/SkullPileAddon.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SkullPileAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/SmallBedEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/SmallBedEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SmallBedEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SmallBedEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xA5D), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xA62), 1, 0, 0);
|
||||
}
|
||||
|
||||
public SmallBedEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SmallBedEastDeed();
|
||||
|
||||
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 SmallBedEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SmallBedEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SmallBedEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SmallBedEastAddon();
|
||||
public override int LabelNumber => 1044322; // small bed (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/SmallBedSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/SmallBedSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SmallBedSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SmallBedSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xA63), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xA5C), 0, 1, 0);
|
||||
}
|
||||
|
||||
public SmallBedSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SmallBedSouthDeed();
|
||||
|
||||
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 SmallBedSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SmallBedSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SmallBedSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SmallBedSouthAddon();
|
||||
public override int LabelNumber => 1044321; // small bed (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/SmallForgeAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/SmallForgeAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SmallForgeAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SmallForgeAddon()
|
||||
{
|
||||
AddComponent(new ForgeComponent(0xFB1), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SmallForgeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SmallForgeDeed();
|
||||
|
||||
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 SmallForgeDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SmallForgeDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SmallForgeDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SmallForgeAddon();
|
||||
public override int LabelNumber => 1044330; // small forge
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
169
Projects/Scripts/Items/Addons/SolenAntHole.cs
Normal file
169
Projects/Scripts/Items/Addons/SolenAntHole.cs
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
using System.Collections.Generic;
|
||||
using Server.Mobiles;
|
||||
using Server.Network;
|
||||
using Server.Spells;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class SolenAntHoleComponent : AddonComponent
|
||||
{
|
||||
public SolenAntHoleComponent(int itemID) : base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public SolenAntHoleComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
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,
|
||||
$"* {from.Name} dives into the hole and disappears!*");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
private List<Mobile> m_Spawned;
|
||||
|
||||
[Constructible]
|
||||
public SolenAntHole()
|
||||
{
|
||||
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 SolenAntHole(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ShareHue => false;
|
||||
public override bool HandlesOnMovement => true;
|
||||
|
||||
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 override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
|
||||
writer.WriteMobileList(m_Spawned);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
m_Spawned = reader.ReadStrongMobileList<Mobile>();
|
||||
}
|
||||
}
|
||||
}
|
||||
147
Projects/Scripts/Items/Addons/SpinningwheelEastAddon.cs
Normal file
147
Projects/Scripts/Items/Addons/SpinningwheelEastAddon.cs
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
using System;
|
||||
|
||||
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
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public SpinningwheelEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x1019), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SpinningwheelEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SpinningwheelEastDeed();
|
||||
|
||||
public bool Spinning => 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 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 override void OnComponentLoaded(AddonComponent c)
|
||||
{
|
||||
switch (c.ItemID)
|
||||
{
|
||||
case 0x1016:
|
||||
case 0x101A:
|
||||
case 0x101D:
|
||||
case 0x10A5:
|
||||
--c.ItemID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void EndSpin(SpinCallback callback, Mobile from, int hue)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
callback?.Invoke(this, from, hue);
|
||||
}
|
||||
|
||||
private class SpinTimer : Timer
|
||||
{
|
||||
private SpinCallback m_Callback;
|
||||
private Mobile m_From;
|
||||
private int m_Hue;
|
||||
private SpinningwheelEastAddon m_Wheel;
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public SpinningwheelEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SpinningwheelEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SpinningwheelEastAddon();
|
||||
public override int LabelNumber => 1044341; // spining wheel (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
139
Projects/Scripts/Items/Addons/SpinningwheelSouthAddon.cs
Normal file
139
Projects/Scripts/Items/Addons/SpinningwheelSouthAddon.cs
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class SpinningwheelSouthAddon : BaseAddon, ISpinningWheel
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public SpinningwheelSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x1015), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SpinningwheelSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SpinningwheelSouthDeed();
|
||||
|
||||
public bool Spinning => 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 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 override void OnComponentLoaded(AddonComponent c)
|
||||
{
|
||||
switch (c.ItemID)
|
||||
{
|
||||
case 0x1016:
|
||||
case 0x101A:
|
||||
case 0x101D:
|
||||
case 0x10A5:
|
||||
--c.ItemID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void EndSpin(SpinCallback callback, Mobile from, int hue)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
callback?.Invoke(this, from, hue);
|
||||
}
|
||||
|
||||
private class SpinTimer : Timer
|
||||
{
|
||||
private SpinCallback m_Callback;
|
||||
private Mobile m_From;
|
||||
private int m_Hue;
|
||||
private SpinningwheelSouthAddon m_Wheel;
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public SpinningwheelSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SpinningwheelSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SpinningwheelSouthAddon();
|
||||
public override int LabelNumber => 1044342; // spining wheel (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/SquirrelStatueEastAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/SquirrelStatueEastAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SquirrelStatueEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SquirrelStatueEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2D10), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SquirrelStatueEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SquirrelStatueEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public SquirrelStatueEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SquirrelStatueEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SquirrelStatueEastAddon();
|
||||
public override int LabelNumber => 1073398; // squirrel statue (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/SquirrelStatueSouthAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/SquirrelStatueSouthAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SquirrelStatueSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SquirrelStatueSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2D11), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SquirrelStatueSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SquirrelStatueSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public SquirrelStatueSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SquirrelStatueSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SquirrelStatueSouthAddon();
|
||||
public override int LabelNumber => 1072884; // squirrel statue (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/StoneFireplaceEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/StoneFireplaceEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class StoneFireplaceEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public StoneFireplaceEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x959), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x953), 0, 1, 0);
|
||||
}
|
||||
|
||||
public StoneFireplaceEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new StoneFireplaceEastDeed();
|
||||
|
||||
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 StoneFireplaceEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public StoneFireplaceEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public StoneFireplaceEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new StoneFireplaceEastAddon();
|
||||
public override int LabelNumber => 1061848; // stone fireplace (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/StoneFireplaceSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/StoneFireplaceSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class StoneFireplaceSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public StoneFireplaceSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x967), -1, 0, 0);
|
||||
AddComponent(new AddonComponent(0x961), 0, 0, 0);
|
||||
}
|
||||
|
||||
public StoneFireplaceSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new StoneFireplaceSouthDeed();
|
||||
|
||||
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 StoneFireplaceSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public StoneFireplaceSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public StoneFireplaceSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new StoneFireplaceSouthAddon();
|
||||
public override int LabelNumber => 1061849; // stone fireplace (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
51
Projects/Scripts/Items/Addons/StoneFountainAddon.cs
Normal file
51
Projects/Scripts/Items/Addons/StoneFountainAddon.cs
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class StoneFountainAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/StoneOvenEastAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/StoneOvenEastAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class StoneOvenEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public StoneOvenEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x92C), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0x92B), 0, 1, 0);
|
||||
}
|
||||
|
||||
public StoneOvenEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new StoneOvenEastDeed();
|
||||
|
||||
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 StoneOvenEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public StoneOvenEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public StoneOvenEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new StoneOvenEastAddon();
|
||||
public override int LabelNumber => 1044345; // stone oven (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Addons/StoneOvenSouthAddon.cs
Normal file
61
Projects/Scripts/Items/Addons/StoneOvenSouthAddon.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class StoneOvenSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public StoneOvenSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x931), -1, 0, 0);
|
||||
AddComponent(new AddonComponent(0x930), 0, 0, 0);
|
||||
}
|
||||
|
||||
public StoneOvenSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new StoneOvenSouthDeed();
|
||||
|
||||
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 StoneOvenSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public StoneOvenSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public StoneOvenSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new StoneOvenSouthAddon();
|
||||
public override int LabelNumber => 1044346; // stone oven (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
234
Projects/Scripts/Items/Addons/StretchedHides.cs
Normal file
234
Projects/Scripts/Items/Addons/StretchedHides.cs
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SmallStretchedHideEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SmallStretchedHideEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x1069), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SmallStretchedHideEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SmallStretchedHideEastDeed();
|
||||
|
||||
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 SmallStretchedHideEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SmallStretchedHideEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SmallStretchedHideEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SmallStretchedHideEastAddon();
|
||||
public override int LabelNumber => 1049401; // a small stretched hide deed facing east
|
||||
|
||||
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 SmallStretchedHideSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SmallStretchedHideSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x107A), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SmallStretchedHideSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SmallStretchedHideSouthDeed();
|
||||
|
||||
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 SmallStretchedHideSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SmallStretchedHideSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public SmallStretchedHideSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SmallStretchedHideSouthAddon();
|
||||
public override int LabelNumber => 1049402; // a small stretched hide deed facing south
|
||||
|
||||
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 MediumStretchedHideEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStretchedHideEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x106B), 0, 0, 0);
|
||||
}
|
||||
|
||||
public MediumStretchedHideEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MediumStretchedHideEastDeed();
|
||||
|
||||
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 MediumStretchedHideEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStretchedHideEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public MediumStretchedHideEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MediumStretchedHideEastAddon();
|
||||
public override int LabelNumber => 1049403; // a medium stretched hide deed facing east
|
||||
|
||||
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 MediumStretchedHideSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStretchedHideSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x107C), 0, 0, 0);
|
||||
}
|
||||
|
||||
public MediumStretchedHideSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MediumStretchedHideSouthDeed();
|
||||
|
||||
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 MediumStretchedHideSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MediumStretchedHideSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public MediumStretchedHideSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MediumStretchedHideSouthAddon();
|
||||
public override int LabelNumber => 1049404; // a medium stretched hide deed facing south
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Projects/Scripts/Items/Addons/TallElvenBedEastAddon.cs
Normal file
63
Projects/Scripts/Items/Addons/TallElvenBedEastAddon.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class TallElvenBedEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new TallElvenBedEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public TallElvenBedEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public TallElvenBedEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TallElvenBedEastAddon();
|
||||
public override int LabelNumber => 1072859; // tall elven bed (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Projects/Scripts/Items/Addons/TallElvenBedSouthAddon.cs
Normal file
63
Projects/Scripts/Items/Addons/TallElvenBedSouthAddon.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class TallElvenBedSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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 BaseAddonDeed Deed => new TallElvenBedSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public TallElvenBedSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public TallElvenBedSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TallElvenBedSouthAddon();
|
||||
public override int LabelNumber => 1072858; // tall elven bed (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
103
Projects/Scripts/Items/Addons/Telescope.cs
Normal file
103
Projects/Scripts/Items/Addons/Telescope.cs
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class Telescope : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
263
Projects/Scripts/Items/Addons/TrainingDummies.cs
Normal file
263
Projects/Scripts/Items/Addons/TrainingDummies.cs
Normal file
|
|
@ -0,0 +1,263 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x1070, 0x1074)]
|
||||
public class TrainingDummy : AddonComponent
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public TrainingDummy(int itemID = 0x1074) : base(itemID)
|
||||
{
|
||||
MinSkill = -25.0;
|
||||
MaxSkill = +25.0;
|
||||
}
|
||||
|
||||
public TrainingDummy(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public double MinSkill{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public double MaxSkill{ get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool Swinging => m_Timer != null;
|
||||
|
||||
public void UpdateItemID()
|
||||
{
|
||||
int baseItemID = ItemID / 2 * 2;
|
||||
|
||||
ItemID = baseItemID + (Swinging ? 1 : 0);
|
||||
}
|
||||
|
||||
public void BeginSwing()
|
||||
{
|
||||
m_Timer?.Stop();
|
||||
|
||||
m_Timer = new InternalTimer(this);
|
||||
m_Timer.Start();
|
||||
}
|
||||
|
||||
public void EndSwing()
|
||||
{
|
||||
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, MinSkill, 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 >= 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 override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0);
|
||||
|
||||
writer.Write(MinSkill);
|
||||
writer.Write(MaxSkill);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
MinSkill = reader.ReadDouble();
|
||||
MaxSkill = reader.ReadDouble();
|
||||
|
||||
if (MinSkill == 0.0 && MaxSkill == 30.0)
|
||||
{
|
||||
MinSkill = -25.0;
|
||||
MaxSkill = +25.0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
UpdateItemID();
|
||||
}
|
||||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private bool m_Delay = true;
|
||||
private TrainingDummy m_Dummy;
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public TrainingDummyEastAddon()
|
||||
{
|
||||
AddComponent(new TrainingDummy(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public TrainingDummyEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new TrainingDummyEastDeed();
|
||||
|
||||
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 TrainingDummyEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public TrainingDummyEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public TrainingDummyEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TrainingDummyEastAddon();
|
||||
public override int LabelNumber => 1044335; // training dummy (east)
|
||||
|
||||
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 TrainingDummySouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public TrainingDummySouthAddon()
|
||||
{
|
||||
AddComponent(new TrainingDummy(0x1070), 0, 0, 0);
|
||||
}
|
||||
|
||||
public TrainingDummySouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new TrainingDummySouthDeed();
|
||||
|
||||
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 TrainingDummySouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public TrainingDummySouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public TrainingDummySouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TrainingDummySouthAddon();
|
||||
public override int LabelNumber => 1044336; // training dummy (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/WarriorStatueEastAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/WarriorStatueEastAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class WarriorStatueEastAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public WarriorStatueEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2D12), 0, 0, 0);
|
||||
}
|
||||
|
||||
public WarriorStatueEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new WarriorStatueEastDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public WarriorStatueEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public WarriorStatueEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new WarriorStatueEastAddon();
|
||||
public override int LabelNumber => 1072888; // warrior statue (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Addons/WarriorStatueSouthAddon.cs
Normal file
60
Projects/Scripts/Items/Addons/WarriorStatueSouthAddon.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class WarriorStatueSouthAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public WarriorStatueSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0x2D13), 0, 0, 0);
|
||||
}
|
||||
|
||||
public WarriorStatueSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new WarriorStatueSouthDeed();
|
||||
|
||||
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
|
||||
{
|
||||
[Constructible]
|
||||
public WarriorStatueSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public WarriorStatueSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new WarriorStatueSouthAddon();
|
||||
public override int LabelNumber => 1072887; // warrior statue (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Projects/Scripts/Items/Addons/WaterTroughEastAddon.cs
Normal file
67
Projects/Scripts/Items/Addons/WaterTroughEastAddon.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class WaterTroughEastAddon : BaseAddon, IWaterSource
|
||||
{
|
||||
[Constructible]
|
||||
public WaterTroughEastAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xB41), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xB42), 0, 1, 0);
|
||||
}
|
||||
|
||||
public WaterTroughEastAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new WaterTroughEastDeed();
|
||||
|
||||
int IHasQuantity.Quantity
|
||||
{
|
||||
get => 500;
|
||||
set { }
|
||||
}
|
||||
|
||||
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 WaterTroughEastDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public WaterTroughEastDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public WaterTroughEastDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new WaterTroughEastAddon();
|
||||
public override int LabelNumber => 1044349; // water trough (east)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Projects/Scripts/Items/Addons/WaterTroughSouthAddon.cs
Normal file
67
Projects/Scripts/Items/Addons/WaterTroughSouthAddon.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class WaterTroughSouthAddon : BaseAddon, IWaterSource
|
||||
{
|
||||
[Constructible]
|
||||
public WaterTroughSouthAddon()
|
||||
{
|
||||
AddComponent(new AddonComponent(0xB43), 0, 0, 0);
|
||||
AddComponent(new AddonComponent(0xB44), 1, 0, 0);
|
||||
}
|
||||
|
||||
public WaterTroughSouthAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new WaterTroughSouthDeed();
|
||||
|
||||
int IHasQuantity.Quantity
|
||||
{
|
||||
get => 500;
|
||||
set { }
|
||||
}
|
||||
|
||||
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 WaterTroughSouthDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public WaterTroughSouthDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public WaterTroughSouthDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new WaterTroughSouthAddon();
|
||||
public override int LabelNumber => 1044350; // water trough (south)
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
84
Projects/Scripts/Items/Addons/WaterVat.cs
Normal file
84
Projects/Scripts/Items/Addons/WaterVat.cs
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class WaterVatEast : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class WaterVatSouth : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
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(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue