257 lines
7.6 KiB
C#
257 lines
7.6 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Targeting;
|
|
using Server.Mobiles;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public enum CompassionPigmentType
|
|
{
|
|
PhoenixRed = 0,
|
|
AuraOfAmber,
|
|
DeepViolet,
|
|
PolishedBronze,
|
|
VibrantCrimson,
|
|
Lavender,
|
|
GleamingFuchsia,
|
|
DeepBlue,
|
|
GlossyFuchsia,
|
|
DarkVoid,
|
|
MurkySeagreen,
|
|
ReflectiveShadow,
|
|
LiquidSunshine,
|
|
ShadowyBlue,
|
|
BlackAndGreen,
|
|
GlossyBlue,
|
|
HunterGreen,
|
|
SlateBlue,
|
|
MotherOfPearl,
|
|
StarBlue,
|
|
MurkyAmber,
|
|
VibranSeagreen,
|
|
VibrantOcher,
|
|
MossyGreen,
|
|
OliveGreen,
|
|
MottledSunsetBlue,
|
|
TyrianPurple,
|
|
IntenseTeal
|
|
}
|
|
|
|
public class CompassionPigmentInfo
|
|
{
|
|
public CompassionPigmentType Type { get; private set; }
|
|
public int Hue { get; private set; }
|
|
public int LabelNumber { get; private set; }
|
|
|
|
public CompassionPigmentInfo( CompassionPigmentType type, int hue, int labelNumber )
|
|
{
|
|
Type = type;
|
|
Hue = hue;
|
|
LabelNumber = labelNumber;
|
|
}
|
|
|
|
public static CompassionPigmentInfo GetInfo( CompassionPigmentType type )
|
|
{
|
|
int v = (int) type;
|
|
|
|
if ( v < 0 || v >= m_Table.Length )
|
|
v = 0;
|
|
|
|
return m_Table[v];
|
|
}
|
|
|
|
private static CompassionPigmentInfo[] m_Table = new CompassionPigmentInfo[]
|
|
{
|
|
new CompassionPigmentInfo( CompassionPigmentType.PhoenixRed, 1964, 1151651 ), // Phoenix Red Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.AuraOfAmber, 1967, 1152308 ), // Aura of Amber Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.DeepViolet, 1929, 1151912 ), // Deep Violet Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.PolishedBronze, 1944, 1151909 ), // Polished Bronze Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.VibrantCrimson, 1964, 1153386 ), // Vibrant Crimson Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.Lavender, 1951, 1151650 ), // Lavender Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.GleamingFuchsia, 1930, 1152311 ), // Gleaming Fuchsia Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.DeepBlue, 1939, 1152348 ), // Deep Blue Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.GlossyFuchsia, 1919, 1152347 ), // Glossy Fuchsia Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.DarkVoid, 2068, 1154214 ), // Dark Void Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.MurkySeagreen, 1992, 1152309 ), // Murky Seagreen Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.ReflectiveShadow, 1910, 1153387 ), // Reflective Shadow Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.LiquidSunshine, 1923, 1154213 ), // Liquid Sunshine Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.ShadowyBlue, 1960, 1152310 ), // Shadowy Blue Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.BlackAndGreen, 1979, 1151911 ), // Black And Green Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.GlossyBlue, 1916, 1151910 ), // Glossy Blue Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.HunterGreen, 1936, 1151649 ), // Hunter Green Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.SlateBlue, 1983, 1151653 ), // Slate Blue Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.MotherOfPearl, 2720, 1154120 ), // Mother Of Pearl Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.StarBlue, 2723, 1154121 ), // Star Blue Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.MurkyAmber, 1989, 1152350 ), // Murky Amber Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.VibranSeagreen, 1970, 1152349 ), // Vibran Seagreen Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.VibrantOcher, 2725, 1154736 ), // Vibrant Ocher Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.MossyGreen, 2684, 1154731 ), // Mossy Green Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.OliveGreen, 2709, 1154733 ), // Olive Green Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.MottledSunsetBlue, 2714, 1154734 ), // Mottled Sunset Blue Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.TyrianPurple, 2716, 1154735 ), // Tyrian Purple Pigment
|
|
new CompassionPigmentInfo( CompassionPigmentType.IntenseTeal, 2691, 1154732 ), // Intense Teal Pigment
|
|
};
|
|
}
|
|
|
|
public class CompassionPigment : Item, IUsesRemaining
|
|
{
|
|
public override int LabelNumber
|
|
{
|
|
get
|
|
{
|
|
return CompassionPigmentInfo.GetInfo( m_Type ).LabelNumber;
|
|
}
|
|
}
|
|
|
|
private CompassionPigmentType m_Type;
|
|
private int m_UsesRemaining;
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public CompassionPigmentType Type
|
|
{
|
|
get { return m_Type; }
|
|
set
|
|
{
|
|
m_Type = value;
|
|
InvalidateHue();
|
|
}
|
|
}
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public int UsesRemaining
|
|
{
|
|
get { return m_UsesRemaining; }
|
|
set
|
|
{
|
|
m_UsesRemaining = value;
|
|
InvalidateProperties();
|
|
}
|
|
}
|
|
|
|
public bool ShowUsesRemaining
|
|
{
|
|
get { return true; }
|
|
set
|
|
{
|
|
}
|
|
}
|
|
|
|
private void InvalidateHue()
|
|
{
|
|
Hue = CompassionPigmentInfo.GetInfo( m_Type ).Hue;
|
|
}
|
|
|
|
private static CompassionPigmentType GetRandomType()
|
|
{
|
|
var values = Enum.GetValues( typeof( CompassionPigmentType ) );
|
|
return (CompassionPigmentType) values.GetValue( Utility.Random( values.Length ) );
|
|
}
|
|
|
|
[Constructable]
|
|
public CompassionPigment()
|
|
: this( GetRandomType() )
|
|
{
|
|
}
|
|
|
|
[Constructable]
|
|
public CompassionPigment( CompassionPigmentType type )
|
|
: this( type, 5 )
|
|
{
|
|
}
|
|
|
|
[Constructable]
|
|
public CompassionPigment( CompassionPigmentType type, int uses )
|
|
: base( 0xEFF )
|
|
{
|
|
m_Type = type;
|
|
m_UsesRemaining = uses;
|
|
|
|
Weight = 1.0;
|
|
|
|
InvalidateHue();
|
|
}
|
|
|
|
public override void OnDoubleClick( Mobile from )
|
|
{
|
|
from.SendLocalizedMessage( 1070929 ); // Select the artifact or enhanced magic item to dye.
|
|
|
|
from.Target = new DyeTarget( this );
|
|
}
|
|
|
|
public override void AddUsesRemainingProperties(ObjectPropertyList list)
|
|
{
|
|
list.Add( 1060584, m_UsesRemaining.ToString() ); // uses remaining: ~1_val~
|
|
}
|
|
|
|
public CompassionPigment( Serial serial )
|
|
: base( serial )
|
|
{
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.Write( (int) 0 );
|
|
|
|
writer.Write( (int) m_Type );
|
|
writer.Write( (int) m_UsesRemaining );
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadInt();
|
|
|
|
m_Type = (CompassionPigmentType) reader.ReadInt();
|
|
m_UsesRemaining = reader.ReadInt();
|
|
}
|
|
|
|
private class DyeTarget : Target
|
|
{
|
|
private CompassionPigment m_Pigment;
|
|
|
|
public DyeTarget( CompassionPigment pigment )
|
|
: base( 8, false, TargetFlags.None )
|
|
{
|
|
m_Pigment = pigment;
|
|
}
|
|
|
|
protected override void OnTarget( Mobile from, object targeted )
|
|
{
|
|
Item item = targeted as Item;
|
|
|
|
if ( item == null )
|
|
return;
|
|
|
|
if ( !item.IsChildOf( from.Backpack ) )
|
|
{
|
|
from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
|
|
}
|
|
else if (item is MetalPigmentsOfTokuno || item is LesserPigmentsOfTokuno || item is PigmentsOfTokuno || item is CompassionPigment)
|
|
{
|
|
from.SendLocalizedMessage( 1042083 ); // You cannot dye that.
|
|
}
|
|
else if ( item.IsLockedDown )
|
|
{
|
|
from.SendLocalizedMessage( 1070932 ); // You may not dye artifacts and enhanced magic items which are locked down.
|
|
}
|
|
else if (BasePigmentsOfTokuno.IsValidItem(item))
|
|
{
|
|
item.Hue = m_Pigment.Hue;
|
|
|
|
m_Pigment.UsesRemaining--;
|
|
|
|
if ( m_Pigment.UsesRemaining <= 0 )
|
|
m_Pigment.Delete();
|
|
}
|
|
else
|
|
{
|
|
from.SendLocalizedMessage( 1070931 ); // You can only dye artifacts and enhanced magic items with this tub.
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|