Reorganizes Project (#41)

This commit is contained in:
Kamron Batman 2019-08-02 18:13:40 -07:00 committed by GitHub
parent 08bf44af9a
commit 3614a66aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3499 changed files with 79 additions and 55 deletions

View file

@ -0,0 +1,59 @@
namespace Server.Items
{
public abstract class BaseEquipableLight : BaseLight
{
[Constructible]
public BaseEquipableLight(int itemID) : base(itemID)
{
Layer = Layer.TwoHanded;
}
public BaseEquipableLight(Serial serial) : base(serial)
{
}
public override void Ignite()
{
if (!(Parent is Mobile) && RootParent is Mobile holder)
{
if (holder.EquipItem(this))
{
if (this is Candle)
holder.SendLocalizedMessage(502969); // You put the candle in your left hand.
else if (this is Torch)
holder.SendLocalizedMessage(502971); // You put the torch in your left hand.
base.Ignite();
}
else
{
holder.SendLocalizedMessage(502449); // You cannot hold this item.
}
}
else
{
base.Ignite();
}
}
public override void OnAdded(IEntity parent)
{
if (Burning && parent is Container)
Douse();
base.OnAdded(parent);
}
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();
}
}
}

View file

@ -0,0 +1,216 @@
using System;
namespace Server.Items
{
public abstract class BaseLight : Item
{
public static readonly bool Burnout = false;
private bool m_Burning;
private TimeSpan m_Duration = TimeSpan.Zero;
private DateTime m_End;
private Timer m_Timer;
[Constructible]
public BaseLight(int itemID) : base(itemID)
{
}
public BaseLight(Serial serial) : base(serial)
{
}
public abstract int LitItemID{ get; }
public virtual int UnlitItemID => 0;
public virtual int BurntOutItemID => 0;
public virtual int LitSound => 0x47;
public virtual int UnlitSound => 0x3be;
public virtual int BurntOutSound => 0x4b8;
[CommandProperty(AccessLevel.GameMaster)]
public bool Burning
{
get => m_Burning;
set
{
if (m_Burning != value)
{
m_Burning = true;
DoTimer(m_Duration);
}
}
}
[CommandProperty(AccessLevel.GameMaster)]
public bool BurntOut{ get; set; }
[CommandProperty(AccessLevel.GameMaster)]
public bool Protected{ get; set; }
[CommandProperty(AccessLevel.GameMaster)]
public TimeSpan Duration
{
get
{
if (m_Duration != TimeSpan.Zero && m_Burning) return m_End - DateTime.UtcNow;
return m_Duration;
}
set => m_Duration = value;
}
public virtual void PlayLitSound()
{
if (LitSound != 0)
{
Point3D loc = GetWorldLocation();
Effects.PlaySound(loc, Map, LitSound);
}
}
public virtual void PlayUnlitSound()
{
int sound = UnlitSound;
if (BurntOut && BurntOutSound != 0)
sound = BurntOutSound;
if (sound != 0)
{
Point3D loc = GetWorldLocation();
Effects.PlaySound(loc, Map, sound);
}
}
public virtual void Ignite()
{
if (!BurntOut)
{
PlayLitSound();
m_Burning = true;
ItemID = LitItemID;
DoTimer(m_Duration);
}
}
public virtual void Douse()
{
m_Burning = false;
if (BurntOut && BurntOutItemID != 0)
ItemID = BurntOutItemID;
else
ItemID = UnlitItemID;
if (BurntOut)
m_Duration = TimeSpan.Zero;
else if (m_Duration != TimeSpan.Zero)
m_Duration = m_End - DateTime.UtcNow;
m_Timer?.Stop();
PlayUnlitSound();
}
public virtual void Burn()
{
BurntOut = true;
Douse();
}
private void DoTimer(TimeSpan delay)
{
m_Duration = delay;
m_Timer?.Stop();
if (delay == TimeSpan.Zero)
return;
m_End = DateTime.UtcNow + delay;
m_Timer = new InternalTimer(this, delay);
m_Timer.Start();
}
public override void OnDoubleClick(Mobile from)
{
if (BurntOut)
return;
if (Protected && from.AccessLevel == AccessLevel.Player)
return;
if (!from.InRange(GetWorldLocation(), 2))
return;
if (m_Burning)
{
if (UnlitItemID != 0)
Douse();
}
else
{
Ignite();
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
writer.Write(BurntOut);
writer.Write(m_Burning);
writer.Write(m_Duration);
writer.Write(Protected);
if (m_Burning && m_Duration != TimeSpan.Zero)
writer.WriteDeltaTime(m_End);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch (version)
{
case 0:
{
BurntOut = reader.ReadBool();
m_Burning = reader.ReadBool();
m_Duration = reader.ReadTimeSpan();
Protected = reader.ReadBool();
if (m_Burning && m_Duration != TimeSpan.Zero)
DoTimer(reader.ReadDeltaTime() - DateTime.UtcNow);
break;
}
}
}
private class InternalTimer : Timer
{
private BaseLight m_Light;
public InternalTimer(BaseLight light, TimeSpan delay) : base(delay)
{
m_Light = light;
Priority = TimerPriority.FiveSeconds;
}
protected override void OnTick()
{
if (m_Light?.Deleted == false)
m_Light.Burn();
}
}
}
}

View file

@ -0,0 +1,35 @@
using System;
namespace Server.Items
{
public class Brazier : BaseLight
{
[Constructible]
public Brazier() : base(0xE31)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = true;
Light = LightType.Circle225;
Weight = 20.0;
}
public Brazier(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xE31;
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();
}
}
}

View file

@ -0,0 +1,35 @@
using System;
namespace Server.Items
{
public class BrazierTall : BaseLight
{
[Constructible]
public BrazierTall() : base(0x19AA)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = true;
Light = LightType.Circle300;
Weight = 25.0;
}
public BrazierTall(Serial serial) : base(serial)
{
}
public override int LitItemID => 0x19AA;
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();
}
}
}

View file

@ -0,0 +1,69 @@
using System;
namespace Server.Items
{
public class Candelabra : BaseLight, IShipwreckedItem
{
[Constructible]
public Candelabra() : base(0xA27)
{
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle225;
Weight = 3.0;
}
public Candelabra(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xB1D;
public override int UnlitItemID => 0xA27;
#region IShipwreckedItem Members
[CommandProperty(AccessLevel.GameMaster)]
public bool IsShipwreckedItem{ get; set; }
#endregion
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(1);
writer.Write(IsShipwreckedItem);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch (version)
{
case 1:
{
IsShipwreckedItem = reader.ReadBool();
break;
}
}
}
public override void AddNameProperties(ObjectPropertyList list)
{
base.AddNameProperties(list);
if (IsShipwreckedItem)
list.Add(1041645); // recovered from a shipwreck
}
public override void OnSingleClick(Mobile from)
{
base.OnSingleClick(from);
if (IsShipwreckedItem)
LabelTo(from, 1041645); //recovered from a shipwreck
}
}
}

View file

@ -0,0 +1,35 @@
using System;
namespace Server.Items
{
public class CandelabraStand : BaseLight
{
[Constructible]
public CandelabraStand() : base(0xA29)
{
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle225;
Weight = 20.0;
}
public CandelabraStand(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xB26;
public override int UnlitItemID => 0xA29;
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();
}
}
}

View file

@ -0,0 +1,39 @@
using System;
namespace Server.Items
{
public class Candle : BaseEquipableLight
{
[Constructible]
public Candle() : base(0xA28)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(20);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle150;
Weight = 1.0;
}
public Candle(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xA0F;
public override int UnlitItemID => 0xA28;
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();
}
}
}

View file

@ -0,0 +1,39 @@
using System;
namespace Server.Items
{
public class CandleLarge : BaseLight
{
[Constructible]
public CandleLarge() : base(0xA26)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(25);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle150;
Weight = 2.0;
}
public CandleLarge(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xB1A;
public override int UnlitItemID => 0xA26;
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();
}
}
}

View file

@ -0,0 +1,39 @@
using System;
namespace Server.Items
{
public class CandleLong : BaseLight
{
[Constructible]
public CandleLong() : base(0x1433)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(30);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle150;
Weight = 1.0;
}
public CandleLong(Serial serial) : base(serial)
{
}
public override int LitItemID => 0x1430;
public override int UnlitItemID => 0x1433;
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();
}
}
}

View file

@ -0,0 +1,39 @@
using System;
namespace Server.Items
{
public class CandleShort : BaseLight
{
[Constructible]
public CandleShort() : base(0x142F)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(25);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle150;
Weight = 1.0;
}
public CandleShort(Serial serial) : base(serial)
{
}
public override int LitItemID => 0x142C;
public override int UnlitItemID => 0x142F;
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();
}
}
}

View file

@ -0,0 +1,58 @@
using System;
namespace Server.Items
{
public class CandleSkull : BaseLight
{
[Constructible]
public CandleSkull() : base(0x1853)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(25);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle150;
Weight = 5.0;
}
public CandleSkull(Serial serial) : base(serial)
{
}
public override int LitItemID
{
get
{
if (ItemID == 0x1583 || ItemID == 0x1854)
return 0x1854;
return 0x1858;
}
}
public override int UnlitItemID
{
get
{
if (ItemID == 0x1853 || ItemID == 0x1584)
return 0x1853;
return 0x1857;
}
}
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();
}
}
}

View file

@ -0,0 +1,28 @@
namespace Server.Items
{
public class DarkSource : Item
{
[Constructible]
public DarkSource() : base(0x1646)
{
Layer = Layer.TwoHanded;
Movable = false;
}
public DarkSource(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();
}
}
}

View file

@ -0,0 +1,36 @@
using System;
namespace Server.Items
{
public class HangingLantern : BaseLight
{
[Constructible]
public HangingLantern() : base(0xA1D)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle300;
Weight = 40.0;
}
public HangingLantern(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xA1A;
public override int UnlitItemID => 0xA1D;
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();
}
}
}

View file

@ -0,0 +1,59 @@
using System;
namespace Server.Items
{
public class HeatingStand : BaseLight
{
[Constructible]
public HeatingStand() : base(0x1849)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(25);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Empty;
Weight = 1.0;
}
public HeatingStand(Serial serial) : base(serial)
{
}
public override int LitItemID => 0x184A;
public override int UnlitItemID => 0x1849;
public override void Ignite()
{
base.Ignite();
if (ItemID == LitItemID)
Light = LightType.Circle150;
else if (ItemID == UnlitItemID)
Light = LightType.Empty;
}
public override void Douse()
{
base.Douse();
if (ItemID == LitItemID)
Light = LightType.Circle150;
else if (ItemID == UnlitItemID)
Light = LightType.Empty;
}
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();
}
}
}

View file

@ -0,0 +1,36 @@
using System;
namespace Server.Items
{
public class LampPost1 : BaseLight
{
[Constructible]
public LampPost1() : base(0xB21)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle300;
Weight = 40.0;
}
public LampPost1(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xB20;
public override int UnlitItemID => 0xB21;
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();
}
}
}

View file

@ -0,0 +1,36 @@
using System;
namespace Server.Items
{
public class LampPost2 : BaseLight
{
[Constructible]
public LampPost2() : base(0xB23)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle300;
Weight = 40.0;
}
public LampPost2(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xB22;
public override int UnlitItemID => 0xB23;
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();
}
}
}

View file

