Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
217
Scripts/Items/Functional/PrismOfLightAltar.cs
Normal file
217
Scripts/Items/Functional/PrismOfLightAltar.cs
Normal file
@@ -0,0 +1,217 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class PrismOfLightAltar : PeerlessAltar
|
||||
{
|
||||
private int m_ID;
|
||||
public override int KeyCount { get { return 3; } }
|
||||
public override MasterKey MasterKey { get { return new PrismOfLightKey(); } }
|
||||
public List<Item> Pedestals = new List<Item>();
|
||||
|
||||
public override Type[] Keys
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Type[]
|
||||
{
|
||||
typeof(JaggedCrystals), typeof(BrokenCrystals), typeof(PiecesOfCrystal),
|
||||
typeof(CrushedCrystals), typeof(ScatteredCrystals), typeof(ShatteredCrystals)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public override BasePeerless Boss { get { return new ShimmeringEffusion(); } }
|
||||
|
||||
[Constructable]
|
||||
public PrismOfLightAltar() : base(0x2206)
|
||||
{
|
||||
Visible = false;
|
||||
|
||||
BossLocation = new Point3D(6520, 122, -20);
|
||||
TeleportDest = new Point3D(6520, 139, -20);
|
||||
ExitDest = new Point3D(3785, 1107, 20);
|
||||
|
||||
m_ID = 0;
|
||||
}
|
||||
|
||||
public override void ClearContainer()
|
||||
{
|
||||
base.ClearContainer();
|
||||
|
||||
Pedestals.ForEach(x => x.Hue = ((PrismOfLightPillar)x).OrgHue);
|
||||
}
|
||||
|
||||
public override Rectangle2D[] BossBounds
|
||||
{
|
||||
get { return m_Bounds; }
|
||||
}
|
||||
|
||||
private Rectangle2D[] m_Bounds = new Rectangle2D[]
|
||||
{
|
||||
new Rectangle2D(6500, 111, 45, 35),
|
||||
};
|
||||
|
||||
public PrismOfLightAltar(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)1); // version
|
||||
|
||||
writer.Write(Pedestals, true);
|
||||
|
||||
writer.Write((int)m_ID);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Pedestals = reader.ReadStrongItemList();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
m_ID = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int GetID()
|
||||
{
|
||||
int id = m_ID;
|
||||
m_ID += 1;
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
public class PrismOfLightPillar : Container
|
||||
{
|
||||
public override int LabelNumber { get { return 1024643; } } // pedestal
|
||||
|
||||
private PrismOfLightAltar m_Altar;
|
||||
private int m_OrgHue;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public PrismOfLightAltar Altar
|
||||
{
|
||||
get { return m_Altar; }
|
||||
set
|
||||
{
|
||||
m_Altar = value;
|
||||
|
||||
if (!m_Altar.Pedestals.Contains(this))
|
||||
m_Altar.Pedestals.Add(this);
|
||||
}
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int ID { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int OrgHue
|
||||
{
|
||||
get { return m_OrgHue; }
|
||||
set
|
||||
{
|
||||
m_OrgHue = value;
|
||||
Hue = m_OrgHue;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public PrismOfLightPillar(PrismOfLightAltar altar, int hue)
|
||||
: base(0x207D)
|
||||
{
|
||||
OrgHue = hue;
|
||||
Movable = false;
|
||||
|
||||
m_Altar = altar;
|
||||
|
||||
if (m_Altar != null)
|
||||
{
|
||||
ID = m_Altar.GetID();
|
||||
m_Altar.Pedestals.Add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public PrismOfLightPillar(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
if (m_Altar == null)
|
||||
return false;
|
||||
|
||||
if (dropped.GetType() == m_Altar.Keys[ID])
|
||||
{
|
||||
if (m_Altar.OnDragDrop(from, dropped))
|
||||
{
|
||||
Hue = 36;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1072682); // This is not the proper key.
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)1); // version
|
||||
|
||||
writer.Write((int)m_OrgHue);
|
||||
|
||||
writer.Write((int)ID);
|
||||
writer.Write((Item)m_Altar);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_OrgHue = reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
ID = reader.ReadInt();
|
||||
m_Altar = reader.ReadItem() as PrismOfLightAltar;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (version < 1)
|
||||
{
|
||||
if (m_OrgHue == 0)
|
||||
m_OrgHue = Hue;
|
||||
|
||||
if (!m_Altar.Pedestals.Contains(this))
|
||||
m_Altar.Pedestals.Add(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user