BritainKnights/Scripts/Items/Body Parts/Head.cs

128 lines
No EOL
2.6 KiB
C#

using System;
using Server;
namespace Server.Items
{
public enum HeadType
{
Regular,
Duel,
Tournament
}
public class Head : Item
{
private string m_PlayerName;
private HeadType m_HeadType;
[CommandProperty( AccessLevel.GameMaster )]
public string PlayerName
{
get { return m_PlayerName; }
set { m_PlayerName = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public HeadType HeadType
{
get { return m_HeadType; }
set { m_HeadType = value; }
}
public override string DefaultName
{
get
{
if ( m_PlayerName == null )
return base.DefaultName;
switch ( m_HeadType )
{
default:
return String.Format( "the head of {0}", m_PlayerName );
case HeadType.Duel:
return String.Format( "the head of {0}, taken in a duel", m_PlayerName );
case HeadType.Tournament:
return String.Format( "the head of {0}, taken in a tournament", m_PlayerName );
}
}
}
[Constructable]
public Head()
: this( null )
{
}
[Constructable]
public Head( string playerName )
: this( HeadType.Regular, playerName )
{
}
[Constructable]
public Head( HeadType headType, string playerName )
: base( 0x1DA0 )
{
m_HeadType = headType;
m_PlayerName = playerName;
}
public Head( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 ); // version
writer.Write( (string) m_PlayerName );
writer.WriteEncodedInt( (int) m_HeadType );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
m_PlayerName = reader.ReadString();
m_HeadType = (HeadType) reader.ReadEncodedInt();
break;
case 0:
string format = this.Name;
if ( format != null )
{
if ( format.StartsWith( "the head of " ) )
format = format.Substring( "the head of ".Length );
if ( format.EndsWith( ", taken in a duel" ) )
{
format = format.Substring( 0, format.Length - ", taken in a duel".Length );
m_HeadType = HeadType.Duel;
}
else if ( format.EndsWith( ", taken in a tournament" ) )
{
format = format.Substring( 0, format.Length - ", taken in a tournament".Length );
m_HeadType = HeadType.Tournament;
}
}
m_PlayerName = format;
this.Name = null;
break;
}
}
}
}