86 lines
No EOL
1.6 KiB
C#
86 lines
No EOL
1.6 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace Server
|
|
{
|
|
public class ShrinkTable
|
|
{
|
|
public const int DefaultItemID = 0x1870; // Yellow virtue stone
|
|
|
|
private static int[] m_Table;
|
|
|
|
public static int Lookup( Mobile m )
|
|
{
|
|
return Lookup( m.Body.BodyID, DefaultItemID );
|
|
}
|
|
|
|
public static int Lookup( int body )
|
|
{
|
|
return Lookup( body, DefaultItemID );
|
|
}
|
|
|
|
public static int Lookup( Mobile m, int defaultValue )
|
|
{
|
|
return Lookup( m.Body.BodyID, defaultValue );
|
|
}
|
|
|
|
public static int Lookup( int body, int defaultValue )
|
|
{
|
|
if ( m_Table == null )
|
|
Load();
|
|
|
|
int val = 0;
|
|
|
|
if ( body >= 0 && body < m_Table.Length )
|
|
val = m_Table[body];
|
|
|
|
if ( val == 0 )
|
|
val = defaultValue;
|
|
|
|
return val;
|
|
}
|
|
|
|
private static void Load()
|
|
{
|
|
string path = Path.Combine( Core.BaseDirectory, "Data/Config/shrink.cfg" );
|
|
|
|
if ( !File.Exists( path ) )
|
|
{
|
|
m_Table = new int[0];
|
|
return;
|
|
}
|
|
|
|
m_Table = new int[1000];
|
|
|
|
using ( StreamReader ip = new StreamReader( path ) )
|
|
{
|
|
string line;
|
|
|
|
while ( (line = ip.ReadLine()) != null )
|
|
{
|
|
line = line.Trim();
|
|
|
|
if ( line.Length == 0 || line.StartsWith( "#" ) )
|
|
continue;
|
|
|
|
try
|
|
{
|
|
string[] split = line.Split( '\t' );
|
|
|
|
if ( split.Length >= 2 )
|
|
{
|
|
int body = Utility.ToInt32( split[0] );
|
|
int item = Utility.ToInt32( split[1] );
|
|
|
|
if ( body >= 0 && body < m_Table.Length )
|
|
m_Table[body] = item;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |