xavier 2010-11-18 18:58:01 +00:00
parent a603b2c82d
commit 6a221f4e10
4 changed files with 28 additions and 14 deletions

View file

@ -151,13 +151,12 @@ namespace Server.Items
public static int EnhancePotions( Mobile m )
{
int EP = AosAttributes.GetValue( m, AosAttribute.EnhancePotions );
int skillBonus = m.Skills.Alchemy.Fixed / 330 * 10;
int cap = 50 + m.Skills.Alchemy.Fixed / 330 * 10;
if ( Core.ML && EP > 50 && m.AccessLevel <= AccessLevel.Player )
EP = 50;
if ( Core.ML && EP > cap && m.AccessLevel <= AccessLevel.Player )
EP = cap;
return EP;
return ( EP + skillBonus );
}
public static TimeSpan Scale( Mobile m, TimeSpan v )

View file

@ -16,7 +16,8 @@ namespace Server.Items
private static bool LeveledExplosion = false; // Should explosion potions explode other nearby potions?
private static bool InstantExplosion = false; // Should explosion potions explode on impact?
private const int ExplosionRange = 2; // How long is the blast radius?
private static bool RelativeLocation = false; // Is the explosion target location relative for mobiles?
private const int ExplosionRange = 2; // How long is the blast radius?
public BaseExplosionPotion( PotionEffect effect ) : base( 0xF0D, effect )
{
@ -89,7 +90,11 @@ namespace Server.Items
if ( m_Timer == null )
{
from.SendLocalizedMessage( 500236 ); // You should throw it now!
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 0.75 ), TimeSpan.FromSeconds( 1.0 ), 4, new TimerStateCallback( Detonate_OnTick ), new object[]{ from, 3 } );
if( Core.ML )
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), TimeSpan.FromSeconds( 1.25 ), 5, new TimerStateCallback( Detonate_OnTick ), new object[]{ from, 3 } ); // 3.6 seconds explosion delay
else
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 0.75 ), TimeSpan.FromSeconds( 1.0 ), 4, new TimerStateCallback( Detonate_OnTick ), new object[]{ from, 3 } ); // 2.6 seconds explosion delay
}
}
@ -195,10 +200,15 @@ namespace Server.Items
IEntity to;
if ( p is Mobile )
to = (Mobile)p;
else
to = new Entity( Serial.Zero, new Point3D( p ), map );
to = new Entity( Serial.Zero, new Point3D( p ), map );
if( p is Mobile )
{
if( !RelativeLocation ) // explosion location = current mob location.
p = ((Mobile)p).Location;
else
to = (Mobile)p;
}
Effects.SendMovingEffect( from, to, m_Potion.ItemID & 0x3FFF, 7, 0, false, false, m_Potion.Hue, 0 );