@ -0,0 +1,36 @@
using System;
namespace Server.Items
{
public class LampPost3 : BaseLight
{
[Constructible]
public LampPost3() : base(0xb25)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle300;
Weight = 40.0;
}
public LampPost3(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xB24;
public override int UnlitItemID => 0xB25;
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();
}
}
}

View file

@ -0,0 +1,85 @@
using System;
namespace Server.Items
{
public class Lantern : BaseEquipableLight
{
[Constructible]
public Lantern() : base(0xA25)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(20);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle300;
Weight = 2.0;
}
public Lantern(Serial serial) : base(serial)
{
}
public override int LitItemID
{
get
{
if (ItemID == 0xA15 || ItemID == 0xA17)
return ItemID;
return 0xA22;
}
}
public override int UnlitItemID
{
get
{
if (ItemID == 0xA18)
return ItemID;
return 0xA25;
}
}
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 LanternOfSouls : Lantern
{
[Constructible]
public LanternOfSouls()
{
Hue = 0x482;
}
public LanternOfSouls(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1061618; // Lantern of Souls
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();
}
}
}

View file

@ -0,0 +1,28 @@
namespace Server.Items
{
public class LightSource : Item
{
[Constructible]
public LightSource() : base(0x1647)
{
Layer = Layer.TwoHanded;
Movable = false;
}
public LightSource(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();
}
}
}

View file

@ -0,0 +1,37 @@
using System;
namespace Server.Items
{
[Flippable]
public class PaperLantern : BaseLight
{
[Constructible]
public PaperLantern() : base(0x24BE)
{
Movable = true;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle150;
Weight = 3.0;
}
public PaperLantern(Serial serial) : base(serial)
{
}
public override int LitItemID => 0x24BD;
public override int UnlitItemID => 0x24BE;
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();
}
}
}

View file

@ -0,0 +1,76 @@
using System;
namespace Server.Items
{
[Flippable]
public class RedHangingLantern : BaseLight
{
[Constructible]
public RedHangingLantern() : base(0x24C2)
{
Movable = true;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle300;
Weight = 3.0;
}
public RedHangingLantern(Serial serial) : base(serial)
{
}
public override int LitItemID
{
get
{
if (ItemID == 0x24C2)
return 0x24C1;
return 0x24C3;
}
}
public override int UnlitItemID
{
get
{
if (ItemID == 0x24C1)
return 0x24C2;
return 0x24C4;
}
}
public void Flip()
{
Light = LightType.Circle300;
switch (ItemID)
{
case 0x24C2:
ItemID = 0x24C4;
break;
case 0x24C1:
ItemID = 0x24C3;
break;
case 0x24C4:
ItemID = 0x24C2;
break;
case 0x24C3:
ItemID = 0x24C1;
break;
}
}
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();
}
}
}

View file

@ -0,0 +1,37 @@
using System;
namespace Server.Items
{
[Flippable]
public class RoundPaperLantern : BaseLight
{
[Constructible]
public RoundPaperLantern() : base(0x24CA)
{
Movable = true;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle150;
Weight = 3.0;
}
public RoundPaperLantern(Serial serial) : base(serial)
{
}
public override int LitItemID => 0x24C9;
public override int UnlitItemID => 0x24CA;
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();
}
}
}

View file

@ -0,0 +1,37 @@
using System;
namespace Server.Items
{
[Flippable]
public class ShojiLantern : BaseLight
{
[Constructible]
public ShojiLantern() : base(0x24BC)
{
Movable = true;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle150;
Weight = 3.0;
}
public ShojiLantern(Serial serial) : base(serial)
{
}
public override int LitItemID => 0x24BB;
public override int UnlitItemID => 0x24BC;
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();
}
}
}

View file

