#W# Initial Commit: Avatars Conquest
This commit is contained in:
commit
8eae46895e
7512 changed files with 416187 additions and 0 deletions
144
Source/Poison.cs
Normal file
144
Source/Poison.cs
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
/***************************************************************************
|
||||
* Poison.cs
|
||||
* -------------------
|
||||
* begin : May 1, 2002
|
||||
* copyright : (C) The RunUO Software Team
|
||||
* email : info@runuo.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Server
|
||||
{
|
||||
[Parsable]
|
||||
public abstract class Poison
|
||||
{
|
||||
/*public abstract TimeSpan Interval{ get; }
|
||||
public abstract TimeSpan Duration{ get; }*/
|
||||
public abstract string Name { get; }
|
||||
public abstract int Level { get; }
|
||||
public abstract Timer ConstructTimer( Mobile m );
|
||||
/*public abstract void OnDamage( Mobile m, ref object state );*/
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Name;
|
||||
}
|
||||
|
||||
|
||||
private static List<Poison> m_Poisons = new List<Poison>();
|
||||
|
||||
public static void Register( Poison reg )
|
||||
{
|
||||
string regName = reg.Name.ToLower();
|
||||
|
||||
for ( int i = 0; i < m_Poisons.Count; i++ )
|
||||
{
|
||||
if ( reg.Level == m_Poisons[i].Level )
|
||||
throw new Exception( "A poison with that level already exists." );
|
||||
else if ( regName == m_Poisons[i].Name.ToLower() )
|
||||
throw new Exception( "A poison with that name already exists." );
|
||||
}
|
||||
|
||||
m_Poisons.Add( reg );
|
||||
}
|
||||
|
||||
public static Poison Lesser { get { return GetPoison( "Lesser" ); } }
|
||||
public static Poison Regular { get { return GetPoison( "Regular" ); } }
|
||||
public static Poison Greater { get { return GetPoison( "Greater" ); } }
|
||||
public static Poison Deadly { get { return GetPoison( "Deadly" ); } }
|
||||
public static Poison Lethal { get { return GetPoison( "Lethal" ); } }
|
||||
|
||||
public static List<Poison> Poisons
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_Poisons;
|
||||
}
|
||||
}
|
||||
|
||||
public static Poison Parse( string value )
|
||||
{
|
||||
Poison p = null;
|
||||
|
||||
int plevel;
|
||||
|
||||
if ( int.TryParse( value, out plevel ) )
|
||||
p = GetPoison( plevel );
|
||||
|
||||
if ( p == null )
|
||||
p = GetPoison( value );
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
public static Poison GetPoison( int level )
|
||||
{
|
||||
for ( int i = 0; i < m_Poisons.Count; ++i )
|
||||
{
|
||||
Poison p = m_Poisons[i];
|
||||
|
||||
if ( p.Level == level )
|
||||
return p;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Poison GetPoison( string name )
|
||||
{
|
||||
for ( int i = 0; i < m_Poisons.Count; ++i )
|
||||
{
|
||||
Poison p = m_Poisons[i];
|
||||
|
||||
if ( Utility.InsensitiveCompare( p.Name, name ) == 0 )
|
||||
return p;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void Serialize( Poison p, GenericWriter writer )
|
||||
{
|
||||
if ( p == null )
|
||||
{
|
||||
writer.Write( (byte)0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.Write( (byte)1 );
|
||||
writer.Write( (byte)p.Level );
|
||||
}
|
||||
}
|
||||
|
||||
public static Poison Deserialize( GenericReader reader )
|
||||
{
|
||||
switch ( reader.ReadByte() )
|
||||
{
|
||||
case 1: return GetPoison( reader.ReadByte() );
|
||||
case 2:
|
||||
//no longer used, safe to remove?
|
||||
reader.ReadInt();
|
||||
reader.ReadDouble();
|
||||
reader.ReadInt();
|
||||
reader.ReadTimeSpan();
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue