servuo/Scripts/Items/Functional/Switches.cs
2020-04-16 18:41:32 -07:00

86 lines
No EOL
2.3 KiB
C#

using System;
namespace Server.Items
{
public class UnderworldSwitchWE : BaseSwitch
{
[Constructable]
public UnderworldSwitchWE()
: base(0x1091, 0x1092, 1042901, 1042900, true)
{
//1042901 = You hear a deep rumbling as something seems to happen.
//1042900 = There seems to be no further effect right now.
//true = It do something, it is not useless or broken switch.
}
public UnderworldSwitchWE(Serial serial)
: base(serial)
{
}
public override void DoSomethingSpecial(Mobile from)
{
foreach (Item item in GetItemsInRange(8))
{
if (item.ItemID == 0x3660 && item.Hue == 1000) //Dark Globe of Sosaria
{
Timer m_timerA = new MoveTimer(item, 1);
m_timerA.Start();
}
}
}
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 MoveTimer : Timer
{
private readonly Item item;
private readonly int num;
private int m_Stage;
private int m_Cicle;
public MoveTimer(Item sphere, int coord)
: base(TimeSpan.FromSeconds(0.0), TimeSpan.FromSeconds(1.5))
{
item = sphere;
num = coord;
}
protected override void OnTick()
{
if (item.Deleted)
{
Stop();
return;
}
m_Stage++;
if (m_Cicle == 0)
item.Z += 1;
else if (m_Cicle == 1)
item.Z += 0;
else
item.Z += -1;
if (m_Stage == 8)
m_Cicle++;
else if (m_Stage == 14)
m_Cicle++;
else if (m_Stage == 22)
Stop();
}
}
}
}