This commit is contained in:
mark 2008-05-29 03:57:42 +00:00
parent e41632fe95
commit 9c5abc3b0d
48 changed files with 261 additions and 70 deletions

View file

@ -1,5 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
namespace Server.Engines.Craft
{
@ -12,14 +13,14 @@ namespace Server.Engines.Craft
public class CraftContext
{
private ArrayList m_Items;
private List<CraftItem> m_Items;
private int m_LastResourceIndex;
private int m_LastResourceIndex2;
private int m_LastGroupIndex;
private bool m_DoNotColor;
private CraftMarkOption m_MarkOption;
public ArrayList Items{ get{ return m_Items; } }
public List<CraftItem> Items { get { return m_Items; } }
public int LastResourceIndex{ get{ return m_LastResourceIndex; } set{ m_LastResourceIndex = value; } }
public int LastResourceIndex2{ get{ return m_LastResourceIndex2; } set{ m_LastResourceIndex2 = value; } }
public int LastGroupIndex{ get{ return m_LastGroupIndex; } set{ m_LastGroupIndex = value; } }
@ -28,7 +29,7 @@ namespace Server.Engines.Craft
public CraftContext()
{
m_Items = new ArrayList();
m_Items = new List<CraftItem>();
m_LastResourceIndex = -1;
m_LastResourceIndex2 = -1;
m_LastGroupIndex = -1;
@ -39,7 +40,7 @@ namespace Server.Engines.Craft
get
{
if ( m_Items.Count > 0 )
return (CraftItem)m_Items[0];
return m_Items[0];
return null;
}

View file

@ -188,14 +188,14 @@ namespace Server.Engines.Craft
CreateGroupList();
if ( page == CraftPage.PickResource )
CreateResList( false );
CreateResList( false, from );
else if ( page == CraftPage.PickResource2 )
CreateResList( true );
CreateResList( true, from );
else if ( context != null && context.LastGroupIndex > -1 )
CreateItemList( context.LastGroupIndex );
}
public void CreateResList( bool opt )
public void CreateResList( bool opt, Mobile from )
{
CraftSubResCol res = ( opt ? m_CraftSystem.CraftSubRes2 : m_CraftSystem.CraftSubRes );
@ -221,12 +221,22 @@ namespace Server.Engines.Craft
AddHtmlLocalized( 255, 263, 200, 18, (context == null || !context.DoNotColor) ? 1061591 : 1061590, LabelColor, false, false );
}
int resourceCount = 0;
if ( from.Backpack != null )
{
Item[] items = from.Backpack.FindItemsByType( subResource.ItemType, true );
for ( int j = 0; j < items.Length; ++j )
resourceCount += items[j].Amount;
}
AddButton( 220, 60 + (index * 20), 4005, 4007, GetButtonID( 5, i ), GumpButtonType.Reply, 0 );
if ( subResource.NameNumber > 0 )
AddHtmlLocalized( 255, 63 + (index * 20), 250, 18, subResource.NameNumber, LabelColor, false, false );
AddHtmlLocalized( 255, 63 + (index * 20), 250, 18, subResource.NameNumber, resourceCount.ToString(), LabelColor, false, false );
else
AddLabel( 255, 60 + (index * 20), LabelHue, subResource.NameString );
AddLabel( 255, 60 + ( index * 20 ), LabelHue, String.Format( "{0} ({1})", subResource.NameString, resourceCount ) );
}
}
@ -237,7 +247,7 @@ namespace Server.Engines.Craft
if ( context == null )
return;
ArrayList items = context.Items;
List<CraftItem> items = context.Items;
if ( items.Count > 0 )
{
@ -245,7 +255,7 @@ namespace Server.Engines.Craft
{
int index = i % 10;
CraftItem craftItem = (CraftItem)items[i];
CraftItem craftItem = items[i];
if ( index == 0 )
{
@ -449,10 +459,10 @@ namespace Server.Engines.Craft
if ( context == null )
break;
ArrayList lastTen = context.Items;
List<CraftItem> lastTen = context.Items;
if ( index >= 0 && index < lastTen.Count )
CraftItem( (CraftItem)lastTen[index] );
CraftItem( lastTen[index] );
break;
}
@ -461,10 +471,10 @@ namespace Server.Engines.Craft
if ( context == null )
break;
ArrayList lastTen = context.Items;
List<CraftItem> lastTen = context.Items;
if ( index >= 0 && index < lastTen.Count )
m_From.SendGump( new CraftGumpItem( m_From, system, (CraftItem)lastTen[index], m_Tool ) );
m_From.SendGump( new CraftGumpItem( m_From, system, lastTen[index], m_Tool ) );
break;
}

View file

@ -709,7 +709,7 @@ namespace Server.Mobiles
private class WarnTimer : Timer
{
private ArrayList m_List;
private List<WarnEntry> m_List;
private class WarnEntry
{
@ -727,7 +727,7 @@ namespace Server.Mobiles
public WarnTimer() : base( TimeSpan.FromSeconds( 1.0 ) )
{
m_List = new ArrayList();
m_List = new List<WarnEntry>();
Start();
}

View file

@ -7,6 +7,7 @@ namespace Server.Items
public interface ICommodity
{
string Description{ get; }
int DescriptionNumber{ get; }
}
public class CommodityDeed : Item
@ -100,7 +101,7 @@ namespace Server.Items
base.GetProperties( list );
if ( m_Commodity != null )
list.Add( 1060658, "#{0}\t{1}", m_Commodity.LabelNumber, m_Commodity.Amount ); // ~1_val~: ~2_val~
list.Add( 1060658, "#{0}\t{1}", ((ICommodity)m_Commodity).DescriptionNumber, m_Commodity.Amount ); // ~1_val~: ~2_val~
}
public override void OnSingleClick( Mobile from )

View file

@ -79,8 +79,8 @@ namespace Server.Items
{
string filePath = Path.Combine( Core.BaseDirectory, "Data/treasure.cfg" );
ArrayList list = new ArrayList();
ArrayList havenList = new ArrayList();
List<Point2D> list = new List<Point2D>();
List<Point2D> havenList = new List<Point2D>();
if ( File.Exists( filePath ) )
{
@ -109,8 +109,8 @@ namespace Server.Items
}
}
m_Locations = (Point2D[])list.ToArray( typeof( Point2D ) );
m_HavenLocations = (Point2D[])havenList.ToArray( typeof( Point2D ) );
m_Locations = list.ToArray();
m_HavenLocations = havenList.ToArray();
}
public static bool IsInHavenIsland( IPoint2D loc )

View file

@ -371,7 +371,7 @@ namespace Server.Items
m_PostedHue = m_Poster.Hue;
m_Lines = lines;
ArrayList list = new ArrayList();
List<BulletinEquip> list = new List<BulletinEquip>();
for ( int i = 0; i < poster.Items.Count; ++i )
{
@ -381,7 +381,7 @@ namespace Server.Items
list.Add( new BulletinEquip( item.ItemID, item.Hue ) );
}
m_PostedEquip = (BulletinEquip[])list.ToArray( typeof( BulletinEquip ) );
m_PostedEquip = list.ToArray();
}
public Mobile Poster{ get{ return m_Poster; } }

