Reorganizes Project (#41)
This commit is contained in:
parent
08bf44af9a
commit
3614a66aee
3499 changed files with 79 additions and 55 deletions
|
|
@ -0,0 +1,113 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class EarringBoxSet : RedVelvetGiftBox
|
||||
{
|
||||
[Constructible]
|
||||
public EarringBoxSet()
|
||||
{
|
||||
DropItem(new EarringsOfProtection(AosElementAttribute.Physical));
|
||||
DropItem(new EarringsOfProtection(AosElementAttribute.Fire));
|
||||
DropItem(new EarringsOfProtection(AosElementAttribute.Cold));
|
||||
DropItem(new EarringsOfProtection(AosElementAttribute.Poison));
|
||||
DropItem(new EarringsOfProtection(AosElementAttribute.Energy));
|
||||
}
|
||||
|
||||
public EarringBoxSet(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 EarringsOfProtection : BaseJewel
|
||||
{
|
||||
private AosElementAttribute m_Attribute;
|
||||
|
||||
[Constructible]
|
||||
public EarringsOfProtection() : this(RandomType())
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public EarringsOfProtection(AosElementAttribute element)
|
||||
: base(0x1087, Layer.Earrings)
|
||||
{
|
||||
Resistances[element] = 2;
|
||||
|
||||
m_Attribute = element;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public EarringsOfProtection(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public virtual AosElementAttribute Attribute => m_Attribute;
|
||||
|
||||
public override int LabelNumber => GetItemData(m_Attribute, true);
|
||||
|
||||
public override int Hue => GetItemData(m_Attribute, false);
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.Write((int)m_Attribute);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
m_Attribute = (AosElementAttribute)reader.ReadInt();
|
||||
}
|
||||
|
||||
public static AosElementAttribute RandomType()
|
||||
{
|
||||
return GetTypes(Utility.Random(5));
|
||||
}
|
||||
|
||||
public static AosElementAttribute GetTypes(int value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case 0: return AosElementAttribute.Physical;
|
||||
case 1: return AosElementAttribute.Fire;
|
||||
case 2: return AosElementAttribute.Cold;
|
||||
case 3: return AosElementAttribute.Poison;
|
||||
default: return AosElementAttribute.Energy;
|
||||
}
|
||||
}
|
||||
|
||||
public static int GetItemData(AosElementAttribute element, bool label)
|
||||
{
|
||||
switch (element)
|
||||
{
|
||||
case AosElementAttribute.Physical: return label ? 1071091 : 0; // Earring of Protection (Physical) 1071091
|
||||
case AosElementAttribute.Fire: return label ? 1071092 : 0x4ec; // Earring of Protection (Fire) 1071092
|
||||
case AosElementAttribute.Cold: return label ? 1071093 : 0x4f2; // Earring of Protection (Cold) 1071093
|
||||
case AosElementAttribute.Poison: return label ? 1071094 : 0x4f8; // Earring of Protection (Poison) 1071094
|
||||
case AosElementAttribute.Energy: return label ? 1071095 : 0x4fe; // Earring of Protection (Energy) 1071095
|
||||
|
||||
default: return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,319 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public sealed class StopMusic : Packet
|
||||
{
|
||||
public static readonly Packet Instance = SetStatic(new StopMusic());
|
||||
|
||||
public StopMusic() : base(0x6D, 3)
|
||||
{
|
||||
m_Stream.Write((short)0x1FFF);
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x2AF9, 0x2AFD)]
|
||||
public class DawnsMusicBox : Item, ISecurable
|
||||
{
|
||||
private static Dictionary<MusicName, DawnsMusicInfo> m_Info;
|
||||
|
||||
public static MusicName[] m_CommonTracks =
|
||||
{
|
||||
MusicName.Samlethe, MusicName.Sailing, MusicName.Britain2, MusicName.Britain1,
|
||||
MusicName.Bucsden, MusicName.Forest_a, MusicName.Cove, MusicName.Death,
|
||||
MusicName.Dungeon9, MusicName.Dungeon2, MusicName.Cave01, MusicName.Combat3,
|
||||
MusicName.Combat1, MusicName.Combat2, MusicName.Jhelom, MusicName.Linelle,
|
||||
MusicName.LBCastle, MusicName.Minoc, MusicName.Moonglow, MusicName.Magincia,
|
||||
MusicName.Nujelm, MusicName.BTCastle, MusicName.Tavern04, MusicName.Skarabra,
|
||||
MusicName.Stones2, MusicName.Serpents, MusicName.Taiko, MusicName.Tavern01,
|
||||
MusicName.Tavern02, MusicName.Tavern03, MusicName.TokunoDungeon, MusicName.Trinsic,
|
||||
MusicName.OldUlt01, MusicName.Ocllo, MusicName.Vesper, MusicName.Victory,
|
||||
MusicName.Mountn_a, MusicName.Wind, MusicName.Yew, MusicName.Zento
|
||||
};
|
||||
|
||||
public static MusicName[] m_UncommonTracks =
|
||||
{
|
||||
MusicName.GwennoConversation, MusicName.DreadHornArea, MusicName.ElfCity,
|
||||
MusicName.GoodEndGame, MusicName.GoodVsEvil, MusicName.GreatEarthSerpents,
|
||||
MusicName.GrizzleDungeon, MusicName.Humanoids_U9, MusicName.MelisandesLair,
|
||||
MusicName.MinocNegative, MusicName.ParoxysmusLair, MusicName.Paws
|
||||
};
|
||||
|
||||
public static MusicName[] m_RareTracks =
|
||||
{
|
||||
MusicName.SelimsBar, MusicName.SerpentIsleCombat_U7, MusicName.ValoriaShips
|
||||
};
|
||||
|
||||
private int m_Count;
|
||||
private int m_ItemID;
|
||||
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public DawnsMusicBox() : base(0x2AF9)
|
||||
{
|
||||
Weight = 1.0;
|
||||
|
||||
Tracks = new List<MusicName>();
|
||||
|
||||
while (Tracks.Count < 4)
|
||||
{
|
||||
MusicName name = RandomTrack(DawnsMusicRarity.Common);
|
||||
|
||||
if (!Tracks.Contains(name))
|
||||
Tracks.Add(name);
|
||||
}
|
||||
}
|
||||
|
||||
public DawnsMusicBox(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1075198; // Dawn<77>s Music Box
|
||||
|
||||
public List<MusicName> Tracks{ get; private set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level{ get; set; }
|
||||
|
||||
public override void OnAfterDuped(Item newItem)
|
||||
{
|
||||
if (!(newItem is DawnsMusicBox box))
|
||||
return;
|
||||
|
||||
box.Tracks = new List<MusicName>();
|
||||
box.Tracks.AddRange(Tracks);
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
int commonSongs = 0;
|
||||
int uncommonSongs = 0;
|
||||
int rareSongs = 0;
|
||||
|
||||
for (int i = 0; i < Tracks.Count; i++)
|
||||
{
|
||||
DawnsMusicInfo info = GetInfo(Tracks[i]);
|
||||
|
||||
switch (info.Rarity)
|
||||
{
|
||||
case DawnsMusicRarity.Common:
|
||||
commonSongs++;
|
||||
break;
|
||||
case DawnsMusicRarity.Uncommon:
|
||||
uncommonSongs++;
|
||||
break;
|
||||
case DawnsMusicRarity.Rare:
|
||||
rareSongs++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (commonSongs > 0)
|
||||
list.Add(1075234, commonSongs.ToString()); // ~1_NUMBER~ Common Tracks
|
||||
if (uncommonSongs > 0)
|
||||
list.Add(1075235, uncommonSongs.ToString()); // ~1_NUMBER~ Uncommon Tracks
|
||||
if (rareSongs > 0)
|
||||
list.Add(1075236, rareSongs.ToString()); // ~1_NUMBER~ Rare Tracks
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
SetSecureLevelEntry.AddTo(from, this, list); // Set secure level
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!IsChildOf(from.Backpack) && !IsLockedDown)
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1061856); // You must have the item in your backpack or locked down in order to use it.
|
||||
}
|
||||
else if (IsLockedDown && !HasAccces(from))
|
||||
{
|
||||
from.SendLocalizedMessage(502436); // That is not accessible.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.CloseGump<DawnsMusicBoxGump>();
|
||||
from.SendGump(new DawnsMusicBoxGump(this));
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasAccces(Mobile m)
|
||||
{
|
||||
return m.AccessLevel >= AccessLevel.GameMaster || BaseHouse.FindHouseAt(this)?.HasAccess(m) == true;
|
||||
}
|
||||
|
||||
public void PlayMusic(Mobile m, MusicName music)
|
||||
{
|
||||
if (m_Timer?.Running == true)
|
||||
EndMusic(m);
|
||||
else
|
||||
m_ItemID = ItemID;
|
||||
|
||||
m.Send(new PlayMusic(music));
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromSeconds(0.5), TimeSpan.FromSeconds(0.5), 4, Animate);
|
||||
}
|
||||
|
||||
public void EndMusic(Mobile m)
|
||||
{
|
||||
if (m_Timer?.Running == true)
|
||||
m_Timer.Stop();
|
||||
|
||||
m.Send(StopMusic.Instance);
|
||||
|
||||
if (m_Count > 0)
|
||||
ItemID = m_ItemID;
|
||||
|
||||
m_Count = 0;
|
||||
}
|
||||
|
||||
private void Animate()
|
||||
{
|
||||
m_Count++;
|
||||
|
||||
if (m_Count >= 4)
|
||||
{
|
||||
m_Count = 0;
|
||||
ItemID = m_ItemID;
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemID++;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
|
||||
writer.Write(Tracks.Count);
|
||||
|
||||
for (int i = 0; i < Tracks.Count; i++)
|
||||
writer.Write((int)Tracks[i]);
|
||||
|
||||
writer.Write((int)Level);
|
||||
writer.Write(m_ItemID);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
int count = reader.ReadInt();
|
||||
Tracks = new List<MusicName>();
|
||||
|
||||
for (int i = 0; i < count; i++)
|
||||
Tracks.Add((MusicName)reader.ReadInt());
|
||||
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
m_ItemID = reader.ReadInt();
|
||||
}
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
m_Info = new Dictionary<MusicName, DawnsMusicInfo>
|
||||
{
|
||||
{ MusicName.Samlethe, new DawnsMusicInfo(1075152, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Sailing, new DawnsMusicInfo(1075163, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Britain2, new DawnsMusicInfo(1075145, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Britain1, new DawnsMusicInfo(1075144, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Bucsden, new DawnsMusicInfo(1075146, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Forest_a, new DawnsMusicInfo(1075161, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Cove, new DawnsMusicInfo(1075176, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Death, new DawnsMusicInfo(1075171, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Dungeon9, new DawnsMusicInfo(1075160, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Dungeon2, new DawnsMusicInfo(1075175, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Cave01, new DawnsMusicInfo(1075159, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Combat3, new DawnsMusicInfo(1075170, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Combat1, new DawnsMusicInfo(1075168, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Combat2, new DawnsMusicInfo(1075169, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Jhelom, new DawnsMusicInfo(1075147, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Linelle, new DawnsMusicInfo(1075185, DawnsMusicRarity.Common) },
|
||||
{ MusicName.LBCastle, new DawnsMusicInfo(1075148, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Minoc, new DawnsMusicInfo(1075150, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Moonglow, new DawnsMusicInfo(1075177, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Magincia, new DawnsMusicInfo(1075149, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Nujelm, new DawnsMusicInfo(1075174, DawnsMusicRarity.Common) },
|
||||
{ MusicName.BTCastle, new DawnsMusicInfo(1075173, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Tavern04, new DawnsMusicInfo(1075167, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Skarabra, new DawnsMusicInfo(1075154, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Stones2, new DawnsMusicInfo(1075143, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Serpents, new DawnsMusicInfo(1075153, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Taiko, new DawnsMusicInfo(1075180, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Tavern01, new DawnsMusicInfo(1075164, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Tavern02, new DawnsMusicInfo(1075165, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Tavern03, new DawnsMusicInfo(1075166, DawnsMusicRarity.Common) },
|
||||
{ MusicName.TokunoDungeon, new DawnsMusicInfo(1075179, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Trinsic, new DawnsMusicInfo(1075155, DawnsMusicRarity.Common) },
|
||||
{ MusicName.OldUlt01, new DawnsMusicInfo(1075142, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Ocllo, new DawnsMusicInfo(1075151, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Vesper, new DawnsMusicInfo(1075156, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Victory, new DawnsMusicInfo(1075172, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Mountn_a, new DawnsMusicInfo(1075162, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Wind, new DawnsMusicInfo(1075157, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Yew, new DawnsMusicInfo(1075158, DawnsMusicRarity.Common) },
|
||||
{ MusicName.Zento, new DawnsMusicInfo(1075178, DawnsMusicRarity.Common) },
|
||||
{ MusicName.GwennoConversation, new DawnsMusicInfo(1075131, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.DreadHornArea, new DawnsMusicInfo(1075181, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.ElfCity, new DawnsMusicInfo(1075182, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.GoodEndGame, new DawnsMusicInfo(1075132, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.GoodVsEvil, new DawnsMusicInfo(1075133, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.GreatEarthSerpents, new DawnsMusicInfo(1075134, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.GrizzleDungeon, new DawnsMusicInfo(1075186, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.Humanoids_U9, new DawnsMusicInfo(1075135, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.MelisandesLair, new DawnsMusicInfo(1075183, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.MinocNegative, new DawnsMusicInfo(1075136, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.ParoxysmusLair, new DawnsMusicInfo(1075184, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.Paws, new DawnsMusicInfo(1075137, DawnsMusicRarity.Uncommon) },
|
||||
{ MusicName.SelimsBar, new DawnsMusicInfo(1075138, DawnsMusicRarity.Rare) },
|
||||
{ MusicName.SerpentIsleCombat_U7, new DawnsMusicInfo(1075139, DawnsMusicRarity.Rare) },
|
||||
{ MusicName.ValoriaShips, new DawnsMusicInfo(1075140, DawnsMusicRarity.Rare) }
|
||||
};
|
||||
}
|
||||
|
||||
public static DawnsMusicInfo GetInfo(MusicName name)
|
||||
{
|
||||
if (m_Info == null) // sanity
|
||||
return null;
|
||||
|
||||
m_Info.TryGetValue(name, out DawnsMusicInfo info);
|
||||
return info;
|
||||
}
|
||||
|
||||
public static MusicName RandomTrack(DawnsMusicRarity rarity)
|
||||
{
|
||||
MusicName[] list;
|
||||
|
||||
switch (rarity)
|
||||
{
|
||||
default:
|
||||
case DawnsMusicRarity.Common:
|
||||
list = m_CommonTracks;
|
||||
break;
|
||||
case DawnsMusicRarity.Uncommon:
|
||||
list = m_UncommonTracks;
|
||||
break;
|
||||
case DawnsMusicRarity.Rare:
|
||||
list = m_RareTracks;
|
||||
break;
|
||||
}
|
||||
|
||||
return list[Utility.Random(list.Length)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,138 @@
|
|||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x1053, 0x1054)]
|
||||
public class DawnsMusicGear : Item
|
||||
{
|
||||
[Constructible]
|
||||
public DawnsMusicGear() : this(DawnsMusicBox.RandomTrack(DawnsMusicRarity.Common))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public DawnsMusicGear(MusicName music) : base(0x1053)
|
||||
{
|
||||
Music = music;
|
||||
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public DawnsMusicGear(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public static DawnsMusicGear RandomCommon => new DawnsMusicGear(DawnsMusicBox.RandomTrack(DawnsMusicRarity.Common));
|
||||
|
||||
public static DawnsMusicGear RandomUncommon =>
|
||||
new DawnsMusicGear(DawnsMusicBox.RandomTrack(DawnsMusicRarity.Uncommon));
|
||||
|
||||
public static DawnsMusicGear RandomRare => new DawnsMusicGear(DawnsMusicBox.RandomTrack(DawnsMusicRarity.Rare));
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public MusicName Music{ get; set; }
|
||||
|
||||
public override void AddNameProperty(ObjectPropertyList list)
|
||||
{
|
||||
DawnsMusicInfo info = DawnsMusicBox.GetInfo(Music);
|
||||
|
||||
if (info != null)
|
||||
{
|
||||
if (info.Rarity == DawnsMusicRarity.Common)
|
||||
list.Add(1075204); // Gear for Dawn's Music Box (Common)
|
||||
else if (info.Rarity == DawnsMusicRarity.Uncommon)
|
||||
list.Add(1075205); // Gear for Dawn's Music Box (Uncommon)
|
||||
else if (info.Rarity == DawnsMusicRarity.Rare)
|
||||
list.Add(1075206); // Gear for Dawn's Music Box (Rare)
|
||||
|
||||
list.Add(info.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.AddNameProperty(list);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
from.Target = new InternalTarget(this);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(1); // version
|
||||
|
||||
writer.Write((int)Music);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Music = (MusicName)reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (version == 0) // Music wasn't serialized in version 0, pick a new track of random rarity
|
||||
{
|
||||
DawnsMusicRarity rarity;
|
||||
double rand = Utility.RandomDouble();
|
||||
|
||||
if (rand < 0.025)
|
||||
rarity = DawnsMusicRarity.Rare;
|
||||
else if (rand < 0.225)
|
||||
rarity = DawnsMusicRarity.Uncommon;
|
||||
else
|
||||
rarity = DawnsMusicRarity.Common;
|
||||
|
||||
Music = DawnsMusicBox.RandomTrack(rarity);
|
||||
}
|
||||
}
|
||||
|
||||
public class InternalTarget : Target
|
||||
{
|
||||
private DawnsMusicGear m_Gear;
|
||||
|
||||
public InternalTarget(DawnsMusicGear gear) : base(2, false, TargetFlags.None)
|
||||
{
|
||||
m_Gear = gear;
|
||||
}
|
||||
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (m_Gear?.Deleted != false)
|
||||
return;
|
||||
|
||||
if (targeted is DawnsMusicBox box)
|
||||
{
|
||||
if (!box.Tracks.Contains(m_Gear.Music))
|
||||
{
|
||||
box.Tracks.Add(m_Gear.Music);
|
||||
box.InvalidateProperties();
|
||||
|
||||
m_Gear.Delete();
|
||||
|
||||
from.SendLocalizedMessage(1071961); // This song has been added to the musicbox.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1071962); // This song track is already in the musicbox.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1071964); // Gears can only be put into a musicbox.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public enum DawnsMusicRarity
|
||||
{
|
||||
Common,
|
||||
Uncommon,
|
||||
Rare
|
||||
}
|
||||
|
||||
public class DawnsMusicInfo
|
||||
{
|
||||
public DawnsMusicInfo(int name, DawnsMusicRarity rarity)
|
||||
{
|
||||
Name = name;
|
||||
Rarity = rarity;
|
||||
}
|
||||
|
||||
public int Name{ get; }
|
||||
|
||||
public DawnsMusicRarity Rarity{ get; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class DupresShield : BaseShield, ITokunoDyable
|
||||
{
|
||||
[Constructible]
|
||||
public DupresShield() : base(0x2B01)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Weight = 6.0;
|
||||
|
||||
Attributes.BonusHits = 5;
|
||||
Attributes.RegenHits = 1;
|
||||
|
||||
SkillBonuses.SetValues(0, SkillName.Parry, 5);
|
||||
}
|
||||
|
||||
public DupresShield(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1075196; // Dupre<72>s Shield
|
||||
|
||||
public override int BasePhysicalResistance => 1;
|
||||
public override int BaseFireResistance => 0;
|
||||
public override int BaseColdResistance => 0;
|
||||
public override int BasePoisonResistance => 0;
|
||||
public override int BaseEnergyResistance => 1;
|
||||
|
||||
public override int InitMinHits => 255;
|
||||
public override int InitMaxHits => 255;
|
||||
|
||||
public override int AosStrReq => 50;
|
||||
|
||||
public override int ArmorBase => 15;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,256 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class EnhancedBandage : Bandage
|
||||
{
|
||||
[Constructible]
|
||||
public EnhancedBandage(int amount = 1)
|
||||
: base(amount)
|
||||
{
|
||||
Hue = 0x8A5;
|
||||
}
|
||||
|
||||
public EnhancedBandage(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public static int HealingBonus => 10;
|
||||
|
||||
public override int LabelNumber => 1152441; // enhanced bandage
|
||||
|
||||
public override bool Dye(Mobile from, DyeTub sender)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void AddNameProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.AddNameProperties(list);
|
||||
|
||||
list.Add(1075216); // these bandages have been enhanced
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x2AC0, 0x2AC3)]
|
||||
public class FountainOfLife : BaseAddonContainer
|
||||
{
|
||||
private int m_Charges;
|
||||
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public FountainOfLife(int charges = 10)
|
||||
: base(0x2AC0)
|
||||
{
|
||||
m_Charges = charges;
|
||||
|
||||
m_Timer = Timer.DelayCall(RechargeTime, RechargeTime, Recharge);
|
||||
}
|
||||
|
||||
public FountainOfLife(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonContainerDeed Deed => new FountainOfLifeDeed(m_Charges);
|
||||
|
||||
public virtual TimeSpan RechargeTime => TimeSpan.FromDays(1);
|
||||
|
||||
public override int LabelNumber => 1075197; // Fountain of Life
|
||||
public override int DefaultGumpID => 0x484;
|
||||
public override int DefaultDropSound => 66;
|
||||
public override int DefaultMaxItems => 125;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Charges
|
||||
{
|
||||
get => m_Charges;
|
||||
set
|
||||
{
|
||||
m_Charges = Math.Min(value, 10);
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool OnDragLift(Mobile from)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
if (dropped is Bandage)
|
||||
{
|
||||
bool allow = base.OnDragDrop(from, dropped);
|
||||
|
||||
if (allow)
|
||||
Enhance(from);
|
||||
|
||||
return allow;
|
||||
}
|
||||
|
||||
from.SendLocalizedMessage(1075209); // Only bandages may be dropped into the fountain.
|
||||
return false;
|
||||
}
|
||||
|
||||
public override bool OnDragDropInto(Mobile from, Item item, Point3D p)
|
||||
{
|
||||
if (item is Bandage)
|
||||
{
|
||||
bool allow = base.OnDragDropInto(from, item, p);
|
||||
|
||||
if (allow)
|
||||
Enhance(from);
|
||||
|
||||
return allow;
|
||||
}
|
||||
|
||||
from.SendLocalizedMessage(1075209); // Only bandages may be dropped into the fountain.
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void AddNameProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.AddNameProperties(list);
|
||||
|
||||
list.Add(1075217, m_Charges.ToString()); // ~1_val~ charges remaining
|
||||
}
|
||||
|
||||
public override void OnDelete()
|
||||
{
|
||||
m_Timer?.Stop();
|
||||
|
||||
base.OnDelete();
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); //version
|
||||
|
||||
writer.Write(m_Charges);
|
||||
writer.Write(m_Timer.Next);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
m_Charges = reader.ReadInt();
|
||||
|
||||
DateTime next = reader.ReadDateTime();
|
||||
|
||||
if (next < DateTime.UtcNow)
|
||||
m_Timer = Timer.DelayCall(TimeSpan.Zero, RechargeTime, Recharge);
|
||||
else
|
||||
m_Timer = Timer.DelayCall(next - DateTime.UtcNow, RechargeTime, Recharge);
|
||||
}
|
||||
|
||||
public void Recharge()
|
||||
{
|
||||
m_Charges = 10;
|
||||
|
||||
Enhance(null);
|
||||
}
|
||||
|
||||
public void Enhance(Mobile from)
|
||||
{
|
||||
for (int i = Items.Count - 1; i >= 0 && m_Charges > 0; --i)
|
||||
{
|
||||
if (Items[i] is EnhancedBandage)
|
||||
continue;
|
||||
|
||||
if (Items[i] is Bandage bandage)
|
||||
{
|
||||
Item enhanced;
|
||||
|
||||
if (bandage.Amount > m_Charges)
|
||||
{
|
||||
bandage.Amount -= m_Charges;
|
||||
enhanced = new EnhancedBandage(m_Charges);
|
||||
m_Charges = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
enhanced = new EnhancedBandage(bandage.Amount);
|
||||
m_Charges -= bandage.Amount;
|
||||
bandage.Delete();
|
||||
}
|
||||
|
||||
if (from == null || !TryDropItem(from, enhanced, false)) // try stacking first
|
||||
DropItem(enhanced);
|
||||
}
|
||||
}
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public class FountainOfLifeDeed : BaseAddonContainerDeed
|
||||
{
|
||||
private int m_Charges;
|
||||
|
||||
[Constructible]
|
||||
public FountainOfLifeDeed(int charges = 10)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
m_Charges = charges;
|
||||
}
|
||||
|
||||
public FountainOfLifeDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1075197; // Fountain of Life
|
||||
public override BaseAddonContainer Addon => new FountainOfLife(m_Charges);
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Charges
|
||||
{
|
||||
get => m_Charges;
|
||||
set
|
||||
{
|
||||
m_Charges = Math.Min(value, 10);
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); //version
|
||||
|
||||
writer.Write(m_Charges);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
m_Charges = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class OssianGrimoire : NecromancerSpellbook, ITokunoDyable
|
||||
{
|
||||
[Constructible]
|
||||
public OssianGrimoire()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
SkillBonuses.SetValues(0, SkillName.Necromancy, 10.0);
|
||||
Attributes.RegenMana = 1;
|
||||
Attributes.CastSpeed = 1;
|
||||
Attributes.IncreasedKarmaLoss = 5;
|
||||
}
|
||||
|
||||
public OssianGrimoire(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1078148; // Ossian Grimoire
|
||||
|
||||
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)
|
||||
Attributes.IncreasedKarmaLoss = 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class QuiverOfInfinity : BaseQuiver, ITokunoDyable
|
||||
{
|
||||
[Constructible]
|
||||
public QuiverOfInfinity() : base(0x2B02)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Weight = 8.0;
|
||||
|
||||
WeightReduction = 30;
|
||||
LowerAmmoCost = 20;
|
||||
|
||||
Attributes.DefendChance = 5;
|
||||
}
|
||||
|
||||
public QuiverOfInfinity(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1075201; // Quiver of Infinity
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(2); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
if (version < 1 && DamageIncrease == 0)
|
||||
DamageIncrease = 10;
|
||||
|
||||
if (version < 2 && Attributes.WeaponDamage == 10)
|
||||
Attributes.WeaponDamage = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,182 @@
|
|||
using System;
|
||||
using Server.Mobiles;
|
||||
using Server.Spells.Ninjitsu;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public enum TalismanForm
|
||||
{
|
||||
Ferret = 1031672,
|
||||
Squirrel = 1031671,
|
||||
CuSidhe = 1031670,
|
||||
Reptalon = 1075202
|
||||
}
|
||||
|
||||
public class BaseFormTalisman : Item, ITokunoDyable
|
||||
{
|
||||
public BaseFormTalisman() : base(0x2F59)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Layer = Layer.Talisman;
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public BaseFormTalisman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual TalismanForm Form => TalismanForm.Squirrel;
|
||||
|
||||
public override void AddNameProperty(ObjectPropertyList list)
|
||||
{
|
||||
list.Add(1075200, $"#{(int)Form}");
|
||||
}
|
||||
|
||||
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 OnRemoved(IEntity parent)
|
||||
{
|
||||
base.OnRemoved(parent);
|
||||
|
||||
if (parent is Mobile m) AnimalForm.RemoveContext(m, true);
|
||||
}
|
||||
|
||||
public static bool EntryEnabled(Mobile m, Type type)
|
||||
{
|
||||
if (type == typeof(Squirrel))
|
||||
return m.Talisman is SquirrelFormTalisman;
|
||||
if (type == typeof(Ferret))
|
||||
return m.Talisman is FerretFormTalisman;
|
||||
if (type == typeof(CuSidhe))
|
||||
return m.Talisman is CuSidheFormTalisman;
|
||||
if (type == typeof(Reptalon))
|
||||
return m.Talisman is ReptalonFormTalisman;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class FerretFormTalisman : BaseFormTalisman
|
||||
{
|
||||
[Constructible]
|
||||
public FerretFormTalisman()
|
||||
{
|
||||
}
|
||||
|
||||
public FerretFormTalisman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override TalismanForm Form => TalismanForm.Ferret;
|
||||
|
||||
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 SquirrelFormTalisman : BaseFormTalisman
|
||||
{
|
||||
[Constructible]
|
||||
public SquirrelFormTalisman()
|
||||
{
|
||||
}
|
||||
|
||||
public SquirrelFormTalisman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override TalismanForm Form => TalismanForm.Squirrel;
|
||||
|
||||
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 CuSidheFormTalisman : BaseFormTalisman
|
||||
{
|
||||
[Constructible]
|
||||
public CuSidheFormTalisman()
|
||||
{
|
||||
}
|
||||
|
||||
public CuSidheFormTalisman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override TalismanForm Form => TalismanForm.CuSidhe;
|
||||
|
||||
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 ReptalonFormTalisman : BaseFormTalisman
|
||||
{
|
||||
[Constructible]
|
||||
public ReptalonFormTalisman()
|
||||
{
|
||||
}
|
||||
|
||||
public ReptalonFormTalisman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override TalismanForm Form => TalismanForm.Reptalon;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2684, 0x2683)]
|
||||
public class HoodedShroudOfShadows : BaseOuterTorso
|
||||
{
|
||||
[Constructible]
|
||||
public HoodedShroudOfShadows(int hue = 0x455) : base(0x2684, hue)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Weight = 3.0;
|
||||
}
|
||||
|
||||
public HoodedShroudOfShadows(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool Dye(Mobile from, DyeTub sender)
|
||||
{
|
||||
from.SendLocalizedMessage(sender.FailMessage);
|
||||
return 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LuckyNecklace : BaseJewel
|
||||
{
|
||||
[Constructible]
|
||||
public LuckyNecklace()
|
||||
: base(0x1088, Layer.Neck)
|
||||
{
|
||||
Attributes.Luck = 200;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public LuckyNecklace(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int Hue => 1150;
|
||||
public override int LabelNumber => 1075239; //Lucky Necklace 1075239
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
reader.ReadInt(); /* int version = reader.ReadInt(); Why? Just to have an unused var? */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0xC12, 0xC13)]
|
||||
public class BrokenArmoireComponent : AddonComponent
|
||||
{
|
||||
public BrokenArmoireComponent() : base(0xC12)
|
||||
{
|
||||
}
|
||||
|
||||
public BrokenArmoireComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076262; // Broken Armoire
|
||||
|
||||
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 BrokenArmoireAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenArmoireAddon()
|
||||
{
|
||||
AddComponent(new BrokenArmoireComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BrokenArmoireAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrokenArmoireDeed();
|
||||
|
||||
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 BrokenArmoireDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenArmoireDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BrokenArmoireDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrokenArmoireAddon();
|
||||
public override int LabelNumber => 1076262; // Broken Armoire
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class BrokenBedAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenBedAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x1895, 1076263), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x1894, 1076263), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x1897, 1076263), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x1896, 1076263), 1, 1, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x1899, 1076263), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x1898, 1076263), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x189B, 1076263), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x189A, 1076263), 1, 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public BrokenBedAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrokenBedDeed();
|
||||
|
||||
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 BrokenBedDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public BrokenBedDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BrokenBedDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrokenBedAddon(m_East);
|
||||
public override int LabelNumber => 1076263; // Broken Bed
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private BrokenBedDeed m_Deed;
|
||||
|
||||
public InternalGump(BrokenBedDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076749, 0x7FFF); // Please select your broken bed position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0xC14, 0xC15)]
|
||||
public class BrokenBookcaseComponent : AddonComponent
|
||||
{
|
||||
public BrokenBookcaseComponent() : base(0xC14)
|
||||
{
|
||||
}
|
||||
|
||||
public BrokenBookcaseComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076258; // Broken Bookcase
|
||||
|
||||
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 BrokenBookcaseAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenBookcaseAddon()
|
||||
{
|
||||
AddComponent(new BrokenBookcaseComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BrokenBookcaseAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrokenBookcaseDeed();
|
||||
|
||||
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 BrokenBookcaseDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenBookcaseDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BrokenBookcaseDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrokenBookcaseAddon();
|
||||
public override int LabelNumber => 1076258; // Broken Bookcase
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0xC24, 0xC25)]
|
||||
public class BrokenChestOfDrawersComponent : AddonComponent
|
||||
{
|
||||
public BrokenChestOfDrawersComponent() : base(0xC24)
|
||||
{
|
||||
}
|
||||
|
||||
public BrokenChestOfDrawersComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076261; // Broken Chest of Drawers
|
||||
|
||||
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 BrokenChestOfDrawersAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenChestOfDrawersAddon()
|
||||
{
|
||||
AddComponent(new BrokenChestOfDrawersComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BrokenChestOfDrawersAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrokenChestOfDrawersDeed();
|
||||
|
||||
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 BrokenChestOfDrawersDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenChestOfDrawersDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BrokenChestOfDrawersDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrokenChestOfDrawersAddon();
|
||||
public override int LabelNumber => 1076261; // Broken Chest of Drawers
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0xC17, 0xC18)]
|
||||
public class BrokenCoveredChairComponent : AddonComponent
|
||||
{
|
||||
public BrokenCoveredChairComponent() : base(0xC17)
|
||||
{
|
||||
}
|
||||
|
||||
public BrokenCoveredChairComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076257; // Broken Covered Chair
|
||||
|
||||
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 BrokenCoveredChairAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenCoveredChairAddon()
|
||||
{
|
||||
AddComponent(new BrokenCoveredChairComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BrokenCoveredChairAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrokenCoveredChairDeed();
|
||||
|
||||
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 BrokenCoveredChairDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenCoveredChairDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BrokenCoveredChairDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrokenCoveredChairAddon();
|
||||
public override int LabelNumber => 1076257; // Broken Covered Chair
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0xC19, 0xC1A)]
|
||||
public class BrokenFallenChairComponent : AddonComponent
|
||||
{
|
||||
public BrokenFallenChairComponent() : base(0xC19)
|
||||
{
|
||||
}
|
||||
|
||||
public BrokenFallenChairComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076264; // Broken Fallen Chair
|
||||
|
||||
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 < 1 && ItemID == 0xC17)
|
||||
ItemID = 0xC19;
|
||||
}
|
||||
}
|
||||
|
||||
public class BrokenFallenChairAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenFallenChairAddon()
|
||||
{
|
||||
AddComponent(new BrokenFallenChairComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BrokenFallenChairAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrokenFallenChairDeed();
|
||||
|
||||
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 BrokenFallenChairDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenFallenChairDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BrokenFallenChairDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrokenFallenChairAddon();
|
||||
public override int LabelNumber => 1076264; // Broken Fallen Chair
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,130 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class BrokenVanityAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BrokenVanityAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xC20, 1076260), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xC21, 1076260), 0, -1, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xC22, 1076260), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xC23, 1076260), -1, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public BrokenVanityAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BrokenVanityDeed();
|
||||
|
||||
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 BrokenVanityDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public BrokenVanityDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BrokenVanityDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BrokenVanityAddon(m_East);
|
||||
public override int LabelNumber => 1076260; // Broken Vanity
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private BrokenVanityDeed m_Deed;
|
||||
|
||||
public InternalGump(BrokenVanityDeed deed) : base(60, 63)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076747, 0x7FFF); // Please select your broken vanity position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0xC1B, 0xC1C, 0xC1E, 0xC1D)]
|
||||
public class StandingBrokenChairComponent : AddonComponent
|
||||
{
|
||||
public StandingBrokenChairComponent() : base(0xC1B)
|
||||
{
|
||||
}
|
||||
|
||||
public StandingBrokenChairComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076259; // Standing Broken Chair
|
||||
|
||||
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 StandingBrokenChairAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public StandingBrokenChairAddon()
|
||||
{
|
||||
AddComponent(new StandingBrokenChairComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public StandingBrokenChairAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new StandingBrokenChairDeed();
|
||||
|
||||
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 StandingBrokenChairDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public StandingBrokenChairDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public StandingBrokenChairDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new StandingBrokenChairAddon();
|
||||
public override int LabelNumber => 1076259; // Standing Broken Chair
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
using Server.Engines.Craft;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x13E4, 0x13E3)]
|
||||
public class AncientSmithyHammer : BaseTool
|
||||
{
|
||||
private int m_Bonus;
|
||||
private SkillMod m_SkillMod;
|
||||
|
||||
[Constructible]
|
||||
public AncientSmithyHammer(int bonus, int uses = 600) : base(uses, 0x13E4)
|
||||
{
|
||||
m_Bonus = bonus;
|
||||
Weight = 8.0;
|
||||
Layer = Layer.OneHanded;
|
||||
Hue = 0x482;
|
||||
}
|
||||
|
||||
public AncientSmithyHammer(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Bonus
|
||||
{
|
||||
get => m_Bonus;
|
||||
set
|
||||
{
|
||||
m_Bonus = value;
|
||||
InvalidateProperties();
|
||||
|
||||
if (m_Bonus == 0)
|
||||
{
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = null;
|
||||
}
|
||||
else if (m_SkillMod == null && Parent is Mobile mobile)
|
||||
{
|
||||
m_SkillMod = new DefaultSkillMod(SkillName.Blacksmith, true, m_Bonus);
|
||||
mobile.AddSkillMod(m_SkillMod);
|
||||
}
|
||||
else if (m_SkillMod != null)
|
||||
{
|
||||
m_SkillMod.Value = m_Bonus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override CraftSystem CraftSystem => DefBlacksmithy.CraftSystem;
|
||||
public override int LabelNumber => 1045127; // ancient smithy hammer
|
||||
|
||||
public override void OnAdded(IEntity parent)
|
||||
{
|
||||
base.OnAdded(parent);
|
||||
|
||||
if (m_Bonus != 0 && parent is Mobile mobile)
|
||||
{
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = new DefaultSkillMod(SkillName.Blacksmith, true, m_Bonus);
|
||||
mobile.AddSkillMod(m_SkillMod);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnRemoved(IEntity parent)
|
||||
{
|
||||
base.OnRemoved(parent);
|
||||
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = null;
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if (m_Bonus != 0)
|
||||
list.Add(1060451, "#1042354\t{0}", m_Bonus.ToString()); // ~1_skillname~ +~2_val~
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(m_Bonus);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Bonus = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_Bonus != 0 && Parent is Mobile mobile)
|
||||
{
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = new DefaultSkillMod(SkillName.Blacksmith, true, m_Bonus);
|
||||
mobile.AddSkillMod(m_SkillMod);
|
||||
}
|
||||
|
||||
if (Hue == 0)
|
||||
Hue = 0x482;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
using Server.Engines.Craft;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Anvil]
|
||||
[Flippable(0xFAF, 0xFB0)]
|
||||
public class ColoredAnvil : Item
|
||||
{
|
||||
[Constructible]
|
||||
public ColoredAnvil() : this(CraftResources.GetHue(
|
||||
(CraftResource)Utility.RandomMinMax((int)CraftResource.DullCopper, (int)CraftResource.Valorite)))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public ColoredAnvil(int hue) : base(0xFAF)
|
||||
{
|
||||
Hue = hue;
|
||||
Weight = 20;
|
||||
}
|
||||
|
||||
public ColoredAnvil(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,248 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x13c6, 0x13ce)]
|
||||
public class LeatherGlovesOfMining : BaseGlovesOfMining
|
||||
{
|
||||
[Constructible]
|
||||
public LeatherGlovesOfMining(int bonus) : base(bonus, 0x13C6)
|
||||
{
|
||||
Weight = 1;
|
||||
}
|
||||
|
||||
public LeatherGlovesOfMining(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int BasePhysicalResistance => 2;
|
||||
public override int BaseFireResistance => 4;
|
||||
public override int BaseColdResistance => 3;
|
||||
public override int BasePoisonResistance => 3;
|
||||
public override int BaseEnergyResistance => 3;
|
||||
|
||||
public override int InitMinHits => 30;
|
||||
public override int InitMaxHits => 40;
|
||||
|
||||
public override int AosStrReq => 20;
|
||||
public override int OldStrReq => 10;
|
||||
|
||||
public override int ArmorBase => 13;
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Leather;
|
||||
public override CraftResource DefaultResource => CraftResource.RegularLeather;
|
||||
|
||||
public override ArmorMeditationAllowance DefMedAllowance => ArmorMeditationAllowance.All;
|
||||
|
||||
public override int LabelNumber => 1045122; // leather blacksmith gloves of mining
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x13d5, 0x13dd)]
|
||||
public class StuddedGlovesOfMining : BaseGlovesOfMining
|
||||
{
|
||||
[Constructible]
|
||||
public StuddedGlovesOfMining(int bonus) : base(bonus, 0x13D5)
|
||||
{
|
||||
Weight = 2;
|
||||
}
|
||||
|
||||
public StuddedGlovesOfMining(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int BasePhysicalResistance => 2;
|
||||
public override int BaseFireResistance => 4;
|
||||
public override int BaseColdResistance => 3;
|
||||
public override int BasePoisonResistance => 3;
|
||||
public override int BaseEnergyResistance => 4;
|
||||
|
||||
public override int InitMinHits => 35;
|
||||
public override int InitMaxHits => 45;
|
||||
|
||||
public override int AosStrReq => 25;
|
||||
public override int OldStrReq => 25;
|
||||
|
||||
public override int ArmorBase => 16;
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Studded;
|
||||
public override CraftResource DefaultResource => CraftResource.RegularLeather;
|
||||
|
||||
public override int LabelNumber => 1045123; // studded leather blacksmith gloves of mining
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x13eb, 0x13f2)]
|
||||
public class RingmailGlovesOfMining : BaseGlovesOfMining
|
||||
{
|
||||
[Constructible]
|
||||
public RingmailGlovesOfMining(int bonus) : base(bonus, 0x13EB)
|
||||
{
|
||||
Weight = 1;
|
||||
}
|
||||
|
||||
public RingmailGlovesOfMining(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int BasePhysicalResistance => 3;
|
||||
public override int BaseFireResistance => 3;
|
||||
public override int BaseColdResistance => 1;
|
||||
public override int BasePoisonResistance => 5;
|
||||
public override int BaseEnergyResistance => 3;
|
||||
|
||||
public override int InitMinHits => 40;
|
||||
public override int InitMaxHits => 50;
|
||||
|
||||
public override int AosStrReq => 40;
|
||||
public override int OldStrReq => 20;
|
||||
|
||||
public override int OldDexBonus => -1;
|
||||
|
||||
public override int ArmorBase => 22;
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Ringmail;
|
||||
|
||||
public override int LabelNumber => 1045124; // ringmail blacksmith gloves of mining
|
||||
|
||||
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 BaseGlovesOfMining : BaseArmor
|
||||
{
|
||||
private int m_Bonus;
|
||||
private SkillMod m_SkillMod;
|
||||
|
||||
public BaseGlovesOfMining(int bonus, int itemID) : base(itemID)
|
||||
{
|
||||
m_Bonus = bonus;
|
||||
|
||||
Hue = CraftResources.GetHue(
|
||||
(CraftResource)Utility.RandomMinMax((int)CraftResource.DullCopper, (int)CraftResource.Valorite));
|
||||
}
|
||||
|
||||
public BaseGlovesOfMining(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Bonus
|
||||
{
|
||||
get => m_Bonus;
|
||||
set
|
||||
{
|
||||
m_Bonus = value;
|
||||
InvalidateProperties();
|
||||
|
||||
if (m_Bonus == 0)
|
||||
{
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = null;
|
||||
}
|
||||
else if (m_SkillMod == null && Parent is Mobile mobile)
|
||||
{
|
||||
m_SkillMod = new DefaultSkillMod(SkillName.Mining, true, m_Bonus);
|
||||
mobile.AddSkillMod(m_SkillMod);
|
||||
}
|
||||
else if (m_SkillMod != null)
|
||||
{
|
||||
m_SkillMod.Value = m_Bonus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnAdded(IEntity parent)
|
||||
{
|
||||
base.OnAdded(parent);
|
||||
|
||||
if (m_Bonus != 0 && parent is Mobile mobile)
|
||||
{
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = new DefaultSkillMod(SkillName.Mining, true, m_Bonus);
|
||||
mobile.AddSkillMod(m_SkillMod);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnRemoved(IEntity parent)
|
||||
{
|
||||
base.OnRemoved(parent);
|
||||
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = null;
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if (m_Bonus != 0)
|
||||
list.Add(1062005, m_Bonus.ToString()); // mining bonus +~1_val~
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(m_Bonus);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Bonus = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_Bonus != 0 && Parent is Mobile mobile)
|
||||
{
|
||||
m_SkillMod?.Remove();
|
||||
|
||||
m_SkillMod = new DefaultSkillMod(SkillName.Mining, true, m_Bonus);
|
||||
mobile.AddSkillMod(m_SkillMod);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
using Server.Network;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class PowderOfTemperament : Item, IUsesRemaining
|
||||
{
|
||||
private int m_UsesRemaining;
|
||||
|
||||
[Constructible]
|
||||
public PowderOfTemperament(int charges = 10) : base(4102)
|
||||
{
|
||||
Weight = 1.0;
|
||||
Hue = 2419;
|
||||
UsesRemaining = charges;
|
||||
}
|
||||
|
||||
public PowderOfTemperament(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1049082; // powder of fortifying
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int UsesRemaining
|
||||
{
|
||||
get => m_UsesRemaining;
|
||||
set
|
||||
{
|
||||
m_UsesRemaining = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
bool IUsesRemaining.ShowUsesRemaining
|
||||
{
|
||||
get => true;
|
||||
set { }
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0);
|
||||
writer.Write(m_UsesRemaining);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_UsesRemaining = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1060584, m_UsesRemaining.ToString()); // uses remaining: ~1_val~
|
||||
}
|
||||
|
||||
public virtual void DisplayDurabilityTo(Mobile m)
|
||||
{
|
||||
LabelToAffix(m, 1017323, AffixType.Append, ": " + m_UsesRemaining); // Durability
|
||||
}
|
||||
|
||||
public override void OnSingleClick(Mobile from)
|
||||
{
|
||||
DisplayDurabilityTo(from);
|
||||
|
||||
base.OnSingleClick(from);
|
||||
}
|
||||
|
||||
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 PowderOfTemperament m_Powder;
|
||||
|
||||
public InternalTarget(PowderOfTemperament powder) : base(2, false, TargetFlags.None)
|
||||
{
|
||||
m_Powder = powder;
|
||||
}
|
||||
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (m_Powder?.Deleted != false || m_Powder.UsesRemaining <= 0)
|
||||
{
|
||||
from.SendLocalizedMessage(1049086); // You have used up your powder of temperament.
|
||||
return;
|
||||
}
|
||||
|
||||
if (targeted is Item item && item is IDurability wearable)
|
||||
{
|
||||
if (!wearable.CanFortify)
|
||||
{
|
||||
from.SendLocalizedMessage(1049083); // You cannot use the powder on that item.
|
||||
return;
|
||||
}
|
||||
|
||||
if ((item.IsChildOf(from.Backpack) || Core.ML && item.Parent == from) &&
|
||||
m_Powder.IsChildOf(from.Backpack))
|
||||
{
|
||||
int origMaxHP = wearable.MaxHitPoints;
|
||||
int origCurHP = wearable.HitPoints;
|
||||
|
||||
if (origMaxHP > 0)
|
||||
{
|
||||
int initMaxHP = Core.AOS ? 255 : wearable.InitMaxHits;
|
||||
|
||||
wearable.UnscaleDurability();
|
||||
|
||||
if (wearable.MaxHitPoints < initMaxHP)
|
||||
{
|
||||
int bonus = initMaxHP - wearable.MaxHitPoints;
|
||||
|
||||
if (bonus > 10)
|
||||
bonus = 10;
|
||||
|
||||
wearable.MaxHitPoints += bonus;
|
||||
wearable.HitPoints += bonus;
|
||||
|
||||
wearable.ScaleDurability();
|
||||
|
||||
if (wearable.MaxHitPoints > 255) wearable.MaxHitPoints = 255;
|
||||
if (wearable.HitPoints > 255) wearable.HitPoints = 255;
|
||||
|
||||
if (wearable.MaxHitPoints > origMaxHP)
|
||||
{
|
||||
from.SendLocalizedMessage(1049084); // You successfully use the powder on the item.
|
||||
from.PlaySound(0x247);
|
||||
|
||||
--m_Powder.UsesRemaining;
|
||||
|
||||
if (m_Powder.UsesRemaining <= 0)
|
||||
{
|
||||
from.SendLocalizedMessage(1049086); // You have used up your powder of fortifying.
|
||||
m_Powder.Delete();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wearable.MaxHitPoints = origMaxHP;
|
||||
wearable.HitPoints = origCurHP;
|
||||
from.SendLocalizedMessage(1049085); // The item cannot be improved any further.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1049085); // The item cannot be improved any further.
|
||||
wearable.ScaleDurability();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1049083); // You cannot use the powder on that item.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1049083); // You cannot use the powder on that item.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class JesterHatofChuckles : BaseHat, ITokunoDyable
|
||||
{
|
||||
[Constructible]
|
||||
public JesterHatofChuckles() : this(Utility.RandomList(0x13e, 0x03, 0x172, 0x3f))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public JesterHatofChuckles(int hue) : base(0x171C, hue)
|
||||
{
|
||||
Attributes.Luck = 150;
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public JesterHatofChuckles(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1073256; //Jester Hat of Chuckles - Museum of Vesper Replica 1073256
|
||||
|
||||
public override int BasePhysicalResistance => 12;
|
||||
public override int BaseFireResistance => 12;
|
||||
public override int BaseColdResistance => 12;
|
||||
public override int BasePoisonResistance => 12;
|
||||
public override int BaseEnergyResistance => 12;
|
||||
|
||||
public override int InitMinHits => 100;
|
||||
public override int InitMaxHits => 100;
|
||||
|
||||
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,184 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A5D, 0x2A61)]
|
||||
public class AwesomeDisturbingPortraitComponent : AddonComponent
|
||||
{
|
||||
private InternalTimer m_Timer;
|
||||
|
||||
public AwesomeDisturbingPortraitComponent() : base(0x2A5D)
|
||||
{
|
||||
m_Timer = new InternalTimer(this, TimeSpan.FromSeconds(1));
|
||||
m_Timer.Start();
|
||||
}
|
||||
|
||||
public AwesomeDisturbingPortraitComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074479; // Disturbing portrait
|
||||
public bool FacingSouth => ItemID < 0x2A61;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
{
|
||||
Clock.GetTime(Map, X, Y, out int hours, out int _);
|
||||
|
||||
if (hours < 4 || hours > 20)
|
||||
Effects.PlaySound(Location, Map, 0x569);
|
||||
|
||||
UpdateImage();
|
||||
}
|
||||
else
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
base.OnAfterDelete();
|
||||
|
||||
if (m_Timer?.Running == true)
|
||||
m_Timer.Stop();
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
m_Timer = new InternalTimer(this, TimeSpan.Zero);
|
||||
m_Timer.Start();
|
||||
}
|
||||
|
||||
private void UpdateImage()
|
||||
{
|
||||
Clock.GetTime(Map, X, Y, out int hours, out int _);
|
||||
|
||||
if (FacingSouth)
|
||||
{
|
||||
if (hours < 4)
|
||||
ItemID = 0x2A60;
|
||||
else if (hours < 6)
|
||||
ItemID = 0x2A5F;
|
||||
else if (hours < 8)
|
||||
ItemID = 0x2A5E;
|
||||
else if (hours < 16)
|
||||
ItemID = 0x2A5D;
|
||||
else if (hours < 18)
|
||||
ItemID = 0x2A5E;
|
||||
else if (hours < 20)
|
||||
ItemID = 0x2A5F;
|
||||
else
|
||||
ItemID = 0x2A60;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hours < 4)
|
||||
ItemID = 0x2A64;
|
||||
else if (hours < 6)
|
||||
ItemID = 0x2A63;
|
||||
else if (hours < 8)
|
||||
ItemID = 0x2A62;
|
||||
else if (hours < 16)
|
||||
ItemID = 0x2A61;
|
||||
else if (hours < 18)
|
||||
ItemID = 0x2A62;
|
||||
else if (hours < 20)
|
||||
ItemID = 0x2A63;
|
||||
else
|
||||
ItemID = 0x2A64;
|
||||
}
|
||||
}
|
||||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private AwesomeDisturbingPortraitComponent m_Component;
|
||||
|
||||
public InternalTimer(AwesomeDisturbingPortraitComponent c, TimeSpan delay) : base(delay,
|
||||
TimeSpan.FromMinutes(10))
|
||||
{
|
||||
m_Component = c;
|
||||
|
||||
Priority = TimerPriority.OneMinute;
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
if (m_Component?.Deleted == false)
|
||||
m_Component.UpdateImage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class AwesomeDisturbingPortraitAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public AwesomeDisturbingPortraitAddon()
|
||||
{
|
||||
AddComponent(new AwesomeDisturbingPortraitComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public AwesomeDisturbingPortraitAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new AwesomeDisturbingPortraitDeed();
|
||||
|
||||
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 AwesomeDisturbingPortraitDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public AwesomeDisturbingPortraitDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public AwesomeDisturbingPortraitDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AwesomeDisturbingPortraitAddon();
|
||||
public override int LabelNumber => 1074479; // Disturbing portrait
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class BedOfNailsComponent : AddonComponent
|
||||
{
|
||||
public BedOfNailsComponent(int itemID)
|
||||
: base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public BedOfNailsComponent(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074801; // Bed of Nails
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
bool allow = base.OnMoveOver(m);
|
||||
|
||||
if (allow && Addon is BedOfNailsAddon addon)
|
||||
addon.OnMoveOver(m);
|
||||
|
||||
return allow;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[FlippableAddon(Direction.South, Direction.East)]
|
||||
public class BedOfNailsAddon : BaseAddon
|
||||
{
|
||||
private InternalTimer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public BedOfNailsAddon()
|
||||
{
|
||||
Direction = Direction.South;
|
||||
|
||||
AddComponent(new BedOfNailsComponent(0x2A81), 0, 0, 0);
|
||||
AddComponent(new BedOfNailsComponent(0x2A82), 0, -1, 0);
|
||||
}
|
||||
|
||||
public BedOfNailsAddon(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BedOfNailsDeed();
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
if (m.Alive && (m.AccessLevel == AccessLevel.Player || !m.Hidden))
|
||||
{
|
||||
if (m.Player)
|
||||
{
|
||||
if (m.Female)
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x53B, 0x53D));
|
||||
else
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x53E, 0x540));
|
||||
}
|
||||
|
||||
if (m_Timer == null || !m_Timer.Running)
|
||||
(m_Timer = new InternalTimer(m)).Start();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
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 virtual void Flip(Mobile from, Direction direction)
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case Direction.East:
|
||||
AddComponent(new BedOfNailsComponent(0x2A89), 0, 0, 0);
|
||||
AddComponent(new BedOfNailsComponent(0x2A8A), -1, 0, 0);
|
||||
break;
|
||||
case Direction.South:
|
||||
AddComponent(new BedOfNailsComponent(0x2A81), 0, 0, 0);
|
||||
AddComponent(new BedOfNailsComponent(0x2A82), 0, -1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private Point3D m_Location;
|
||||
private Mobile m_Mobile;
|
||||
|
||||
public InternalTimer(Mobile m)
|
||||
: base(TimeSpan.Zero, TimeSpan.FromSeconds(1), 5)
|
||||
{
|
||||
m_Mobile = m;
|
||||
m_Location = Point3D.Zero;
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
if (m_Mobile?.Map == null || m_Mobile.Deleted || !m_Mobile.Alive || m_Mobile.Map == Map.Internal)
|
||||
{
|
||||
Stop();
|
||||
}
|
||||
else if (m_Location != m_Mobile.Location)
|
||||
{
|
||||
int amount = Utility.RandomMinMax(0, 7);
|
||||
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
int x = m_Mobile.X + Utility.RandomMinMax(-1, 1);
|
||||
int y = m_Mobile.Y + Utility.RandomMinMax(-1, 1);
|
||||
int z = m_Mobile.Z;
|
||||
|
||||
if (!m_Mobile.Map.CanFit(x, y, z, 1, false, false))
|
||||
{
|
||||
z = m_Mobile.Map.GetAverageZ(x, y);
|
||||
|
||||
if (!m_Mobile.Map.CanFit(x, y, z, 1, false, false))
|
||||
continue;
|
||||
}
|
||||
|
||||
Blood blood = new Blood(Utility.RandomMinMax(0x122C, 0x122F));
|
||||
blood.MoveToWorld(new Point3D(x, y, z), m_Mobile.Map);
|
||||
}
|
||||
|
||||
m_Location = m_Mobile.Location;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class BedOfNailsDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BedOfNailsDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BedOfNailsDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BedOfNailsAddon();
|
||||
public override int LabelNumber => 1074801; // Bed of Nails
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BoneCouchComponent : AddonComponent
|
||||
{
|
||||
public BoneCouchComponent(int itemID) : base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public BoneCouchComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074477; // Bone couch
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
bool allow = base.OnMoveOver(m);
|
||||
|
||||
if (allow && m.Alive && m.Player && (m.AccessLevel == AccessLevel.Player || !m.Hidden))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x547, 0x54A));
|
||||
|
||||
return allow;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[FlippableAddon(Direction.South, Direction.East)]
|
||||
public class BoneCouchAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BoneCouchAddon()
|
||||
{
|
||||
Direction = Direction.South;
|
||||
|
||||
AddComponent(new BoneCouchComponent(0x2A5A), 0, 0, 0);
|
||||
AddComponent(new BoneCouchComponent(0x2A5B), -1, 0, 0);
|
||||
}
|
||||
|
||||
public BoneCouchAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BoneCouchDeed();
|
||||
|
||||
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 virtual void Flip(Mobile from, Direction direction)
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case Direction.East:
|
||||
AddComponent(new BoneCouchComponent(0x2A80), 0, 0, 0);
|
||||
AddComponent(new BoneCouchComponent(0x2A7F), 0, 1, 0);
|
||||
break;
|
||||
case Direction.South:
|
||||
AddComponent(new BoneCouchComponent(0x2A5A), 0, 0, 0);
|
||||
AddComponent(new BoneCouchComponent(0x2A5B), -1, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class BoneCouchDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BoneCouchDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BoneCouchDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BoneCouchAddon();
|
||||
public override int LabelNumber => 1074477; // Bone couch
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BoneTableAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BoneTableAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x2A5C, 1074478), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BoneTableAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BoneTableDeed();
|
||||
|
||||
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 BoneTableDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BoneTableDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BoneTableDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BoneTableAddon();
|
||||
public override int LabelNumber => 1074478; // Bone table
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A58, 0x2A59)]
|
||||
public class BoneThroneComponent : AddonComponent
|
||||
{
|
||||
public BoneThroneComponent() : base(0x2A58)
|
||||
{
|
||||
}
|
||||
|
||||
public BoneThroneComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074476; // Bone throne
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
bool allow = base.OnMoveOver(m);
|
||||
|
||||
if (allow && m.Alive && m.Player && (m.AccessLevel == AccessLevel.Player || !m.Hidden))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x54B, 0x54D));
|
||||
|
||||
return allow;
|
||||
}
|
||||
|
||||
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 BoneThroneAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BoneThroneAddon()
|
||||
{
|
||||
AddComponent(new BoneThroneComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BoneThroneAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BoneThroneDeed();
|
||||
|
||||
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 BoneThroneDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BoneThroneDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BoneThroneDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BoneThroneAddon();
|
||||
public override int LabelNumber => 1074476; // Bone throne
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A69, 0x2A6D)]
|
||||
public class CreepyPortraitComponent : AddonComponent
|
||||
{
|
||||
public CreepyPortraitComponent() : base(0x2A69)
|
||||
{
|
||||
}
|
||||
|
||||
public CreepyPortraitComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074481; // Creepy portrait
|
||||
public override bool HandlesOnMovement => true;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x565, 0x566));
|
||||
else
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
|
||||
public override void OnMovement(Mobile m, Point3D old)
|
||||
{
|
||||
if (m.Alive && m.Player && (m.AccessLevel == AccessLevel.Player || !m.Hidden))
|
||||
{
|
||||
if (!Utility.InRange(old, Location, 2) && Utility.InRange(m.Location, Location, 2))
|
||||
{
|
||||
if (ItemID == 0x2A69 || ItemID == 0x2A6D)
|
||||
{
|
||||
Up();
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.5), TimeSpan.FromSeconds(0.5), 2, Up);
|
||||
}
|
||||
}
|
||||
else if (Utility.InRange(old, Location, 2) && !Utility.InRange(m.Location, Location, 2))
|
||||
{
|
||||
if (ItemID == 0x2A6C || ItemID == 0x2A70)
|
||||
{
|
||||
Down();
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.5), TimeSpan.FromSeconds(0.5), 2, Down);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Up()
|
||||
{
|
||||
ItemID += 1;
|
||||
}
|
||||
|
||||
private void Down()
|
||||
{
|
||||
ItemID -= 1;
|
||||
}
|
||||
|
||||
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 && ItemID != 0x2A69 && ItemID != 0x2A6D)
|
||||
ItemID = 0x2A69;
|
||||
}
|
||||
}
|
||||
|
||||
public class CreepyPortraitAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public CreepyPortraitAddon()
|
||||
{
|
||||
AddComponent(new CreepyPortraitComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public CreepyPortraitAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new CreepyPortraitDeed();
|
||||
|
||||
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 CreepyPortraitDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public CreepyPortraitDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public CreepyPortraitDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new CreepyPortraitAddon();
|
||||
public override int LabelNumber => 1074481; // Creepy portrait
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,121 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A5D, 0x2A61)]
|
||||
public class DisturbingPortraitComponent : AddonComponent
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
public DisturbingPortraitComponent() : base(0x2A5D)
|
||||
{
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3), Change);
|
||||
}
|
||||
|
||||
public DisturbingPortraitComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074479; // Disturbing portrait
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x567, 0x568));
|
||||
else
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
base.OnAfterDelete();
|
||||
|
||||
if (m_Timer?.Running == true)
|
||||
m_Timer.Stop();
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3), Change);
|
||||
}
|
||||
|
||||
private void Change()
|
||||
{
|
||||
if (ItemID < 0x2A61)
|
||||
ItemID = Utility.RandomMinMax(0x2A5D, 0x2A60);
|
||||
else
|
||||
ItemID = Utility.RandomMinMax(0x2A61, 0x2A64);
|
||||
}
|
||||
}
|
||||
|
||||
public class DisturbingPortraitAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public DisturbingPortraitAddon()
|
||||
{
|
||||
AddComponent(new DisturbingPortraitComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public DisturbingPortraitAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new DisturbingPortraitDeed();
|
||||
|
||||
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 DisturbingPortraitDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public DisturbingPortraitDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public DisturbingPortraitDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new DisturbingPortraitAddon();
|
||||
public override int LabelNumber => 1074479; // Disturbing portrait
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A7B, 0x2A7D)]
|
||||
public class HaunterMirrorComponent : AddonComponent
|
||||
{
|
||||
public HaunterMirrorComponent() : base(0x2A7B)
|
||||
{
|
||||
}
|
||||
|
||||
public HaunterMirrorComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074800; // Haunted Mirror
|
||||
public override bool HandlesOnMovement => true;
|
||||
|
||||
public override void OnMovement(Mobile m, Point3D old)
|
||||
{
|
||||
base.OnMovement(m, old);
|
||||
|
||||
if (m.Alive && m.Player && (m.AccessLevel == AccessLevel.Player || !m.Hidden))
|
||||
{
|
||||
if (!Utility.InRange(old, Location, 2) && Utility.InRange(m.Location, Location, 2))
|
||||
{
|
||||
if (ItemID == 0x2A7B || ItemID == 0x2A7D)
|
||||
{
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x551, 0x553));
|
||||
ItemID += 1;
|
||||
}
|
||||
}
|
||||
else if (Utility.InRange(old, Location, 2) && !Utility.InRange(m.Location, Location, 2))
|
||||
{
|
||||
if (ItemID == 0x2A7C || ItemID == 0x2A7E)
|
||||
ItemID -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 HaunterMirrorAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public HaunterMirrorAddon()
|
||||
{
|
||||
AddComponent(new HaunterMirrorComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public HaunterMirrorAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new HaunterMirrorDeed();
|
||||
|
||||
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 HaunterMirrorDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public HaunterMirrorDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public HaunterMirrorDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new HaunterMirrorAddon();
|
||||
public override int LabelNumber => 1074800; // Haunted Mirror
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A75, 0x2A76)]
|
||||
public class MountedPixieBlueComponent : AddonComponent
|
||||
{
|
||||
public MountedPixieBlueComponent() : base(0x2A75)
|
||||
{
|
||||
}
|
||||
|
||||
public MountedPixieBlueComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x55C, 0x55E));
|
||||
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 MountedPixieBlueAddon : BaseAddon
|
||||
{
|
||||
public MountedPixieBlueAddon()
|
||||
{
|
||||
AddComponent(new MountedPixieBlueComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public MountedPixieBlueAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MountedPixieBlueDeed();
|
||||
|
||||
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 MountedPixieBlueDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MountedPixieBlueDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public MountedPixieBlueDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MountedPixieBlueAddon();
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A71, 0x2A72)]
|
||||
public class MountedPixieGreenComponent : AddonComponent
|
||||
{
|
||||
public MountedPixieGreenComponent() : base(0x2A71)
|
||||
{
|
||||
}
|
||||
|
||||
public MountedPixieGreenComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x554, 0x557));
|
||||
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 MountedPixieGreenAddon : BaseAddon
|
||||
{
|
||||
public MountedPixieGreenAddon()
|
||||
{
|
||||
AddComponent(new MountedPixieGreenComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public MountedPixieGreenAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MountedPixieGreenDeed();
|
||||
|
||||
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 MountedPixieGreenDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MountedPixieGreenDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public MountedPixieGreenDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MountedPixieGreenAddon();
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A77, 0x2A78)]
|
||||
public class MountedPixieLimeComponent : AddonComponent
|
||||
{
|
||||
public MountedPixieLimeComponent() : base(0x2A77)
|
||||
{
|
||||
}
|
||||
|
||||
public MountedPixieLimeComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x55F, 0x561));
|
||||
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 MountedPixieLimeAddon : BaseAddon
|
||||
{
|
||||
public MountedPixieLimeAddon()
|
||||
{
|
||||
AddComponent(new MountedPixieLimeComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public MountedPixieLimeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MountedPixieLimeDeed();
|
||||
|
||||
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 MountedPixieLimeDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MountedPixieLimeDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public MountedPixieLimeDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MountedPixieLimeAddon();
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A73, 0x2A74)]
|
||||
public class MountedPixieOrangeComponent : AddonComponent
|
||||
{
|
||||
public MountedPixieOrangeComponent() : base(0x2A73)
|
||||
{
|
||||
}
|
||||
|
||||
public MountedPixieOrangeComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x558, 0x55B));
|
||||
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 MountedPixieOrangeAddon : BaseAddon
|
||||
{
|
||||
public MountedPixieOrangeAddon()
|
||||
{
|
||||
AddComponent(new MountedPixieOrangeComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public MountedPixieOrangeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MountedPixieOrangeDeed();
|
||||
|
||||
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 MountedPixieOrangeDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MountedPixieOrangeDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public MountedPixieOrangeDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MountedPixieOrangeAddon();
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A79, 0x2A7A)]
|
||||
public class MountedPixieWhiteComponent : AddonComponent
|
||||
{
|
||||
public MountedPixieWhiteComponent() : base(0x2A79)
|
||||
{
|
||||
}
|
||||
|
||||
public MountedPixieWhiteComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x562, 0x564));
|
||||
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 MountedPixieWhiteAddon : BaseAddon
|
||||
{
|
||||
public MountedPixieWhiteAddon()
|
||||
{
|
||||
AddComponent(new MountedPixieWhiteComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public MountedPixieWhiteAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new MountedPixieWhiteDeed();
|
||||
|
||||
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 MountedPixieWhiteDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public MountedPixieWhiteDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public MountedPixieWhiteDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new MountedPixieWhiteAddon();
|
||||
public override int LabelNumber => 1074482; // Mounted pixie
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
using System;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[FlippableAddon(Direction.South, Direction.East)]
|
||||
public class SacrificialAltarAddon : BaseAddonContainer
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
[Constructible]
|
||||
public SacrificialAltarAddon() : base(0x2A9B)
|
||||
{
|
||||
Direction = Direction.South;
|
||||
|
||||
AddComponent(new LocalizedContainerComponent(0x2A9A, 1074818), 1, 0, 0);
|
||||
}
|
||||
|
||||
public SacrificialAltarAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonContainerDeed Deed => new SacrificialAltarDeed();
|
||||
public override int LabelNumber => 1074818; // Sacrificial Altar
|
||||
public override int DefaultMaxWeight => 0;
|
||||
public override int DefaultGumpID => 0x107;
|
||||
public override int DefaultDropSound => 0x42;
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
if (!base.OnDragDrop(from, dropped))
|
||||
return false;
|
||||
|
||||
if (TotalItems >= 50)
|
||||
{
|
||||
SendLocalizedMessageTo(from, 501478); // The trash is full! Emptying!
|
||||
Empty();
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLocalizedMessageTo(from, 1010442); // The item will be deleted in three minutes
|
||||
|
||||
m_Timer?.Stop();
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(3), Empty);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool OnDragDropInto(Mobile from, Item item, Point3D p)
|
||||
{
|
||||
if (!base.OnDragDropInto(from, item, p))
|
||||
return false;
|
||||
|
||||
if (TotalItems >= 50)
|
||||
{
|
||||
SendLocalizedMessageTo(from, 501478); // The trash is full! Emptying!
|
||||
Empty();
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLocalizedMessageTo(from, 1010442); // The item will be deleted in three minutes
|
||||
|
||||
m_Timer?.Stop();
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(3), Empty);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
if (Items.Count > 0)
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(3), Empty);
|
||||
}
|
||||
|
||||
public virtual void Flip(Mobile from, Direction direction)
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case Direction.East:
|
||||
ItemID = 0x2A9C;
|
||||
AddComponent(new LocalizedContainerComponent(0x2A9D, 1074818), 0, -1, 0);
|
||||
break;
|
||||
case Direction.South:
|
||||
ItemID = 0x2A9B;
|
||||
AddComponent(new LocalizedContainerComponent(0x2A9A, 1074818), 1, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void Empty()
|
||||
{
|
||||
if (Items.Count > 0)
|
||||
{
|
||||
Point3D location = Location;
|
||||
location.Z += 10;
|
||||
|
||||
Effects.SendLocationEffect(location, Map, 0x3709, 10, 10, 0x356, 0);
|
||||
Effects.PlaySound(location, Map, 0x32E);
|
||||
|
||||
if (Items.Count > 0)
|
||||
for (int i = Items.Count - 1; i >= 0; --i)
|
||||
{
|
||||
if (i >= Items.Count)
|
||||
continue;
|
||||
|
||||
Items[i].Delete();
|
||||
}
|
||||
}
|
||||
|
||||
m_Timer?.Stop();
|
||||
|
||||
m_Timer = null;
|
||||
}
|
||||
}
|
||||
|
||||
public class SacrificialAltarDeed : BaseAddonContainerDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SacrificialAltarDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public SacrificialAltarDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonContainer Addon => new SacrificialAltarAddon();
|
||||
public override int LabelNumber => 1074818; // Sacrificial Altar
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2A65, 0x2A67)]
|
||||
public class UnsettlingPortraitComponent : AddonComponent
|
||||
{
|
||||
private Timer m_Timer;
|
||||
|
||||
public UnsettlingPortraitComponent() : base(0x2A65)
|
||||
{
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3), ChangeDirection);
|
||||
}
|
||||
|
||||
public UnsettlingPortraitComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1074480; // Unsettling portrait
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (Utility.InRange(Location, from.Location, 2))
|
||||
Effects.PlaySound(Location, Map, Utility.RandomMinMax(0x567, 0x568));
|
||||
else
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
base.OnAfterDelete();
|
||||
|
||||
m_Timer?.Stop();
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3), ChangeDirection);
|
||||
}
|
||||
|
||||
private void ChangeDirection()
|
||||
{
|
||||
if (ItemID == 0x2A65)
|
||||
ItemID += 1;
|
||||
else if (ItemID == 0x2A66)
|
||||
ItemID -= 1;
|
||||
else if (ItemID == 0x2A67)
|
||||
ItemID += 1;
|
||||
else if (ItemID == 0x2A68)
|
||||
ItemID -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
public class UnsettlingPortraitAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public UnsettlingPortraitAddon()
|
||||
{
|
||||
AddComponent(new UnsettlingPortraitComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public UnsettlingPortraitAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new UnsettlingPortraitDeed();
|
||||
|
||||
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 UnsettlingPortraitDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public UnsettlingPortraitDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public UnsettlingPortraitDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new UnsettlingPortraitAddon();
|
||||
public override int LabelNumber => 1074480; // Unsettling portrait
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
130
Projects/Scripts/Items/Special/Gifts/HearthOfHomeFire.cs
Normal file
130
Projects/Scripts/Items/Special/Gifts/HearthOfHomeFire.cs
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class HearthOfHomeFire : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public HearthOfHomeFire(bool east)
|
||||
{
|
||||
if (east)
|
||||
{
|
||||
AddLightComponent(new AddonComponent(0x2352), 0, 0, 0);
|
||||
AddLightComponent(new AddonComponent(0x2358), 0, -1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
AddLightComponent(new AddonComponent(0x2360), 0, 0, 0);
|
||||
AddLightComponent(new AddonComponent(0x2366), -1, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public HearthOfHomeFire(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new HearthOfHomeFireDeed();
|
||||
|
||||
private void AddLightComponent(AddonComponent component, int x, int y, int z)
|
||||
{
|
||||
component.Light = LightType.Circle150;
|
||||
|
||||
AddComponent(component, x, y, z);
|
||||
}
|
||||
|
||||
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 HearthOfHomeFireDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public HearthOfHomeFireDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public HearthOfHomeFireDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new HearthOfHomeFire(m_East);
|
||||
|
||||
public override int LabelNumber => 1062919; // Hearth of the Home Fire
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private HearthOfHomeFireDeed m_Deed;
|
||||
|
||||
public InternalGump(HearthOfHomeFireDeed deed) : base(150, 50)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddBackground(0, 0, 350, 250, 0xA28);
|
||||
|
||||
AddItem(90, 52, 0x2367);
|
||||
AddItem(112, 35, 0x2360);
|
||||
AddButton(70, 35, 0x868, 0x869, 1); // South
|
||||
|
||||
AddItem(220, 35, 0x2352);
|
||||
AddItem(242, 52, 0x2358);
|
||||
AddButton(185, 35, 0x868, 0x869, 2); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed.Deleted || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Projects/Scripts/Items/Special/Gifts/HolySword.cs
Normal file
42
Projects/Scripts/Items/Special/Gifts/HolySword.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class HolySword : Longsword
|
||||
{
|
||||
[Constructible]
|
||||
public HolySword()
|
||||
{
|
||||
Hue = 0x482;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
Slayer = SlayerName.Silver;
|
||||
|
||||
Attributes.WeaponDamage = 40;
|
||||
WeaponAttributes.SelfRepair = 10;
|
||||
WeaponAttributes.LowerStatReq = 100;
|
||||
WeaponAttributes.UseBestSkill = 1;
|
||||
}
|
||||
|
||||
public HolySword(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062921; // The Holy Sword
|
||||
|
||||
public override int InitMinHits => 255;
|
||||
public override int InitMaxHits => 255;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
Projects/Scripts/Items/Special/Gifts/LeggingsOfEmbers.cs
Normal file
45
Projects/Scripts/Items/Special/Gifts/LeggingsOfEmbers.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class LeggingsOfEmbers : PlateLegs
|
||||
{
|
||||
[Constructible]
|
||||
public LeggingsOfEmbers()
|
||||
{
|
||||
Hue = 0x2C;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
ArmorAttributes.SelfRepair = 10;
|
||||
ArmorAttributes.MageArmor = 1;
|
||||
ArmorAttributes.LowerStatReq = 100;
|
||||
}
|
||||
|
||||
public LeggingsOfEmbers(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062911; // Royal Leggings of Embers
|
||||
|
||||
public override int BasePhysicalResistance => 15;
|
||||
public override int BaseFireResistance => 25;
|
||||
public override int BaseColdResistance => 0;
|
||||
public override int BasePoisonResistance => 15;
|
||||
public override int BaseEnergyResistance => 15;
|
||||
|
||||
public override int InitMinHits => 255;
|
||||
public override int InitMaxHits => 255;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
210
Projects/Scripts/Items/Special/Gifts/RoseOfTrinsic.cs
Normal file
210
Projects/Scripts/Items/Special/Gifts/RoseOfTrinsic.cs
Normal file
|
|
@ -0,0 +1,210 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x234C, 0x234D)]
|
||||
public class RoseOfTrinsic : Item, ISecurable
|
||||
{
|
||||
private static readonly TimeSpan m_SpawnTime = TimeSpan.FromHours(4.0);
|
||||
private DateTime m_NextSpawnTime;
|
||||
|
||||
private int m_Petals;
|
||||
private SpawnTimer m_SpawnTimer;
|
||||
|
||||
[Constructible]
|
||||
public RoseOfTrinsic() : base(0x234D)
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
m_Petals = 0;
|
||||
StartSpawnTimer(TimeSpan.FromMinutes(1.0));
|
||||
}
|
||||
|
||||
public RoseOfTrinsic(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062913; // Rose of Trinsic
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Petals
|
||||
{
|
||||
get => m_Petals;
|
||||
set
|
||||
{
|
||||
if (value >= 10)
|
||||
{
|
||||
m_Petals = 10;
|
||||
|
||||
StopSpawnTimer();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (value <= 0)
|
||||
m_Petals = 0;
|
||||
else
|
||||
m_Petals = value;
|
||||
|
||||
StartSpawnTimer(m_SpawnTime);
|
||||
}
|
||||
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level{ get; set; }
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1062925, Petals.ToString()); // Petals: ~1_COUNT~
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
private void StartSpawnTimer(TimeSpan delay)
|
||||
{
|
||||
StopSpawnTimer();
|
||||
|
||||
m_SpawnTimer = new SpawnTimer(this, delay);
|
||||
m_SpawnTimer.Start();
|
||||
|
||||
m_NextSpawnTime = DateTime.UtcNow + delay;
|
||||
}
|
||||
|
||||
private void StopSpawnTimer()
|
||||
{
|
||||
if (m_SpawnTimer != null)
|
||||
{
|
||||
m_SpawnTimer.Stop();
|
||||
m_SpawnTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
else if (Petals > 0)
|
||||
{
|
||||
from.AddToBackpack(new RoseOfTrinsicPetal(Petals));
|
||||
Petals = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
|
||||
writer.WriteEncodedInt(m_Petals);
|
||||
writer.WriteDeltaTime(m_NextSpawnTime);
|
||||
writer.WriteEncodedInt((int)Level);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
m_Petals = reader.ReadEncodedInt();
|
||||
m_NextSpawnTime = reader.ReadDeltaTime();
|
||||
Level = (SecureLevel)reader.ReadEncodedInt();
|
||||
|
||||
if (m_Petals < 10)
|
||||
StartSpawnTimer(m_NextSpawnTime - DateTime.UtcNow);
|
||||
}
|
||||
|
||||
private class SpawnTimer : Timer
|
||||
{
|
||||
private RoseOfTrinsic m_Rose;
|
||||
|
||||
public SpawnTimer(RoseOfTrinsic rose, TimeSpan delay) : base(delay)
|
||||
{
|
||||
m_Rose = rose;
|
||||
|
||||
Priority = TimerPriority.OneMinute;
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
if (m_Rose.Deleted)
|
||||
return;
|
||||
|
||||
m_Rose.m_SpawnTimer = null;
|
||||
m_Rose.Petals++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class RoseOfTrinsicPetal : Item
|
||||
{
|
||||
[Constructible]
|
||||
public RoseOfTrinsicPetal(int amount = 1) : base(0x1021)
|
||||
{
|
||||
Stackable = true;
|
||||
Amount = amount;
|
||||
|
||||
Weight = 1.0;
|
||||
Hue = 0xE;
|
||||
}
|
||||
|
||||
public RoseOfTrinsicPetal(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062926; // Petal of the Rose of Trinsic
|
||||
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1042038); // You must have the object in your backpack to use it.
|
||||
}
|
||||
else if (from.GetStatMod("RoseOfTrinsicPetal") != null)
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1062927); // You have eaten one of these recently and eating another would provide no benefit.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.PlaySound(0x1EE);
|
||||
from.AddStatMod(new StatMod(StatType.Str, "RoseOfTrinsicPetal", 5, TimeSpan.FromMinutes(5.0)));
|
||||
|
||||
Consume();
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
49
Projects/Scripts/Items/Special/Gifts/SamuraiHelm.cs
Normal file
49
Projects/Scripts/Items/Special/Gifts/SamuraiHelm.cs
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x236C, 0x236D)]
|
||||
public class SamuraiHelm : BaseArmor
|
||||
{
|
||||
[Constructible]
|
||||
public SamuraiHelm() : base(0x236C)
|
||||
{
|
||||
Weight = 5.0;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
Attributes.DefendChance = 15;
|
||||
ArmorAttributes.SelfRepair = 10;
|
||||
ArmorAttributes.LowerStatReq = 100;
|
||||
ArmorAttributes.MageArmor = 1;
|
||||
}
|
||||
|
||||
public SamuraiHelm(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062923; // Ancient Samurai Helm
|
||||
|
||||
public override int BasePhysicalResistance => 15;
|
||||
public override int BaseFireResistance => 10;
|
||||
public override int BaseColdResistance => 10;
|
||||
public override int BasePoisonResistance => 15;
|
||||
public override int BaseEnergyResistance => 10;
|
||||
|
||||
public override int InitMinHits => 255;
|
||||
public override int InitMaxHits => 255;
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
40
Projects/Scripts/Items/Special/Gifts/ShaminoCrossbow.cs
Normal file
40
Projects/Scripts/Items/Special/Gifts/ShaminoCrossbow.cs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class ShaminoCrossbow : RepeatingCrossbow
|
||||
{
|
||||
[Constructible]
|
||||
public ShaminoCrossbow()
|
||||
{
|
||||
Hue = 0x504;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
Attributes.AttackChance = 15;
|
||||
Attributes.WeaponDamage = 40;
|
||||
WeaponAttributes.SelfRepair = 10;
|
||||
WeaponAttributes.LowerStatReq = 100;
|
||||
}
|
||||
|
||||
public ShaminoCrossbow(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062915; // Shamino<6E>s Best Crossbow
|
||||
|
||||
public override int InitMinHits => 255;
|
||||
public override int InitMaxHits => 255;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
74
Projects/Scripts/Items/Special/Gifts/TapestryOfSosaria.cs
Normal file
74
Projects/Scripts/Items/Special/Gifts/TapestryOfSosaria.cs
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
using System.Collections.Generic;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x234E, 0x234F)]
|
||||
public class TapestryOfSosaria : Item, ISecurable
|
||||
{
|
||||
[Constructible]
|
||||
public TapestryOfSosaria() : base(0x234E)
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public TapestryOfSosaria(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1062917; // The Tapestry of Sosaria
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level{ get; set; }
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump());
|
||||
}
|
||||
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
|
||||
|
||||
writer.WriteEncodedInt((int)Level);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
Level = (SecureLevel)reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
public InternalGump() : base(50, 50)
|
||||
{
|
||||
AddImage(0, 0, 0x2C95);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
61
Projects/Scripts/Items/Special/Heritage Items/AppleTrunk.cs
Normal file
61
Projects/Scripts/Items/Special/Heritage Items/AppleTrunk.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class AppleTrunkAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public AppleTrunkAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xD98, 1076785), 0, 0, 0);
|
||||
}
|
||||
|
||||
public AppleTrunkAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new AppleTrunkDeed();
|
||||
|
||||
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 AppleTrunkDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public AppleTrunkDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public AppleTrunkDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AppleTrunkAddon();
|
||||
public override int LabelNumber => 1076785; // Apple Trunk
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BlueDecorativeRugAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BlueDecorativeRugAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xAD2, 1076589), 1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD3, 1076589), -1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD4, 1076589), -1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD5, 1076589), 1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD6, 1076589), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD7, 1076589), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD8, 1076589), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD9, 1076589), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD1, 1076589), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BlueDecorativeRugAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BlueDecorativeRugDeed();
|
||||
|
||||
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 BlueDecorativeRugDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BlueDecorativeRugDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BlueDecorativeRugDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BlueDecorativeRugAddon();
|
||||
public override int LabelNumber => 1076589; // Blue decorative rug
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BlueFancyRugAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BlueFancyRugAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xAC2, 1076273), 1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC3, 1076273), -1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC4, 1076273), -1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC5, 1076273), 1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF6, 1076273), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF7, 1076273), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF8, 1076273), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF9, 1076273), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAFA, 1076273), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BlueFancyRugAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BlueFancyRugDeed();
|
||||
|
||||
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 BlueFancyRugDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BlueFancyRugDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BlueFancyRugDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BlueFancyRugAddon();
|
||||
public override int LabelNumber => 1076273; // Blue fancy rug
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BluePlainRugAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public BluePlainRugAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xAC2, 1076585), 1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC3, 1076585), -1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC4, 1076585), -1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC5, 1076585), 1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF6, 1076585), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF7, 1076585), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF8, 1076585), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF9, 1076585), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC0, 1076585), 0, 0, 0);
|
||||
}
|
||||
|
||||
public BluePlainRugAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new BluePlainRugDeed();
|
||||
|
||||
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 BluePlainRugDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BluePlainRugDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BluePlainRugDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new BluePlainRugAddon();
|
||||
public override int LabelNumber => 1076585; // Blue plain rug
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2068, 0x207A)]
|
||||
public class BoilingCauldronAddon : BaseAddonContainer
|
||||
{
|
||||
[Constructible]
|
||||
public BoilingCauldronAddon() : base(0x2068)
|
||||
{
|
||||
AddComponent(new LocalizedContainerComponent(0xFAC, 1076267), 0, 0, 0);
|
||||
AddComponent(new LocalizedContainerComponent(0x970, 1076267), 0, 0, 8);
|
||||
}
|
||||
|
||||
public BoilingCauldronAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonContainerDeed Deed => new BoilingCauldronDeed();
|
||||
public override int LabelNumber => 1076267; // Boiling Cauldron
|
||||
public override int DefaultGumpID => 0x9;
|
||||
public override int DefaultDropSound => 0x42;
|
||||
|
||||
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 BoilingCauldronDeed : BaseAddonContainerDeed
|
||||
{
|
||||
[Constructible]
|
||||
public BoilingCauldronDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BoilingCauldronDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonContainer Addon => new BoilingCauldronAddon();
|
||||
public override int LabelNumber => 1076267; // Boiling Cauldron
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class CherryBlossomTreeAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public CherryBlossomTreeAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x26EE, 1076268), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x3122, 1076268), 0, 0, 0);
|
||||
}
|
||||
|
||||
public CherryBlossomTreeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new CherryBlossomTreeDeed();
|
||||
|
||||
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 CherryBlossomTreeDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public CherryBlossomTreeDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public CherryBlossomTreeDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new CherryBlossomTreeAddon();
|
||||
public override int LabelNumber => 1076268; // Cherry Blossom Tree
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class CherryBlossomTrunkAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public CherryBlossomTrunkAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x26EE, 1076784), 0, 0, 0);
|
||||
}
|
||||
|
||||
public CherryBlossomTrunkAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new CherryBlossomTrunkDeed();
|
||||
|
||||
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 CherryBlossomTrunkDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public CherryBlossomTrunkDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public CherryBlossomTrunkDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new CherryBlossomTrunkAddon();
|
||||
public override int LabelNumber => 1076784; // Cherry Blossom Trunk
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class CinnamonFancyRugAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public CinnamonFancyRugAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xAE3, 1076587), 1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE4, 1076587), -1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE5, 1076587), -1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE6, 1076587), 1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE7, 1076587), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE8, 1076587), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE9, 1076587), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAEA, 1076587), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAEB, 1076587), 0, 0, 0);
|
||||
}
|
||||
|
||||
public CinnamonFancyRugAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new CinnamonFancyRugDeed();
|
||||
|
||||
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 CinnamonFancyRugDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public CinnamonFancyRugDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public CinnamonFancyRugDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new CinnamonFancyRugAddon();
|
||||
public override int LabelNumber => 1076587; // Cinnamon fancy rug
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
203
Projects/Scripts/Items/Special/Heritage Items/Curtains.cs
Normal file
203
Projects/Scripts/Items/Special/Heritage Items/Curtains.cs
Normal file
|
|
@ -0,0 +1,203 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class CurtainsComponent : AddonComponent, IDyable
|
||||
{
|
||||
public CurtainsComponent(int itemID, int closedID) : base(itemID)
|
||||
{
|
||||
ClosedID = closedID;
|
||||
}
|
||||
|
||||
public CurtainsComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076280; // Curtains
|
||||
public override bool DisplayWeight => false;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ClosedID{ get; set; }
|
||||
|
||||
#region IDyable
|
||||
|
||||
public virtual bool Dye(Mobile from, DyeTub sender)
|
||||
{
|
||||
if (Deleted)
|
||||
return false;
|
||||
|
||||
Hue = sender.DyedHue;
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
base.OnDoubleClick(from);
|
||||
|
||||
if (Addon != null)
|
||||
if (from.InRange(Location, 1))
|
||||
foreach (AddonComponent c in Addon.Components)
|
||||
if (c is CurtainsComponent curtain)
|
||||
{
|
||||
int temp = curtain.ItemID;
|
||||
curtain.ItemID = curtain.ClosedID;
|
||||
curtain.ClosedID = temp;
|
||||
}
|
||||
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
|
||||
|
||||
writer.Write(ClosedID);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
ClosedID = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class CurtainsAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public CurtainsAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new CurtainsComponent(0x3D9E, 0x3DA8), 0, -1, 0);
|
||||
AddComponent(new CurtainsComponent(0x3DAC, 0x3DAE), 0, 0, 0);
|
||||
AddComponent(new CurtainsComponent(0x3DA0, 0x3DA6), 0, 2, 0);
|
||||
AddComponent(new CurtainsComponent(0x3D9F, 0x3DA7), 0, 1, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new CurtainsComponent(0x3D9C, 0x3DAD), 0, 0, 0);
|
||||
AddComponent(new CurtainsComponent(0x3D9D, 0x3DA3), -1, 0, 0);
|
||||
AddComponent(new CurtainsComponent(0x3DA1, 0x3DA5), 2, 0, 0);
|
||||
AddComponent(new CurtainsComponent(0x3DAB, 0x3DA4), 1, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public CurtainsAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new CurtainsDeed();
|
||||
public override bool RetainDeedHue => true;
|
||||
|
||||
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 CurtainsDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public CurtainsDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public CurtainsDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new CurtainsAddon(m_East);
|
||||
public override int LabelNumber => 1076280; // Curtains
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private CurtainsDeed m_Deed;
|
||||
|
||||
public InternalGump(CurtainsDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076581, 0x7FFF); // Please select your curtain position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Special/Heritage Items/Fountain.cs
Normal file
60
Projects/Scripts/Items/Special/Heritage Items/Fountain.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class FountainAddon : StoneFountainAddon
|
||||
{
|
||||
[Constructible]
|
||||
public FountainAddon()
|
||||
{
|
||||
}
|
||||
|
||||
public FountainAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new FountainDeed();
|
||||
|
||||
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 FountainDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public FountainDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public FountainDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new FountainAddon();
|
||||
public override int LabelNumber => 1076283; // Fountain
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
218
Projects/Scripts/Items/Special/Heritage Items/FruitTrees.cs
Normal file
218
Projects/Scripts/Items/Special/Heritage Items/FruitTrees.cs
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public abstract class BaseFruitTreeAddon : BaseAddon
|
||||
{
|
||||
private int m_Fruits;
|
||||
|
||||
public BaseFruitTreeAddon()
|
||||
{
|
||||
Timer.DelayCall(TimeSpan.FromMinutes(5), Respawn);
|
||||
}
|
||||
|
||||
public BaseFruitTreeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public abstract override BaseAddonDeed Deed{ get; }
|
||||
public abstract Item Fruit{ get; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Fruits
|
||||
{
|
||||
get => m_Fruits;
|
||||
set
|
||||
{
|
||||
if (value < 0)
|
||||
m_Fruits = 0;
|
||||
else
|
||||
m_Fruits = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnComponentUsed(AddonComponent c, Mobile from)
|
||||
{
|
||||
if (from.InRange(c.Location, 2))
|
||||
{
|
||||
if (m_Fruits > 0)
|
||||
{
|
||||
Item fruit = Fruit;
|
||||
|
||||
if (fruit == null)
|
||||
return;
|
||||
|
||||
if (!from.PlaceInBackpack(fruit))
|
||||
{
|
||||
fruit.Delete();
|
||||
from.SendLocalizedMessage(501015); // There is no room in your backpack for the fruit.
|
||||
}
|
||||
else
|
||||
{
|
||||
if (--m_Fruits == 0)
|
||||
Timer.DelayCall(TimeSpan.FromMinutes(30), Respawn);
|
||||
|
||||
from.SendLocalizedMessage(501016); // You pick some fruit and put it in your backpack.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(501017); // There is no more fruit on this tree
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
}
|
||||
}
|
||||
|
||||
private void Respawn()
|
||||
{
|
||||
m_Fruits = Utility.RandomMinMax(1, 4);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
|
||||
writer.Write(m_Fruits);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
|
||||
m_Fruits = reader.ReadInt();
|
||||
|
||||
if (m_Fruits == 0)
|
||||
Respawn();
|
||||
}
|
||||
}
|
||||
|
||||
public class AppleTreeAddon : BaseFruitTreeAddon
|
||||
{
|
||||
[Constructible]
|
||||
public AppleTreeAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xD98, 1076269), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x3124, 1076269), 0, 0, 0);
|
||||
}
|
||||
|
||||
public AppleTreeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new AppleTreeDeed();
|
||||
public override Item Fruit => new Apple();
|
||||
|
||||
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 AppleTreeDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public AppleTreeDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public AppleTreeDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new AppleTreeAddon();
|
||||
public override int LabelNumber => 1076269; // Apple Tree
|
||||
|
||||
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 PeachTreeAddon : BaseFruitTreeAddon
|
||||
{
|
||||
[Constructible]
|
||||
public PeachTreeAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xD9C, 1076270), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x3123, 1076270), 0, 0, 0);
|
||||
}
|
||||
|
||||
public PeachTreeAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new PeachTreeDeed();
|
||||
public override Item Fruit => new Peach();
|
||||
|
||||
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 PeachTreeDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PeachTreeDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public PeachTreeDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PeachTreeAddon();
|
||||
public override int LabelNumber => 1076270; // Peach Tree
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class GoldenDecorativeRugAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public GoldenDecorativeRugAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xADB, 1076586), 1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xADC, 1076586), -1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xADD, 1076586), -1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xADE, 1076586), 1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xADF, 1076586), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE0, 1076586), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE1, 1076586), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAE2, 1076586), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xADA, 1076586), 0, 0, 0);
|
||||
}
|
||||
|
||||
public GoldenDecorativeRugAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new GoldenDecorativeRugDeed();
|
||||
|
||||
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 GoldenDecorativeRugDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public GoldenDecorativeRugDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public GoldenDecorativeRugDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new GoldenDecorativeRugAddon();
|
||||
public override int LabelNumber => 1076586; // Golden decorative rug
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
167
Projects/Scripts/Items/Special/Heritage Items/Guillotine.cs
Normal file
167
Projects/Scripts/Items/Special/Heritage Items/Guillotine.cs
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Spells;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x125E, 0x1230)]
|
||||
public class GuillotineComponent : AddonComponent
|
||||
{
|
||||
public GuillotineComponent() : base(0x125E)
|
||||
{
|
||||
}
|
||||
|
||||
public GuillotineComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1024656; // Guillotine
|
||||
|
||||
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 GuillotineAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public GuillotineAddon()
|
||||
{
|
||||
AddComponent(new GuillotineComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public GuillotineAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new GuillotineDeed();
|
||||
|
||||
public override void OnComponentUsed(AddonComponent c, Mobile from)
|
||||
{
|
||||
if (from.InRange(Location, 2))
|
||||
{
|
||||
if (Utility.RandomBool())
|
||||
{
|
||||
from.Location = Location;
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.5), () => Activate(c, from));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0,
|
||||
501777); // Hmm... you suspect that if you used this again, it might hurt.
|
||||
}
|
||||
}
|
||||
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 virtual void Activate(AddonComponent c, Mobile from)
|
||||
{
|
||||
if (c.ItemID == 0x125E || c.ItemID == 0x1269 || c.ItemID == 0x1260)
|
||||
c.ItemID = 0x1269;
|
||||
else
|
||||
c.ItemID = 0x1247;
|
||||
|
||||
// blood
|
||||
int amount = Utility.RandomMinMax(3, 7);
|
||||
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
int x = c.X + Utility.RandomMinMax(-1, 1);
|
||||
int y = c.Y + Utility.RandomMinMax(-1, 1);
|
||||
int z = c.Z;
|
||||
|
||||
if (!c.Map.CanFit(x, y, z, 1, false, false))
|
||||
{
|
||||
z = c.Map.GetAverageZ(x, y);
|
||||
|
||||
if (!c.Map.CanFit(x, y, z, 1, false, false))
|
||||
continue;
|
||||
}
|
||||
|
||||
Blood blood = new Blood(Utility.RandomMinMax(0x122C, 0x122F));
|
||||
blood.MoveToWorld(new Point3D(x, y, z), c.Map);
|
||||
}
|
||||
|
||||
if (from.Female)
|
||||
from.PlaySound(Utility.RandomMinMax(0x150, 0x153));
|
||||
else
|
||||
from.PlaySound(Utility.RandomMinMax(0x15A, 0x15D));
|
||||
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0,
|
||||
501777); // Hmm... you suspect that if you used this again, it might hurt.
|
||||
SpellHelper.Damage(TimeSpan.Zero, from, Utility.Dice(2, 10, 5));
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.5), TimeSpan.FromSeconds(0.5), 2, Deactivate, c);
|
||||
}
|
||||
|
||||
private void Deactivate(AddonComponent c)
|
||||
{
|
||||
if (c.ItemID == 0x1269)
|
||||
c.ItemID = 0x1260;
|
||||
else if (c.ItemID == 0x1260)
|
||||
c.ItemID = 0x125E;
|
||||
else if (c.ItemID == 0x1247)
|
||||
c.ItemID = 0x1246;
|
||||
else if (c.ItemID == 0x1246)
|
||||
c.ItemID = 0x1230;
|
||||
}
|
||||
}
|
||||
|
||||
public class GuillotineDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public GuillotineDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public GuillotineDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new GuillotineAddon();
|
||||
public override int LabelNumber => 1024656; // Guillotine
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
130
Projects/Scripts/Items/Special/Heritage Items/HangingAxes.cs
Normal file
130
Projects/Scripts/Items/Special/Heritage Items/HangingAxes.cs
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class HangingAxesAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public HangingAxesAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x156A, 1076271), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x156B, 1076271), 0, -1, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x1568, 1076271), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x1569, 1076271), 1, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public HangingAxesAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new HangingAxesDeed();
|
||||
|
||||
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 HangingAxesDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public HangingAxesDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public HangingAxesDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new HangingAxesAddon(m_East);
|
||||
public override int LabelNumber => 1076271; // Hanging Axes
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private HangingAxesDeed m_Deed;
|
||||
|
||||
public InternalGump(HangingAxesDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076745, 0x7FFF); // Please select your hanging axe position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
130
Projects/Scripts/Items/Special/Heritage Items/HangingSwords.cs
Normal file
130
Projects/Scripts/Items/Special/Heritage Items/HangingSwords.cs
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class HangingSwordsAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public HangingSwordsAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x1566, 1076272), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x1567, 1076272), 0, -1, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x1564, 1076272), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x1565, 1076272), 1, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public HangingSwordsAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new HangingSwordsDeed();
|
||||
|
||||
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 HangingSwordsDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public HangingSwordsDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public HangingSwordsDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new HangingSwordsAddon(m_East);
|
||||
public override int LabelNumber => 1076272; // Hanging Swords
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private HangingSwordsDeed m_Deed;
|
||||
|
||||
public InternalGump(HangingSwordsDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076746, 0x7FFF); // Please select your hanging sword position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
167
Projects/Scripts/Items/Special/Heritage Items/HouseLadder.cs
Normal file
167
Projects/Scripts/Items/Special/Heritage Items/HouseLadder.cs
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class HouseLadderAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public HouseLadderAddon(int type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case 0: // castle south
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB2, 1076791), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x3F28, 1076791), 0, 1, 28);
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB4, 1076791), 0, 2, 20);
|
||||
break;
|
||||
case 1: // castle east
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB3, 1076791), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x3F28, 1076791), 1, 0, 28);
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB5, 1076791), 2, 0, 20);
|
||||
break;
|
||||
case 2: // castle north
|
||||
AddComponent(new LocalizedAddonComponent(0x2FDF, 1076791), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x3F28, 1076791), 0, -1, 28);
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB6, 1076791), 0, -2, 20);
|
||||
break;
|
||||
case 3: // castle west
|
||||
AddComponent(new LocalizedAddonComponent(0x2FDE, 1076791), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x3F28, 1076791), -1, 0, 28);
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB7, 1076791), -2, 0, 20);
|
||||
break;
|
||||
case 4: // south
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB2, 1076287), 0, 0, 0);
|
||||
break;
|
||||
case 5: // east
|
||||
AddComponent(new LocalizedAddonComponent(0x3DB3, 1076287), 0, 0, 0);
|
||||
break;
|
||||
case 6: // north
|
||||
AddComponent(new LocalizedAddonComponent(0x2FDF, 1076287), 0, 0, 0);
|
||||
break;
|
||||
case 7: // west
|
||||
AddComponent(new LocalizedAddonComponent(0x2FDE, 1076287), 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public HouseLadderAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new HouseLadderDeed();
|
||||
|
||||
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 HouseLadderDeed : BaseAddonDeed
|
||||
{
|
||||
private int m_Type;
|
||||
|
||||
[Constructible]
|
||||
public HouseLadderDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public HouseLadderDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new HouseLadderAddon(m_Type);
|
||||
public override int LabelNumber => 1076287; // Ladder
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private HouseLadderDeed m_Deed;
|
||||
|
||||
public InternalGump(HouseLadderDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076780, 0x7FFF); // Please select your ladder position. <br>Use the ladders marked (castle) <br> for accessing the tops of keeps <br> and castles.
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1076794, 0x7FFF); // South (Castle)
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1076795, 0x7FFF); // East (Castle)
|
||||
AddButton(19, 97, 0x845, 0x846, 3);
|
||||
AddHtmlLocalized(44, 95, 213, 20, 1076792, 0x7FFF); // North (Castle)
|
||||
AddButton(19, 121, 0x845, 0x846, 4);
|
||||
AddHtmlLocalized(44, 119, 213, 20, 1076793, 0x7FFF); // West (Castle)
|
||||
AddButton(19, 145, 0x845, 0x846, 5);
|
||||
AddHtmlLocalized(44, 143, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 169, 0x845, 0x846, 6);
|
||||
AddHtmlLocalized(44, 167, 213, 20, 1075387, 0x7FFF); // East
|
||||
AddButton(19, 193, 0x845, 0x846, 7);
|
||||
AddHtmlLocalized(44, 191, 213, 20, 1075389, 0x7FFF); // North
|
||||
AddButton(19, 217, 0x845, 0x846, 8);
|
||||
AddHtmlLocalized(44, 215, 213, 20, 1075390, 0x7FFF); // West
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0 || info.ButtonID < 1 || info.ButtonID > 8)
|
||||
return;
|
||||
|
||||
m_Deed.m_Type = info.ButtonID - 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
127
Projects/Scripts/Items/Special/Heritage Items/IronMaiden.cs
Normal file
127
Projects/Scripts/Items/Special/Heritage Items/IronMaiden.cs
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
using System;
|
||||
using Server.Network;
|
||||
using Server.Spells;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class IronMaidenAddon : BaseAddon
|
||||
{
|
||||
public IronMaidenAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x1249, 1076288), 0, 0, 0);
|
||||
}
|
||||
|
||||
public IronMaidenAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new IronMaidenDeed();
|
||||
|
||||
public override void OnComponentUsed(AddonComponent c, Mobile from)
|
||||
{
|
||||
if (from.InRange(GetWorldLocation(), 2) && from.InLOS(GetWorldLocation()))
|
||||
{
|
||||
if (Utility.RandomBool())
|
||||
{
|
||||
from.Location = Location;
|
||||
c.ItemID = 0x124A;
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.5), TimeSpan.FromSeconds(0.5), 3, () => Activate(c, from));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0,
|
||||
501777); // Hmm... you suspect that if you used this again, it might hurt.
|
||||
}
|
||||
}
|
||||
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 virtual void Activate(AddonComponent c, Mobile from)
|
||||
{
|
||||
c.ItemID += 1;
|
||||
|
||||
if (c.ItemID < 0x124D)
|
||||
return;
|
||||
|
||||
// blood
|
||||
int amount = Utility.RandomMinMax(3, 7);
|
||||
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
int x = c.X + Utility.RandomMinMax(-1, 1);
|
||||
int y = c.Y + Utility.RandomMinMax(-1, 1);
|
||||
int z = c.Z;
|
||||
|
||||
if (!c.Map.CanFit(x, y, z, 1, false, false))
|
||||
{
|
||||
z = c.Map.GetAverageZ(x, y);
|
||||
|
||||
if (!c.Map.CanFit(x, y, z, 1, false, false))
|
||||
continue;
|
||||
}
|
||||
|
||||
Blood blood = new Blood(Utility.RandomMinMax(0x122C, 0x122F));
|
||||
blood.MoveToWorld(new Point3D(x, y, z), c.Map);
|
||||
}
|
||||
|
||||
if (from.Female)
|
||||
from.PlaySound(Utility.RandomMinMax(0x150, 0x153));
|
||||
else
|
||||
from.PlaySound(Utility.RandomMinMax(0x15A, 0x15D));
|
||||
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0,
|
||||
501777); // Hmm... you suspect that if you used this again, it might hurt.
|
||||
SpellHelper.Damage(TimeSpan.Zero, from, Utility.Dice(2, 10, 5));
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(1), () => c.ItemID = 0x1249);
|
||||
}
|
||||
}
|
||||
|
||||
public class IronMaidenDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public IronMaidenDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public IronMaidenDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new IronMaidenAddon();
|
||||
public override int LabelNumber => 1076288; // Iron Maiden
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x3D8E, 0x3D8F)]
|
||||
public class LargeFishingNetComponent : AddonComponent
|
||||
{
|
||||
public LargeFishingNetComponent() : base(0x3D8E)
|
||||
{
|
||||
}
|
||||
|
||||
public LargeFishingNetComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076285; // Large Fish Net
|
||||
|
||||
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 LargeFishingNetAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public LargeFishingNetAddon()
|
||||
{
|
||||
AddComponent(new LargeFishingNetComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public LargeFishingNetAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new LargeFishingNetDeed();
|
||||
|
||||
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 LargeFishingNetDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public LargeFishingNetDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public LargeFishingNetDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new LargeFishingNetAddon();
|
||||
public override int LabelNumber => 1076285; // Large Fish Net
|
||||
|
||||
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/Special/Heritage Items/PeachTrunk.cs
Normal file
61
Projects/Scripts/Items/Special/Heritage Items/PeachTrunk.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class PeachTrunkAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public PeachTrunkAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xD9C, 1076786), 0, 0, 0);
|
||||
}
|
||||
|
||||
public PeachTrunkAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new PeachTrunkDeed();
|
||||
|
||||
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 PeachTrunkDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PeachTrunkDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public PeachTrunkDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PeachTrunkAddon();
|
||||
public override int LabelNumber => 1076786; // Peach Trunk
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class PinkFancyRugAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public PinkFancyRugAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xAEE, 1076590), 1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAEF, 1076590), -1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF0, 1076590), -1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF1, 1076590), 1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF2, 1076590), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF3, 1076590), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF4, 1076590), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAF5, 1076590), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAEC, 1076590), 0, 0, 0);
|
||||
}
|
||||
|
||||
public PinkFancyRugAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new PinkFancyRugDeed();
|
||||
|
||||
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 PinkFancyRugDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public PinkFancyRugDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public PinkFancyRugDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new PinkFancyRugAddon();
|
||||
public override int LabelNumber => 1076590; // Pink fancy rug
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
69
Projects/Scripts/Items/Special/Heritage Items/RedPlainRug.cs
Normal file
69
Projects/Scripts/Items/Special/Heritage Items/RedPlainRug.cs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class RedPlainRugAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public RedPlainRugAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xAC9, 1076588), 1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xACA, 1076588), -1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xACB, 1076588), -1, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xACC, 1076588), 1, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xACD, 1076588), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xACE, 1076588), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xACF, 1076588), 1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAD0, 1076588), 0, 1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xAC6, 1076588), 0, 0, 0);
|
||||
}
|
||||
|
||||
public RedPlainRugAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new RedPlainRugDeed();
|
||||
|
||||
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 RedPlainRugDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public RedPlainRugDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public RedPlainRugDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new RedPlainRugAddon();
|
||||
public override int LabelNumber => 1076588; // Red plain rug
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
89
Projects/Scripts/Items/Special/Heritage Items/Scarecrow.cs
Normal file
89
Projects/Scripts/Items/Special/Heritage Items/Scarecrow.cs
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x1E34, 0x1E35)]
|
||||
public class ScarecrowComponent : AddonComponent
|
||||
{
|
||||
public ScarecrowComponent() : base(0x1E34)
|
||||
{
|
||||
}
|
||||
|
||||
public ScarecrowComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076608; // Scarecrow
|
||||
|
||||
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 ScarecrowAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public ScarecrowAddon()
|
||||
{
|
||||
AddComponent(new ScarecrowComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public ScarecrowAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new ScarecrowDeed();
|
||||
|
||||
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 ScarecrowDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public ScarecrowDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public ScarecrowDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new ScarecrowAddon();
|
||||
public override int LabelNumber => 1076608; // Scarecrow
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x1EA3, 0x1EA4)]
|
||||
public class SmallFishingNetComponent : AddonComponent
|
||||
{
|
||||
public SmallFishingNetComponent() : base(0x1EA3)
|
||||
{
|
||||
}
|
||||
|
||||
public SmallFishingNetComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076286; // Small Fish Net
|
||||
|
||||
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 SmallFishingNetAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SmallFishingNetAddon()
|
||||
{
|
||||
AddComponent(new SmallFishingNetComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SmallFishingNetAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SmallFishingNetDeed();
|
||||
|
||||
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 SmallFishingNetDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SmallFishingNetDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public SmallFishingNetDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SmallFishingNetAddon();
|
||||
public override int LabelNumber => 1076286; // Small Fish Net
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
132
Projects/Scripts/Items/Special/Heritage Items/Statue.cs
Normal file
132
Projects/Scripts/Items/Special/Heritage Items/Statue.cs
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class StoneStatueAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public StoneStatueAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x139E, 1076284), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x139F, 1076284), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x13A0, 1076284), 0, -1, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x129F, 1076284), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x12A0, 1076284), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0x12A1, 1076284), -1, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public StoneStatueAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new StoneStatueDeed();
|
||||
|
||||
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 StoneStatueDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public StoneStatueDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public StoneStatueDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new StoneStatueAddon(m_East);
|
||||
public override int LabelNumber => 1076284; // Statue
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private StoneStatueDeed m_Deed;
|
||||
|
||||
public InternalGump(StoneStatueDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076579, 0x7FFF); // Please select your statue position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x3DAA, 0x3DA9)]
|
||||
public class SuitOfGoldArmorComponent : AddonComponent
|
||||
{
|
||||
public SuitOfGoldArmorComponent() : base(0x3DAA)
|
||||
{
|
||||
}
|
||||
|
||||
public SuitOfGoldArmorComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076265; // Suit of Gold Armor
|
||||
|
||||
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 SuitOfGoldArmorAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SuitOfGoldArmorAddon()
|
||||
{
|
||||
AddComponent(new SuitOfGoldArmorComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SuitOfGoldArmorAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SuitOfGoldArmorDeed();
|
||||
|
||||
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 SuitOfGoldArmorDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SuitOfGoldArmorDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public SuitOfGoldArmorDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SuitOfGoldArmorAddon();
|
||||
public override int LabelNumber => 1076265; // Suit of Gold Armor
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x3D86, 0x3D87)]
|
||||
public class SuitOfSilverArmorComponent : AddonComponent
|
||||
{
|
||||
public SuitOfSilverArmorComponent() : base(0x3D86)
|
||||
{
|
||||
}
|
||||
|
||||
public SuitOfSilverArmorComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076266; // Suit of Silver Armor
|
||||
|
||||
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 SuitOfSilverArmorAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public SuitOfSilverArmorAddon()
|
||||
{
|
||||
AddComponent(new SuitOfSilverArmorComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public SuitOfSilverArmorAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new SuitOfSilverArmorDeed();
|
||||
|
||||
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 SuitOfSilverArmorDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public SuitOfSilverArmorDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public SuitOfSilverArmorDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new SuitOfSilverArmorAddon();
|
||||
public override int LabelNumber => 1076266; // Suit of Silver Armor
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class TableWithBlueClothAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithBlueClothAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x118C, 1076276), 0, 0, 0);
|
||||
}
|
||||
|
||||
public TableWithBlueClothAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new TableWithBlueClothDeed();
|
||||
|
||||
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 TableWithBlueClothDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithBlueClothDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public TableWithBlueClothDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TableWithBlueClothAddon();
|
||||
public override int LabelNumber => 1076276; // Table With A Blue Tablecloth
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class TableWithOrangeClothAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithOrangeClothAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x118E, 1076278), 0, 0, 0);
|
||||
}
|
||||
|
||||
public TableWithOrangeClothAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new TableWithOrangeClothDeed();
|
||||
|
||||
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 TableWithOrangeClothDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithOrangeClothDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public TableWithOrangeClothDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TableWithOrangeClothAddon();
|
||||
public override int LabelNumber => 1076278; // Table With An Orange Tablecloth
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class TableWithPurpleClothAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithPurpleClothAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x118B, 1076275), 0, 0, 0);
|
||||
}
|
||||
|
||||
public TableWithPurpleClothAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new TableWithPurpleClothDeed();
|
||||
|
||||
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 TableWithPurpleClothDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithPurpleClothDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public TableWithPurpleClothDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TableWithPurpleClothAddon();
|
||||
public override int LabelNumber => 1076275; // Table With A Purple Tablecloth
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class TableWithRedClothAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithRedClothAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0x118D, 1076277), 0, 0, 0);
|
||||
}
|
||||
|
||||
public TableWithRedClothAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new TableWithRedClothDeed();
|
||||
|
||||
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 TableWithRedClothDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public TableWithRedClothDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public TableWithRedClothDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new TableWithRedClothAddon();
|
||||
public override int LabelNumber => 1076277; // Table With A Red Tablecloth
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
134
Projects/Scripts/Items/Special/Heritage Items/UnmadeBed.cs
Normal file
134
Projects/Scripts/Items/Special/Heritage Items/UnmadeBed.cs
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class UnmadeBedAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public UnmadeBedAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xA8C, 1076279), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xA8D, 1076279), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xA90, 1076279), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xA91, 1076279), -1, -1, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(0xDB0, 1076279), 0, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xDB1, 1076279), -1, 0, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xDB4, 1076279), 0, -1, 0);
|
||||
AddComponent(new LocalizedAddonComponent(0xDB5, 1076279), -1, -1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public UnmadeBedAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new UnmadeBedDeed();
|
||||
|
||||
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 UnmadeBedDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public UnmadeBedDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public UnmadeBedDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new UnmadeBedAddon(m_East);
|
||||
public override int LabelNumber => 1076279; // Unmade Bed
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private UnmadeBedDeed m_Deed;
|
||||
|
||||
public InternalGump(UnmadeBedDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076580, 0x7FFF); // Pleae select your unmade bed position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
127
Projects/Scripts/Items/Special/Heritage Items/Vanity.cs
Normal file
127
Projects/Scripts/Items/Special/Heritage Items/Vanity.cs
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class VanityAddon : BaseAddonContainer
|
||||
{
|
||||
[Constructible]
|
||||
public VanityAddon(bool east) : base(east ? 0xA44 : 0xA3C)
|
||||
{
|
||||
if (east) // east
|
||||
AddComponent(new AddonContainerComponent(0xA45), 0, -1, 0);
|
||||
else // south
|
||||
AddComponent(new AddonContainerComponent(0xA3D), -1, 0, 0);
|
||||
}
|
||||
|
||||
public VanityAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonContainerDeed Deed => new VanityDeed();
|
||||
public override int LabelNumber => 1074027; // Vanity
|
||||
public override int DefaultGumpID => 0x51;
|
||||
public override int DefaultDropSound => 0x42;
|
||||
|
||||
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 VanityDeed : BaseAddonContainerDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public VanityDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public VanityDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonContainer Addon => new VanityAddon(m_East);
|
||||
public override int LabelNumber => 1074027; // Vanity
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private VanityDeed m_Deed;
|
||||
|
||||
public InternalGump(VanityDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076744, 0x7FFF); // Please select your vanity position.
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
119
Projects/Scripts/Items/Special/Heritage Items/WallTorch.cs
Normal file
119
Projects/Scripts/Items/Special/Heritage Items/WallTorch.cs
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x3D98, 0x3D94)]
|
||||
public class WallTorchComponent : AddonComponent
|
||||
{
|
||||
public WallTorchComponent() : base(0x3D98)
|
||||
{
|
||||
}
|
||||
|
||||
public WallTorchComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076282; // Wall Torch
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (from.InRange(Location, 2))
|
||||
{
|
||||
switch (ItemID)
|
||||
{
|
||||
case 0x3D98:
|
||||
ItemID = 0x3D9B;
|
||||
break;
|
||||
case 0x3D9B:
|
||||
ItemID = 0x3D98;
|
||||
break;
|
||||
case 0x3D94:
|
||||
ItemID = 0x3D97;
|
||||
break;
|
||||
case 0x3D97:
|
||||
ItemID = 0x3D94;
|
||||
break;
|
||||
}
|
||||
|
||||
Effects.PlaySound(Location, Map, 0x3BE);
|
||||
}
|
||||
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 WallTorchAddon : BaseAddon
|
||||
{
|
||||
public WallTorchAddon()
|
||||
{
|
||||
AddComponent(new WallTorchComponent(), 0, 0, 0);
|
||||
}
|
||||
|
||||
public WallTorchAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new WallTorchDeed();
|
||||
|
||||
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 WallTorchDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public WallTorchDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public WallTorchDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new WallTorchAddon();
|
||||
public override int LabelNumber => 1076282; // Wall Torch
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
159
Projects/Scripts/Items/Special/Heritage Items/WoodenCoffin.cs
Normal file
159
Projects/Scripts/Items/Special/Heritage Items/WoodenCoffin.cs
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class WoodenCoffinComponent : AddonComponent
|
||||
{
|
||||
public WoodenCoffinComponent(int itemID) : base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public WoodenCoffinComponent(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076274; // Coffin
|
||||
|
||||
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 WoodenCoffinAddon : BaseAddon
|
||||
{
|
||||
[Constructible]
|
||||
public WoodenCoffinAddon(bool east)
|
||||
{
|
||||
if (east) // east
|
||||
{
|
||||
AddComponent(new WoodenCoffinComponent(0x1C41), 0, 0, 0);
|
||||
AddComponent(new WoodenCoffinComponent(0x1C42), 1, 0, 0);
|
||||
AddComponent(new WoodenCoffinComponent(0x1C43), 2, 0, 0);
|
||||
}
|
||||
else // south
|
||||
{
|
||||
AddComponent(new WoodenCoffinComponent(0x1C4F), 0, 0, 0);
|
||||
AddComponent(new WoodenCoffinComponent(0x1C50), 0, 1, 0);
|
||||
AddComponent(new WoodenCoffinComponent(0x1C51), 0, 2, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public WoodenCoffinAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new WoodenCoffinDeed();
|
||||
|
||||
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 WoodenCoffinDeed : BaseAddonDeed
|
||||
{
|
||||
private bool m_East;
|
||||
|
||||
[Constructible]
|
||||
public WoodenCoffinDeed()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public WoodenCoffinDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddon Addon => new WoodenCoffinAddon(m_East);
|
||||
public override int LabelNumber => 1076274; // Coffin
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
private void SendTarget(Mobile m)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private WoodenCoffinDeed m_Deed;
|
||||
|
||||
public InternalGump(WoodenCoffinDeed deed) : base(60, 36)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
AddPage(0);
|
||||
|
||||
AddBackground(0, 0, 273, 324, 0x13BE);
|
||||
AddImageTiled(10, 10, 253, 20, 0xA40);
|
||||
AddImageTiled(10, 40, 253, 244, 0xA40);
|
||||
AddImageTiled(10, 294, 253, 20, 0xA40);
|
||||
AddAlphaRegion(10, 10, 253, 304);
|
||||
AddButton(10, 294, 0xFB1, 0xFB2, 0);
|
||||
AddHtmlLocalized(45, 296, 450, 20, 1060051, 0x7FFF); // CANCEL
|
||||
AddHtmlLocalized(14, 12, 273, 20, 1076748, 0x7FFF); // Please select your coffin position
|
||||
|
||||
AddPage(1);
|
||||
|
||||
AddButton(19, 49, 0x845, 0x846, 1);
|
||||
AddHtmlLocalized(44, 47, 213, 20, 1075386, 0x7FFF); // South
|
||||
AddButton(19, 73, 0x845, 0x846, 2);
|
||||
AddHtmlLocalized(44, 71, 213, 20, 1075387, 0x7FFF); // East
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false || info.ButtonID == 0)
|
||||
return;
|
||||
|
||||
m_Deed.m_East = info.ButtonID != 1;
|
||||
m_Deed.SendTarget(sender.Mobile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
58
Projects/Scripts/Items/Special/HeritageToken.cs
Normal file
58
Projects/Scripts/Items/Special/HeritageToken.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
using Server.Gumps;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public interface ITokunoDyable
|
||||
{
|
||||
}
|
||||
|
||||
public class HeritageToken : Item
|
||||
{
|
||||
[Constructible]
|
||||
public HeritageToken() : base(0x367A)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Weight = 5.0;
|
||||
}
|
||||
|
||||
public HeritageToken(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1076596; // A Heritage Token
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<HeritageTokenGump>();
|
||||
from.SendGump(new HeritageTokenGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1070998, $"#{1076595}"); // Use this to redeem<br>Your Heritage Items
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
300
Projects/Scripts/Items/Special/Holiday/Christmas/HolidayTree.cs
Normal file
300
Projects/Scripts/Items/Special/Holiday/Christmas/HolidayTree.cs
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Server.Multis;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public enum HolidayTreeType
|
||||
{
|
||||
Classic,
|
||||
Modern
|
||||
}
|
||||
|
||||
public class HolidayTree : Item, IAddon
|
||||
{
|
||||
private List<Item> m_Components;
|
||||
|
||||
public HolidayTree(Mobile from, HolidayTreeType type, Point3D loc) : base(1)
|
||||
{
|
||||
Movable = false;
|
||||
MoveToWorld(loc, from.Map);
|
||||
|
||||
Placer = from;
|
||||
m_Components = new List<Item>();
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case HolidayTreeType.Classic:
|
||||
{
|
||||
ItemID = 0xCD7;
|
||||
|
||||
AddItem(0, 0, 0, new TreeTrunk(this, 0xCD6));
|
||||
|
||||
AddOrnament(0, 0, 2, 0xF22);
|
||||
AddOrnament(0, 0, 9, 0xF18);
|
||||
AddOrnament(0, 0, 15, 0xF20);
|
||||
AddOrnament(0, 0, 19, 0xF17);
|
||||
AddOrnament(0, 0, 20, 0xF24);
|
||||
AddOrnament(0, 0, 20, 0xF1F);
|
||||
AddOrnament(0, 0, 20, 0xF19);
|
||||
AddOrnament(0, 0, 21, 0xF1B);
|
||||
AddOrnament(0, 0, 28, 0xF2F);
|
||||
AddOrnament(0, 0, 30, 0xF23);
|
||||
AddOrnament(0, 0, 32, 0xF2A);
|
||||
AddOrnament(0, 0, 33, 0xF30);
|
||||
AddOrnament(0, 0, 34, 0xF29);
|
||||
AddOrnament(0, 1, 7, 0xF16);
|
||||
AddOrnament(0, 1, 7, 0xF1E);
|
||||
AddOrnament(0, 1, 12, 0xF0F);
|
||||
AddOrnament(0, 1, 13, 0xF13);
|
||||
AddOrnament(0, 1, 18, 0xF12);
|
||||
AddOrnament(0, 1, 19, 0xF15);
|
||||
AddOrnament(0, 1, 25, 0xF28);
|
||||
AddOrnament(0, 1, 29, 0xF1A);
|
||||
AddOrnament(0, 1, 37, 0xF2B);
|
||||
AddOrnament(1, 0, 13, 0xF10);
|
||||
AddOrnament(1, 0, 14, 0xF1C);
|
||||
AddOrnament(1, 0, 16, 0xF14);
|
||||
AddOrnament(1, 0, 17, 0xF26);
|
||||
AddOrnament(1, 0, 22, 0xF27);
|
||||
|
||||
break;
|
||||
}
|
||||
case HolidayTreeType.Modern:
|
||||
{
|
||||
ItemID = 0x1B7E;
|
||||
|
||||
AddOrnament(0, 0, 2, 0xF2F);
|
||||
AddOrnament(0, 0, 2, 0xF20);
|
||||
AddOrnament(0, 0, 2, 0xF22);
|
||||
AddOrnament(0, 0, 5, 0xF30);
|
||||
AddOrnament(0, 0, 5, 0xF15);
|
||||
AddOrnament(0, 0, 5, 0xF1F);
|
||||
AddOrnament(0, 0, 5, 0xF2B);
|
||||
AddOrnament(0, 0, 6, 0xF0F);
|
||||
AddOrnament(0, 0, 7, 0xF1E);
|
||||
AddOrnament(0, 0, 7, 0xF24);
|
||||
AddOrnament(0, 0, 8, 0xF29);
|
||||
AddOrnament(0, 0, 9, 0xF18);
|
||||
AddOrnament(0, 0, 14, 0xF1C);
|
||||
AddOrnament(0, 0, 15, 0xF13);
|
||||
AddOrnament(0, 0, 15, 0xF20);
|
||||
AddOrnament(0, 0, 16, 0xF26);
|
||||
AddOrnament(0, 0, 17, 0xF12);
|
||||
AddOrnament(0, 0, 18, 0xF17);
|
||||
AddOrnament(0, 0, 20, 0xF1B);
|
||||
AddOrnament(0, 0, 23, 0xF28);
|
||||
AddOrnament(0, 0, 25, 0xF18);
|
||||
AddOrnament(0, 0, 25, 0xF2A);
|
||||
AddOrnament(0, 1, 7, 0xF16);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public HolidayTree(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Mobile Placer{ get; set; }
|
||||
|
||||
public override int LabelNumber => 1041117; // a tree for the holidays
|
||||
|
||||
public bool CouldFit(IPoint3D p, Map map)
|
||||
{
|
||||
return map.CanFit((Point3D)p, 20);
|
||||
}
|
||||
|
||||
Item IAddon.Deed => new HolidayTreeDeed();
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
for (int i = 0; i < m_Components.Count; ++i)
|
||||
m_Components[i].Delete();
|
||||
}
|
||||
|
||||
private void AddOrnament(int x, int y, int z, int itemID)
|
||||
{
|
||||
AddItem(x + 1, y + 1, z + 11, new Ornament(itemID));
|
||||
}
|
||||
|
||||
private void AddItem(int x, int y, int z, Item item)
|
||||
{
|
||||
item.MoveToWorld(new Point3D(Location.X + x, Location.Y + y, Location.Z + z), Map);
|
||||
|
||||
m_Components.Add(item);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(Placer);
|
||||
|
||||
writer.Write(m_Components.Count);
|
||||
|
||||
for (int i = 0; i < m_Components.Count; ++i)
|
||||
writer.Write(m_Components[i]);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Placer = reader.ReadMobile();
|
||||
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
int count = reader.ReadInt();
|
||||
|
||||
m_Components = new List<Item>(count);
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
Item item = reader.ReadItem();
|
||||
|
||||
if (item != null)
|
||||
m_Components.Add(item);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Timer.DelayCall(TimeSpan.Zero, ValidatePlacement);
|
||||
}
|
||||
|
||||
public void ValidatePlacement()
|
||||
{
|
||||
if (BaseHouse.FindHouseAt(this) == null)
|
||||
{
|
||||
HolidayTreeDeed deed = new HolidayTreeDeed();
|
||||
deed.MoveToWorld(Location, Map);
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (from.InRange(GetWorldLocation(), 1))
|
||||
{
|
||||
if (Placer == null || from == Placer || from.AccessLevel >= AccessLevel.GameMaster)
|
||||
{
|
||||
from.AddToBackpack(new HolidayTreeDeed());
|
||||
|
||||
Delete();
|
||||
|
||||
BaseHouse house = BaseHouse.FindHouseAt(this);
|
||||
|
||||
if (house?.Addons.Contains(this) == true)
|
||||
house.Addons.Remove(this);
|
||||
|
||||
from.SendLocalizedMessage(503393); // A deed for the tree has been placed in your backpack.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(503396); // You cannot take this tree down.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
}
|
||||
|
||||
private class Ornament : Item
|
||||
{
|
||||
public Ornament(int itemID) : base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
}
|
||||
|
||||
public Ornament(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1041118; // a tree ornament
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
private class TreeTrunk : Item
|
||||
{
|
||||
private HolidayTree m_Tree;
|
||||
|
||||
public TreeTrunk(HolidayTree tree, int itemID) : base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
MoveToWorld(tree.Location, tree.Map);
|
||||
|
||||
m_Tree = tree;
|
||||
}
|
||||
|
||||
public TreeTrunk(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1041117; // a tree for the holidays
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (m_Tree?.Deleted == false)
|
||||
m_Tree.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(m_Tree);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Tree = reader.ReadItem() as HolidayTree;
|
||||
|
||||
if (m_Tree == null)
|
||||
Delete();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
37
Projects/Scripts/Items/Special/Holiday/GiftBox.cs
Normal file
37
Projects/Scripts/Items/Special/Holiday/GiftBox.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Furniture]
|
||||
[Flippable(0x232A, 0x232B)]
|
||||
public class GiftBox : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GiftBox() : this(Utility.RandomDyedHue())
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public GiftBox(int hue) : base(Utility.Random(0x232A, 2))
|
||||
{
|
||||
Weight = 2.0;
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public GiftBox(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class GingerBreadHouseAddon : BaseAddon
|
||||
{
|
||||
public GingerBreadHouseAddon()
|
||||
{
|
||||
for (int i = 0x2be5; i < 0x2be8; i++)
|
||||
{
|
||||
LocalizedAddonComponent laoc = new LocalizedAddonComponent(i, 1077395); // Gingerbread House
|
||||
laoc.Light = LightType.SouthSmall;
|
||||
AddComponent(laoc, i == 0x2be5 ? -1 : 0, i == 0x2be7 ? -1 : 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public GingerBreadHouseAddon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override BaseAddonDeed Deed => new GingerBreadHouseDeed();
|
||||
|
||||
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 GingerBreadHouseDeed : BaseAddonDeed
|
||||
{
|
||||
[Constructible]
|
||||
public GingerBreadHouseDeed()
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public GingerBreadHouseDeed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1077394; //a Gingerbread House Deed
|
||||
public override BaseAddon Addon => new GingerBreadHouseAddon();
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
111
Projects/Scripts/Items/Special/Holiday/HolidayBell.cs
Normal file
111
Projects/Scripts/Items/Special/Holiday/HolidayBell.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class HolidayBell : Item
|
||||
{
|
||||
private static string[] m_StaffNames =
|
||||
{
|
||||
"Adrick",
|
||||
"Alai",
|
||||
"Bulldoz",
|
||||
"Evocare",
|
||||
"FierY-iCe",
|
||||
"Greyburn",
|
||||
"Hanse",
|
||||
"Ignatz",
|
||||
"Jalek",
|
||||
"LadyMOI",
|
||||
"Lord Krum",
|
||||
"Malantus",
|
||||
"Nimrond",
|
||||
"Oaks",
|
||||
"Prophet",
|
||||
"Runesabre",
|
||||
"Sage",
|
||||
"Stellerex",
|
||||
"T-Bone",
|
||||
"Tajima",
|
||||
"Tyrant",
|
||||
"Vex"
|
||||
};
|
||||
|
||||
private static int[] m_Hues =
|
||||
{
|
||||
0xA, 0x24, 0x42, 0x56, 0x1A, 0x4C, 0x3C, 0x60, 0x2E, 0x55, 0x23, 0x38, 0x482, 0x6, 0x10
|
||||
};
|
||||
|
||||
private string m_Maker;
|
||||
private int m_SoundID;
|
||||
|
||||
[Constructible]
|
||||
public HolidayBell()
|
||||
: this(m_StaffNames[Utility.Random(m_StaffNames.Length)])
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public HolidayBell(string maker)
|
||||
: base(0x1C12)
|
||||
{
|
||||
m_Maker = maker;
|
||||
|
||||
LootType = LootType.Blessed;
|
||||
Hue = m_Hues[Utility.Random(m_Hues.Length)];
|
||||
SoundID = 0x0F5 + Utility.Random(14);
|
||||
}
|
||||
|
||||
public HolidayBell(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int SoundID
|
||||
{
|
||||
get => m_SoundID;
|
||||
set
|
||||
{
|
||||
m_SoundID = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string Giver
|
||||
{
|
||||
get => m_Maker;
|
||||
set => m_Maker = value;
|
||||
}
|
||||
|
||||
public override string DefaultName => $"A Holiday Bell From {Giver}";
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
else from.PlaySound(m_SoundID);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write(m_Maker);
|
||||
|
||||
writer.WriteEncodedInt(m_SoundID);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_Maker = reader.ReadString();
|
||||
m_SoundID = reader.ReadEncodedInt();
|
||||
|
||||
Utility.Intern(ref m_Maker);
|
||||
}
|
||||
}
|
||||
}
|
||||
165
Projects/Scripts/Items/Special/Holiday/HolidayFoods.cs
Normal file
165
Projects/Scripts/Items/Special/Holiday/HolidayFoods.cs
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class CandyCane : Food
|
||||
{
|
||||
[Constructible]
|
||||
public CandyCane()
|
||||
: this(0x2bdd + Utility.Random(4))
|
||||
{
|
||||
}
|
||||
|
||||
public CandyCane(int itemID) : base(itemID, 1)
|
||||
{
|
||||
Stackable = false;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public CandyCane(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
private static Dictionary<Mobile, CandyCaneTimer> m_ToothAches = new Dictionary<Mobile, CandyCaneTimer>();
|
||||
|
||||
private static CandyCaneTimer EnsureTimer(Mobile from)
|
||||
{
|
||||
if (!m_ToothAches.TryGetValue(from, out CandyCaneTimer timer))
|
||||
m_ToothAches[from] = timer = new CandyCaneTimer(from);
|
||||
|
||||
return timer;
|
||||
}
|
||||
|
||||
public static int GetToothAche(Mobile from)
|
||||
{
|
||||
return m_ToothAches.TryGetValue(from, out CandyCaneTimer timer) ? timer.Eaten : 0;
|
||||
}
|
||||
|
||||
public static void SetToothAche(Mobile from, int value)
|
||||
{
|
||||
EnsureTimer(from).Eaten = value;
|
||||
}
|
||||
|
||||
public override bool CheckHunger(Mobile from)
|
||||
{
|
||||
EnsureTimer(from).Eaten += 32;
|
||||
|
||||
from.SendLocalizedMessage(1077387); // You feel as if you could eat as much as you wanted!
|
||||
return 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 CandyCaneTimer : Timer
|
||||
{
|
||||
public CandyCaneTimer(Mobile eater)
|
||||
: base(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(30))
|
||||
{
|
||||
Eater = eater;
|
||||
Priority = TimerPriority.FiveSeconds;
|
||||
Start();
|
||||
}
|
||||
|
||||
public Mobile Eater{ get; }
|
||||
|
||||
public int Eaten{ get; set; }
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
--Eaten;
|
||||
|
||||
if (Eater?.Deleted != false || Eaten <= 0)
|
||||
{
|
||||
Stop();
|
||||
m_ToothAches.Remove(Eater);
|
||||
}
|
||||
else if (Eater.Map != Map.Internal && Eater.Alive)
|
||||
{
|
||||
if (Eaten > 60)
|
||||
{
|
||||
Eater.Say(1077388 + Utility.Random(5));
|
||||
|
||||
/* ARRGH! My tooth hurts sooo much!
|
||||
* You just can't find a good Britannian dentist these days...
|
||||
* My teeth!
|
||||
* MAKE IT STOP!
|
||||
* AAAH! It feels like someone kicked me in the teeth!
|
||||
*/
|
||||
|
||||
if (Utility.RandomBool() && Eater.Body.IsHuman && !Eater.Mounted)
|
||||
Eater.Animate(32, 5, 1, true, false, 0);
|
||||
}
|
||||
else if (Eaten == 60)
|
||||
{
|
||||
Eater.SendLocalizedMessage(1077393); // The extreme pain in your teeth subsides.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class GingerBreadCookie : Food
|
||||
{
|
||||
private readonly int[] m_Messages =
|
||||
{
|
||||
0,
|
||||
1077396, // Noooo!
|
||||
1077397, // Please don't eat me... *whimper*
|
||||
1077405, // Not the face!
|
||||
1077406, // Ahhhhhh! My foot<6F>s gone!
|
||||
1077407, // Please. No! I have gingerkids!
|
||||
1077408, // No, no! I<>m really made of poison. Really.
|
||||
1077409 // Run, run as fast as you can! You can't catch me! I'm the gingerbread man!
|
||||
};
|
||||
|
||||
[Constructible]
|
||||
public GingerBreadCookie()
|
||||
: base(Utility.RandomBool() ? 0x2be1 : 0x2be2, 1)
|
||||
{
|
||||
Stackable = false;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public GingerBreadCookie(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool Eat(Mobile from)
|
||||
{
|
||||
int message = m_Messages[Utility.Random(m_Messages.Length)];
|
||||
|
||||
if (message != 0)
|
||||
{
|
||||
SendLocalizedMessageTo(from, message);
|
||||
return false;
|
||||
}
|
||||
|
||||
return base.Eat(from);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
220
Projects/Scripts/Items/Special/Holiday/HolidayGiftBoxes.cs
Normal file
220
Projects/Scripts/Items/Special/Holiday/HolidayGiftBoxes.cs
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class GiftBoxHues
|
||||
{
|
||||
/* there's possibly a couple more, but this is what we could verify on OSI */
|
||||
|
||||
private static readonly int[] m_NormalHues =
|
||||
{
|
||||
0x672,
|
||||
0x454,
|
||||
0x507,
|
||||
0x4ac,
|
||||
0x504,
|
||||
0x84b,
|
||||
0x495,
|
||||
0x97c,
|
||||
0x493,
|
||||
0x4a8,
|
||||
0x494,
|
||||
0x4aa,
|
||||
0xb8b,
|
||||
0x84f,
|
||||
0x491,
|
||||
0x851,
|
||||
0x503,
|
||||
0xb8c,
|
||||
0x4ab,
|
||||
0x84B
|
||||
};
|
||||
|
||||
private static readonly int[] m_NeonHues =
|
||||
{
|
||||
0x438,
|
||||
0x424,
|
||||
0x433,
|
||||
0x445,
|
||||
0x42b,
|
||||
0x448
|
||||
};
|
||||
|
||||
public static int RandomGiftBoxHue => m_NormalHues[Utility.Random(m_NormalHues.Length)];
|
||||
public static int RandomNeonBoxHue => m_NeonHues[Utility.Random(m_NeonHues.Length)];
|
||||
}
|
||||
|
||||
[Flippable(0x46A5, 0x46A6)]
|
||||
public class GiftBoxRectangle : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GiftBoxRectangle()
|
||||
: base(Utility.RandomBool() ? 0x46A5 : 0x46A6)
|
||||
{
|
||||
Hue = GiftBoxHues.RandomGiftBoxHue;
|
||||
}
|
||||
|
||||
public GiftBoxRectangle(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultGumpID => 0x11E;
|
||||
|
||||
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 GiftBoxCube : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GiftBoxCube()
|
||||
: base(0x46A2)
|
||||
{
|
||||
Hue = GiftBoxHues.RandomGiftBoxHue;
|
||||
}
|
||||
|
||||
public GiftBoxCube(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultGumpID => 0x11B;
|
||||
|
||||
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 GiftBoxCylinder : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GiftBoxCylinder()
|
||||
: base(0x46A3)
|
||||
{
|
||||
Hue = GiftBoxHues.RandomGiftBoxHue;
|
||||
}
|
||||
|
||||
public GiftBoxCylinder(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultGumpID => 0x11C;
|
||||
|
||||
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 GiftBoxOctogon : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GiftBoxOctogon()
|
||||
: base(0x46A4)
|
||||
{
|
||||
Hue = GiftBoxHues.RandomGiftBoxHue;
|
||||
}
|
||||
|
||||
public GiftBoxOctogon(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultGumpID => 0x11D;
|
||||
|
||||
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 GiftBoxAngel : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GiftBoxAngel()
|
||||
: base(0x46A7)
|
||||
{
|
||||
Hue = GiftBoxHues.RandomGiftBoxHue;
|
||||
}
|
||||
|
||||
public GiftBoxAngel(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultGumpID => 0x11F;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x232A, 0x232B)]
|
||||
public class GiftBoxNeon : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GiftBoxNeon()
|
||||
: base(Utility.RandomBool() ? 0x232A : 0x232B)
|
||||
{
|
||||
Hue = GiftBoxHues.RandomNeonBoxHue;
|
||||
}
|
||||
|
||||
public GiftBoxNeon(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
153
Projects/Scripts/Items/Special/Holiday/HolidayPottedPlant.cs
Normal file
153
Projects/Scripts/Items/Special/Holiday/HolidayPottedPlant.cs
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class HolidayPottedPlant : Item
|
||||
{
|
||||
[Constructible]
|
||||
public HolidayPottedPlant()
|
||||
: this(Utility.RandomMinMax(0x11C8, 0x11CC))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public HolidayPottedPlant(int itemID)
|
||||
: base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public HolidayPottedPlant(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ForceShowProperties => ObjectPropertyList.Enabled;
|
||||
|
||||
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 PottedPlantDeed : Item
|
||||
{
|
||||
[Constructible]
|
||||
public PottedPlantDeed()
|
||||
: base(0x14F0)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public PottedPlantDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1041114; // A deed for a potted plant.
|
||||
public override double DefaultWeight => 1.0;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1042038); // You must have the object in your backpack to use it.
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private PottedPlantDeed m_Deed;
|
||||
|
||||
public InternalGump(PottedPlantDeed deed) : base(100, 200)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
Closable = true;
|
||||
Disposable = true;
|
||||
Draggable = true;
|
||||
Resizable = false;
|
||||
|
||||
AddPage(0);
|
||||
AddBackground(0, 0, 360, 195, 0xA28);
|
||||
|
||||
AddPage(1);
|
||||
AddLabel(45, 15, 0, "Choose a Potted Plant:");
|
||||
|
||||
AddItem(45, 75, 0x11C8);
|
||||
AddButton(55, 50, 0x845, 0x846, 1);
|
||||
|
||||
AddItem(100, 75, 0x11C9);
|
||||
AddButton(115, 50, 0x845, 0x846, 2);
|
||||
|
||||
AddItem(160, 75, 0x11CA);
|
||||
AddButton(175, 50, 0x845, 0x846, 3);
|
||||
|
||||
AddItem(225, 75, 0x11CB);
|
||||
AddButton(235, 50, 0x845, 0x846, 4);
|
||||
|
||||
AddItem(280, 75, 0x11CC);
|
||||
AddButton(295, 50, 0x845, 0x846, 5);
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false)
|
||||
return;
|
||||
|
||||
Mobile from = sender.Mobile;
|
||||
|
||||
if (!m_Deed.IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1042038); // You must have the object in your backpack to use it
|
||||
return;
|
||||
}
|
||||
|
||||
int index = info.ButtonID - 1;
|
||||
|
||||
if (index >= 0 && index <= 4)
|
||||
{
|
||||
HolidayPottedPlant plant = new HolidayPottedPlant(0x11C8 + index);
|
||||
|
||||
if (!from.PlaceInBackpack(plant))
|
||||
{
|
||||
plant.Delete();
|
||||
from.SendLocalizedMessage(1078837); // Your backpack is full! Please make room and try again.
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Deed.Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
36
Projects/Scripts/Items/Special/Holiday/HolidayTimepiece.cs
Normal file
36
Projects/Scripts/Items/Special/Holiday/HolidayTimepiece.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class HolidayTimepiece : Clock
|
||||
{
|
||||
[Constructible]
|
||||
public HolidayTimepiece()
|
||||
: base(0x1086)
|
||||
{
|
||||
Weight = DefaultWeight;
|
||||
LootType = LootType.Blessed;
|
||||
Layer = Layer.Bracelet;
|
||||
}
|
||||
|
||||
public HolidayTimepiece(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1041113; // a holiday timepiece
|
||||
public override double DefaultWeight => 1.0;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
170
Projects/Scripts/Items/Special/Holiday/Icecicles.cs
Normal file
170
Projects/Scripts/Items/Special/Holiday/Icecicles.cs
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class IcicleLargeSouth : Item
|
||||
{
|
||||
[Constructible]
|
||||
public IcicleLargeSouth()
|
||||
: base(0x4572)
|
||||
{
|
||||
}
|
||||
|
||||
public IcicleLargeSouth(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 IcicleMedSouth : Item
|
||||
{
|
||||
[Constructible]
|
||||
public IcicleMedSouth()
|
||||
: base(0x4573)
|
||||
{
|
||||
}
|
||||
|
||||
public IcicleMedSouth(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 IcicleSmallSouth : Item
|
||||
{
|
||||
[Constructible]
|
||||
public IcicleSmallSouth()
|
||||
: base(0x4574)
|
||||
{
|
||||
}
|
||||
|
||||
public IcicleSmallSouth(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 IcicleLargeEast : Item
|
||||
{
|
||||
[Constructible]
|
||||
public IcicleLargeEast()
|
||||
: base(0x4575)
|
||||
{
|
||||
}
|
||||
|
||||
public IcicleLargeEast(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 IcicleMedEast : Item
|
||||
{
|
||||
[Constructible]
|
||||
public IcicleMedEast()
|
||||
: base(0x4576)
|
||||
{
|
||||
}
|
||||
|
||||
public IcicleMedEast(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 IcicleSmallEast : Item
|
||||
{
|
||||
[Constructible]
|
||||
public IcicleSmallEast()
|
||||
: base(0x4577)
|
||||
{
|
||||
}
|
||||
|
||||
public IcicleSmallEast(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
112
Projects/Scripts/Items/Special/Holiday/IcyPatch.cs
Normal file
112
Projects/Scripts/Items/Special/Holiday/IcyPatch.cs
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using Server.Mobiles;
|
||||
using Server.Spells;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class IcyPatch : Item
|
||||
{
|
||||
/* On OSI, the iceypatch with itemid 0x122a is "rarer", so we will give it 1:10 chance of creating it that way */
|
||||
|
||||
[Constructible]
|
||||
public IcyPatch()
|
||||
: this(Utility.Random(10) == 0 ? 0x122A : 0x122F)
|
||||
{
|
||||
}
|
||||
|
||||
public IcyPatch(int itemid)
|
||||
: base(itemid)
|
||||
{
|
||||
Hue = 0x481;
|
||||
}
|
||||
|
||||
public IcyPatch(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1095159; //An Icy Patch
|
||||
public override double DefaultWeight => 5.0;
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
if (m is PlayerMobile && m.Alive && m.AccessLevel == AccessLevel.Player)
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
RunSequence(m, 1095160, false);
|
||||
break; //You steadily walk over the slippery surface.
|
||||
case 1:
|
||||
RunSequence(m, 1095161, true);
|
||||
break; //You skillfully manage to maintain your balance.
|
||||
default:
|
||||
RunSequence(m, 1095162, true);
|
||||
break; //You lose your footing and ungracefully splatter on the ground.
|
||||
}
|
||||
return base.OnMoveOver(m);
|
||||
}
|
||||
|
||||
public virtual void RunSequence(Mobile m, int message, bool freeze)
|
||||
{
|
||||
if (freeze)
|
||||
{
|
||||
m.Frozen = true;
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(message == 1095162 ? 2.0 : 1.25), EndFall_Callback, m);
|
||||
}
|
||||
|
||||
m.SendLocalizedMessage(message);
|
||||
|
||||
int action = 0;
|
||||
int sound = 0;
|
||||
|
||||
if (message == 1095162)
|
||||
{
|
||||
if (m.Mounted)
|
||||
m.Mount.Rider = null;
|
||||
|
||||
Point3D p = new Point3D(Location);
|
||||
|
||||
if (SpellHelper.FindValidSpawnLocation(Map, ref p, true))
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0), () => m.MoveToWorld(p, m.Map));
|
||||
|
||||
action = 21 + Utility.Random(2);
|
||||
sound = m.Female ? 0x317 : 0x426;
|
||||
}
|
||||
else if (message == 1095161)
|
||||
{
|
||||
action = 17;
|
||||
sound = m.Female ? 0x319 : 0x429;
|
||||
}
|
||||
|
||||
if (action > 0)
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(0.4), from => BeginFall_Callback(from, action, sound), m);
|
||||
}
|
||||
|
||||
private static void BeginFall_Callback(Mobile m, int action, int sound)
|
||||
{
|
||||
if (!m.Mounted)
|
||||
m.Animate(action, 1, 1, false, true, 0);
|
||||
|
||||
m.PlaySound(sound);
|
||||
}
|
||||
|
||||
private static void EndFall_Callback(Mobile m)
|
||||
{
|
||||
m.Frozen = false;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
89
Projects/Scripts/Items/Special/Holiday/PKHolidayStuff.cs
Normal file
89
Projects/Scripts/Items/Special/Holiday/PKHolidayStuff.cs
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class Coal : Item
|
||||
{
|
||||
[Constructible]
|
||||
public Coal() : base(0x19b9)
|
||||
{
|
||||
Stackable = false;
|
||||
LootType = LootType.Blessed;
|
||||
Hue = 0x965;
|
||||
}
|
||||
|
||||
public Coal(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "Coal";
|
||||
|
||||
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 BadCard : Item
|
||||
{
|
||||
[Constructible]
|
||||
public BadCard() : base(0x14ef)
|
||||
{
|
||||
int[] m_CardHues = { 0x45, 0x27, 0x3d0 };
|
||||
Hue = m_CardHues[Utility.Random(m_CardHues.Length)];
|
||||
Stackable = false;
|
||||
LootType = LootType.Blessed;
|
||||
Movable = true;
|
||||
}
|
||||
|
||||
public BadCard(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber // Maybe next year youll get a better...
|
||||
=> 1041428;
|
||||
|
||||
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 Spam : Food
|
||||
{
|
||||
[Constructible]
|
||||
public Spam() : base(0x1044, 1)
|
||||
{
|
||||
Stackable = false;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public Spam(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
58
Projects/Scripts/Items/Special/Holiday/Poinsettias.cs
Normal file
58
Projects/Scripts/Items/Special/Holiday/Poinsettias.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class RedPoinsettia : Item
|
||||
{
|
||||
[Constructible]
|
||||
public RedPoinsettia() : base(0x2330)
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public RedPoinsettia(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 WhitePoinsettia : Item
|
||||
{
|
||||
[Constructible]
|
||||
public WhitePoinsettia() : base(0x2331)
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public WhitePoinsettia(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
320
Projects/Scripts/Items/Special/Holiday/SnowGlobes.cs
Normal file
320
Projects/Scripts/Items/Special/Holiday/SnowGlobes.cs
Normal file
|
|
@ -0,0 +1,320 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SnowGlobe : Item
|
||||
{
|
||||
public SnowGlobe()
|
||||
: base(0xE2F)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
Light = LightType.Circle150;
|
||||
}
|
||||
|
||||
public SnowGlobe(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override double DefaultWeight => 1.0;
|
||||
|
||||
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 enum SnowGlobeTypeOne
|
||||
{
|
||||
Britain,
|
||||
Moonglow,
|
||||
Minoc,
|
||||
Magincia,
|
||||
BuccaneersDen,
|
||||
Trinsic,
|
||||
Yew,
|
||||
SkaraBrae,
|
||||
Jhelom,
|
||||
Nujelm,
|
||||
Papua,
|
||||
Delucia,
|
||||
Cove,
|
||||
Ocllo,
|
||||
SerpentsHold,
|
||||
EmpathAbbey,
|
||||
TheLycaeum,
|
||||
Vesper,
|
||||
Wind
|
||||
}
|
||||
|
||||
public class SnowGlobeOne : SnowGlobe
|
||||
{
|
||||
private SnowGlobeTypeOne m_Type;
|
||||
|
||||
[Constructible]
|
||||
public SnowGlobeOne()
|
||||
: this((SnowGlobeTypeOne)Utility.Random(19))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public SnowGlobeOne(SnowGlobeTypeOne type)
|
||||
{
|
||||
m_Type = type;
|
||||
}
|
||||
|
||||
public SnowGlobeOne(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SnowGlobeTypeOne Place
|
||||
{
|
||||
get => m_Type;
|
||||
set
|
||||
{
|
||||
m_Type = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1041454 + (int)m_Type;
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.WriteEncodedInt((int)m_Type);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Type = (SnowGlobeTypeOne)reader.ReadEncodedInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum SnowGlobeTypeTwo
|
||||
{
|
||||
AncientCitadel,
|
||||
BlackthornesCastle,
|
||||
CityofMontor,
|
||||
CityofMistas,
|
||||
ExodusLair,
|
||||
LakeofFire,
|
||||
Lakeshire,
|
||||
PassofKarnaugh,
|
||||
TheEtherealFortress,
|
||||
TwinOaksTavern,
|
||||
ChaosShrine,
|
||||
ShrineofHumility,
|
||||
ShrineofSacrifice,
|
||||
ShrineofCompassion,
|
||||
ShrineofHonor,
|
||||
ShrineofHonesty,
|
||||
ShrineofSpirituality,
|
||||
ShrineofJustice,
|
||||
ShrineofValor
|
||||
}
|
||||
|
||||
public class SnowGlobeTwo : SnowGlobe
|
||||
{
|
||||
/* Oddly, these are not localized. */
|
||||
private static readonly string[] m_PlaceNames =
|
||||
{
|
||||
/* AncientCitadel */ "Ancient Citadel",
|
||||
/* BlackthornesCastle */ "Blackthorne's Castle",
|
||||
/* CityofMontor */ "City of Montor",
|
||||
/* CityofMistas */ "City of Mistas",
|
||||
/* ExodusLair */ "Exodus' Lair",
|
||||
/* LakeofFire */ "Lake of Fire",
|
||||
/* Lakeshire */ "Lakeshire",
|
||||
/* PassofKarnaugh */ "Pass of Karnaugh",
|
||||
/* TheEtherealFortress */ "The Etheral Fortress",
|
||||
/* TwinOaksTavern */ "Twin Oaks Tavern",
|
||||
/* ChaosShrine */ "Chaos Shrine",
|
||||
/* ShrineofHumility */ "Shrine of Humility",
|
||||
/* ShrineofSacrifice */ "Shrine of Sacrifice",
|
||||
/* ShrineofCompassion */ "Shrine of Compassion",
|
||||
/* ShrineofHonor */ "Shrine of Honor",
|
||||
/* ShrineofHonesty */ "Shrine of Honesty",
|
||||
/* ShrineofSpirituality */ "Shrine of Spirituality",
|
||||
/* ShrineofJustice */ "Shrine of Justice",
|
||||
/* ShrineofValor */ "Shrine of Valor"
|
||||
};
|
||||
|
||||
private SnowGlobeTypeTwo m_Type;
|
||||
|
||||
[Constructible]
|
||||
public SnowGlobeTwo()
|
||||
: this((SnowGlobeTypeTwo)Utility.Random(19))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public SnowGlobeTwo(SnowGlobeTypeTwo type)
|
||||
{
|
||||
m_Type = type;
|
||||
}
|
||||
|
||||
public SnowGlobeTwo(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SnowGlobeTypeTwo Place
|
||||
{
|
||||
get => m_Type;
|
||||
set
|
||||
{
|
||||
m_Type = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override string DefaultName
|
||||
{
|
||||
get
|
||||
{
|
||||
int idx = (int)m_Type;
|
||||
|
||||
if (idx < 0 || idx >= m_PlaceNames.Length)
|
||||
return "a snowy scene";
|
||||
|
||||
return $"a snowy scene of {m_PlaceNames[idx]}";
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.WriteEncodedInt((int)m_Type);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Type = (SnowGlobeTypeTwo)reader.ReadEncodedInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum SnowGlobeTypeThree
|
||||
{
|
||||
Luna,
|
||||
Umbra,
|
||||
Zento,
|
||||
Heartwood,
|
||||
Covetous,
|
||||
Deceit,
|
||||
Destard,
|
||||
Hythloth,
|
||||
Khaldun,
|
||||
Shame,
|
||||
Wrong,
|
||||
Doom,
|
||||
TheCitadel,
|
||||
ThePalaceofParoxysmus,
|
||||
TheBlightedGrove,
|
||||
ThePrismofLight
|
||||
}
|
||||
|
||||
public class SnowGlobeThree : SnowGlobe
|
||||
{
|
||||
private SnowGlobeTypeThree m_Type;
|
||||
|
||||
[Constructible]
|
||||
public SnowGlobeThree()
|
||||
: this((SnowGlobeTypeThree)Utility.Random(16))
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public SnowGlobeThree(SnowGlobeTypeThree type)
|
||||
{
|
||||
m_Type = type;
|
||||
}
|
||||
|
||||
public SnowGlobeThree(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SnowGlobeTypeThree Place
|
||||
{
|
||||
get => m_Type;
|
||||
set
|
||||
{
|
||||
m_Type = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override int LabelNumber
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_Type >= SnowGlobeTypeThree.Covetous)
|
||||
return 1075440 + ((int)m_Type - 4);
|
||||
|
||||
return 1075294 + (int)m_Type;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
writer.WriteEncodedInt((int)m_Type);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
m_Type = (SnowGlobeTypeThree)reader.ReadEncodedInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Projects/Scripts/Items/Special/Holiday/SnowPiles.cs
Normal file
42
Projects/Scripts/Items/Special/Holiday/SnowPiles.cs
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class SnowPileDeco : Item
|
||||
{
|
||||
private static readonly int[] m_Types = { 0x8E2, 0x8E0, 0x8E6, 0x8E5, 0x8E3 };
|
||||
|
||||
[Constructible]
|
||||
public SnowPileDeco()
|
||||
: this(m_Types[Utility.Random(m_Types.Length)])
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public SnowPileDeco(int itemid)
|
||||
: base(itemid)
|
||||
{
|
||||
Hue = 0x481;
|
||||
}
|
||||
|
||||
public SnowPileDeco(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string DefaultName => "Snow Pile";
|
||||
public override double DefaultWeight => 2.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
251
Projects/Scripts/Items/Special/Holiday/SnowStatue.cs
Normal file
251
Projects/Scripts/Items/Special/Holiday/SnowStatue.cs
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x456E, 0x456F)]
|
||||
public class SnowStatuePegasus : Item
|
||||
{
|
||||
[Constructible]
|
||||
public SnowStatuePegasus()
|
||||
: base(0x456E)
|
||||
{
|
||||
}
|
||||
|
||||
public SnowStatuePegasus(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ForceShowProperties => ObjectPropertyList.Enabled;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x4578, 0x4579)]
|
||||
public class SnowStatueSeahorse : Item
|
||||
{
|
||||
[Constructible]
|
||||
public SnowStatueSeahorse()
|
||||
: base(0x4578)
|
||||
{
|
||||
}
|
||||
|
||||
public SnowStatueSeahorse(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ForceShowProperties => ObjectPropertyList.Enabled;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x457A, 0x457B)]
|
||||
public class SnowStatueMermaid : Item
|
||||
{
|
||||
[Constructible]
|
||||
public SnowStatueMermaid()
|
||||
: base(0x457A)
|
||||
{
|
||||
}
|
||||
|
||||
public SnowStatueMermaid(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ForceShowProperties => ObjectPropertyList.Enabled;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Flippable(0x457C, 0x457D)]
|
||||
public class SnowStatueGriffon : Item
|
||||
{
|
||||
[Constructible]
|
||||
public SnowStatueGriffon()
|
||||
: base(0x457C)
|
||||
{
|
||||
}
|
||||
|
||||
public SnowStatueGriffon(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool ForceShowProperties => ObjectPropertyList.Enabled;
|
||||
|
||||
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 SnowStatueDeed : Item
|
||||
{
|
||||
[Constructible]
|
||||
public SnowStatueDeed()
|
||||
: base(0x14F0)
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public SnowStatueDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1114296; // snow statue deed
|
||||
public override double DefaultWeight => 1.0;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
from.CloseGump<InternalGump>();
|
||||
from.SendGump(new InternalGump(this));
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1042038); // You must have the object in your backpack to use it.
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.WriteEncodedInt(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
private SnowStatueDeed m_Deed;
|
||||
|
||||
public InternalGump(SnowStatueDeed deed) : base(100, 200)
|
||||
{
|
||||
m_Deed = deed;
|
||||
|
||||
Closable = true;
|
||||
Disposable = true;
|
||||
Draggable = true;
|
||||
Resizable = false;
|
||||
|
||||
AddPage(0);
|
||||
AddBackground(0, 0, 360, 225, 0xA28);
|
||||
|
||||
AddPage(1);
|
||||
AddLabel(45, 15, 0, "Select One:");
|
||||
|
||||
AddItem(35, 75, 0x456E);
|
||||
AddButton(65, 50, 0x845, 0x846, 1);
|
||||
|
||||
AddItem(120, 75, 0x4578);
|
||||
AddButton(135, 50, 0x845, 0x846, 2);
|
||||
|
||||
AddItem(190, 75, 0x457A);
|
||||
AddButton(205, 50, 0x845, 0x846, 3);
|
||||
|
||||
AddItem(250, 75, 0x457C);
|
||||
AddButton(275, 50, 0x845, 0x846, 4);
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
if (m_Deed?.Deleted != false)
|
||||
return;
|
||||
|
||||
Mobile from = sender.Mobile;
|
||||
|
||||
if (!m_Deed.IsChildOf(from.Backpack))
|
||||
{
|
||||
from.SendLocalizedMessage(1042038); // You must have the object in your backpack to use it
|
||||
return;
|
||||
}
|
||||
|
||||
Item statue;
|
||||
|
||||
switch (info.ButtonID)
|
||||
{
|
||||
default:
|
||||
return;
|
||||
case 1:
|
||||
statue = new SnowStatuePegasus();
|
||||
break;
|
||||
case 2:
|
||||
statue = new SnowStatueSeahorse();
|
||||
break;
|
||||
case 3:
|
||||
statue = new SnowStatueMermaid();
|
||||
break;
|
||||
case 4:
|
||||
statue = new SnowStatueGriffon();
|
||||
break;
|
||||
}
|
||||
|
||||
if (!from.PlaceInBackpack(statue))
|
||||
{
|
||||
statue.Delete();
|
||||
from.SendLocalizedMessage(1078837); // Your backpack is full! Please make room and try again.
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Deed.Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
58
Projects/Scripts/Items/Special/Holiday/Snowflakes.cs
Normal file
58
Projects/Scripts/Items/Special/Holiday/Snowflakes.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BlueSnowflake : Item
|
||||
{
|
||||
[Constructible]
|
||||
public BlueSnowflake() : base(0x232E)
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public BlueSnowflake(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 WhiteSnowflake : Item
|
||||
{
|
||||
[Constructible]
|
||||
public WhiteSnowflake() : base(0x232F)
|
||||
{
|
||||
Weight = 1.0;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public WhiteSnowflake(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
159
Projects/Scripts/Items/Special/Holiday/Snowman.cs
Normal file
159
Projects/Scripts/Items/Special/Holiday/Snowman.cs
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x2328, 0x2329)]
|
||||
public class Snowman : Item, IDyable
|
||||
{
|
||||
private string m_Title;
|
||||
|
||||
[Constructible]
|
||||
public Snowman() : this(Utility.RandomDyedHue())
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public Snowman(int hue) : this(hue, GetRandomTitle())
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public Snowman(string title) : this(Utility.RandomDyedHue(), title)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public Snowman(int hue, string title) : base(Utility.Random(0x2328, 2))
|
||||
{
|
||||
Weight = 10.0;
|
||||
Hue = hue;
|
||||
LootType = LootType.Blessed;
|
||||
|
||||
m_Title = title;
|
||||
}
|
||||
|
||||
public Snowman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string Title
|
||||
{
|
||||
get => m_Title;
|
||||
set
|
||||
{
|
||||
m_Title = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public bool Dye(Mobile from, DyeTub sender)
|
||||
{
|
||||
if (Deleted)
|
||||
return false;
|
||||
|
||||
Hue = sender.DyedHue;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static string GetRandomTitle()
|
||||
{
|
||||
// All hail OSI staff
|
||||
string[] titles =
|
||||
{
|
||||
/* 1 */ "Backflash",
|
||||
/* 2 */ "Carbon",
|
||||
/* 3 */ "Colbalistic",
|
||||
/* 4 */ "Comforl",
|
||||
/* 5 */ "Coppacchia",
|
||||
/* 6 */ "Cyrus",
|
||||
/* 7 */ "DannyB",
|
||||
/* 8 */ "DJSoul",
|
||||
/* 9 */ "DraconisRex",
|
||||
/* 10 */ "Earia",
|
||||
/* 11 */ "Foster",
|
||||
/* 12 */ "Gonzo",
|
||||
/* 13 */ "Haan",
|
||||
/* 14 */ "Halona",
|
||||
/* 15 */ "Hugo",
|
||||
/* 16 */ "Hyacinth",
|
||||
/* 17 */ "Imirian",
|
||||
/* 18 */ "Jinsol",
|
||||
/* 19 */ "Liciatia",
|
||||
/* 20 */ "Loewen",
|
||||
/* 21 */ "Loke",
|
||||
/* 22 */ "Magnus",
|
||||
/* 23 */ "Maleki",
|
||||
/* 24 */ "Morpheus",
|
||||
/* 25 */ "Obberron",
|
||||
/* 26 */ "Odee",
|
||||
/* 27 */ "Orbeus",
|
||||
/* 28 */ "Pax",
|
||||
/* 29 */ "Phields",
|
||||
/* 30 */ "Pigpen",
|
||||
/* 31 */ "Platinum",
|
||||
/* 32 */ "Polpol",
|
||||
/* 33 */ "Prume",
|
||||
/* 34 */ "Quinnly",
|
||||
/* 35 */ "Ragnarok",
|
||||
/* 36 */ "Rend",
|
||||
/* 37 */ "Roland",
|
||||
/* 38 */ "RyanM",
|
||||
/* 39 */ "Screach",
|
||||
/* 40 */ "Seraph",
|
||||
/* 41 */ "Silvani",
|
||||
/* 42 */ "Sherbear",
|
||||
/* 43 */ "SkyWalker",
|
||||
/* 44 */ "Snark",
|
||||
/* 45 */ "Sowl",
|
||||
/* 46 */ "Spada",
|
||||
/* 47 */ "Starblade",
|
||||
/* 48 */ "Tenacious",
|
||||
/* 49 */ "Tnez",
|
||||
/* 50 */ "Wasia",
|
||||
/* 51 */ "Zilo",
|
||||
/* 52 */ "Zippy",
|
||||
/* 53 */ "Zoer"
|
||||
};
|
||||
|
||||
if (titles.Length > 0)
|
||||
return titles[Utility.Random(titles.Length)];
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if (m_Title != null)
|
||||
list.Add(1062841, m_Title); // ~1_NAME~ the Snowman
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write(m_Title);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_Title = reader.ReadString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Utility.Intern(ref m_Title);
|
||||
}
|
||||
}
|
||||
}
|
||||
60
Projects/Scripts/Items/Special/Holiday/Stockings.cs
Normal file
60
Projects/Scripts/Items/Special/Holiday/Stockings.cs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Furniture]
|
||||
[Flippable(0x2bd9, 0x2bda)]
|
||||
public class GreenStocking : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public GreenStocking() : base(Utility.Random(0x2BD9, 2))
|
||||
{
|
||||
}
|
||||
|
||||
public GreenStocking(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultGumpID => 0x103;
|
||||
public override int DefaultDropSound => 0x42;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
[Furniture]
|
||||
[Flippable(0x2bdb, 0x2bdc)]
|
||||
public class RedStocking : BaseContainer
|
||||
{
|
||||
[Constructible]
|
||||
public RedStocking() : base(Utility.Random(0x2BDB, 2))
|
||||
{
|
||||
}
|
||||
|
||||
public RedStocking(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultGumpID => 0x103;
|
||||
public override int DefaultDropSound => 0x42;
|
||||
|
||||
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,33 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[Flippable(0x232A, 0x232B)]
|
||||
public class WinterGiftPackage2003 : GiftBox
|
||||
{
|
||||
[Constructible]
|
||||
public WinterGiftPackage2003()
|
||||
{
|
||||
DropItem(new Snowman());
|
||||
DropItem(new WreathDeed());
|
||||
DropItem(new BlueSnowflake());
|
||||
DropItem(new RedPoinsettia());
|
||||
}
|
||||
|
||||
public WinterGiftPackage2003(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue