- IPTable update when deleting accounts, so the creation IP address gets a new account spot.

- Added AdminGump option for removing account access IP addresses.
- Firebombs now cancel the target properly when exploding.
- Fixed item placement bug when creating firebombs.
- Added criminal check option to Teleporter.
- Fixed item placement bug when opening MIBs.
- Made SOS flipable.
- Opening an SOS will no longer close other SOS gumps.
- Corrected Leafblade to be a Fencing weapon.
- Meer mages no longer cast plagues on pets, only on players.
- Corrected skills typo in CorruptedSoul.
- Movement induced by angering a monster during taming will now respect movement timers.
- Teleporting into keep walls is no longer possible.
- Removed the ability to have line of sight under a house plot through house walls.
- Added the Frozen mobile flag, providing clients with information on when they are frozen. (The client then disallows movement.)
- Fix for character statue redeeding issues.
This commit is contained in:
eos 2012-04-22 04:10:06 +00:00
parent a3f8cb5fc6
commit c52504151b
18 changed files with 309 additions and 122 deletions

View file

@ -232,7 +232,7 @@ namespace Server.Mobiles
Frozen = true;
if( m_SculptedBy == null || Map == Map.Internal )
if( m_SculptedBy == null || Map == Map.Internal ) // Remove preview statues
{
Timer.DelayCall( TimeSpan.Zero, new TimerCallback( Delete ) );
}
@ -246,7 +246,7 @@ namespace Server.Mobiles
InvalidateProperties();
}
public void Demolish( Mobile by )
public bool Demolish( Mobile by )
{
CharacterStatueDeed deed = new CharacterStatueDeed( null );
@ -260,11 +260,15 @@ namespace Server.Mobiles
if ( m_Plinth != null )
m_Plinth.Delete();
return true;
}
else
{
by.SendLocalizedMessage( 500720 ); // You don't have enough room in your backpack!
deed.Delete();
return false;
}
}
@ -602,6 +606,14 @@ namespace Server.Mobiles
plinth.MoveToWorld( loc, map );
statue.InvalidatePose();
/*
* TODO: Previously the maker wasn't deleted until after statue
* customization, leading to redeeding issues. Exact OSI behavior
* needs looking into.
*/
m_Maker.Delete();
statue.Sculpt( from );
from.CloseGump( typeof( CharacterStatueGump ) );
from.SendGump( new CharacterStatueGump( m_Maker, statue, from ) );
}

View file

@ -10,7 +10,6 @@ namespace Server.Gumps
{
private Item m_Maker;
private CharacterStatue m_Statue;
private Timer m_Timer;
private Mobile m_Owner;
private enum Buttons
@ -81,20 +80,6 @@ namespace Server.Gumps
AddButton( 107, 294, 0xFAB, 0xFAD, (int) Buttons.Restore, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 142, 294, 80, 20, 1076193, 0x7FFF, false, false ); // Restore
}
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 2.5 ), TimeSpan.FromSeconds( 2.5 ), new TimerCallback( CheckOnline ) );
}
private void CheckOnline()
{
if ( m_Owner != null && m_Owner.NetState == null )
{
if ( m_Timer != null )
m_Timer.Stop();
if ( m_Statue != null && !m_Statue.Deleted )
m_Statue.Delete();
}
}
private int GetMaterialNumber( StatueType type, StatueMaterial material )
@ -141,7 +126,7 @@ namespace Server.Gumps
public override void OnResponse( NetState state, RelayInfo info )
{
if ( m_Statue == null || m_Statue.Deleted || m_Maker == null || m_Maker.Deleted || !m_Maker.IsChildOf( state.Mobile.Backpack ) )
if ( m_Statue == null || m_Statue.Deleted )
return;
bool sendGump = false;
@ -205,25 +190,13 @@ namespace Server.Gumps
sendGump = true;
}
else
else // Close
{
m_Statue.Delete();
sendGump = !m_Statue.Demolish( state.Mobile );
}
if ( sendGump )
state.Mobile.SendGump( new CharacterStatueGump( m_Maker, m_Statue, m_Owner ) );
if ( m_Timer != null )
m_Timer.Stop();
}
public override void OnServerClose( NetState owner )
{
if ( m_Timer != null )
m_Timer.Stop();
if ( m_Statue != null && !m_Statue.Deleted )
m_Statue.Delete();
}
}
}