121 lines
3.0 KiB
C#
121 lines
3.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using Server.Items;
|
|
using Server.Multis;
|
|
using Server.Mobiles;
|
|
using Server.Network;
|
|
|
|
namespace Server.Custom
|
|
{
|
|
public class LinkedBag : Bag
|
|
{
|
|
private LinkedBag mate;
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public LinkedBag Mate { get { return mate; } set { mate = value; } }
|
|
|
|
[Constructable]
|
|
public LinkedBag()
|
|
: base()
|
|
{
|
|
Name = "Linked Bag";
|
|
Weight = 2.0;
|
|
}
|
|
|
|
public LinkedBag(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override bool OnDragDrop(Mobile from, Item dropped)
|
|
{
|
|
return OnDragDropInto(from, dropped, new Point3D(20, 100, 0));
|
|
}
|
|
|
|
public override bool OnDragDropInto(Mobile from, Item item, Point3D p)
|
|
{
|
|
if (item is LinkedBag) return false;
|
|
if (mate == null) return base.OnDragDropInto(from, item, p);
|
|
if (!mate.CheckHold(from, item, true, true))
|
|
return false;
|
|
try
|
|
{
|
|
mate.DropItem(item);
|
|
}
|
|
catch
|
|
{
|
|
from.SendMessage("Unable to do that.");
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.Write((int)0); // version
|
|
|
|
writer.Write(mate);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
|
|
int version = reader.ReadInt();
|
|
|
|
mate = reader.ReadItem() as LinkedBag;
|
|
}
|
|
}
|
|
|
|
public class LinkedBagsBag : Bag
|
|
{
|
|
public override string DefaultName
|
|
{
|
|
get { return "a Bag of Linked Bags"; }
|
|
}
|
|
|
|
[Constructable]
|
|
public LinkedBagsBag()
|
|
: base()
|
|
{
|
|
Movable = true;
|
|
Hue = Utility.RandomBlueHue();
|
|
}
|
|
|
|
public override void OnDoubleClick(Mobile from)
|
|
{
|
|
if (Items.Count == 0 && from.AccessLevel >= AccessLevel.Counselor)
|
|
{
|
|
LinkedBag bagA = new LinkedBag();
|
|
LinkedBag bagB = new LinkedBag();
|
|
bagA.Mate = bagB;
|
|
bagB.Mate = bagA;
|
|
bagA.Name = string.Format("{0}'s Linked Bag", from.Name);
|
|
bagB.Name = string.Format("{0}'s Linked Bag", from.Name);
|
|
DropItem(bagA);
|
|
DropItem(bagB);
|
|
}
|
|
base.OnDoubleClick(from);
|
|
}
|
|
|
|
public LinkedBagsBag(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
|
|
writer.Write((int)0); // version
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
} |