145 lines
3.4 KiB
C#
145 lines
3.4 KiB
C#
using Server;
|
|
using System;
|
|
using Server.Mobiles;
|
|
|
|
namespace Server.Items {
|
|
|
|
public class ExperimentalRoomDoor : MetalDoor2 {
|
|
|
|
public override string DefaultName { get { return "a door"; } }
|
|
|
|
private Room m_Room;
|
|
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public Room Room {
|
|
get { return m_Room; }
|
|
set { m_Room = value; }
|
|
}
|
|
|
|
[Constructable]
|
|
public ExperimentalRoomDoor( Room room, DoorFacing facing ) : base(facing) {
|
|
m_Room = room;
|
|
}
|
|
|
|
public ExperimentalRoomDoor( Serial serial ) : base(serial) {
|
|
|
|
}
|
|
|
|
public override void Use(Mobile from)
|
|
{
|
|
if (from.AccessLevel > AccessLevel.Player)
|
|
{
|
|
from.SendMessage("You open the door with your godly powers.");
|
|
base.Use(from);
|
|
return;
|
|
}
|
|
|
|
Container pack = from.Backpack;
|
|
bool hasGem = false;
|
|
|
|
if (pack != null)
|
|
{
|
|
Item[] items = pack.FindItemsByType(typeof(ExperimentalGem));
|
|
|
|
if (items != null && items.Length > 0)
|
|
{
|
|
hasGem = true;
|
|
|
|
foreach (Item item in items)
|
|
{
|
|
ExperimentalGem gem = (ExperimentalGem)item;
|
|
|
|
if (gem.Active && (gem.CurrentRoom > m_Room || m_Room == Room.RoomZero))
|
|
{
|
|
base.Use(from);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
from.SendLocalizedMessage(1113410); // You must have an active Experimental Gem to enter that room.
|
|
}
|
|
|
|
if(hasGem)
|
|
from.SendLocalizedMessage(1113411); // You have not yet earned access to that room!
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer) {
|
|
base.Serialize(writer);
|
|
writer.Write((int)0); // ver
|
|
writer.Write((int)m_Room);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader) {
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
m_Room = (Room)reader.ReadInt();
|
|
}
|
|
}
|
|
}
|
|
|
|
namespace Server.Items {
|
|
|
|
public class ExperimentalRoomBlocker : Item
|
|
{
|
|
private Room m_Room;
|
|
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public Room Room {
|
|
get { return m_Room; }
|
|
set { m_Room = value; }
|
|
}
|
|
|
|
[Constructable]
|
|
public ExperimentalRoomBlocker( Room room ) : base(7107)
|
|
{
|
|
m_Room = room;
|
|
|
|
Visible = false;
|
|
Movable = false;
|
|
}
|
|
|
|
public ExperimentalRoomBlocker( Serial serial ) : base(serial) {
|
|
|
|
}
|
|
|
|
public override bool OnMoveOver(Mobile from)
|
|
{
|
|
if(from.AccessLevel > AccessLevel.Player)
|
|
return true;
|
|
|
|
Container pack = from.Backpack;
|
|
|
|
if(pack != null)
|
|
{
|
|
Item[] items = pack.FindItemsByType(typeof(ExperimentalGem));
|
|
|
|
if(items != null)
|
|
{
|
|
foreach(Item item in items)
|
|
{
|
|
ExperimentalGem gem = (ExperimentalGem)item;
|
|
|
|
if(gem.Active && (gem.CurrentRoom > m_Room || m_Room == Room.RoomZero))
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
//TODO: Message?
|
|
return false;
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer) {
|
|
base.Serialize(writer);
|
|
writer.Write((int)0); // ver
|
|
writer.Write((int)m_Room);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader) {
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
m_Room = (Room)reader.ReadInt();
|
|
}
|
|
}
|
|
} |