- 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

@ -11,6 +11,7 @@ namespace Server.Items
private Timer m_Timer;
private int m_Ticks = 0;
private Mobile m_LitBy;
private List<Mobile> m_Users;
[Constructable]
public Firebomb() : this( 0x99B )
@ -53,21 +54,27 @@ namespace Server.Items
if ( Core.AOS && (from.Paralyzed || from.Frozen || (from.Spell != null && from.Spell.IsCasting)) )
{
//to prevent exploiting for pvp
from.SendLocalizedMessage( 1075857 ); // You can not use that while paralyzed.
// to prevent exploiting for pvp
from.SendLocalizedMessage( 1075857 ); // You cannot use that while paralyzed.
return;
}
}
if ( m_Timer == null )
{
m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 1 ), TimeSpan.FromSeconds( 1 ), new TimerCallback( OnFirebombTimerTick ) );
m_LitBy = from;
from.SendLocalizedMessage( 1060581 ); //You light the firebomb! Throw it now!
from.SendLocalizedMessage( 1060582 ); // You light the firebomb. Throw it now!
}
else
from.SendLocalizedMessage( 1060582 ); //You've already lit it! Better throw it now!
from.SendLocalizedMessage( 1060581 ); // You've already lit it! Better throw it now!
from.BeginTarget( 12, true, TargetFlags.None, new TargetCallback( OnFirebombTarget ) );
if ( m_Users == null )
m_Users = new List<Mobile>();
if ( !m_Users.Contains( from ) )
m_Users.Add( from );
from.Target = new ThrowTarget( this );
}
private void OnFirebombTimerTick()
@ -103,10 +110,24 @@ namespace Server.Items
if ( HeldBy != null )
HeldBy.DropHolding();
if ( m_Users != null )
{
foreach ( Mobile m in m_Users )
{
ThrowTarget targ = m.Target as ThrowTarget;
if ( targ != null && targ.Bomb == this )
Target.Cancel( m );
}
m_Users.Clear();
m_Users = null;
}
if ( RootParent is Mobile )
{
Mobile parent = (Mobile)RootParent;
parent.SendLocalizedMessage( 1060583 ); //The firebomb explodes in your hand!
parent.SendLocalizedMessage( 1060583 ); // The firebomb explodes in your hand!
AOS.Damage( parent, Utility.Random( 3 ) + 4, 0, 100, 0, 0, 0 );
}
else if ( RootParent == null )
@ -181,6 +202,27 @@ namespace Server.Items
MoveToWorld( new Point3D( p ), map );
}
private class ThrowTarget : Target
{
private Firebomb m_Bomb;
public Firebomb Bomb
{
get { return m_Bomb; }
}
public ThrowTarget( Firebomb bomb )
: base( 12, true, TargetFlags.None )
{
m_Bomb = bomb;
}
protected override void OnTarget( Mobile from, object targeted )
{
m_Bomb.OnFirebombTarget( from, targeted );
}
}
}
public class FirebombField : Item
@ -205,7 +247,7 @@ namespace Server.Items
public override void Serialize( GenericWriter writer )
{
//Don't serialize these...
// Don't serialize these...
}
public override void Deserialize( GenericReader reader )