diff --git a/Scripts/Engines/Craft/Core/CraftContext.cs b/Scripts/Engines/Craft/Core/CraftContext.cs index 115554317..254626c66 100644 --- a/Scripts/Engines/Craft/Core/CraftContext.cs +++ b/Scripts/Engines/Craft/Core/CraftContext.cs @@ -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 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 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(); 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; } diff --git a/Scripts/Engines/Craft/Core/CraftGump.cs b/Scripts/Engines/Craft/Core/CraftGump.cs index ed9528381..b039f48bf 100644 --- a/Scripts/Engines/Craft/Core/CraftGump.cs +++ b/Scripts/Engines/Craft/Core/CraftGump.cs @@ -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 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 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 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; } diff --git a/Scripts/Engines/Spawner/Spawner.cs b/Scripts/Engines/Spawner/Spawner.cs index 0b15b9206..d0d955bba 100644 --- a/Scripts/Engines/Spawner/Spawner.cs +++ b/Scripts/Engines/Spawner/Spawner.cs @@ -709,7 +709,7 @@ namespace Server.Mobiles private class WarnTimer : Timer { - private ArrayList m_List; + private List 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(); Start(); } diff --git a/Scripts/Items/Deeds/CommodityDeed.cs b/Scripts/Items/Deeds/CommodityDeed.cs index 7d1385591..c492c2b85 100644 --- a/Scripts/Items/Deeds/CommodityDeed.cs +++ b/Scripts/Items/Deeds/CommodityDeed.cs @@ -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 ) diff --git a/Scripts/Items/Maps/TreasureMap.cs b/Scripts/Items/Maps/TreasureMap.cs index 99667a90c..bfd190719 100644 --- a/Scripts/Items/Maps/TreasureMap.cs +++ b/Scripts/Items/Maps/TreasureMap.cs @@ -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 list = new List(); + List havenList = new List(); 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 ) diff --git a/Scripts/Items/Misc/BulletinBoards.cs b/Scripts/Items/Misc/BulletinBoards.cs index aa9985f82..ef2600440 100644 --- a/Scripts/Items/Misc/BulletinBoards.cs +++ b/Scripts/Items/Misc/BulletinBoards.cs @@ -371,7 +371,7 @@ namespace Server.Items m_PostedHue = m_Poster.Hue; m_Lines = lines; - ArrayList list = new ArrayList(); + List list = new List(); 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; } } diff --git a/Scripts/Items/Misc/CommunicationCrystals.cs b/Scripts/Items/Misc/CommunicationCrystals.cs index f2193cb92..053aa3dc8 100644 --- a/Scripts/Items/Misc/CommunicationCrystals.cs +++ b/Scripts/Items/Misc/CommunicationCrystals.cs @@ -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( Receivers ) ) { if ( receiver.Deleted ) { diff --git a/Scripts/Items/Misc/EffectItem.cs b/Scripts/Items/Misc/EffectItem.cs index 0991b353a..d5d5b85d0 100644 --- a/Scripts/Items/Misc/EffectItem.cs +++ b/Scripts/Items/Misc/EffectItem.cs @@ -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 m_Free = new List(); // 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; diff --git a/Scripts/Items/Misc/PoolOfAcid.cs b/Scripts/Items/Misc/PoolOfAcid.cs index f58cd73d9..855e38ae1 100644 --- a/Scripts/Items/Misc/PoolOfAcid.cs +++ b/Scripts/Items/Misc/PoolOfAcid.cs @@ -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 toDamage = new List(); 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] ); } } diff --git a/Scripts/Items/Resources/Arrows/Arrow.cs b/Scripts/Items/Resources/Arrows/Arrow.cs index 911420567..2def6ddba 100644 --- a/Scripts/Items/Resources/Arrows/Arrow.cs +++ b/Scripts/Items/Resources/Arrows/Arrow.cs @@ -12,6 +12,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override double DefaultWeight { get { return 0.1; } diff --git a/Scripts/Items/Resources/Arrows/Bolt.cs b/Scripts/Items/Resources/Arrows/Bolt.cs index 5f3762938..f30259842 100644 --- a/Scripts/Items/Resources/Arrows/Bolt.cs +++ b/Scripts/Items/Resources/Arrows/Bolt.cs @@ -12,6 +12,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override double DefaultWeight { get { return 0.1; } diff --git a/Scripts/Items/Resources/Arrows/Feather.cs b/Scripts/Items/Resources/Arrows/Feather.cs index 9ace60b31..d68391f9b 100644 --- a/Scripts/Items/Resources/Arrows/Feather.cs +++ b/Scripts/Items/Resources/Arrows/Feather.cs @@ -13,6 +13,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override double DefaultWeight { get { return 0.1; } diff --git a/Scripts/Items/Resources/Arrows/Shaft.cs b/Scripts/Items/Resources/Arrows/Shaft.cs index cb0f4269a..34dd57e16 100644 --- a/Scripts/Items/Resources/Arrows/Shaft.cs +++ b/Scripts/Items/Resources/Arrows/Shaft.cs @@ -13,6 +13,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override double DefaultWeight { get { return 0.1; } diff --git a/Scripts/Items/Resources/Blacksmithing/Ingots.cs b/Scripts/Items/Resources/Blacksmithing/Ingots.cs index 80e0a9bc6..f36746971 100644 --- a/Scripts/Items/Resources/Blacksmithing/Ingots.cs +++ b/Scripts/Items/Resources/Blacksmithing/Ingots.cs @@ -28,6 +28,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); diff --git a/Scripts/Items/Resources/Blacksmithing/Ore.cs b/Scripts/Items/Resources/Blacksmithing/Ore.cs index 808db5879..5f5e60b80 100644 --- a/Scripts/Items/Resources/Blacksmithing/Ore.cs +++ b/Scripts/Items/Resources/Blacksmithing/Ore.cs @@ -25,6 +25,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public abstract BaseIngot GetIngot(); public override void Serialize( GenericWriter writer ) diff --git a/Scripts/Items/Resources/Blacksmithing/Scales.cs b/Scripts/Items/Resources/Blacksmithing/Scales.cs index eb1cef9f1..ceed707b6 100644 --- a/Scripts/Items/Resources/Blacksmithing/Scales.cs +++ b/Scripts/Items/Resources/Blacksmithing/Scales.cs @@ -30,6 +30,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); diff --git a/Scripts/Items/Resources/Masonry/Granite.cs b/Scripts/Items/Resources/Masonry/Granite.cs index ba26d2290..8963a6465 100644 --- a/Scripts/Items/Resources/Masonry/Granite.cs +++ b/Scripts/Items/Resources/Masonry/Granite.cs @@ -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 ) { diff --git a/Scripts/Items/Resources/Reagents/BatWing.cs b/Scripts/Items/Resources/Reagents/BatWing.cs index 6bac1839b..764c8f93d 100644 --- a/Scripts/Items/Resources/Reagents/BatWing.cs +++ b/Scripts/Items/Resources/Reagents/BatWing.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public BatWing() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/BlackPearl.cs b/Scripts/Items/Resources/Reagents/BlackPearl.cs index 8f3f43c06..25418e6ba 100644 --- a/Scripts/Items/Resources/Reagents/BlackPearl.cs +++ b/Scripts/Items/Resources/Reagents/BlackPearl.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public BlackPearl() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/Bloodmoss.cs b/Scripts/Items/Resources/Reagents/Bloodmoss.cs index 8b1e94e2b..fa072b014 100644 --- a/Scripts/Items/Resources/Reagents/Bloodmoss.cs +++ b/Scripts/Items/Resources/Reagents/Bloodmoss.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public Bloodmoss() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/DaemonBlood.cs b/Scripts/Items/Resources/Reagents/DaemonBlood.cs index 75027d068..7cdfd5d33 100644 --- a/Scripts/Items/Resources/Reagents/DaemonBlood.cs +++ b/Scripts/Items/Resources/Reagents/DaemonBlood.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public DaemonBlood() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/DeadWood.cs b/Scripts/Items/Resources/Reagents/DeadWood.cs index edd3eddd9..0940ecd85 100644 --- a/Scripts/Items/Resources/Reagents/DeadWood.cs +++ b/Scripts/Items/Resources/Reagents/DeadWood.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public DeadWood() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/Garlic.cs b/Scripts/Items/Resources/Reagents/Garlic.cs index 30dc561e9..07e0b0365 100644 --- a/Scripts/Items/Resources/Reagents/Garlic.cs +++ b/Scripts/Items/Resources/Reagents/Garlic.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public Garlic() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/Ginseng.cs b/Scripts/Items/Resources/Reagents/Ginseng.cs index b2dff4df4..a712bbb09 100644 --- a/Scripts/Items/Resources/Reagents/Ginseng.cs +++ b/Scripts/Items/Resources/Reagents/Ginseng.cs @@ -15,6 +15,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public Ginseng() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/GraveDust.cs b/Scripts/Items/Resources/Reagents/GraveDust.cs index 513d92481..122c30216 100644 --- a/Scripts/Items/Resources/Reagents/GraveDust.cs +++ b/Scripts/Items/Resources/Reagents/GraveDust.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public GraveDust() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/MandrakeRoot.cs b/Scripts/Items/Resources/Reagents/MandrakeRoot.cs index 0f4f72ac4..f502c2382 100644 --- a/Scripts/Items/Resources/Reagents/MandrakeRoot.cs +++ b/Scripts/Items/Resources/Reagents/MandrakeRoot.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public MandrakeRoot() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/Nightshade.cs b/Scripts/Items/Resources/Reagents/Nightshade.cs index a38feb302..93c2599ff 100644 --- a/Scripts/Items/Resources/Reagents/Nightshade.cs +++ b/Scripts/Items/Resources/Reagents/Nightshade.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public Nightshade() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/NoxCrystal.cs b/Scripts/Items/Resources/Reagents/NoxCrystal.cs index e12a54216..8f33c9ab3 100644 --- a/Scripts/Items/Resources/Reagents/NoxCrystal.cs +++ b/Scripts/Items/Resources/Reagents/NoxCrystal.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public NoxCrystal() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/PigIron.cs b/Scripts/Items/Resources/Reagents/PigIron.cs index 79265df97..ac5cee03c 100644 --- a/Scripts/Items/Resources/Reagents/PigIron.cs +++ b/Scripts/Items/Resources/Reagents/PigIron.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public PigIron() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/SpidersSilk.cs b/Scripts/Items/Resources/Reagents/SpidersSilk.cs index 728dcef32..e74f0d720 100644 --- a/Scripts/Items/Resources/Reagents/SpidersSilk.cs +++ b/Scripts/Items/Resources/Reagents/SpidersSilk.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public SpidersSilk() : this( 1 ) { diff --git a/Scripts/Items/Resources/Reagents/SulfurousAsh.cs b/Scripts/Items/Resources/Reagents/SulfurousAsh.cs index d50fa25b0..5043d6f8f 100644 --- a/Scripts/Items/Resources/Reagents/SulfurousAsh.cs +++ b/Scripts/Items/Resources/Reagents/SulfurousAsh.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public SulfurousAsh() : this( 1 ) { diff --git a/Scripts/Items/Resources/Tailor/BoltOfCloth.cs b/Scripts/Items/Resources/Tailor/BoltOfCloth.cs index 3cf924c01..7054b4357 100644 --- a/Scripts/Items/Resources/Tailor/BoltOfCloth.cs +++ b/Scripts/Items/Resources/Tailor/BoltOfCloth.cs @@ -15,6 +15,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public BoltOfCloth() : this( 1 ) { diff --git a/Scripts/Items/Resources/Tailor/Bone.cs b/Scripts/Items/Resources/Tailor/Bone.cs index bf872f647..43cd42efc 100644 --- a/Scripts/Items/Resources/Tailor/Bone.cs +++ b/Scripts/Items/Resources/Tailor/Bone.cs @@ -13,6 +13,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + [Constructable] public Bone() : this( 1 ) { diff --git a/Scripts/Items/Resources/Tailor/Cloth.cs b/Scripts/Items/Resources/Tailor/Cloth.cs index d08a9f5b1..80d8a6970 100644 --- a/Scripts/Items/Resources/Tailor/Cloth.cs +++ b/Scripts/Items/Resources/Tailor/Cloth.cs @@ -15,6 +15,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override double DefaultWeight { get { return 0.1; } diff --git a/Scripts/Items/Resources/Tailor/Hides.cs b/Scripts/Items/Resources/Tailor/Hides.cs index 6acb6976f..b0d11c08f 100644 --- a/Scripts/Items/Resources/Tailor/Hides.cs +++ b/Scripts/Items/Resources/Tailor/Hides.cs @@ -23,6 +23,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); diff --git a/Scripts/Items/Resources/Tailor/Leathers.cs b/Scripts/Items/Resources/Tailor/Leathers.cs index dd10b22e3..a0f3cb294 100644 --- a/Scripts/Items/Resources/Tailor/Leathers.cs +++ b/Scripts/Items/Resources/Tailor/Leathers.cs @@ -23,6 +23,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); diff --git a/Scripts/Items/Resources/Tailor/UncutCloth.cs b/Scripts/Items/Resources/Tailor/UncutCloth.cs index 3ab488311..e48b1aef5 100644 --- a/Scripts/Items/Resources/Tailor/UncutCloth.cs +++ b/Scripts/Items/Resources/Tailor/UncutCloth.cs @@ -15,6 +15,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override double DefaultWeight { get { return 0.1; } diff --git a/Scripts/Items/Skill Items/Carpenter Items/Board.cs b/Scripts/Items/Skill Items/Carpenter Items/Board.cs index 513a0123d..9e83cea38 100644 --- a/Scripts/Items/Skill Items/Carpenter Items/Board.cs +++ b/Scripts/Items/Skill Items/Carpenter Items/Board.cs @@ -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 ) diff --git a/Scripts/Items/Skill Items/Lumberjack/Log.cs b/Scripts/Items/Skill Items/Lumberjack/Log.cs index 1593fed30..d6ba7581b 100644 --- a/Scripts/Items/Skill Items/Lumberjack/Log.cs +++ b/Scripts/Items/Skill Items/Lumberjack/Log.cs @@ -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 ) { } diff --git a/Scripts/Items/Skill Items/Specialized/Sand.cs b/Scripts/Items/Skill Items/Specialized/Sand.cs index 8dedf03cc..4d95fab53 100644 --- a/Scripts/Items/Skill Items/Specialized/Sand.cs +++ b/Scripts/Items/Skill Items/Specialized/Sand.cs @@ -14,6 +14,8 @@ namespace Server.Items } } + int ICommodity.DescriptionNumber { get { return LabelNumber; } } + public override int LabelNumber{ get{ return 1044626; } } // sand [Constructable] diff --git a/Scripts/Items/Traps/FireColumnTrap.cs b/Scripts/Items/Traps/FireColumnTrap.cs index 6fd95d861..3a6d7a847 100644 --- a/Scripts/Items/Traps/FireColumnTrap.cs +++ b/Scripts/Items/Traps/FireColumnTrap.cs @@ -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; + } } } } \ No newline at end of file diff --git a/Scripts/Misc/Notoriety.cs b/Scripts/Misc/Notoriety.cs index a4ea30781..5e90a6a04 100644 --- a/Scripts/Misc/Notoriety.cs +++ b/Scripts/Misc/Notoriety.cs @@ -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; } diff --git a/Scripts/Misc/ServerList.cs b/Scripts/Misc/ServerList.cs index 19093b77c..9802d3112 100644 --- a/Scripts/Misc/ServerList.cs +++ b/Scripts/Misc/ServerList.cs @@ -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() ); diff --git a/Scripts/Mobiles/PlayerMobile.cs b/Scripts/Mobiles/PlayerMobile.cs index 806abe483..acc7392af 100644 --- a/Scripts/Mobiles/PlayerMobile.cs +++ b/Scripts/Mobiles/PlayerMobile.cs @@ -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 ) ) diff --git a/Scripts/Multis/BaseHouse.cs b/Scripts/Multis/BaseHouse.cs index 86f0a10d1..4365e0839 100644 --- a/Scripts/Multis/BaseHouse.cs +++ b/Scripts/Multis/BaseHouse.cs @@ -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; diff --git a/Scripts/Regions/Spawning/SpawnDefinition.cs b/Scripts/Regions/Spawning/SpawnDefinition.cs index 6bec053d2..4ec12d688 100644 --- a/Scripts/Regions/Spawning/SpawnDefinition.cs +++ b/Scripts/Regions/Spawning/SpawnDefinition.cs @@ -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 list = new List(); 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 ); } diff --git a/Server/Main.cs b/Server/Main.cs index 955a91444..95b1856ab 100644 --- a/Server/Main.cs +++ b/Server/Main.cs @@ -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 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(); } } diff --git a/Server/ScriptCompiler.cs b/Server/ScriptCompiler.cs index 3ee8a902b..df5dc4952 100644 --- a/Server/ScriptCompiler.cs +++ b/Server/ScriptCompiler.cs @@ -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() { { "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() { { "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 )