View file

@ -140,7 +140,7 @@ namespace Server.Items
Mobile from = e.Mobile;
string speech = e.Speech;
foreach ( ReceiverCrystal receiver in new ArrayList( Receivers ) )
foreach ( ReceiverCrystal receiver in new List<ReceiverCrystal>( Receivers ) )
{
if ( receiver.Deleted )
{

View file

@ -1,12 +1,13 @@
using System;
using System.Collections;
using Server;
using System.Collections.Generic;
namespace Server.Items
{
public class EffectItem : Item
{
private static ArrayList m_Free = new ArrayList(); // List of available EffectItems
private static List<EffectItem> m_Free = new List<EffectItem>(); // List of available EffectItems
public static readonly TimeSpan DefaultDuration = TimeSpan.FromSeconds( 5.0 );
@ -16,7 +17,7 @@ namespace Server.Items
for ( int i = m_Free.Count - 1; item == null && i >= 0; --i ) // We reuse new entries first so decay works better
{
EffectItem free = (EffectItem)m_Free[i];
EffectItem free = m_Free[i];
m_Free.RemoveAt( i );
@ -75,9 +76,9 @@ namespace Server.Items
private class FreeTimer : Timer
{
private Item m_Item;
private EffectItem m_Item;
public FreeTimer( Item item, TimeSpan delay ) : base( delay )
public FreeTimer( EffectItem item, TimeSpan delay ) : base( delay )
{
m_Item = item;
Priority = TimerPriority.OneSecond;

View file

@ -3,6 +3,7 @@ using Server;
using Server.Mobiles;
using Server.Spells;
using System.Collections;
using System.Collections.Generic;
namespace Server.Items
{
@ -115,7 +116,7 @@ namespace Server.Items
if( !Drying && age > (m_Duration - age) )
Drying = true;
ArrayList toDamage = new ArrayList();
List<Mobile> toDamage = new List<Mobile>();
foreach( Mobile m in GetMobilesInRange( 0 ) )
{
@ -128,7 +129,7 @@ namespace Server.Items
}
for( int i = 0; i < toDamage.Count; i++ )
Damage( (Mobile)toDamage[i] );
Damage( toDamage[i] );
}
}

View file

@ -12,6 +12,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override double DefaultWeight
{
get { return 0.1; }

View file

@ -12,6 +12,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override double DefaultWeight
{
get { return 0.1; }

View file

@ -13,6 +13,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override double DefaultWeight
{
get { return 0.1; }

View file

@ -13,6 +13,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override double DefaultWeight
{
get { return 0.1; }

View file

@ -28,6 +28,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

View file

@ -25,6 +25,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public abstract BaseIngot GetIngot();
public override void Serialize( GenericWriter writer )

View file

@ -30,6 +30,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

View file

@ -4,7 +4,7 @@ using Server.Network;
namespace Server.Items
{
public abstract class BaseGranite : Item, ICommodity
public abstract class BaseGranite : Item
{
private CraftResource m_Resource;
@ -14,14 +14,6 @@ namespace Server.Items
get{ return m_Resource; }
set{ m_Resource = value; InvalidateProperties(); }
}
string ICommodity.Description
{
get
{
return String.Format( "{0} {1} high quality granite", Amount, CraftResources.GetName( m_Resource ).ToLower() );
}
}
public override void Serialize( GenericWriter writer )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public BatWing() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public BlackPearl() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public Bloodmoss() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public DaemonBlood() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public DeadWood() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public Garlic() : this( 1 )
{

View file

@ -15,6 +15,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public Ginseng() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public GraveDust() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public MandrakeRoot() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public Nightshade() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public NoxCrystal() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public PigIron() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public SpidersSilk() : this( 1 )
{

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public SulfurousAsh() : this( 1 )
{

View file

@ -15,6 +15,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public BoltOfCloth() : this( 1 )
{

View file

@ -13,6 +13,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
[Constructable]
public Bone() : this( 1 )
{

View file

@ -15,6 +15,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override double DefaultWeight
{
get { return 0.1; }

View file

@ -23,6 +23,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

View file

@ -23,6 +23,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

View file

@ -15,6 +15,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override double DefaultWeight
{
get { return 0.1; }

View file

@ -22,6 +22,24 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber
{
get
{
if ( m_Resource >= CraftResource.OakWood && m_Resource <= CraftResource.YewWood )
return 1075052 + ( (int)m_Resource - (int)CraftResource.OakWood );
switch ( m_Resource )
{
case CraftResource.Bloodwood: return 1075055;
case CraftResource.Frostwood: return 1075056;
case CraftResource.Heartwood: return 1075062; //WHY Osi. Why?
}
return LabelNumber;
}
}
[Constructable]
public Board()
: this( 1 )
@ -49,7 +67,6 @@ namespace Server.Items
: base( 0x1BD7 )
{
Stackable = true;
Weight = 2.0;
Amount = amount;
m_Resource = resource;
@ -77,7 +94,7 @@ namespace Server.Items
{
base.Serialize( writer );
writer.Write( (int) 2 );
writer.Write( (int) 3 );
writer.Write( (int)m_Resource );
}
@ -90,6 +107,7 @@ namespace Server.Items
switch ( version )
{
case 3:
case 2:
{
m_Resource = (CraftResource)reader.ReadInt();
@ -97,7 +115,7 @@ namespace Server.Items
}
}
if ( version == 0 && Weight == 0.1 )
if ( (version == 0 && Weight == 0.1) || ( version <= 2 && Weight == 2 ) )
Weight = -1;
if ( version <= 1 )

View file

@ -23,6 +23,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return CraftResources.IsStandard( m_Resource ) ? LabelNumber : 1075062 + ( (int)m_Resource - (int)CraftResource.RegularWood ); } }
[Constructable]
public Log() : this( 1 )
{
@ -107,7 +109,8 @@ namespace Server.Items
}
[Constructable]
public HeartwoodLog( int amount ) : base( CraftResource.Heartwood, amount )
public HeartwoodLog( int amount )
: base( CraftResource.Heartwood, amount )
{
}

View file

@ -14,6 +14,8 @@ namespace Server.Items
}
}
int ICommodity.DescriptionNumber { get { return LabelNumber; } }
public override int LabelNumber{ get{ return 1044626; } } // sand
[Constructable]

View file

@ -7,6 +7,10 @@ namespace Server.Items
[Constructable]
public FireColumnTrap() : base( 0x1B71 )
{
m_MinDamage = 10;
m_MaxDamage = 40;
m_WarningFlame = true;
}
public override bool PassivelyTriggered{ get{ return true; } }
@ -14,16 +18,54 @@ namespace Server.Items
public override int PassiveTriggerRange{ get{ return 3; } }
public override TimeSpan ResetDelay{ get{ return TimeSpan.FromSeconds( 0.5 ); } }
private int m_MinDamage;
[CommandProperty( AccessLevel.GameMaster )]
public virtual int MinDamage
{
get { return m_MinDamage; }
set { m_MinDamage = value; }
}
private int m_MaxDamage;
[CommandProperty( AccessLevel.GameMaster )]
public virtual int MaxDamage
{
get { return m_MaxDamage; }
set { m_MaxDamage = value; }
}
private bool m_WarningFlame;
[CommandProperty( AccessLevel.GameMaster )]
public virtual bool WarningFlame
{
get { return m_WarningFlame; }
set { m_WarningFlame = value; }
}
public override void OnTrigger( Mobile from )
{
if ( from.AccessLevel > AccessLevel.Player )
return;
Effects.SendLocationParticles( EffectItem.Create( Location, Map, EffectItem.DefaultDuration ), 0x3709, 10, 30, 5052 );
Effects.PlaySound( Location, Map, 0x225 );
if ( WarningFlame )
DoEffect();
if ( from.Alive && CheckRange( from.Location, 0 ) )
Spells.SpellHelper.Damage( TimeSpan.FromSeconds( 0.5 ), from, from, Utility.RandomMinMax( 10, 40 ), 0, 100, 0, 0, 0 );
{
Spells.SpellHelper.Damage( TimeSpan.FromSeconds( 0.5 ), from, from, Utility.RandomMinMax( MinDamage, MaxDamage ), 0, 100, 0, 0, 0 );
if ( !WarningFlame )
DoEffect();
}
}
private void DoEffect()
{
Effects.SendLocationParticles( EffectItem.Create( Location, Map, EffectItem.DefaultDuration ), 0x3709, 10, 30, 5052 );
Effects.PlaySound( Location, Map, 0x225 );
}
public FireColumnTrap( Serial serial ) : base( serial )
@ -34,7 +76,11 @@ namespace Server.Items
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) 1 ); // version
writer.Write( m_WarningFlame );
writer.Write( m_MinDamage );
writer.Write( m_MaxDamage );
}
public override void Deserialize( GenericReader reader )
@ -42,6 +88,24 @@ namespace Server.Items
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
m_WarningFlame = reader.ReadBool();
m_MinDamage = reader.ReadInt();
m_MaxDamage = reader.ReadInt();
break;
}
}
if ( version == 0 )
{
m_WarningFlame = true;
m_MinDamage = 10;
m_MaxDamage = 40;
}
}
}
}

View file

@ -108,7 +108,9 @@ namespace Server.Misc
if( map != null && (map.Rules & MapRules.HarmfulRestrictions) == 0 )
return true; // In felucca, anything goes
if( !from.Player && !(from is BaseCreature && (((BaseCreature)from).Controlled || ((BaseCreature)from).Summoned)) )
BaseCreature bc = from as BaseCreature;
if( !from.Player && !(bc != null && bc.GetMaster() != null && bc.GetMaster().AccessLevel == AccessLevel.Player ) )
{
if( !CheckAggressor( from.Aggressors, target ) && !CheckAggressed( from.Aggressed, target ) && target is PlayerMobile && ((PlayerMobile)target).CheckYoungProtection( from ) )
return false;
@ -273,6 +275,11 @@ namespace Server.Misc
{
BaseCreature bc = (BaseCreature)target;
Mobile master = bc.GetMaster();
if ( master != null && master.AccessLevel > AccessLevel.Player )
return Notoriety.CanBeAttacked;
if( !bc.Summoned && !bc.Controlled && ((PlayerMobile)source).EnemyOfOneType == target.GetType() )
return Notoriety.Enemy;
}

View file

@ -66,8 +66,8 @@ namespace Server.Misc
IPEndPoint ipep = (IPEndPoint)s.LocalEndPoint;
IPAddress localAddress = ipep.Address;
int localPort = ipep.Port;
IPAddress localAddress = ipep.Address;
int localPort = ipep.Port;
if ( IsPrivateNetwork( localAddress ) ) {
ipep = (IPEndPoint)s.RemoteEndPoint;
@ -88,7 +88,7 @@ namespace Server.Misc
if ( !HasPublicIPAddress() ) {
Console.Write( "ServerList: Auto-detecting public IP address..." );
m_PublicAddress = FindPublicAddress();
if ( m_PublicAddress != null )
Console.WriteLine( "done ({0})", m_PublicAddress.ToString() );
else
@ -118,8 +118,10 @@ namespace Server.Misc
IPAddress[] ips = iphe.AddressList;
for ( int i = 0; i < ips.Length; ++i )
if ( !IsPrivateNetwork( ips[i] ) )
{
if ( ips[i].AddressFamily != AddressFamily.InterNetworkV6 && !IsPrivateNetwork( ips[i] ) )
return true;
}
return false;
}
@ -130,6 +132,9 @@ namespace Server.Misc
// 172.16.0.0/12
// 192.168.0.0/16
if ( ip.AddressFamily == AddressFamily.InterNetworkV6 )
return false;
if ( Utility.IPMatch( "192.168.*", ip ) )
return true;
else if ( Utility.IPMatch( "10.*", ip ) )
@ -150,7 +155,7 @@ namespace Server.Misc
Stream s = res.GetResponseStream();
StreamReader sr = new StreamReader( s );
StreamReader sr = new StreamReader( s );
IPAddress ip = IPAddress.Parse( sr.ReadLine() );

View file

@ -398,6 +398,9 @@ namespace Server.Mobiles
public override int GetMaxResistance( ResistanceType type )
{
if ( AccessLevel > AccessLevel.Player )
return int.MaxValue;
int max = base.GetMaxResistance( type );
if ( type != ResistanceType.Physical && 60 < max && Spells.Fourth.CurseSpell.UnderEffect( this ) )

View file

@ -1598,11 +1598,15 @@ namespace Server.Multis
public override void OnSecureTrade( Mobile from, Mobile to, Mobile newOwner, bool accepted )
{
if ( Deleted || m_House == null || m_House.Deleted || !m_House.IsOwner( from ) || !from.CheckAlive() || !to.CheckAlive() )
if ( Deleted )
return;
Delete();
if ( m_House == null || m_House.Deleted || !m_House.IsOwner( from ) || !from.CheckAlive() || !to.CheckAlive() )
return;
if ( !accepted )
return;

View file

@ -5,6 +5,7 @@ using System.Xml;
using Server;
using Server.Mobiles;
using Server.Items;
using System.Collections.Generic;
namespace Server.Regions
{
@ -327,7 +328,7 @@ namespace Server.Regions
if ( !Region.ReadString( xmlDef, "name", ref name ) )
continue;
ArrayList list = new ArrayList();
List<SpawnGroupElement> list = new List<SpawnGroupElement>();
foreach ( XmlNode node in xmlDef.ChildNodes )
{
XmlElement el = node as XmlElement;
@ -346,7 +347,7 @@ namespace Server.Regions
}
}
SpawnGroupElement[] elements = (SpawnGroupElement[]) list.ToArray( typeof( SpawnGroupElement ) );
SpawnGroupElement[] elements = list.ToArray();
SpawnGroup group = new SpawnGroup( name, elements );
Register( group );
}

View file

@ -51,6 +51,7 @@ namespace Server
private static bool m_Debug;
private static bool m_Cache = true;
private static bool m_HaltOnWarning;
private static bool m_VBdotNET;
private static MultiTextWriter m_MultiConOut;
private static bool m_Profiling;
@ -98,6 +99,7 @@ namespace Server
public static bool Service { get { return m_Service; } }
public static bool Debug { get { return m_Debug; } }
internal static bool HaltOnWarning { get { return m_HaltOnWarning; } }
internal static bool VBdotNet { get { return m_VBdotNET; } }
public static List<string> DataDirectories { get { return m_DataDirectories; } }
public static Assembly Assembly { get { return m_Assembly; } set { m_Assembly = value; } }
public static Process Process { get { return m_Process; } }
@ -363,17 +365,18 @@ namespace Server
for( int i = 0; i < args.Length; ++i )
{
if( Insensitive.Equals( args[i], "-debug" ) )
if ( Insensitive.Equals( args[i], "-debug" ) )
m_Debug = true;
else if( Insensitive.Equals( args[i], "-service" ) )
else if ( Insensitive.Equals( args[i], "-service" ) )
m_Service = true;
else if( Insensitive.Equals( args[i], "-profile" ) )
else if ( Insensitive.Equals( args[i], "-profile" ) )
Profiling = true;
else if( Insensitive.Equals( args[i], "-nocache" ) )
else if ( Insensitive.Equals( args[i], "-nocache" ) )
m_Cache = false;
else if( Insensitive.Equals( args[i], "-haltonwarning" ) )
else if ( Insensitive.Equals( args[i], "-haltonwarning" ) )
m_HaltOnWarning = true;
else if ( Insensitive.Equals( args[i], "-vb" ) )
m_VBdotNET = true;
}
try
@ -518,6 +521,9 @@ namespace Server
if( m_HaltOnWarning )
Utility.Separate( sb, "-haltonwarning", " " );
if ( m_VBdotNET )
Utility.Separate( sb, "-vb", " " );
return sb.ToString();
}
}

View file

@ -91,6 +91,10 @@ namespace Server
AppendDefine( ref sb, "/d:Framework_2_0" );
#if Framework_3_5
AppendDefine( ref sb, "/d:Framework_3_5" );
#endif
return (sb == null ? null : sb.ToString());
}
@ -207,7 +211,11 @@ namespace Server
DeleteFiles( "Scripts.CS*.dll" );
using( CSharpCodeProvider provider = new CSharpCodeProvider() )
#if Framework_3_5
using ( CSharpCodeProvider provider = new CSharpCodeProvider( new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } } ) )
#else
using ( CSharpCodeProvider provider = new CSharpCodeProvider() )
#endif
{
string path = GetUnusedPath( "Scripts.CS" );
@ -346,8 +354,11 @@ namespace Server
}
DeleteFiles( "Scripts.VB*.dll" );
using( VBCodeProvider provider = new VBCodeProvider() )
#if Framework_3_5
using ( VBCodeProvider provider = new VBCodeProvider( new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } } ) )
#else
using ( VBCodeProvider provider = new VBCodeProvider() )
#endif
{
string path = GetUnusedPath( "Scripts.VB" );
@ -560,16 +571,23 @@ namespace Server
return false;
}
if( CompileVBScripts( debug, cache, out assembly ) )
if ( Core.VBdotNet )
{
if( assembly != null )
if ( CompileVBScripts( debug, cache, out assembly ) )
{
assemblies.Add( assembly );
if ( assembly != null )
{
assemblies.Add( assembly );
}
}
else
{
return false;
}
}
else
{
return false;
Console.WriteLine( "Scripts: Skipping VB.NET Scripts...done (use -vb to enable)");
}
if( assemblies.Count == 0 )