104 lines
No EOL
2 KiB
C#
104 lines
No EOL
2 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Spells;
|
|
|
|
namespace Server.Items
|
|
{
|
|
public class CureLevelInfo
|
|
{
|
|
private Poison m_Poison;
|
|
private double m_Chance;
|
|
|
|
public Poison Poison
|
|
{
|
|
get{ return m_Poison; }
|
|
}
|
|
|
|
public double Chance
|
|
{
|
|
get{ return m_Chance; }
|
|
}
|
|
|
|
public CureLevelInfo( Poison poison, double chance )
|
|
{
|
|
m_Poison = poison;
|
|
m_Chance = chance;
|
|
}
|
|
}
|
|
|
|
public abstract class BaseCurePotion : BasePotion
|
|
{
|
|
public abstract CureLevelInfo[] LevelInfo{ get; }
|
|
|
|
public BaseCurePotion( PotionEffect effect ) : base( 0xF07, effect )
|
|
{
|
|
}
|
|
|
|
public BaseCurePotion( Serial serial ) : base( serial )
|
|
{
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.Write( (int) 0 ); // version
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadInt();
|
|
}
|
|
|
|
public void DoCure( Mobile from )
|
|
{
|
|
bool cure = false;
|
|
|
|
CureLevelInfo[] info = LevelInfo;
|
|
|
|
for ( int i = 0; i < info.Length; ++i )
|
|
{
|
|
CureLevelInfo li = info[i];
|
|
|
|
if ( li.Poison == from.Poison && Scale( from, li.Chance ) > Utility.RandomDouble() )
|
|
{
|
|
cure = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ( cure && from.CurePoison( from ) )
|
|
{
|
|
from.SendLocalizedMessage( 500231 ); // You feel cured of poison!
|
|
|
|
from.FixedEffect( 0x373A, 10, 15 );
|
|
from.PlaySound( 0x1E0 );
|
|
}
|
|
else if ( !cure )
|
|
{
|
|
from.SendLocalizedMessage( 500232 ); // That potion was not strong enough to cure your ailment!
|
|
}
|
|
}
|
|
|
|
public override void Drink( Mobile from )
|
|
{
|
|
if ( from.Poisoned )
|
|
{
|
|
DoCure( from );
|
|
|
|
BasePotion.PlayDrinkEffect( from );
|
|
|
|
from.FixedParticles( 0x373A, 10, 15, 5012, EffectLayer.Waist );
|
|
from.PlaySound( 0x1E0 );
|
|
|
|
this.Consume();
|
|
}
|
|
else
|
|
{
|
|
from.SendLocalizedMessage( 1042000 ); // You are not poisoned.
|
|
}
|
|
}
|
|
}
|
|
} |