Fixes code according to modern code style. Fixes a few expression bugs.
This commit is contained in:
parent
89eea25e5f
commit
970fd563b2
3324 changed files with 441118 additions and 433755 deletions
|
|
@ -1,30 +1,30 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BlackDyeTub : DyeTub
|
||||
{
|
||||
[Constructible]
|
||||
public BlackDyeTub()
|
||||
{
|
||||
Hue = DyedHue = 0x0001;
|
||||
Redyable = false;
|
||||
}
|
||||
public class BlackDyeTub : DyeTub
|
||||
{
|
||||
[Constructible]
|
||||
public BlackDyeTub()
|
||||
{
|
||||
Hue = DyedHue = 0x0001;
|
||||
Redyable = false;
|
||||
}
|
||||
|
||||
public BlackDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public BlackDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +1,30 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class BlazeDyeTub : DyeTub
|
||||
{
|
||||
[Constructible]
|
||||
public BlazeDyeTub()
|
||||
{
|
||||
Hue = DyedHue = 0x489;
|
||||
Redyable = false;
|
||||
}
|
||||
public class BlazeDyeTub : DyeTub
|
||||
{
|
||||
[Constructible]
|
||||
public BlazeDyeTub()
|
||||
{
|
||||
Hue = DyedHue = 0x489;
|
||||
Redyable = false;
|
||||
}
|
||||
|
||||
public BlazeDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public BlazeDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,215 +3,216 @@ using Server.Network;
|
|||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class CustomHueGroup
|
||||
{
|
||||
public int Name { get; }
|
||||
public class CustomHueGroup
|
||||
{
|
||||
public CustomHueGroup(int name, int[] hues)
|
||||
{
|
||||
Name = name;
|
||||
Hues = hues;
|
||||
}
|
||||
|
||||
public string NameString { get; }
|
||||
public CustomHueGroup(string name, int[] hues)
|
||||
{
|
||||
NameString = name;
|
||||
Hues = hues;
|
||||
}
|
||||
|
||||
public int[] Hues { get; }
|
||||
public int Name{ get; }
|
||||
|
||||
public CustomHueGroup( int name, int[] hues )
|
||||
{
|
||||
Name = name;
|
||||
Hues = hues;
|
||||
}
|
||||
public string NameString{ get; }
|
||||
|
||||
public CustomHueGroup( string name, int[] hues )
|
||||
{
|
||||
NameString = name;
|
||||
Hues = hues;
|
||||
}
|
||||
}
|
||||
public int[] Hues{ get; }
|
||||
}
|
||||
|
||||
public class CustomHuePicker
|
||||
{
|
||||
public bool DefaultSupported { get; }
|
||||
public class CustomHuePicker
|
||||
{
|
||||
public static readonly CustomHuePicker SpecialDyeTub = new CustomHuePicker(new[]
|
||||
{
|
||||
/* Violet */
|
||||
new CustomHueGroup(1018345, new[] { 1230, 1231, 1232, 1233, 1234, 1235 }),
|
||||
/* Tan */
|
||||
new CustomHueGroup(1018346, new[] { 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508 }),
|
||||
/* Brown */
|
||||
new CustomHueGroup(1018347, new[] { 2012, 2013, 2014, 2015, 2016, 2017 }),
|
||||
/* Dark Blue */
|
||||
new CustomHueGroup(1018348, new[] { 1303, 1304, 1305, 1306, 1307, 1308 }),
|
||||
/* Forest Green */
|
||||
new CustomHueGroup(1018349, new[] { 1420, 1421, 1422, 1423, 1424, 1425, 1426 }),
|
||||
/* Pink */
|
||||
new CustomHueGroup(1018350, new[] { 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626 }),
|
||||
/* Red */
|
||||
new CustomHueGroup(1018351, new[] { 1640, 1641, 1642, 1643, 1644 }),
|
||||
/* Olive */
|
||||
new CustomHueGroup(1018352, new[] { 2001, 2002, 2003, 2004, 2005 })
|
||||
}, false, 1018344);
|
||||
|
||||
public CustomHueGroup[] Groups { get; }
|
||||
public static readonly CustomHuePicker LeatherDyeTub = new CustomHuePicker(new[]
|
||||
{
|
||||
/* Dull Copper */
|
||||
new CustomHueGroup(1018332, new[] { 2419, 2420, 2421, 2422, 2423, 2424 }),
|
||||
/* Shadow Iron */
|
||||
new CustomHueGroup(1018333, new[] { 2406, 2407, 2408, 2409, 2410, 2411, 2412 }),
|
||||
/* Copper */
|
||||
new CustomHueGroup(1018334, new[] { 2413, 2414, 2415, 2416, 2417, 2418 }),
|
||||
/* Bronze */
|
||||
new CustomHueGroup(1018335, new[] { 2414, 2415, 2416, 2417, 2418 }),
|
||||
/* Glden */
|
||||
new CustomHueGroup(1018336, new[] { 2213, 2214, 2215, 2216, 2217, 2218 }),
|
||||
/* Agapite */
|
||||
new CustomHueGroup(1018337, new[] { 2425, 2426, 2427, 2428, 2429, 2430 }),
|
||||
/* Verite */
|
||||
new CustomHueGroup(1018338, new[] { 2207, 2208, 2209, 2210, 2211, 2212 }),
|
||||
/* Valorite */
|
||||
new CustomHueGroup(1018339, new[] { 2219, 2220, 2221, 2222, 2223, 2224 }),
|
||||
/* Reds */
|
||||
new CustomHueGroup(1018340, new[] { 2113, 2114, 2115, 2116, 2117, 2118 }),
|
||||
/* Blues */
|
||||
new CustomHueGroup(1018341, new[] { 2119, 2120, 2121, 2122, 2123, 2124 }),
|
||||
/* Greens */
|
||||
new CustomHueGroup(1018342, new[] { 2126, 2127, 2128, 2129, 2130 }),
|
||||
/* Yellows */
|
||||
new CustomHueGroup(1018343, new[] { 2213, 2214, 2215, 2216, 2217, 2218 })
|
||||
}, true);
|
||||
|
||||
public int Title { get; }
|
||||
public CustomHuePicker(CustomHueGroup[] groups, bool defaultSupported)
|
||||
{
|
||||
Groups = groups;
|
||||
DefaultSupported = defaultSupported;
|
||||
}
|
||||
|
||||
public string TitleString { get; }
|
||||
public CustomHuePicker(CustomHueGroup[] groups, bool defaultSupported, int title)
|
||||
{
|
||||
Groups = groups;
|
||||
DefaultSupported = defaultSupported;
|
||||
Title = title;
|
||||
}
|
||||
|
||||
public CustomHuePicker( CustomHueGroup[] groups, bool defaultSupported )
|
||||
{
|
||||
Groups = groups;
|
||||
DefaultSupported = defaultSupported;
|
||||
}
|
||||
public CustomHuePicker(CustomHueGroup[] groups, bool defaultSupported, string title)
|
||||
{
|
||||
Groups = groups;
|
||||
DefaultSupported = defaultSupported;
|
||||
TitleString = title;
|
||||
}
|
||||
|
||||
public CustomHuePicker( CustomHueGroup[] groups, bool defaultSupported, int title )
|
||||
{
|
||||
Groups = groups;
|
||||
DefaultSupported = defaultSupported;
|
||||
Title = title;
|
||||
}
|
||||
public bool DefaultSupported{ get; }
|
||||
|
||||
public CustomHuePicker( CustomHueGroup[] groups, bool defaultSupported, string title )
|
||||
{
|
||||
Groups = groups;
|
||||
DefaultSupported = defaultSupported;
|
||||
TitleString = title;
|
||||
}
|
||||
public CustomHueGroup[] Groups{ get; }
|
||||
|
||||
public static readonly CustomHuePicker SpecialDyeTub = new CustomHuePicker( new[]
|
||||
{
|
||||
/* Violet */
|
||||
new CustomHueGroup( 1018345, new[]{ 1230, 1231, 1232, 1233, 1234, 1235 } ),
|
||||
/* Tan */
|
||||
new CustomHueGroup( 1018346, new[]{ 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508 } ),
|
||||
/* Brown */
|
||||
new CustomHueGroup( 1018347, new[]{ 2012, 2013, 2014, 2015, 2016, 2017 } ),
|
||||
/* Dark Blue */
|
||||
new CustomHueGroup( 1018348, new[]{ 1303, 1304, 1305, 1306, 1307, 1308 } ),
|
||||
/* Forest Green */
|
||||
new CustomHueGroup( 1018349, new[]{ 1420, 1421, 1422, 1423, 1424, 1425, 1426 } ),
|
||||
/* Pink */
|
||||
new CustomHueGroup( 1018350, new[]{ 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626 } ),
|
||||
/* Red */
|
||||
new CustomHueGroup( 1018351, new[]{ 1640, 1641, 1642, 1643, 1644 } ),
|
||||
/* Olive */
|
||||
new CustomHueGroup( 1018352, new[]{ 2001, 2002, 2003, 2004, 2005 } )
|
||||
}, false, 1018344 );
|
||||
public int Title{ get; }
|
||||
|
||||
public static readonly CustomHuePicker LeatherDyeTub = new CustomHuePicker( new[]
|
||||
{
|
||||
/* Dull Copper */
|
||||
new CustomHueGroup( 1018332, new[]{ 2419, 2420, 2421, 2422, 2423, 2424 } ),
|
||||
/* Shadow Iron */
|
||||
new CustomHueGroup( 1018333, new[]{ 2406, 2407, 2408, 2409, 2410, 2411, 2412 } ),
|
||||
/* Copper */
|
||||
new CustomHueGroup( 1018334, new[]{ 2413, 2414, 2415, 2416, 2417, 2418 } ),
|
||||
/* Bronze */
|
||||
new CustomHueGroup( 1018335, new[]{ 2414, 2415, 2416, 2417, 2418 } ),
|
||||
/* Glden */
|
||||
new CustomHueGroup( 1018336, new[]{ 2213, 2214, 2215, 2216, 2217, 2218 } ),
|
||||
/* Agapite */
|
||||
new CustomHueGroup( 1018337, new[]{ 2425, 2426, 2427, 2428, 2429, 2430 } ),
|
||||
/* Verite */
|
||||
new CustomHueGroup( 1018338, new[]{ 2207, 2208, 2209, 2210, 2211, 2212 } ),
|
||||
/* Valorite */
|
||||
new CustomHueGroup( 1018339, new[]{ 2219, 2220, 2221, 2222, 2223, 2224 } ),
|
||||
/* Reds */
|
||||
new CustomHueGroup( 1018340, new[]{ 2113, 2114, 2115, 2116, 2117, 2118 } ),
|
||||
/* Blues */
|
||||
new CustomHueGroup( 1018341, new[]{ 2119, 2120, 2121, 2122, 2123, 2124 } ),
|
||||
/* Greens */
|
||||
new CustomHueGroup( 1018342, new[]{ 2126, 2127, 2128, 2129, 2130 } ),
|
||||
/* Yellows */
|
||||
new CustomHueGroup( 1018343, new[]{ 2213, 2214, 2215, 2216, 2217, 2218 } )
|
||||
}, true );
|
||||
}
|
||||
public string TitleString{ get; }
|
||||
}
|
||||
|
||||
public delegate void CustomHuePickerCallback( Mobile from, object state, int hue );
|
||||
public delegate void CustomHuePickerCallback(Mobile from, object state, int hue);
|
||||
|
||||
public class CustomHuePickerGump : Gump
|
||||
{
|
||||
private Mobile m_From;
|
||||
private CustomHuePicker m_Definition;
|
||||
private CustomHuePickerCallback m_Callback;
|
||||
private object m_State;
|
||||
public class CustomHuePickerGump : Gump
|
||||
{
|
||||
private CustomHuePickerCallback m_Callback;
|
||||
private CustomHuePicker m_Definition;
|
||||
private Mobile m_From;
|
||||
private object m_State;
|
||||
|
||||
private int GetRadioID( int group, int index )
|
||||
{
|
||||
return (index * m_Definition.Groups.Length) + group;
|
||||
}
|
||||
public CustomHuePickerGump(Mobile from, CustomHuePicker definition, CustomHuePickerCallback callback, object state) :
|
||||
base(50, 50)
|
||||
{
|
||||
m_From = from;
|
||||
m_Definition = definition;
|
||||
m_Callback = callback;
|
||||
m_State = state;
|
||||
|
||||
private void RenderBackground()
|
||||
{
|
||||
AddPage( 0 );
|
||||
RenderBackground();
|
||||
RenderCategories();
|
||||
}
|
||||
|
||||
AddBackground( 0, 0, 450, 450, 5054 );
|
||||
AddBackground( 10, 10, 430, 430, 3000 );
|
||||
private int GetRadioID(int group, int index)
|
||||
{
|
||||
return index * m_Definition.Groups.Length + group;
|
||||
}
|
||||
|
||||
if ( m_Definition.TitleString != null )
|
||||
AddHtml( 20, 30, 400, 25, m_Definition.TitleString, false, false );
|
||||
else if ( m_Definition.Title > 0 )
|
||||
AddHtmlLocalized( 20, 30, 400, 25, m_Definition.Title, false, false );
|
||||
private void RenderBackground()
|
||||
{
|
||||
AddPage(0);
|
||||
|
||||
AddButton( 20, 400, 4005, 4007, 1, GumpButtonType.Reply, 0 );
|
||||
AddHtmlLocalized( 55, 400, 200, 25, 1011036, false, false ); // OKAY
|
||||
AddBackground(0, 0, 450, 450, 5054);
|
||||
AddBackground(10, 10, 430, 430, 3000);
|
||||
|
||||
if ( m_Definition.DefaultSupported )
|
||||
{
|
||||
AddButton( 200, 400, 4005, 4007, 2, GumpButtonType.Reply, 0 );
|
||||
AddLabel( 235, 400, 0, "DEFAULT" );
|
||||
}
|
||||
}
|
||||
if (m_Definition.TitleString != null)
|
||||
AddHtml(20, 30, 400, 25, m_Definition.TitleString, false, false);
|
||||
else if (m_Definition.Title > 0)
|
||||
AddHtmlLocalized(20, 30, 400, 25, m_Definition.Title, false, false);
|
||||
|
||||
private void RenderCategories()
|
||||
{
|
||||
CustomHueGroup[] groups = m_Definition.Groups;
|
||||
AddButton(20, 400, 4005, 4007, 1, GumpButtonType.Reply, 0);
|
||||
AddHtmlLocalized(55, 400, 200, 25, 1011036, false, false); // OKAY
|
||||
|
||||
for ( int i = 0; i < groups.Length; ++i )
|
||||
{
|
||||
AddButton( 30, 85 + (i * 25), 5224, 5224, 0, GumpButtonType.Page, 1 + i );
|
||||
if (m_Definition.DefaultSupported)
|
||||
{
|
||||
AddButton(200, 400, 4005, 4007, 2, GumpButtonType.Reply, 0);
|
||||
AddLabel(235, 400, 0, "DEFAULT");
|
||||
}
|
||||
}
|
||||
|
||||
if ( groups[i].NameString != null )
|
||||
AddHtml( 55, 85 + (i * 25), 200, 25, groups[i].NameString, false, false );
|
||||
else
|
||||
AddHtmlLocalized( 55, 85 + (i * 25), 200, 25, groups[i].Name, false, false );
|
||||
}
|
||||
private void RenderCategories()
|
||||
{
|
||||
CustomHueGroup[] groups = m_Definition.Groups;
|
||||
|
||||
for ( int i = 0; i < groups.Length; ++i )
|
||||
{
|
||||
AddPage( 1 + i );
|
||||
for (int i = 0; i < groups.Length; ++i)
|
||||
{
|
||||
AddButton(30, 85 + i * 25, 5224, 5224, 0, GumpButtonType.Page, 1 + i);
|
||||
|
||||
int[] hues = groups[i].Hues;
|
||||
if (groups[i].NameString != null)
|
||||
AddHtml(55, 85 + i * 25, 200, 25, groups[i].NameString, false, false);
|
||||
else
|
||||
AddHtmlLocalized(55, 85 + i * 25, 200, 25, groups[i].Name, false, false);
|
||||
}
|
||||
|
||||
for ( int j = 0; j < hues.Length; ++j )
|
||||
{
|
||||
AddRadio( 260, 90 + (j * 25), 210, 211, false, GetRadioID( i, j ) );
|
||||
AddLabel( 278, 90 + (j * 25), hues[j] - 1, "*****" );
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < groups.Length; ++i)
|
||||
{
|
||||
AddPage(1 + i);
|
||||
|
||||
public CustomHuePickerGump( Mobile from, CustomHuePicker definition, CustomHuePickerCallback callback, object state ) : base( 50, 50 )
|
||||
{
|
||||
m_From = from;
|
||||
m_Definition = definition;
|
||||
m_Callback = callback;
|
||||
m_State = state;
|
||||
int[] hues = groups[i].Hues;
|
||||
|
||||
RenderBackground();
|
||||
RenderCategories();
|
||||
}
|
||||
for (int j = 0; j < hues.Length; ++j)
|
||||
{
|
||||
AddRadio(260, 90 + j * 25, 210, 211, false, GetRadioID(i, j));
|
||||
AddLabel(278, 90 + j * 25, hues[j] - 1, "*****");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
{
|
||||
switch ( info.ButtonID )
|
||||
{
|
||||
case 1: // Okay
|
||||
{
|
||||
int[] switches = info.Switches;
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
switch (info.ButtonID)
|
||||
{
|
||||
case 1: // Okay
|
||||
{
|
||||
int[] switches = info.Switches;
|
||||
|
||||
if ( switches.Length > 0 )
|
||||
{
|
||||
int index = switches[0];
|
||||
if (switches.Length > 0)
|
||||
{
|
||||
int index = switches[0];
|
||||
|
||||
int group = index % m_Definition.Groups.Length;
|
||||
index /= m_Definition.Groups.Length;
|
||||
int group = index % m_Definition.Groups.Length;
|
||||
index /= m_Definition.Groups.Length;
|
||||
|
||||
if ( group >= 0 && group < m_Definition.Groups.Length )
|
||||
{
|
||||
int[] hues = m_Definition.Groups[group].Hues;
|
||||
if (group >= 0 && group < m_Definition.Groups.Length)
|
||||
{
|
||||
int[] hues = m_Definition.Groups[group].Hues;
|
||||
|
||||
if ( index >= 0 && index < hues.Length )
|
||||
m_Callback( m_From, m_State, hues[index] );
|
||||
}
|
||||
}
|
||||
if (index >= 0 && index < hues.Length)
|
||||
m_Callback(m_From, m_State, hues[index]);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 2: // Default
|
||||
{
|
||||
if ( m_Definition.DefaultSupported )
|
||||
m_Callback( m_From, m_State, 0 );
|
||||
break;
|
||||
}
|
||||
case 2: // Default
|
||||
{
|
||||
if (m_Definition.DefaultSupported)
|
||||
m_Callback(m_From, m_State, 0);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,254 +1,258 @@
|
|||
using System.Collections.Generic;
|
||||
using Server.Multis;
|
||||
using Server.Targeting;
|
||||
using Server.ContextMenus;
|
||||
using Server.Gumps;
|
||||
using Server.Multis;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public interface IDyable
|
||||
{
|
||||
bool Dye( Mobile from, DyeTub sender );
|
||||
}
|
||||
public interface IDyable
|
||||
{
|
||||
bool Dye(Mobile from, DyeTub sender);
|
||||
}
|
||||
|
||||
public class DyeTub : Item, ISecurable
|
||||
{
|
||||
private bool m_Redyable;
|
||||
private int m_DyedHue;
|
||||
public class DyeTub : Item, ISecurable
|
||||
{
|
||||
private int m_DyedHue;
|
||||
private bool m_Redyable;
|
||||
|
||||
public virtual CustomHuePicker CustomHuePicker => null;
|
||||
[Constructible]
|
||||
public DyeTub() : base(0xFAB)
|
||||
{
|
||||
Weight = 10.0;
|
||||
m_Redyable = true;
|
||||
}
|
||||
|
||||
public virtual bool AllowRunebooks => false;
|
||||
public DyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual bool AllowFurniture => false;
|
||||
public virtual CustomHuePicker CustomHuePicker => null;
|
||||
|
||||
public virtual bool AllowStatuettes => false;
|
||||
public virtual bool AllowRunebooks => false;
|
||||
|
||||
public virtual bool AllowLeather => false;
|
||||
public virtual bool AllowFurniture => false;
|
||||
|
||||
public virtual bool AllowDyables => true;
|
||||
public virtual bool AllowStatuettes => false;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public virtual bool AllowLeather => false;
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
public virtual bool AllowDyables => true;
|
||||
|
||||
writer.Write( (int)Level );
|
||||
writer.Write( (bool) m_Redyable );
|
||||
writer.Write( (int) m_DyedHue );
|
||||
}
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public virtual bool Redyable
|
||||
{
|
||||
get => m_Redyable;
|
||||
set => m_Redyable = value;
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int DyedHue
|
||||
{
|
||||
get => m_DyedHue;
|
||||
set
|
||||
{
|
||||
if (m_Redyable)
|
||||
{
|
||||
m_DyedHue = value;
|
||||
Hue = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int version = reader.ReadInt();
|
||||
// Three metallic tubs now.
|
||||
public virtual bool MetallicHues => false;
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
m_Redyable = reader.ReadBool();
|
||||
m_DyedHue = reader.ReadInt();
|
||||
// Select the clothing to dye.
|
||||
public virtual int TargetMessage => 500859;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// You can not dye that.
|
||||
public virtual int FailMessage => 1042083;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public virtual bool Redyable
|
||||
{
|
||||
get => m_Redyable;
|
||||
set => m_Redyable = value;
|
||||
}
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level{ get; set; }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int DyedHue
|
||||
{
|
||||
get => m_DyedHue;
|
||||
set
|
||||
{
|
||||
if ( m_Redyable )
|
||||
{
|
||||
m_DyedHue = value;
|
||||
Hue = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public SecureLevel Level { get; set; }
|
||||
writer.Write(1); // version
|
||||
|
||||
[Constructible]
|
||||
public DyeTub() : base( 0xFAB )
|
||||
{
|
||||
Weight = 10.0;
|
||||
m_Redyable = true;
|
||||
}
|
||||
writer.Write((int)Level);
|
||||
writer.Write(m_Redyable);
|
||||
writer.Write(m_DyedHue);
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
|
||||
{
|
||||
base.GetContextMenuEntries( from, list );
|
||||
SetSecureLevelEntry.AddTo( from, this, list );
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
public DyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
|
||||
// Three metallic tubs now.
|
||||
public virtual bool MetallicHues => false;
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Level = (SecureLevel)reader.ReadInt();
|
||||
goto case 0;
|
||||
}
|
||||
case 0:
|
||||
{
|
||||
m_Redyable = reader.ReadBool();
|
||||
m_DyedHue = reader.ReadInt();
|
||||
|
||||
// Select the clothing to dye.
|
||||
public virtual int TargetMessage => 500859;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// You can not dye that.
|
||||
public virtual int FailMessage => 1042083;
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( from.InRange( GetWorldLocation(), 1 ) )
|
||||
{
|
||||
from.SendLocalizedMessage( TargetMessage );
|
||||
from.Target = new InternalTarget( this );
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( 500446 ); // That is too far away.
|
||||
}
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (from.InRange(GetWorldLocation(), 1))
|
||||
{
|
||||
from.SendLocalizedMessage(TargetMessage);
|
||||
from.Target = new InternalTarget(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
}
|
||||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private DyeTub m_Tub;
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private DyeTub m_Tub;
|
||||
|
||||
public InternalTarget( DyeTub tub ) : base( 1, false, TargetFlags.None )
|
||||
{
|
||||
m_Tub = tub;
|
||||
}
|
||||
public InternalTarget(DyeTub tub) : base(1, false, TargetFlags.None)
|
||||
{
|
||||
m_Tub = tub;
|
||||
}
|
||||
|
||||
protected override void OnTarget( Mobile from, object targeted )
|
||||
{
|
||||
if ( targeted is Item item )
|
||||
{
|
||||
if ( item.QuestItem )
|
||||
{
|
||||
from.SendLocalizedMessage( 1151836 ); // You may not dye toggled quest items.
|
||||
}
|
||||
else if ( item is IDyable dyable && m_Tub.AllowDyables )
|
||||
{
|
||||
if ( !from.InRange( m_Tub.GetWorldLocation(), 1 ) || !from.InRange( item.GetWorldLocation(), 1 ) )
|
||||
from.SendLocalizedMessage( 500446 ); // That is too far away.
|
||||
else if ( item.Parent is Mobile )
|
||||
from.SendLocalizedMessage( 500861 ); // Can't Dye clothing that is being worn.
|
||||
else if ( dyable.Dye( from, m_Tub ) )
|
||||
from.PlaySound( 0x23E );
|
||||
}
|
||||
else if ( (FurnitureAttribute.Check( item ) || (item is PotionKeg)) && m_Tub.AllowFurniture )
|
||||
{
|
||||
if ( !from.InRange( m_Tub.GetWorldLocation(), 1 ) || !from.InRange( item.GetWorldLocation(), 1 ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 500446 ); // That is too far away.
|
||||
}
|
||||
else
|
||||
{
|
||||
bool okay = ( item.IsChildOf( from.Backpack ) );
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (targeted is Item item)
|
||||
{
|
||||
if (item.QuestItem)
|
||||
{
|
||||
from.SendLocalizedMessage(1151836); // You may not dye toggled quest items.
|
||||
}
|
||||
else if (item is IDyable dyable && m_Tub.AllowDyables)
|
||||
{
|
||||
if (!from.InRange(m_Tub.GetWorldLocation(), 1) || !from.InRange(item.GetWorldLocation(), 1))
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
else if (item.Parent is Mobile)
|
||||
from.SendLocalizedMessage(500861); // Can't Dye clothing that is being worn.
|
||||
else if (dyable.Dye(from, m_Tub))
|
||||
from.PlaySound(0x23E);
|
||||
}
|
||||
else if ((FurnitureAttribute.Check(item) || item is PotionKeg) && m_Tub.AllowFurniture)
|
||||
{
|
||||
if (!from.InRange(m_Tub.GetWorldLocation(), 1) || !from.InRange(item.GetWorldLocation(), 1))
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
else
|
||||
{
|
||||
bool okay = item.IsChildOf(from.Backpack);
|
||||
|
||||
if ( !okay )
|
||||
{
|
||||
if ( item.Parent == null )
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt( item );
|
||||
if (!okay)
|
||||
{
|
||||
if (item.Parent == null)
|
||||
{
|
||||
BaseHouse house = BaseHouse.FindHouseAt(item);
|
||||
|
||||
if ( house == null || ( !house.IsLockedDown( item ) && !house.IsSecure( item ) ) )
|
||||
from.SendLocalizedMessage( 501022 ); // Furniture must be locked down to paint it.
|
||||
else if ( !house.IsCoOwner( from ) )
|
||||
from.SendLocalizedMessage( 501023 ); // You must be the owner to use this item.
|
||||
else
|
||||
okay = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( 1048135 ); // The furniture must be in your backpack to be painted.
|
||||
}
|
||||
}
|
||||
if (house == null || !house.IsLockedDown(item) && !house.IsSecure(item))
|
||||
from.SendLocalizedMessage(501022); // Furniture must be locked down to paint it.
|
||||
else if (!house.IsCoOwner(from))
|
||||
from.SendLocalizedMessage(501023); // You must be the owner to use this item.
|
||||
else
|
||||
okay = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1048135); // The furniture must be in your backpack to be painted.
|
||||
}
|
||||
}
|
||||
|
||||
if ( okay )
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound( 0x23E );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( (item is Runebook || item is RecallRune ) && m_Tub.AllowRunebooks )
|
||||
{
|
||||
if ( !from.InRange( m_Tub.GetWorldLocation(), 1 ) || !from.InRange( item.GetWorldLocation(), 1 ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 500446 ); // That is too far away.
|
||||
}
|
||||
else if ( !item.Movable )
|
||||
{
|
||||
from.SendLocalizedMessage( 1049776 ); // You cannot dye runes or runebooks that are locked down.
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound( 0x23E );
|
||||
}
|
||||
}
|
||||
else if ( item is MonsterStatuette && m_Tub.AllowStatuettes )
|
||||
{
|
||||
if ( !from.InRange( m_Tub.GetWorldLocation(), 1 ) || !from.InRange( item.GetWorldLocation(), 1 ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 500446 ); // That is too far away.
|
||||
}
|
||||
else if ( !item.Movable )
|
||||
{
|
||||
from.SendLocalizedMessage( 1049779 ); // You cannot dye statuettes that are locked down.
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound( 0x23E );
|
||||
}
|
||||
}
|
||||
else if ( (item is BaseArmor armor && (armor.MaterialType == ArmorMaterialType.Leather || armor.MaterialType == ArmorMaterialType.Studded) || item is ElvenBoots || item is WoodlandBelt) && m_Tub.AllowLeather )
|
||||
{
|
||||
if ( !from.InRange( m_Tub.GetWorldLocation(), 1 ) || !from.InRange( item.GetWorldLocation(), 1 ) )
|
||||
{
|
||||
from.SendLocalizedMessage( 500446 ); // That is too far away.
|
||||
}
|
||||
else if ( !item.Movable )
|
||||
{
|
||||
from.SendLocalizedMessage( 1042419 ); // You may not dye leather items which are locked down.
|
||||
}
|
||||
else if ( item.Parent is Mobile )
|
||||
{
|
||||
from.SendLocalizedMessage( 500861 ); // Can't Dye clothing that is being worn.
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound( 0x23E );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( m_Tub.FailMessage );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( m_Tub.FailMessage );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (okay)
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound(0x23E);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ((item is Runebook || item is RecallRune) && m_Tub.AllowRunebooks)
|
||||
{
|
||||
if (!from.InRange(m_Tub.GetWorldLocation(), 1) || !from.InRange(item.GetWorldLocation(), 1))
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
else if (!item.Movable)
|
||||
{
|
||||
from.SendLocalizedMessage(1049776); // You cannot dye runes or runebooks that are locked down.
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound(0x23E);
|
||||
}
|
||||
}
|
||||
else if (item is MonsterStatuette && m_Tub.AllowStatuettes)
|
||||
{
|
||||
if (!from.InRange(m_Tub.GetWorldLocation(), 1) || !from.InRange(item.GetWorldLocation(), 1))
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
else if (!item.Movable)
|
||||
{
|
||||
from.SendLocalizedMessage(1049779); // You cannot dye statuettes that are locked down.
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound(0x23E);
|
||||
}
|
||||
}
|
||||
else if ((item is BaseArmor armor &&
|
||||
(armor.MaterialType == ArmorMaterialType.Leather ||
|
||||
armor.MaterialType == ArmorMaterialType.Studded) || item is ElvenBoots ||
|
||||
item is WoodlandBelt) && m_Tub.AllowLeather)
|
||||
{
|
||||
if (!from.InRange(m_Tub.GetWorldLocation(), 1) || !from.InRange(item.GetWorldLocation(), 1))
|
||||
{
|
||||
from.SendLocalizedMessage(500446); // That is too far away.
|
||||
}
|
||||
else if (!item.Movable)
|
||||
{
|
||||
from.SendLocalizedMessage(1042419); // You may not dye leather items which are locked down.
|
||||
}
|
||||
else if (item.Parent is Mobile)
|
||||
{
|
||||
from.SendLocalizedMessage(500861); // Can't Dye clothing that is being worn.
|
||||
}
|
||||
else
|
||||
{
|
||||
item.Hue = m_Tub.DyedHue;
|
||||
from.PlaySound(0x23E);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(m_Tub.FailMessage);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(m_Tub.FailMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,68 +1,70 @@
|
|||
using Server.Engines.VeteranRewards;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class FurnitureDyeTub : DyeTub, Engines.VeteranRewards.IRewardItem
|
||||
{
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowFurniture => true;
|
||||
public override int TargetMessage => 501019; // Select the furniture to dye.
|
||||
public override int FailMessage => 501021; // That is not a piece of furniture.
|
||||
public override int LabelNumber => 1041246; // Furniture Dye Tub
|
||||
public class FurnitureDyeTub : DyeTub, IRewardItem
|
||||
{
|
||||
[Constructible]
|
||||
public FurnitureDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool IsRewardItem { get; set; }
|
||||
public FurnitureDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public FurnitureDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowFurniture => true;
|
||||
public override int TargetMessage => 501019; // Select the furniture to dye.
|
||||
public override int FailMessage => 501021; // That is not a piece of furniture.
|
||||
public override int LabelNumber => 1041246; // Furniture Dye Tub
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( IsRewardItem && !Engines.VeteranRewards.RewardSystem.CheckIsUsableBy( from, this, null ) )
|
||||
return;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsRewardItem{ get; set; }
|
||||
|
||||
base.OnDoubleClick( from );
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsRewardItem && !RewardSystem.CheckIsUsableBy(from, this, null))
|
||||
return;
|
||||
|
||||
public FurnitureDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if ( Core.ML && IsRewardItem )
|
||||
list.Add( 1076217 ); // 1st Year Veteran Reward
|
||||
}
|
||||
if (Core.ML && IsRewardItem)
|
||||
list.Add(1076217); // 1st Year Veteran Reward
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write( (bool) IsRewardItem );
|
||||
}
|
||||
writer.Write(IsRewardItem);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( LootType == LootType.Regular )
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (LootType == LootType.Regular)
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,66 +1,68 @@
|
|||
using Server.Engines.VeteranRewards;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class LeatherDyeTub : DyeTub, Engines.VeteranRewards.IRewardItem
|
||||
{
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowLeather => true;
|
||||
public override int TargetMessage => 1042416; // Select the leather item to dye.
|
||||
public override int FailMessage => 1042418; // You can only dye leather with this tub.
|
||||
public override int LabelNumber => 1041284; // Leather Dye Tub
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.LeatherDyeTub;
|
||||
public class LeatherDyeTub : DyeTub, IRewardItem
|
||||
{
|
||||
[Constructible]
|
||||
public LeatherDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool IsRewardItem { get; set; }
|
||||
public LeatherDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public LeatherDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowLeather => true;
|
||||
public override int TargetMessage => 1042416; // Select the leather item to dye.
|
||||
public override int FailMessage => 1042418; // You can only dye leather with this tub.
|
||||
public override int LabelNumber => 1041284; // Leather Dye Tub
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.LeatherDyeTub;
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( IsRewardItem && !Engines.VeteranRewards.RewardSystem.CheckIsUsableBy( from, this, null ) )
|
||||
return;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsRewardItem{ get; set; }
|
||||
|
||||
base.OnDoubleClick( from );
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsRewardItem && !RewardSystem.CheckIsUsableBy(from, this, null))
|
||||
return;
|
||||
|
||||
public LeatherDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if ( Core.ML && IsRewardItem )
|
||||
list.Add( 1076218 ); // 2nd Year Veteran Reward
|
||||
}
|
||||
if (Core.ML && IsRewardItem)
|
||||
list.Add(1076218); // 2nd Year Veteran Reward
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write( (bool) IsRewardItem );
|
||||
}
|
||||
writer.Write(IsRewardItem);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +1,34 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class MetallicClothDyetub : DyeTub
|
||||
{
|
||||
public override int LabelNumber => 1152920; // Metallic Cloth ...
|
||||
public class MetallicClothDyetub : DyeTub
|
||||
{
|
||||
[Constructible]
|
||||
public MetallicClothDyetub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public override bool MetallicHues => true;
|
||||
public MetallicClothDyetub(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public MetallicClothDyetub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override int LabelNumber => 1152920; // Metallic Cloth ...
|
||||
|
||||
public MetallicClothDyetub( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
public override bool MetallicHues => true;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,78 +3,77 @@ using Server.Network;
|
|||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class MetallicHuePicker : Gump
|
||||
{
|
||||
public delegate void MetallicHuePickerCallback( Mobile from, object state, int hue );
|
||||
public class MetallicHuePicker : Gump
|
||||
{
|
||||
public delegate void MetallicHuePickerCallback(Mobile from, object state, int hue);
|
||||
|
||||
private Mobile m_From;
|
||||
private MetallicHuePickerCallback m_Callback;
|
||||
private object m_State;
|
||||
private MetallicHuePickerCallback m_Callback;
|
||||
|
||||
public void Render()
|
||||
{
|
||||
AddPage( 0 );
|
||||
private Mobile m_From;
|
||||
private object m_State;
|
||||
|
||||
AddBackground( 0, 0, 450, 450, 0x13BE );
|
||||
AddBackground( 10, 10, 430, 430, 0xBB8 );
|
||||
public MetallicHuePicker(Mobile from, MetallicHuePickerCallback callback, object state)
|
||||
: base(450, 450)
|
||||
{
|
||||
m_From = from;
|
||||
m_Callback = callback;
|
||||
m_State = state;
|
||||
|
||||
AddHtmlLocalized( 55, 400, 200, 25, 1011036, false, false ); // OKAY
|
||||
Render();
|
||||
}
|
||||
|
||||
AddButton( 20, 400, 4005, 4007, 1, GumpButtonType.Reply, 0 );
|
||||
AddButton( 200, 400, 4005, 4007, 2, GumpButtonType.Reply, 0 );
|
||||
AddLabel( 235, 400, 0, "DEFAULT" );
|
||||
public void Render()
|
||||
{
|
||||
AddPage(0);
|
||||
|
||||
AddHtmlLocalized( 55, 25, 200, 25, 1150063, false, false ); // Base/Shadow Color
|
||||
AddHtmlLocalized( 260, 25, 200, 25, 1150064, false, false ); // Highlight Color
|
||||
AddBackground(0, 0, 450, 450, 0x13BE);
|
||||
AddBackground(10, 10, 430, 430, 0xBB8);
|
||||
|
||||
for( int row = 0; row < 13; row++ )
|
||||
{
|
||||
AddButton( 30, ( 65 + ( row * 25 ) ), 0x1467, 0x1468, row + 1, GumpButtonType.Page, row + 1 );
|
||||
AddItem( 50, ( 65 + ( row * 25 ) ), 0x1412, 2501 + ( row * 12 ) + ( ( row == 12 ) ? 6 : 0 ) );
|
||||
}
|
||||
AddHtmlLocalized(55, 400, 200, 25, 1011036, false, false); // OKAY
|
||||
|
||||
for( int page = 1; page < 14; page++ )
|
||||
{
|
||||
AddPage( page );
|
||||
AddButton(20, 400, 4005, 4007, 1, GumpButtonType.Reply, 0);
|
||||
AddButton(200, 400, 4005, 4007, 2, GumpButtonType.Reply, 0);
|
||||
AddLabel(235, 400, 0, "DEFAULT");
|
||||
|
||||
for( int row = 0; row < 12; row++ )
|
||||
{
|
||||
int hue = ( 2501 + ( ( page == 13 ) ? 6 : 0 ) + ( row + ( 12 * ( page - 1 ) ) ) ); /* OSI just had to skip 6 unused hues, didnt they */
|
||||
AddRadio( 260, ( 65 + ( row * 25 ) ), 0xd2, 0xd3, false, hue );
|
||||
AddItem( 280, ( 65 + ( row * 25 ) ), 0x1412, hue );
|
||||
}
|
||||
}
|
||||
}
|
||||
AddHtmlLocalized(55, 25, 200, 25, 1150063, false, false); // Base/Shadow Color
|
||||
AddHtmlLocalized(260, 25, 200, 25, 1150064, false, false); // Highlight Color
|
||||
|
||||
public MetallicHuePicker( Mobile from, MetallicHuePickerCallback callback, object state )
|
||||
: base( 450, 450 )
|
||||
{
|
||||
m_From = from;
|
||||
m_Callback = callback;
|
||||
m_State = state;
|
||||
for (int row = 0; row < 13; row++)
|
||||
{
|
||||
AddButton(30, 65 + row * 25, 0x1467, 0x1468, row + 1, GumpButtonType.Page, row + 1);
|
||||
AddItem(50, 65 + row * 25, 0x1412, 2501 + row * 12 + (row == 12 ? 6 : 0));
|
||||
}
|
||||
|
||||
Render();
|
||||
}
|
||||
for (int page = 1; page < 14; page++)
|
||||
{
|
||||
AddPage(page);
|
||||
|
||||
public override void OnResponse( NetState sender, RelayInfo info )
|
||||
{
|
||||
switch( info.ButtonID )
|
||||
{
|
||||
case 1: // Okay
|
||||
{
|
||||
if ( info.Switches.Length > 0 )
|
||||
{
|
||||
m_Callback( m_From, m_State, info.Switches[ 0 ] );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2: // Default
|
||||
{
|
||||
m_Callback( m_From, m_State, 0 );
|
||||
for (int row = 0; row < 12; row++)
|
||||
{
|
||||
int hue = 2501 + (page == 13 ? 6 : 0) + row +
|
||||
12 * (page - 1); /* OSI just had to skip 6 unused hues, didnt they */
|
||||
AddRadio(260, 65 + row * 25, 0xd2, 0xd3, false, hue);
|
||||
AddItem(280, 65 + row * 25, 0x1412, hue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void OnResponse(NetState sender, RelayInfo info)
|
||||
{
|
||||
switch (info.ButtonID)
|
||||
{
|
||||
case 1: // Okay
|
||||
{
|
||||
if (info.Switches.Length > 0) m_Callback(m_From, m_State, info.Switches[0]);
|
||||
break;
|
||||
}
|
||||
case 2: // Default
|
||||
{
|
||||
m_Callback(m_From, m_State, 0);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,44 +1,44 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class MetallicLeatherDyeTub : LeatherDyeTub
|
||||
{
|
||||
public override CustomHuePicker CustomHuePicker => null;
|
||||
public class MetallicLeatherDyeTub : LeatherDyeTub
|
||||
{
|
||||
[Constructible]
|
||||
public MetallicLeatherDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1153495; // Metallic Leather ...
|
||||
public MetallicLeatherDyeTub(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool MetallicHues => true;
|
||||
public override CustomHuePicker CustomHuePicker => null;
|
||||
|
||||
[Constructible]
|
||||
public MetallicLeatherDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override int LabelNumber => 1153495; // Metallic Leather ...
|
||||
|
||||
public MetallicLeatherDyeTub( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
public override bool MetallicHues => true;
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if ( Core.ML && IsRewardItem )
|
||||
list.Add( 1076221 ); // 5th Year Veteran Reward
|
||||
}
|
||||
if (Core.ML && IsRewardItem)
|
||||
list.Add(1076221); // 5th Year Veteran Reward
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,63 +1,65 @@
|
|||
using Server.Engines.VeteranRewards;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class RewardBlackDyeTub : DyeTub, Engines.VeteranRewards.IRewardItem
|
||||
{
|
||||
public override int LabelNumber => 1006008; // Black Dye Tub
|
||||
public class RewardBlackDyeTub : DyeTub, IRewardItem
|
||||
{
|
||||
[Constructible]
|
||||
public RewardBlackDyeTub()
|
||||
{
|
||||
Hue = DyedHue = 0x0001;
|
||||
Redyable = false;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool IsRewardItem { get; set; }
|
||||
public RewardBlackDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public RewardBlackDyeTub()
|
||||
{
|
||||
Hue = DyedHue = 0x0001;
|
||||
Redyable = false;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override int LabelNumber => 1006008; // Black Dye Tub
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( IsRewardItem && !Engines.VeteranRewards.RewardSystem.CheckIsUsableBy( from, this, null ) )
|
||||
return;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsRewardItem{ get; set; }
|
||||
|
||||
base.OnDoubleClick( from );
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsRewardItem && !RewardSystem.CheckIsUsableBy(from, this, null))
|
||||
return;
|
||||
|
||||
public RewardBlackDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if ( Core.ML && IsRewardItem )
|
||||
list.Add( 1076217 ); // 1st Year Veteran Reward
|
||||
}
|
||||
if (Core.ML && IsRewardItem)
|
||||
list.Add(1076217); // 1st Year Veteran Reward
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write( (bool) IsRewardItem );
|
||||
}
|
||||
writer.Write(IsRewardItem);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,66 +1,68 @@
|
|||
using Server.Engines.VeteranRewards;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class RunebookDyeTub : DyeTub, Engines.VeteranRewards.IRewardItem
|
||||
{
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowRunebooks => true;
|
||||
public override int TargetMessage => 1049774; // Target the runebook or runestone to dye
|
||||
public override int FailMessage => 1049775; // You can only dye runestones or runebooks with this tub.
|
||||
public override int LabelNumber => 1049740; // Runebook Dye Tub
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.LeatherDyeTub;
|
||||
public class RunebookDyeTub : DyeTub, IRewardItem
|
||||
{
|
||||
[Constructible]
|
||||
public RunebookDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool IsRewardItem { get; set; }
|
||||
public RunebookDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public RunebookDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowRunebooks => true;
|
||||
public override int TargetMessage => 1049774; // Target the runebook or runestone to dye
|
||||
public override int FailMessage => 1049775; // You can only dye runestones or runebooks with this tub.
|
||||
public override int LabelNumber => 1049740; // Runebook Dye Tub
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.LeatherDyeTub;
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( IsRewardItem && !Engines.VeteranRewards.RewardSystem.CheckIsUsableBy( from, this, null ) )
|
||||
return;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsRewardItem{ get; set; }
|
||||
|
||||
base.OnDoubleClick( from );
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsRewardItem && !RewardSystem.CheckIsUsableBy(from, this, null))
|
||||
return;
|
||||
|
||||
public RunebookDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if ( Core.ML && IsRewardItem )
|
||||
list.Add( 1076220 ); // 4th Year Veteran Reward
|
||||
}
|
||||
if (Core.ML && IsRewardItem)
|
||||
list.Add(1076220); // 4th Year Veteran Reward
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write( (bool) IsRewardItem );
|
||||
}
|
||||
writer.Write(IsRewardItem);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,63 +2,63 @@ using Server.Engines.VeteranRewards;
|
|||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class SpecialDyeTub : DyeTub, IRewardItem
|
||||
{
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.SpecialDyeTub;
|
||||
public override int LabelNumber => 1041285; // Special Dye Tub
|
||||
public class SpecialDyeTub : DyeTub, IRewardItem
|
||||
{
|
||||
[Constructible]
|
||||
public SpecialDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool IsRewardItem { get; set; }
|
||||
public SpecialDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public SpecialDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.SpecialDyeTub;
|
||||
public override int LabelNumber => 1041285; // Special Dye Tub
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( IsRewardItem && !RewardSystem.CheckIsUsableBy( from, this, null ) )
|
||||
return;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsRewardItem{ get; set; }
|
||||
|
||||
base.OnDoubleClick( from );
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsRewardItem && !RewardSystem.CheckIsUsableBy(from, this, null))
|
||||
return;
|
||||
|
||||
public SpecialDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if ( Core.ML && IsRewardItem )
|
||||
list.Add( 1076217 ); // 1st Year Veteran Reward
|
||||
}
|
||||
if (Core.ML && IsRewardItem)
|
||||
list.Add(1076217); // 1st Year Veteran Reward
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write( (bool) IsRewardItem );
|
||||
}
|
||||
writer.Write(IsRewardItem);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,66 +1,68 @@
|
|||
using Server.Engines.VeteranRewards;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class StatuetteDyeTub : DyeTub, Engines.VeteranRewards.IRewardItem
|
||||
{
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowStatuettes => true;
|
||||
public override int TargetMessage => 1049777; // Target the statuette to dye
|
||||
public override int FailMessage => 1049778; // You can only dye veteran reward statuettes with this tub.
|
||||
public override int LabelNumber => 1049741; // Reward Statuette Dye Tub
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.LeatherDyeTub;
|
||||
public class StatuetteDyeTub : DyeTub, IRewardItem
|
||||
{
|
||||
[Constructible]
|
||||
public StatuetteDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool IsRewardItem { get; set; }
|
||||
public StatuetteDyeTub(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public StatuetteDyeTub()
|
||||
{
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public override bool AllowDyables => false;
|
||||
public override bool AllowStatuettes => true;
|
||||
public override int TargetMessage => 1049777; // Target the statuette to dye
|
||||
public override int FailMessage => 1049778; // You can only dye veteran reward statuettes with this tub.
|
||||
public override int LabelNumber => 1049741; // Reward Statuette Dye Tub
|
||||
public override CustomHuePicker CustomHuePicker => CustomHuePicker.LeatherDyeTub;
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( IsRewardItem && !Engines.VeteranRewards.RewardSystem.CheckIsUsableBy( from, this, null ) )
|
||||
return;
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool IsRewardItem{ get; set; }
|
||||
|
||||
base.OnDoubleClick( from );
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsRewardItem && !RewardSystem.CheckIsUsableBy(from, this, null))
|
||||
return;
|
||||
|
||||
public StatuetteDyeTub( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
base.OnDoubleClick(from);
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
if ( Core.ML && IsRewardItem )
|
||||
list.Add( 1076221 ); // 5th Year Veteran Reward
|
||||
}
|
||||
if (Core.ML && IsRewardItem)
|
||||
list.Add(1076221); // 5th Year Veteran Reward
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
writer.Write(1); // version
|
||||
|
||||
writer.Write( (bool) IsRewardItem );
|
||||
}
|
||||
writer.Write(IsRewardItem);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
IsRewardItem = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,34 +1,34 @@
|
|||
namespace Server.Items /* High seas, loot from merchant ship's hold, also a "uncommon" loot item */
|
||||
{
|
||||
public class WhiteClothDyeTub : DyeTub
|
||||
{
|
||||
public override int LabelNumber => 1149984; // White Cloth Dye Tub
|
||||
public class WhiteClothDyeTub : DyeTub
|
||||
{
|
||||
[Constructible]
|
||||
public WhiteClothDyeTub()
|
||||
{
|
||||
DyedHue = Hue = 0x9C2;
|
||||
}
|
||||
|
||||
public override bool Redyable => false;
|
||||
public WhiteClothDyeTub(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructible]
|
||||
public WhiteClothDyeTub()
|
||||
{
|
||||
DyedHue = Hue = 0x9C2;
|
||||
}
|
||||
public override int LabelNumber => 1149984; // White Cloth Dye Tub
|
||||
|
||||
public WhiteClothDyeTub( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
public override bool Redyable => false;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( ( int )0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,36 +1,36 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
public class WhiteLeatherDyeTub : LeatherDyeTub /* OSI UO 13th anniv gift, from redeemable gift tickets */
|
||||
{
|
||||
public override int LabelNumber => 1149900; // White Leather Dye Tub
|
||||
|
||||
public override bool Redyable => false;
|
||||
|
||||
[Constructible]
|
||||
public WhiteLeatherDyeTub()
|
||||
{
|
||||
DyedHue = Hue = 0x9C2;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
public class WhiteLeatherDyeTub : LeatherDyeTub /* OSI UO 13th anniv gift, from redeemable gift tickets */
|
||||
{
|
||||
[Constructible]
|
||||
public WhiteLeatherDyeTub()
|
||||
{
|
||||
DyedHue = Hue = 0x9C2;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
|
||||
public WhiteLeatherDyeTub( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
public WhiteLeatherDyeTub(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override int LabelNumber => 1149900; // White Leather Dye Tub
|
||||
|
||||
writer.Write( ( int )1 ); // version
|
||||
}
|
||||
public override bool Redyable => false;
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
writer.Write(1); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +1,30 @@
|
|||
namespace Server.Items
|
||||
{
|
||||
[FlippableAttribute(0xec6, 0xec7)]
|
||||
public class Dressform : Item
|
||||
{
|
||||
[Constructible]
|
||||
public Dressform() : base(0xec6)
|
||||
{
|
||||
Weight = 10;
|
||||
}
|
||||
[Flippable(0xec6, 0xec7)]
|
||||
public class Dressform : Item
|
||||
{
|
||||
[Constructible]
|
||||
public Dressform() : base(0xec6)
|
||||
{
|
||||
Weight = 10;
|
||||
}
|
||||
|
||||
public Dressform(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
public Dressform(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int) 0);
|
||||
}
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,122 +1,111 @@
|
|||
using Server.Targeting;
|
||||
using Server.HuePickers;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class Dyes : Item /* , IUsesRemaining */ /* TODO complete usesremaing */
|
||||
{
|
||||
/*
|
||||
public bool ShowUsesRemaining { get { return false; } set { } }
|
||||
public class Dyes : Item /* , IUsesRemaining */ /* TODO complete usesremaing */
|
||||
{
|
||||
/*
|
||||
public bool ShowUsesRemaining { get { return false; } set { } }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public virtual int UsesRemaining { get { return m_UsesRemaining; } set { m_UsesRemaining = value; } }
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public virtual int UsesRemaining { get { return m_UsesRemaining; } set { m_UsesRemaining = value; } }
|
||||
|
||||
private int m_UsesRemaining;
|
||||
*/
|
||||
private int m_UsesRemaining;
|
||||
*/
|
||||
|
||||
[Constructible]
|
||||
public Dyes() : base( 0xFA9 )
|
||||
{
|
||||
Weight = 3.0;
|
||||
[Constructible]
|
||||
public Dyes() : base(0xFA9)
|
||||
{
|
||||
Weight = 3.0;
|
||||
|
||||
/* m_UsesRemaining = 25; */
|
||||
}
|
||||
/* m_UsesRemaining = 25; */
|
||||
}
|
||||
|
||||
public Dyes( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public Dyes(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 1 ); // version
|
||||
writer.Write(1); // version
|
||||
|
||||
/* writer.Write( ( int )m_UsesRemaining ); */
|
||||
}
|
||||
/* writer.Write( ( int )m_UsesRemaining ); */
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( Weight == 0.0 )
|
||||
Weight = 3.0;
|
||||
if (Weight == 0.0)
|
||||
Weight = 3.0;
|
||||
|
||||
/* m_UsesRemaining = ( version == 0 ) ? 25 : reader.ReadInt(); */
|
||||
}
|
||||
/* m_UsesRemaining = ( version == 0 ) ? 25 : reader.ReadInt(); */
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
from.SendLocalizedMessage( 500856 ); // Select the dye tub to use the dyes on.
|
||||
from.Target = new InternalTarget();
|
||||
}
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
from.SendLocalizedMessage(500856); // Select the dye tub to use the dyes on.
|
||||
from.Target = new InternalTarget();
|
||||
}
|
||||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
public InternalTarget() : base( 1, false, TargetFlags.None )
|
||||
{
|
||||
}
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
public InternalTarget() : base(1, false, TargetFlags.None)
|
||||
{
|
||||
}
|
||||
|
||||
private class InternalPicker : HuePicker
|
||||
{
|
||||
private DyeTub m_Tub;
|
||||
public virtual void SetTubHue(Mobile from, object state, int hue)
|
||||
{
|
||||
if (state is DyeTub tub) tub.DyedHue = hue;
|
||||
}
|
||||
|
||||
public InternalPicker( DyeTub tub ) : base( tub.ItemID )
|
||||
{
|
||||
m_Tub = tub;
|
||||
}
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (targeted is DyeTub tub)
|
||||
{
|
||||
if (tub.Redyable)
|
||||
{
|
||||
if (tub.MetallicHues) /* OSI has three metallic tubs now */
|
||||
from.SendGump(new MetallicHuePicker(from, SetTubHue, tub));
|
||||
else if (tub.CustomHuePicker != null)
|
||||
from.SendGump(new CustomHuePickerGump(from, tub.CustomHuePicker, SetTubHue, tub));
|
||||
else
|
||||
from.SendHuePicker(new InternalPicker(tub));
|
||||
}
|
||||
else if (tub is BlackDyeTub)
|
||||
{
|
||||
from.SendLocalizedMessage(1010092); // You can not use this on a black dye tub.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendMessage("That dye tub may not be redyed.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500857); // Use this on a dye tub.
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnResponse( int hue )
|
||||
{
|
||||
m_Tub.DyedHue = hue;
|
||||
}
|
||||
}
|
||||
private class InternalPicker : HuePicker
|
||||
{
|
||||
private DyeTub m_Tub;
|
||||
|
||||
public virtual void SetTubHue( Mobile from, object state, int hue )
|
||||
{
|
||||
if ( state is DyeTub tub )
|
||||
{
|
||||
tub.DyedHue = hue;
|
||||
public InternalPicker(DyeTub tub) : base(tub.ItemID)
|
||||
{
|
||||
m_Tub = tub;
|
||||
}
|
||||
|
||||
/* dyes.m_UsesRemaining--; let this change ride till the overhaul */
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnTarget( Mobile from, object targeted )
|
||||
{
|
||||
if ( targeted is DyeTub tub )
|
||||
{
|
||||
if ( tub.Redyable )
|
||||
{
|
||||
if ( tub.MetallicHues ) /* OSI has three metallic tubs now */
|
||||
{
|
||||
from.SendGump( new MetallicHuePicker( from, SetTubHue, tub ) );
|
||||
}
|
||||
else if ( tub.CustomHuePicker != null )
|
||||
{
|
||||
from.SendGump( new CustomHuePickerGump( from, tub.CustomHuePicker, SetTubHue, tub ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendHuePicker( new InternalPicker( tub ) );
|
||||
}
|
||||
}
|
||||
else if ( tub is BlackDyeTub )
|
||||
{
|
||||
from.SendLocalizedMessage( 1010092 ); // You can not use this on a black dye tub.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendMessage( "That dye tub may not be redyed." );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( 500857 ); // Use this on a dye tub.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void OnResponse(int hue)
|
||||
{
|
||||
m_Tub.DyedHue = hue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,114 +2,118 @@ using Server.Targeting;
|
|||
|
||||
namespace Server.Items
|
||||
{
|
||||
public interface IScissorable
|
||||
{
|
||||
bool Scissor( Mobile from, Scissors scissors );
|
||||
}
|
||||
public interface IScissorable
|
||||
{
|
||||
bool Scissor(Mobile from, Scissors scissors);
|
||||
}
|
||||
|
||||
[FlippableAttribute( 0xf9f, 0xf9e )]
|
||||
public class Scissors : Item
|
||||
{
|
||||
[Constructible]
|
||||
public Scissors() : base( 0xF9F )
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
[Flippable(0xf9f, 0xf9e)]
|
||||
public class Scissors : Item
|
||||
{
|
||||
[Constructible]
|
||||
public Scissors() : base(0xF9F)
|
||||
{
|
||||
Weight = 1.0;
|
||||
}
|
||||
|
||||
public Scissors( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public Scissors(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
from.SendLocalizedMessage( 502434 ); // What should I use these scissors on?
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
from.SendLocalizedMessage(502434); // What should I use these scissors on?
|
||||
|
||||
from.Target = new InternalTarget( this );
|
||||
}
|
||||
from.Target = new InternalTarget(this);
|
||||
}
|
||||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private Scissors m_Item;
|
||||
public static bool CanScissor(Mobile from, IScissorable obj)
|
||||
{
|
||||
if (obj is Item item && item.Nontransferable)
|
||||
{
|
||||
from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything.
|
||||
return false;
|
||||
}
|
||||
|
||||
public InternalTarget( Scissors item ) : base( 2, false, TargetFlags.None )
|
||||
{
|
||||
m_Item = item;
|
||||
}
|
||||
// TODO: Move other general checks from the different implementations here
|
||||
|
||||
protected override void OnTarget( Mobile from, object targeted )
|
||||
{
|
||||
if ( m_Item.Deleted )
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*if ( targeted is Item && !((Item)targeted).IsStandardLoot() )
|
||||
{
|
||||
from.SendLocalizedMessage( 502440 ); // Scissors can not be used on that to produce anything.
|
||||
}
|
||||
else */
|
||||
if ( Core.AOS && targeted == from )
|
||||
{
|
||||
from.SendLocalizedMessage( 1062845 + Utility.Random( 3 ) ); //"That doesn't seem like the smartest thing to do." / "That was an encounter you don't wish to repeat." / "Ha! You missed!"
|
||||
}
|
||||
else if (Core.SE && Utility.RandomDouble() > .20 && (from.Direction & Direction.Running) != 0 && (Core.TickCount - from.LastMoveTime) < from.ComputeMovementSpeed(from.Direction))
|
||||
{
|
||||
from.SendLocalizedMessage( 1063305 ); // Didn't your parents ever tell you not to run with scissors in your hand?!
|
||||
}
|
||||
else if ( targeted is Item item && !item.Movable )
|
||||
{
|
||||
if ( item is IScissorable obj && ( obj is PlagueBeastInnard || obj is PlagueBeastMutationCore ) )
|
||||
{
|
||||
if ( CanScissor( from, obj ) && obj.Scissor( from, m_Item ) )
|
||||
from.PlaySound( 0x248 );
|
||||
}
|
||||
}
|
||||
else if ( targeted is IScissorable obj )
|
||||
{
|
||||
if ( CanScissor( from, obj ) && obj.Scissor( from, m_Item ) )
|
||||
from.PlaySound( 0x248 );
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( 502440 ); // Scissors can not be used on that to produce anything.
|
||||
}
|
||||
}
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private Scissors m_Item;
|
||||
|
||||
protected override void OnNonlocalTarget( Mobile from, object targeted )
|
||||
{
|
||||
if ( targeted is IScissorable obj && ( obj is PlagueBeastInnard || obj is PlagueBeastMutationCore ) )
|
||||
{
|
||||
if ( CanScissor( from, obj ) && obj.Scissor( from, m_Item ) )
|
||||
from.PlaySound( 0x248 );
|
||||
}
|
||||
else
|
||||
base.OnNonlocalTarget( from, targeted );
|
||||
}
|
||||
}
|
||||
public InternalTarget(Scissors item) : base(2, false, TargetFlags.None)
|
||||
{
|
||||
m_Item = item;
|
||||
}
|
||||
|
||||
public static bool CanScissor( Mobile from, IScissorable obj )
|
||||
{
|
||||
if ( obj is Item item && item.Nontransferable )
|
||||
{
|
||||
from.SendLocalizedMessage( 502440 ); // Scissors can not be used on that to produce anything.
|
||||
return false;
|
||||
}
|
||||
protected override void OnTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (m_Item.Deleted)
|
||||
return;
|
||||
|
||||
// TODO: Move other general checks from the different implementations here
|
||||
/*if ( targeted is Item && !((Item)targeted).IsStandardLoot() )
|
||||
{
|
||||
from.SendLocalizedMessage( 502440 ); // Scissors can not be used on that to produce anything.
|
||||
}
|
||||
else */
|
||||
if (Core.AOS && targeted == from)
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1062845 + Utility
|
||||
.Random(3)); //"That doesn't seem like the smartest thing to do." / "That was an encounter you don't wish to repeat." / "Ha! You missed!"
|
||||
}
|
||||
else if (Core.SE && Utility.RandomDouble() > .20 && (from.Direction & Direction.Running) != 0 &&
|
||||
Core.TickCount - from.LastMoveTime < from.ComputeMovementSpeed(from.Direction))
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1063305); // Didn't your parents ever tell you not to run with scissors in your hand?!
|
||||
}
|
||||
else if (targeted is Item item && !item.Movable)
|
||||
{
|
||||
if (item is IScissorable obj && (obj is PlagueBeastInnard || obj is PlagueBeastMutationCore))
|
||||
if (CanScissor(from, obj) && obj.Scissor(from, m_Item))
|
||||
from.PlaySound(0x248);
|
||||
}
|
||||
else if (targeted is IScissorable obj)
|
||||
{
|
||||
if (CanScissor(from, obj) && obj.Scissor(from, m_Item))
|
||||
from.PlaySound(0x248);
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything.
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
protected override void OnNonlocalTarget(Mobile from, object targeted)
|
||||
{
|
||||
if (targeted is IScissorable obj && (obj is PlagueBeastInnard || obj is PlagueBeastMutationCore))
|
||||
{
|
||||
if (CanScissor(from, obj) && obj.Scissor(from, m_Item))
|
||||
from.PlaySound(0x248);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.OnNonlocalTarget(from, targeted);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue