Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
185
Scripts/Services/BasketWeaving/PlantPigment.cs
Normal file
185
Scripts/Services/BasketWeaving/PlantPigment.cs
Normal file
@@ -0,0 +1,185 @@
|
||||
using System;
|
||||
using Server.Engines.Plants;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class PlantPigment : Item, IPigmentHue
|
||||
{
|
||||
private PlantPigmentHue m_Hue;
|
||||
[Constructable]
|
||||
public PlantPigment()
|
||||
: this(PlantPigmentHue.None)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public PlantPigment(PlantPigmentHue hue)
|
||||
: base(0x0F02)
|
||||
{
|
||||
Weight = 1.0;
|
||||
PigmentHue = hue;
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public PlantPigment(PlantHue hue)
|
||||
: base(0x0F02)
|
||||
{
|
||||
Weight = 1.0;
|
||||
PigmentHue = PlantPigmentHueInfo.HueFromPlantHue(hue);
|
||||
}
|
||||
|
||||
public PlantPigment(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public bool RetainsColorFrom
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public PlantPigmentHue PigmentHue
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Hue;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Hue = value;
|
||||
//set any invalid pigment hue to Plain
|
||||
if (m_Hue != PlantPigmentHueInfo.GetInfo(m_Hue).PlantPigmentHue)
|
||||
m_Hue = PlantPigmentHue.Plain;
|
||||
Hue = PlantPigmentHueInfo.GetInfo(m_Hue).Hue;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
public override int LabelNumber
|
||||
{
|
||||
get
|
||||
{
|
||||
return 1112132;
|
||||
}
|
||||
}// plant pigment
|
||||
public override void AddNameProperty(ObjectPropertyList list)
|
||||
{
|
||||
PlantPigmentHueInfo info = PlantPigmentHueInfo.GetInfo(m_Hue);
|
||||
int cliloc;
|
||||
|
||||
if (Amount > 1)
|
||||
{
|
||||
cliloc = info.IsBright() ? 1113271 : 1113270;
|
||||
list.Add(cliloc, String.Format("{0}\t#{1}", Amount.ToString(), info.Name));
|
||||
}
|
||||
else
|
||||
{
|
||||
cliloc = info.IsBright() ? 1112134 : 1112133;
|
||||
list.Add(cliloc, String.Format("#{0}", info.Name));
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)1); // version
|
||||
|
||||
writer.Write((int)m_Hue);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
m_Hue = (PlantPigmentHue)reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!PlantPigmentHueInfo.IsMixable(PigmentHue))
|
||||
from.SendLocalizedMessage(1112125); // This pigment is saturated and cannot be mixed further.
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1112123); // Which plant pigment do you wish to mix this with?
|
||||
|
||||
from.Target = new InternalTarget(this);
|
||||
}
|
||||
}
|
||||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private readonly PlantPigment m_Item;
|
||||
public InternalTarget(PlantPigment item)
|
||||
: base(2, false, TargetFlags.None)
|
||||
{
|
||||
m_Item = item;
|
||||
}
|
||||
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (m_Item.Deleted)
|
||||
return;
|
||||
|
||||
PlantPigment pigment = targeted as PlantPigment;
|
||||
if (null == pigment)
|
||||
{
|
||||
from.SendLocalizedMessage(1112124); // You may only mix this with another non-saturated plant pigment.
|
||||
return;
|
||||
}
|
||||
|
||||
if (from.Skills[SkillName.Alchemy].Base < 75.0 && from.Skills[SkillName.Cooking].Base < 75.0)
|
||||
{
|
||||
from.SendLocalizedMessage(1112214); // You lack the alchemy or cooking skills to mix plant pigments.
|
||||
}
|
||||
else if ((PlantPigmentHue.White == pigment.PigmentHue || PlantPigmentHue.Black == pigment.PigmentHue ||
|
||||
PlantPigmentHue.White == m_Item.PigmentHue || PlantPigmentHue.Black == m_Item.PigmentHue) &&
|
||||
from.Skills[SkillName.Alchemy].Base < 100.0 &&
|
||||
from.Skills[SkillName.Cooking].Base < 100.0)
|
||||
{
|
||||
from.SendLocalizedMessage(1112213); // You lack the alchemy or cooking skills to mix so unstable a pigment.
|
||||
}
|
||||
else if (m_Item.PigmentHue == pigment.PigmentHue)
|
||||
{
|
||||
from.SendLocalizedMessage(1112242); // You decide not to waste pigments by mixing two identical colors.
|
||||
}
|
||||
else if ((m_Item.PigmentHue & ~(PlantPigmentHue.Bright | PlantPigmentHue.Dark | PlantPigmentHue.Ice)) ==
|
||||
(pigment.PigmentHue & ~(PlantPigmentHue.Bright | PlantPigmentHue.Dark | PlantPigmentHue.Ice)))
|
||||
{
|
||||
from.SendLocalizedMessage(1112243); // You decide not to waste pigments by mixing variations of the same hue.
|
||||
}
|
||||
else if ((PlantPigmentHue.White == m_Item.PigmentHue && PlantPigmentHueInfo.IsBright(pigment.PigmentHue)) ||
|
||||
(PlantPigmentHue.White == pigment.PigmentHue && PlantPigmentHueInfo.IsBright(m_Item.PigmentHue)))
|
||||
{
|
||||
from.SendLocalizedMessage(1112241); // This pigment is too diluted to be faded further.
|
||||
}
|
||||
else if (!PlantPigmentHueInfo.IsMixable(pigment.PigmentHue))
|
||||
from.SendLocalizedMessage(1112125); // This pigment is saturated and cannot be mixed further.
|
||||
else
|
||||
{
|
||||
PlantPigmentHue newHue = PlantPigmentHueInfo.Mix(m_Item.PigmentHue, pigment.PigmentHue);
|
||||
if (PlantPigmentHue.None == newHue)
|
||||
from.SendLocalizedMessage(1112125); // This pigment is saturated and cannot be mixed further.
|
||||
else
|
||||
{
|
||||
pigment.PigmentHue = newHue;
|
||||
Bottle bottle = new Bottle();
|
||||
bottle.MoveToWorld(m_Item.Location, m_Item.Map);
|
||||
m_Item.Delete();
|
||||
from.PlaySound(0x240);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user