@ -0,0 +1,62 @@
using System;
using Server.Mobiles;
namespace Server.Items
{
public class Torch : BaseEquipableLight
{
[Constructible]
public Torch() : base(0xF6B)
{
if (Burnout)
Duration = TimeSpan.FromMinutes(30);
else
Duration = TimeSpan.Zero;
Burning = false;
Light = LightType.Circle300;
Weight = 1.0;
}
public Torch(Serial serial) : base(serial)
{
}
public override int LitItemID => 0xA12;
public override int UnlitItemID => 0xF6B;
public override int LitSound => 0x54;
public override int UnlitSound => 0x4BB;
public override void OnAdded(IEntity parent)
{
base.OnAdded(parent);
if (parent is Mobile mobile && Burning)
MeerMage.StopEffect(mobile, true);
}
public override void Ignite()
{
base.Ignite();
if (Parent is Mobile mobile && Burning)
MeerMage.StopEffect(mobile, true);
}
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();
if (Weight == 2.0)
Weight = 1.0;
}
}
}

View file

@ -0,0 +1,79 @@
using System;
namespace Server.Items
{
[Flippable]
public class WallSconce : BaseLight
{
[Constructible]
public WallSconce() : base(0x9FB)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.WestBig;
Weight = 3.0;
}
public WallSconce(Serial serial) : base(serial)
{
}
public override int LitItemID
{
get
{
if (ItemID == 0x9FB)
return 0x9FD;
return 0xA02;
}
}
public override int UnlitItemID
{
get
{
if (ItemID == 0x9FD)
return 0x9FB;
return 0xA00;
}
}
public void Flip()
{
if (Light == LightType.WestBig)
Light = LightType.NorthBig;
else if (Light == LightType.NorthBig)
Light = LightType.WestBig;
switch (ItemID)
{
case 0x9FB:
ItemID = 0xA00;
break;
case 0x9FD:
ItemID = 0xA02;
break;
case 0xA00:
ItemID = 0x9FB;
break;
case 0xA02:
ItemID = 0x9FD;
break;
}
}
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();
}
}
}

View file

@ -0,0 +1,79 @@
using System;
namespace Server.Items
{
[Flippable]
public class WallTorch : BaseLight
{
[Constructible]
public WallTorch() : base(0xA05)
{
Movable = false;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.WestBig;
Weight = 3.0;
}
public WallTorch(Serial serial) : base(serial)
{
}
public override int LitItemID
{
get
{
if (ItemID == 0xA05)
return 0xA07;
return 0xA0C;
}
}
public override int UnlitItemID
{
get
{
if (ItemID == 0xA07)
return 0xA05;
return 0xA0A;
}
}
public void Flip()
{
if (Light == LightType.WestBig)
Light = LightType.NorthBig;
else if (Light == LightType.NorthBig)
Light = LightType.WestBig;
switch (ItemID)
{
case 0xA05:
ItemID = 0xA0A;
break;
case 0xA07:
ItemID = 0xA0C;
break;
case 0xA0A:
ItemID = 0xA05;
break;
case 0xA0C:
ItemID = 0xA07;
break;
}
}
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();
}
}
}

View file

@ -0,0 +1,76 @@
using System;
namespace Server.Items
{
[Flippable]
public class WhiteHangingLantern : BaseLight
{
[Constructible]
public WhiteHangingLantern() : base(0x24C6)
{
Movable = true;
Duration = TimeSpan.Zero; // Never burnt out
Burning = false;
Light = LightType.Circle300;
Weight = 3.0;
}
public WhiteHangingLantern(Serial serial) : base(serial)
{
}
public override int LitItemID
{
get
{
if (ItemID == 0x24C6)
return 0x24C5;
return 0x24C7;
}
}
public override int UnlitItemID
{
get
{
if (ItemID == 0x24C5)
return 0x24C6;
return 0x24C8;
}
}
public void Flip()
{
Light = LightType.Circle300;
switch (ItemID)
{
case 0x24C6:
ItemID = 0x24C8;
break;
case 0x24C5:
ItemID = 0x24C7;
break;
case 0x24C8:
ItemID = 0x24C6;
break;
case 0x24C7:
ItemID = 0x24C5;
break;
}
}
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();
}
}
}