Files
abysmal-isle/Scripts/Services/CleanUpBritannia/Items/Pigments/CompassionPigment.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

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.
}
}
}
}
}