lots of little stuff, but mostly bank optimization, due to the weirdness of the calls

This commit is contained in:
mark 2007-01-19 22:10:11 +00:00
parent 566de1c2cf
commit f95101c201
29 changed files with 214 additions and 282 deletions

View file

@ -154,7 +154,9 @@ namespace Server.Engines.Plants
if ( owner.Backpack != null && IsChildOf( owner.Backpack ) )
return true;
if ( owner.BankBox != null && IsChildOf( owner.BankBox ) )
BankBox bank = owner.FindBankNoCreate();
if ( bank != null && IsChildOf( bank ) )
return true;
return false;
@ -317,7 +319,7 @@ namespace Server.Engines.Plants
public bool IsUsableBy( Mobile from )
{
Item root = RootParent as Item;
return IsChildOf( from.Backpack ) || IsChildOf( from.BankBox ) || IsLockedDown && IsAccessibleTo( from ) || root != null && root.IsSecure && root.IsAccessibleTo( from );
return IsChildOf( from.Backpack ) || IsChildOf( from.FindBankNoCreate() ) || IsLockedDown && IsAccessibleTo( from ) || root != null && root.IsSecure && root.IsAccessibleTo( from );
}
public override void OnDoubleClick( Mobile from )

View file

@ -400,9 +400,11 @@ namespace Server.Engines.Plants
}
}
if ( from.BankBox != null )
BankBox bank = from.FindBankNoCreate();
if ( bank != null )
{
Item[] plants = from.BankBox.FindItemsByType( typeof( PlantItem ) );
Item[] plants = bank.FindItemsByType( typeof( PlantItem ) );
foreach ( PlantItem plant in plants )
{

View file

@ -147,7 +147,9 @@ namespace Server.Engines.Quests.Collector
if ( obj != null && !obj.Completed )
{
if ( player.BankBox != null && player.BankBox.ConsumeTotal( typeof( Gold ), 10 ) )
BankBox bank = player.FindBankNoCreate();
if ( bank != null && bank.ConsumeTotal( typeof( Gold ), 10 ) )
{
obj.Complete();
}

View file

@ -131,10 +131,7 @@ namespace Server.Engines.Quests.Doom
if ( obj != null && obj.CurProgress > 0 )
{
BankBox box = From.BankBox;
if ( box != null )
box.DropItem( new DaemonBone( obj.CurProgress ) );
From.BankBox.DropItem( new DaemonBone( obj.CurProgress ) );
From.SendLocalizedMessage( 1050030 ); // The Daemon bones that you have thus far given to Victoria have been returned to you.
}

View file

@ -1,9 +1,9 @@
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Server;
using Server.Items;
using System.Collections.Generic;
namespace Server.Mobiles
{
@ -16,7 +16,7 @@ namespace Server.Mobiles
private TimeSpan m_MinDelay;
private TimeSpan m_MaxDelay;
private List<string> m_CreaturesName;
private ArrayList m_Creatures;
private List<IEntity> m_Creatures;
private DateTime m_End;
private InternalTimer m_Timer;
private bool m_Running;
@ -188,7 +188,7 @@ namespace Server.Mobiles
m_Team = team;
m_HomeRange = homeRange;
m_CreaturesName = creaturesName;
m_Creatures = new ArrayList();
m_Creatures = new List<IEntity>();
DoTimer( TimeSpan.FromSeconds( 1 ) );
}
@ -222,7 +222,7 @@ namespace Server.Mobiles
list.Add( 1060661, "speed\t{0} to {1}", m_MinDelay, m_MaxDelay ); // ~1_val~: ~2_val~
for ( int i = 0; i < 2 && i < m_CreaturesName.Count; ++i )
list.Add( 1060662 + i, "{0}\t{1}", m_CreaturesName[i], CountCreatures( (string)m_CreaturesName[i] ) );
list.Add( 1060662 + i, "{0}\t{1}", m_CreaturesName[i], CountCreatures( m_CreaturesName[i] ) );
}
else
{
@ -267,11 +267,11 @@ namespace Server.Mobiles
for ( int i = 0; i < m_Creatures.Count; ++i )
{
object o = m_Creatures[i];
IEntity e = m_Creatures[i];
if ( o is Item )
if ( e is Item )
{
Item item = (Item)o;
Item item = (Item)e;
if ( item.Deleted || item.Parent != null )
{
@ -280,9 +280,9 @@ namespace Server.Mobiles
removed = true;
}
}
else if ( o is Mobile )
else if ( e is Mobile )
{
Mobile m = (Mobile)o;
Mobile m = (Mobile)e;
if ( m.Deleted )
{
@ -292,7 +292,8 @@ namespace Server.Mobiles
}
else if ( m is BaseCreature )
{
if ( ((BaseCreature)m).Controlled || ((BaseCreature)m).IsStabled )
BaseCreature bc = (BaseCreature)m;
if ( bc.Controlled || bc.IsStabled )
{
m_Creatures.RemoveAt( i );
--i;
@ -353,7 +354,7 @@ namespace Server.Mobiles
{
for ( int i = 0; i < m_CreaturesName.Count; i++ )
{
if ( (string)m_CreaturesName[i] == creatureName )
if ( m_CreaturesName[i] == creatureName )
{
Spawn( i );
break;
@ -373,7 +374,7 @@ namespace Server.Mobiles
if ( m_Creatures.Count >= m_Count )
return;
Type type = SpawnerType.GetType( (string)m_CreaturesName[index] );
Type type = SpawnerType.GetType( m_CreaturesName[index] );
if ( type != null )
{
@ -525,19 +526,12 @@ namespace Server.Mobiles
{
Defrag();
creatureName = creatureName.ToLower();
for ( int i = 0; i < m_Creatures.Count; ++i )
{
object o = m_Creatures[i];
IEntity e = m_Creatures[i];
if ( Insensitive.Equals( creatureName, o.GetType().Name ) )
{
if ( o is Item )
((Item)o).Delete();
else if ( o is Mobile )
((Mobile)o).Delete();
}
if ( Insensitive.Equals( creatureName, e.GetType().Name ) )
e.Delete();
}
InvalidateProperties();
@ -548,14 +542,7 @@ namespace Server.Mobiles
Defrag();
for ( int i = 0; i < m_Creatures.Count; ++i )
{
object o = m_Creatures[i];
if ( o is Item )
((Item)o).Delete();
else if ( o is Mobile )
((Mobile)o).Delete();
}
m_Creatures[i].Delete();
InvalidateProperties();
}
@ -566,17 +553,17 @@ namespace Server.Mobiles
for ( int i = 0; i < m_Creatures.Count; ++i )
{
object o = m_Creatures[i];
IEntity e = m_Creatures[i];
if ( o is Mobile )
if ( e is Mobile )
{
Mobile m = (Mobile)o;
Mobile m = (Mobile)e;
m.MoveToWorld( Location, Map );
}
else if ( o is Item )
else if ( e is Item )
{
Item item = (Item)o;
Item item = (Item)e;
item.MoveToWorld( Location, Map );
}
@ -622,12 +609,12 @@ namespace Server.Mobiles
for ( int i = 0; i < m_Creatures.Count; ++i )
{
object o = m_Creatures[i];
IEntity e = m_Creatures[i];
if ( o is Item )
writer.Write( (Item)o );
else if ( o is Mobile )
writer.Write( (Mobile)o );
if ( e is Item )
writer.Write( (Item)e );
else if ( e is Mobile )
writer.Write( (Mobile)e );
else
writer.Write( Serial.MinusOne );
}
@ -699,7 +686,7 @@ namespace Server.Mobiles
int count = reader.ReadInt();
m_Creatures = new ArrayList( count );
m_Creatures = new List<IEntity>( count );
for ( int i = 0; i < count; ++i )
{