224 lines
5.1 KiB
C#
224 lines
5.1 KiB
C#
using System;
|
|
using Server.Network;
|
|
|
|
namespace Server.Items
|
|
{
|
|
[FlipableAttribute(0x1766, 0x1768)]
|
|
public class Cloth : Item, IScissorable, IDyable, ICommodity
|
|
{
|
|
[Constructable]
|
|
public Cloth()
|
|
: this(1)
|
|
{
|
|
}
|
|
|
|
[Constructable]
|
|
public Cloth(int amount)
|
|
: base(0x1766)
|
|
{
|
|
this.Stackable = true;
|
|
this.Amount = amount;
|
|
}
|
|
|
|
public Cloth(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override double DefaultWeight
|
|
{
|
|
get
|
|
{
|
|
return 0.1;
|
|
}
|
|
}
|
|
TextDefinition ICommodity.Description
|
|
{
|
|
get
|
|
{
|
|
return this.LabelNumber;
|
|
}
|
|
}
|
|
bool ICommodity.IsDeedable
|
|
{
|
|
get
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
public bool Dye(Mobile from, DyeTub sender)
|
|
{
|
|
if (this.Deleted)
|
|
return false;
|
|
|
|
this.Hue = sender.DyedHue;
|
|
|
|
return true;
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
public override void OnSingleClick(Mobile from)
|
|
{
|
|
int number = (this.Amount == 1) ? 1049124 : 1049123;
|
|
|
|
from.Send(new MessageLocalized(this.Serial, this.ItemID, MessageType.Regular, 0x3B2, 3, number, "", this.Amount.ToString()));
|
|
}
|
|
|
|
public bool Scissor(Mobile from, Scissors scissors)
|
|
{
|
|
if (this.Deleted || !from.CanSee(this))
|
|
return false;
|
|
|
|
base.ScissorHelper(from, new Bandage(), 1);
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public class CutUpCloth : Item
|
|
{
|
|
public override int LabelNumber { get { return 1044458; } } // cut-up cloth
|
|
|
|
[Constructable]
|
|
public CutUpCloth()
|
|
: base(0x1767)
|
|
{
|
|
}
|
|
|
|
public CutUpCloth(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();
|
|
}
|
|
|
|
public void CutUp(Mobile from, Item[] items)
|
|
{
|
|
//Container backpack = from.Backpack;
|
|
|
|
for (int i = 0; i < items.Length; i++)
|
|
{
|
|
BoltOfCloth boc = items[i] as BoltOfCloth;
|
|
|
|
if (boc != null)
|
|
boc.Scissor(from, null);
|
|
}
|
|
}
|
|
}
|
|
|
|
public class CombineCloth : Item
|
|
{
|
|
public override int LabelNumber { get { return 1044459; } } // combine cloth
|
|
|
|
[Constructable]
|
|
public CombineCloth()
|
|
: base(0x1767)
|
|
{
|
|
}
|
|
|
|
public CombineCloth(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();
|
|
}
|
|
|
|
public static bool CheckHue(int hue, int[] hues, out int count)
|
|
{
|
|
int result = 0;
|
|
bool success = true;
|
|
|
|
for (int i = 0; i < hues.Length; i++)
|
|
{
|
|
if (hues[i] == hue)
|
|
{
|
|
result = i;
|
|
success = false;
|
|
}
|
|
}
|
|
|
|
count = result;
|
|
|
|
return success;
|
|
}
|
|
|
|
public void Combine(Mobile from, Item[] items)
|
|
{
|
|
Container backpack = from.Backpack;
|
|
|
|
int[] hues = new int[backpack.Items.Count];
|
|
int[] amounts = new int[backpack.Items.Count];
|
|
|
|
for (int i = 0; i < items.Length; i++)
|
|
{
|
|
Cloth c = items[i] as Cloth;
|
|
|
|
if (c != null)
|
|
{
|
|
int count;
|
|
|
|
if (CheckHue(c.Hue, hues, out count))
|
|
{
|
|
hues[i] = c.Hue;
|
|
amounts[i] = c.Amount;
|
|
}
|
|
else
|
|
{
|
|
amounts[count] += c.Amount;
|
|
}
|
|
|
|
c.Delete();
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < hues.Length; i++)
|
|
{
|
|
Cloth cloth = new Cloth();
|
|
cloth.Hue = hues[i];
|
|
cloth.Amount = amounts[i];
|
|
|
|
if (cloth.Amount > 0)
|
|
backpack.DropItem(cloth);
|
|
else
|
|
cloth.Delete();
|
|
}
|
|
}
|
|
}
|
|
} |