Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
224
Scripts/Items/Resource/Cloth.cs
Normal file
224
Scripts/Items/Resource/Cloth.cs
Normal file
@@ -0,0 +1,224 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user