Runic sewing kits will no longer apply durability

http://www.uodemise.com/forum/showthread.php?t=133757

Vendor Look/Browse/View will now work properly
http://www.uodemise.com/forum/showthread.php?t=135531

Stacked Eggbombs will now unstack correctly
http://www.uodemise.com/forum/showthread.php?t=134321

Unbonded pets should logout too
http://www.uodemise.com/forum/showthread.php?t=119262

Paragon chests placed on player vendors will now behave correctly
http://www.uodemise.com/forum/showthread.php?t=116864

Proper party fame/karma sharing
http://www.uodemise.com/forum/showthread.php?t=122749

Guild Alliance/War update bug fixed
http://www.uodemise.com/forum/showthread.php?t=115236

Fukiya properties updates and loading bug fixed
http://www.uodemise.com/forum/showthread.php?t=136042

Shuriken, same problems as fukiya
http://www.uodemise.com/forum/showthread.php?t=120212

greater mongbats will now be recognised as quest objectives
http://www.uodemise.com/forum/showthread.php?t=128072

divine fury sound tweaks.
http://www.uodemise.com/forum/showthread.php?t=136489

pet stat gains fix
http://www.uodemise.com/forum/showthread.php?t=134820

Pets follow speed corrected
http://www.uodemise.com/forum/showthread.php?t=124774

E-fields no longer block in trammel rulesets.
http://www.uodemise.com/forum/showthread.php?t=116680

Disguise kit timer fix
http://www.uodemise.com/forum/showthread.php?t=133913

Meer Mage special abilities fixes.
http://www.uodemise.com/forum/showthread.php?t=122134

Missing food property if eggs, in animal lore gump
http://www.uodemise.com/forum/showthread.php?t=135258

Pets will follow after an attack is completed.
http://www.uodemise.com/forum/showthread.php?t=135962

Hides should not be scissored whilst still on the corpse
http://www.uodemise.com/forum/showthread.php?t=118799

Pet bonding changed to include jewelry skill adjustments.
http://www.uodemise.com/forum/showthread.php?t=121060

Skinning knife can be used to cut corpses
http://www.uodemise.com/forum/showthread.php?t=115248

PlayerVendors will correctly send update packets to the client when hair is changed
http://www.uodemise.com/forum/showthread.php?t=120216

Corrections to house sign gump
http://www.uodemise.com/forum/showthread.php?t=134406

pet "guarding" system message added
http://www.uodemise.com/forum/showthread.php?t=134091

Giant toads should be aggressive
http://www.uodemise.com/forum/showthread.php?t=133984

bardiche and halberds are axe tools.
http://www.uodemise.com/forum/showthread.php?t=122739
This commit is contained in:
mark 2010-01-17 06:59:32 +00:00
parent d688c9e0f3
commit 208acafd7e
37 changed files with 1058 additions and 226 deletions

View file

@ -224,44 +224,13 @@ namespace Server.Items
m_From.SendGump( new DisguiseGump( m_From, m_Kit, hair, true ) );
StopTimer( m_From );
m_Timers[m_From] = Timer.DelayCall( TimeSpan.FromHours( 2.0 ), new TimerStateCallback( OnDisguiseExpire ), m_From );
DisguiseTimers.RemoveTimer( m_From );
DisguiseTimers.CreateTimer( m_From, TimeSpan.FromHours( 2.0 ) );
DisguiseTimers.StartTimer( m_From );
}
}
public static void OnDisguiseExpire( object state )
{
Mobile m = (Mobile)state;
StopTimer( m );
m.NameMod = null;
if ( m is PlayerMobile )
((PlayerMobile)m).SetHairMods( -1, -1 );
}
public static bool IsDisguised( Mobile m )
{
return m_Timers.Contains( m );
}
public static bool StopTimer( Mobile m )
{
Timer t = (Timer)m_Timers[m];
if ( t != null )
{
t.Stop();
m_Timers.Remove( m );
}
return ( t != null );
}
private static Hashtable m_Timers = new Hashtable();
private static DisguiseEntry[] m_HairEntries = new DisguiseEntry[]
{
new DisguiseEntry( 8251, 50700, 0, 5, 1011052 ), // Short
@ -306,4 +275,98 @@ namespace Server.Items
}
}
}
public class DisguiseTimers
{
public static void Initialize()
{
new DisguisePersistance();
}
private class InternalTimer : Timer
{
private Mobile m_Player;
public InternalTimer( Mobile m, TimeSpan delay ) : base( delay )
{
m_Player = m;
Priority = TimerPriority.OneMinute;
}
protected override void OnTick()
{
m_Player.NameMod = null;
if ( m_Player is PlayerMobile )
((PlayerMobile)m_Player).SetHairMods( -1, -1 );
DisguiseTimers.RemoveTimer( m_Player );
}
}
public static void CreateTimer( Mobile m, TimeSpan delay )
{
if ( m != null )
if ( !m_Timers.Contains( m ) )
m_Timers[m] = new InternalTimer( m, delay );
}
public static void StartTimer( Mobile m )
{
Timer t = (Timer)m_Timers[m];
if ( t != null )
t.Start();
}
public static bool IsDisguised( Mobile m )
{
return m_Timers.Contains( m );
}
public static bool StopTimer( Mobile m )
{
Timer t = (Timer)m_Timers[m];
if ( t != null )
{
t.Delay = t.Next - DateTime.Now;
t.Stop();
}
return ( t != null );
}
public static bool RemoveTimer( Mobile m )
{
Timer t = (Timer)m_Timers[m];
if ( t != null )
{
t.Stop();
m_Timers.Remove( m );
}
return ( t != null );
}
public static TimeSpan TimeRemaining( Mobile m )
{
Timer t = (Timer)m_Timers[m];
if ( t != null )
{
return t.Next - DateTime.Now;
}
return TimeSpan.Zero;
}
private static Hashtable m_Timers = new Hashtable();
public static Hashtable Timers
{
get { return m_Timers; }
}
}
}