RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Jewel Crafting System 3

Ravenal

Knight
Jewel Craft System 3

JEWEL CRAFT SYSTEM III


by Ravenal of OrBSydia


Version 3.0d
http://jcs3.uniphix.com


This system will ONLY Work for RunUO 1.0.0


Description

Jewel crafting System was released 01-29-2004 and the 2nd Release was released sometimes a few months after the first. Jewel Craft System 1 and 2 were based off of the game called Everquest, but the whole system wasn't designed all off of Everquest, it had a bunch of different things from Everquest but didn't all come from Everquest.

Jewel Craft System 3 is intearrly new, yes some parts of it is from Everquest, but with tons of new stuff into it, new bars, and new gems far more than the old System had, as you see below the Bars and the Gems, with the type of Value of each Bar and Gem, along with the what kind of Harvesting it comes from.

The Jewel Craft System 3 has some new things such as on how to enchant a item and how to take a jewelry chisel and chip of the old rocks and see if you attcually receive some gems from the rocks you mine/crystals from.

Jewel Craft System 3.1 and above will have more things such as Quest to obtain the EnchantedScrolls, JewelryChisel and such, you will be able to fight new bosses in the quests and also not only that, but the quest will at least be several game hours of fun to finally recieve the best stuff...

NOTE: The Imbued stuff is working, this is part of the Quest which has NOT been developed yet.

This System is completed, I just need shards to test this system out for me and tell me anything that needs changed on and I will consider it. Thanks.


Change Log

Version 3.0d - 6/24/2005 ( 10:46AM PST)

Version awareness, whenever you see 3.0"letter" this means it is a fix and that you will need to update the file to be fixed.
For those who already installed the system, you can just take those fixed files and override them in the correct folder...
==Bug==
- Scripts/Items/Jewels/Ring.cs & Scripts/Items/Jewels/Bracelet.cs & Scripts/Items/Jewels/Necklace.cs & Scripts/Items/Jewels/Earrings.cs
o This bug continued to cause problems, so what I did to avoid this issue with the same major bug with the Attribute of the Loot.cs etc. I made the Rings have another constructor (ctor) to avoid all futher bugs with any jewelry.

==Fixed, Added, or Edited==
- Scripts/Items/Jewels/BaseJewel.cs
o Edited BaseJewel's Artifact Rarity, it now is Gamemaster Setable, just change the int value ingame now there is a reason why this was implanted. :)
o Added CanEnchant and Renamed old CanEnchant to IsEnchantable, so that you can now make the ring automatically NOT Enchantable, Artifacts and Bracelet of Binding uses CanEnchant = False to basically prevent players from enchanting those jewelries.
- Scripts/Engines/Craft/Core/JCore.cs
o Updated the JCS3's Version to 3.0d, lowered the high jewelry skills so it would allow a chance to mark the jewelry.
- Scripts/Engines/JewelCraft System/DefJewelCrafting.cs
o Took out Mana Req and made it only withdraw mana from you when you were to enchant a item with the enchanted scroll.
- Scripts/Engines/JewelCraft System/Items/EnchantedScroll.cs
o Enchanted scroll now does attcually targets a jewelry instead of crafting with DefJewelCrafting and withdrawing etc. on it all.
- Scripts/Items/Jewels/Artifacts/
o All Artifacts of Jewelry have been updated and changed for the purpose of the Jewelry.
- Scripts/Items/Special/Solen Items/BracletOfBinding.cs
o Added the public override bool CanEnchant{ get{ return false; } }so that it doesn't
Version 3.0c - 6/18/2005 ( 4:26PM PST)

Version awareness, whenever you see 3.0"letter" this means it is a fix and that you will need to update the file to be fixed.



For those who already installed the system, you can just take those fixed files and override them in the correct folder...
==Bug==

- Scripts/Items/Jewels/Rings.cs
o THIS MAJOR BUG that occured in 3.0b was not resolved *sighs*, but finally I found that little tiny error that was causing the WHOLE shard to crash... Guess what it was? Rings.cs, this bug was located in the SilverRing, I had to attcually fight my way through to find what could happen, so I started looking inside the TreasureMapChest, from there I watched and found that it was being added by the Loot.cs, so I went into the Loot.cs, and checked the Jewelry Section, so I decided to see what could attcually be possibly wrong in that picture, so I looked at the Rings then Bracelets, and I noticed that in the Rings, that the Silver was missing something that would of course crash the shard, because the silver ring in fact was not really part of BaseJewels.cs at all which what caused the crash, so I added "BarType.Silver" which was the big error, went ingame and tiled over 144 treasurechest, boy what a lag it added over 500,000 items LOL... Learned a lesson not to choose such a big number o0...
==Fixed, Added, or Edited==
- Scripts/Items/Jewels/BaseJewel.cs
o Edited in the BaseJewel.cs that it was missing something that should have been in 3.0 version, that was the JCore.Enabled check inside the constructor section.
- Scripts/Engines/Craft/Core/JCore.cs
o Updated the JCS3's Version to 3.0c
- Scripts/Engines/JewelCraft System/JewelryRock.cs
o I fixed that Hue duplicate in the Rock. Thanks to Greystar from OrBSydia Boards.


Version 3.0b - 6/9/2005 ( 4:41AM PST)


Version awareness, whenever you see 3.0"letter" this means it is a fix and that you will need to update the file to be fixed.







For those who already installed the system, you can just take those fixed files and override them in the correct folder...
==Bug==




- Scripts/Items/Jewels/BaseJewel.cs
o MAJOR BUG, I finally figured out what the heck the crashes on RunicHammer was caused by, whew I am sorry folks on this... Anyway it is now fixed. The deal was inside the "RemoveMagicalProperties"... I added new checks to prevent from future crashes, if you get crashes please post them and I will try to get on it as fast as I can.

==Fixed, Added, or Edited==

- Scripts/Items/Jewels/BaseJewel.cs
o Edit some checks into RemoveMagicalProperties, ICraftable Region area, and also into the GetProperties
- Scripts/Engines/Craft/Core/CraftItem.cs
o Added using Server.Engines.JewelCraft; to the top, and in the MarkableTable I added typeof( BaseJewel ) so that the items would have a craftable mark on the item. THIS IS EDITABLE OPTION in the JCore.cs, "AllowMarker"
- Scripts/Engines/JewelCraft System/DefJewelCrafting.cs
o I noticed that all the rings were crafted with a min/max skill of 40.0 and that was not good lol... Anyway, I added something to the JCore.cs that would now Get the Min and Maxium Skill deterimined by the GemType itself... You can just edit the double values to your taste on the skills.
- Scripts/Engines/JewelCraft System/MiningCrystal.cs
o Moved the the Definition stuff to the JCore.cs so it would be easier to edit these instead of jumping around into other scripts.
- Scripts/Engines/JewelCraft System/Items/JewelryKit.cs
o Changed the Hue value to be assoicated with the JCore.cs now, if you want to simply just change the hue of the JewelryKit, you can now do that in the JCore.cs
- Scripts/Engines/JewelCraft System/Items/JewelryChisel.cs
o Same information as the JewelryKit
- Scripts/Engines/JewelCraft System/Items/JewelryShovel.cs
o Same information as the JewelryKit
- Scripts/Engines/JewelCraft System/Items/JewelRock.cs
o Same information as the JewelryKit
- Scripts/Engines/JewelCraft System/JCore.cs
o Updated the JCore.cs Version and some new areas to the JCore




Version 3.0a - 6/2/2005 ( 11:40AM PST)



Version awareness, whenever you see 3.0"letter" this means it is a fix and that you will need to update the file to be fixed.







For those who already installed the system, you can just take those fixed files and override them in the correct folder...
==Fixed==


- Scripts/Engines/JewelCraft System/DefJewelCrafting.cs
o The Bar names were not showing at all when trying to craft an ring, braclet, necklace, and/or earrings.
- Scripts/Engines/JewelCraft System/JCore.cs
o Updated the JCore.cs Version and some new areas to the JCore




Version 3.0 - 5/31/2005 ( 1:00AM PST )


There are currently no Bugs at this time, when the time comes I will fix those...




Those that are italticized are future features...
==Edited==


- Scripts/Items/Jewels/BaseJewel.cs [Completed]
- Scripts/Items/Jewels/Rings.cs [Completed]
- Scripts/Items/Jewels/Bracelets.cs [Completed]
- Scripts/Items/Jewels/Necklaces.cs [Completed]
- Scripts/Items/Jewels/Earrings.cs [Completed]
- Scripts/Engines/Harvest/Fishing.cs [Completed]
- Scripts/Mobiles/Vendors/SBInfo/SBJewel.cs [Completed]


==Added==


- Scripts/Engines/JewelCraft System/CrystalMining.cs [Completed]
- Scripts/Engines/JewelCraft System/Mobiles/Geycons.cs [Part of JC System 3.1]
- Scripts/Engines/JewelCraft System/Mobiles/BaseBoss.cs (Bonus) [Part of JC System 3.1]
- Scripts/Engines/JewelCraft System/EnchanterQuest.cs [Part of JC System 3.1]
- Scripts/Engines/JewelCraft System/Mobiles/JMobile.cs [Part of JC System 3.1]
- Scripts/Engines/JewelCraft System/JCore.cs [Completed]
- Scripts/Engines/JewelCraft System/JewelCraftingEnums.cs [Completed]
- Scripts/Items/Jewels/Bars.cs [Completed]
- Scripts/Engines/JewelCraft System/DefJewelCrafting.cs [Completed]
- Scripts/Engines/JewelCraft System/Items/EnchantedScroll.cs [Completed]
- Scripts/Engines/JewelCraft System/Items/JewelryShovel.cs [Completed]
- Scripts/Engines/JewelCraft System/Items/JewelryChisel.cs [Completed]
- Scripts/Engines/JewelCraft System/Items/JewelryKit.cs [Completed]
- Scripts/Items/Gems/FireOpal.cs [Completed]
- Scripts/Items/Gems/BlueDiamond.cs [Completed]
- Scripts/Items/Gems/Opal.cs [Completed]
- Scripts/Items/Gems/Jade.cs [Completed]
- Scripts/Items/Gems/Onyx.cs [Completed]
- Scripts/Items/Gems/Jasper.cs [Completed]
- Scripts/Items/Gems/FireEmerald.cs [Completed]
- Scripts/Items/Gems/Pearl.cs [Completed]
- Scripts/Items/Gems/Topaz.cs [Completed]
- Scripts/Items/Gems/Turqoise.cs [Completed]
- Scripts/Items/Gems/StarRuby.cs [Completed]
- Scripts/Items/Gems/StarRose.cs [Completed]



Installation


To Install please read here
 

Attachments

  • Jewel Crafting System3.[0d].OrB.zip
    66.5 KB · Views: 667

Marak

Sorceror
Well were installing the new cpu in our new server - so there's not much i can do for the next day or so while everythings re-adjusted - ill give it a go if you like. Look's pretty interesting :)
 

endwolf

Sorceror
Only One Error WOOt

- Error: Scripts\Engines\Harvest\CrystalMining.cs: CS0115: (line 343, column 24
) 'Server.Engines.JewelCraft.CrystalMining.OnHarvestFinished(Server.Mobile, Serv
er.Item, Server.Engines.Harvest.HarvestDefinition, Server.Engines.Harvest.Harves
tVein, Server.Engines.Harvest.HarvestBank, Server.Engines.Harvest.HarvestResourc
e, object)': no suitable method found to override

Any Ideas? :)
 

Marak

Sorceror
hmm not sure, we have over 80 custom scripts installed - and drag and dropped without a hitch... hmm
 

Marak

Sorceror
We seem to be coming across a strange occurance at the moment, as i said we just drag and dropped over a custom install to see how that worked, well daat 99's one of our customs (and spellcrafting) and while it compile's perfectly, we do seem to be able to craft jewlery through the system, but, with my admin i cannot make ANYTHING with any sort of magical property's. Also we have no idea how this system works lol, pretty much were just [add''ing and praying lol.

Edit: ive gone through the scripts and seen how its all setup, another thing tho - even with maxed out skills i dont seem to be crafting ANY exceptional items, no msg about exceptional even at 100% success rate
 

Marak

Sorceror
endwolf said:
- Error: Scripts\Engines\Harvest\CrystalMining.cs: CS0115: (line 343, column 24
) 'Server.Engines.JewelCraft.CrystalMining.OnHarvestFinished(Server.Mobile, Serv
er.Item, Server.Engines.Harvest.HarvestDefinition, Server.Engines.Harvest.Harves
tVein, Server.Engines.Harvest.HarvestBank, Server.Engines.Harvest.HarvestResourc
e, object)': no suitable method found to override

Any Ideas? :)

Hmm i just installed this onto a fresh coyp of runuo as well - not a problem for compiling, maby try re-installing those files?
 

Ravenal

Knight
I am unsure how that error is being sent at this time, some others from OrBSydia are having issues too... Yes this was all built on a complete fresh install of RunUO 1.0.0


Note... IF YOu have edited the HarvestSystem.cs in anyway or even have the OLD Jewel Crafting System YOU MUST REMOVE that System otherwise YOU WILL have issues with the new system... It won't work EVER... The old system is OLD lol...
 

Ravenal

Knight
endwolf said:
- Error: Scripts\Engines\Harvest\CrystalMining.cs: CS0115: (line 343, column 24
) 'Server.Engines.JewelCraft.CrystalMining.OnHarvestFinished(Server.Mobile, Serv
er.Item, Server.Engines.Harvest.HarvestDefinition, Server.Engines.Harvest.Harves
tVein, Server.Engines.Harvest.HarvestBank, Server.Engines.Harvest.HarvestResourc
e, object)': no suitable method found to override

Any Ideas? :)

Figuring out what the issue was is that If you ADD the Daat99's Custom Ore stuff you will have to manually add what is listed below

This is exactly why you shouldn't ever edit the "Harvest System" Core stuff when most of it is overrided in the scripts...


For example

"OnHarvestFinished( from, tool, def, vein, bank, resource, toHarvest, type );
}
public virtual void OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested, Type type )
{
}"

he is missing a BIG thing in there that is supoose to be used on the OnHarvest Finished...

Really the Attcuall DEFAULT OnHarvestFinished is this


OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested )

So for my system to work with that system, you will have to add "Type, type" to the end of the CrystalMining.cs 's OnHarvestFinished
 

Marak

Sorceror
ok going to have a go some time today - ive got to do some work on our server package but hopefully ill get a chance to play around with it :)
 

Venom1975

Wanderer
awakenlands,

When do you expect the new release of the Jewel Mining Script and all? I just downloaded today and installed on my server and been testing it out, I've had a few errors at the beginning, that in the next release you may want to include the additions to the code for the beginners.

You've posted a quote earlier that said you needed to add Type type ) at the end of OnHarvestFinished, Yes which is true, but when done so, there accumulates another 6 errors in the Process, which was failed and not stated that you still are required to put type at the end of the rest of Harvest ) for it to compile without any errors, I will post the Code of the Changes I've done to the CrystalMining.cs file

Other then that, Great Script so far.... I'm by far a Programmer or Scripter, and do't know my butt form a Hole in a ground when it comes to scripting... But I make my way when I have to... Thx for the Script, Very interesting!

oh and I can't seem to get the EnchantedScroll to work yet either... Is it supposed to work? or will it only work Once the Enchanted Quest is Effective?
 

Venom1975

Wanderer
Jewel Crafting System!

Here is the Code Before the Additions I've made:

Code:
/**************************************************************/
/*					  Jewel Crafting System 3
/* 
/*	Scripted by Ravenal/awakenlands
/*  Completed on:  5/31/2005
/*
/*	This script is for anyone to use and edit, please be 
/*  considerate not to claim this as your script, thanks.
/*	
/*	Script Site:	   http://jcs3.uniphix.com
/*	Shard's Site:	   http://www.paragonix.org
/*	Developer's Site:  http://www.orbsydia.com
/*	Emulator's Site:   http://www.runuo.com
/*
/*					  Script Version 3.0
/**************************************************************/

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
using Server.Engines.Harvest;

namespace Server.Engines.JewelCraft
{
	public class CrystalMining : HarvestSystem
	{
		private static CrystalMining m_System;

		public static CrystalMining System
		{
			get
			{
				if ( m_System == null )
					m_System = new CrystalMining();

				return m_System;
			}
		}

		private HarvestDefinition m_MiningGems, m_Bars;

		public HarvestDefinition MiningGems
		{
			get{ return m_MiningGems; }
		}

		public HarvestDefinition Bars
		{
			get{ return m_Bars; }
		}

		private CrystalMining()
		{
			HarvestResource[] res;
			HarvestVein[] veins;

			#region Crystal Mining for Gems
			HarvestDefinition gems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			gems.BankWidth = 8;
			gems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			gems.MinTotal = 10;
			gems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			gems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			gems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			gems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			gems.Tiles = m_CrystalTiles;

			// Players must be within 2 tiles to harvest
			gems.MaxRange = 2;

			// One ore per harvest action
			gems.ConsumedPerHarvest = 1;
			gems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			gems.EffectActions = new int[]{ 11 };
			gems.EffectSounds = new int[]{ 0x125, 0x126 };
			gems.EffectCounts = new int[]{ 1 };
			gems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			gems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			gems.NoResourcesMessage = "There is no gems here to mine.";
			gems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			gems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			gems.OutOfRangeMessage = 500446; // That is too far away.
			gems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			gems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			gems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource(  0.0,  0.0, 100.0, "You chip some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 20.0,  0.0,  50.0, "You chip some amber, and put it into your backpack.", typeof( Amber ) ),
					new HarvestResource( 25.0,  5.0,  55.0, "You chip some emerald, and put it into your backpack.", typeof( Emerald ) ),
					new HarvestResource( 30.0, 10.0,  60.0, "You chip some star rose, and put it into your backpack.", typeof( StarRose ) ),
					new HarvestResource( 35.0, 15.0,  65.0, "You chip some amethyst, and put it into your backpack.", typeof( Amethyst ) ),
					new HarvestResource( 40.0, 20.0,  70.0, "You chip some citrine, and put it into your backpack.", typeof( Citrine ) ),
					new HarvestResource( 45.0, 25.0,  75.0, "You chip some turquoise, and put it into your backpack.", typeof( Turquoise ) ),
					new HarvestResource( 50.0, 30.0,  80.0, "You chip some ruby, and put it into your backpack.", typeof( Ruby ) ),
					new HarvestResource( 55.0, 35.0,  85.0, "You chip some sapphire, and put it into your backpack.", typeof( Sapphire ) ),
					new HarvestResource( 60.0, 40.0,  90.0, "You chip some tourmaline, and put it into your backpack.", typeof( Tourmaline ) ),	
					new HarvestResource( 65.0, 45.0,  95.0, "You chip some star sapphire, and put it into your backpack.", typeof( StarSapphire ) ),	
					new HarvestResource( 70.0, 50.0, 105.0, "You chip some topaz, and put it into your backpack.", typeof( Topaz ) ),
					new HarvestResource( 75.0, 60.0, 115.0, "You chip some jade, and put it into your backpack.", typeof( Jade ) ),
					new HarvestResource( 80.0, 70.0, 125.0, "You chip some fire emerald, and put it into your backpack.", typeof( FireEmerald ) ),
					new HarvestResource( 90.0, 80.0, 135.0, "You chip some star ruby, and put it into your backpack.", typeof( StarRuby ) ),
					new HarvestResource( 95.0, 90.0, 145.0, "You chip some diamond, and put it into your backpack.", typeof( Diamond ) ),
					new HarvestResource( 99.0, 95.0, 160.0, "You chip some blue diamond, and put it into your backpack.", typeof( BlueDiamond ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 45.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 8.8, 0.5, res[1], res[0] ), // Amber
					new HarvestVein( 7.3, 0.5, res[2], res[0] ), // Emerald
					new HarvestVein( 5.1, 0.5, res[3], res[0] ), // Star Rose
					new HarvestVein( 4.8, 0.5, res[4], res[0] ), // Amethyst
					new HarvestVein( 4.6, 0.5, res[5], res[0] ), // Citrine
					new HarvestVein( 3.8, 0.5, res[6], res[0] ), // Turquoise
					new HarvestVein( 3.5, 0.5, res[7], res[0] ), // Ruby
					new HarvestVein( 3.1, 0.5, res[8], res[0] ), // Sapphire
					new HarvestVein( 2.3, 0.5, res[9], res[0] ), // Tourmaline
					new HarvestVein( 2.1, 0.5, res[10], res[0] ), // Star Sapphire
					new HarvestVein( 1.9, 0.5, res[11], res[0] ), // Topaz
					new HarvestVein( 1.6, 0.5, res[12], res[0] ), // Jade
					new HarvestVein( 1.2, 0.5, res[13], res[0] ), // Fire Emerald
					new HarvestVein( 0.9, 0.5, res[14], res[0] ), // Star Ruby
					new HarvestVein( 0.7, 0.5, res[15], res[0] ), // Diamond
					new HarvestVein( 0.6, 0.25, res[16], res[0] ) // Blue Diamond
				};

			gems.Resources = res;
			gems.Veins = veins;

			Definitions.Add( gems );
			#endregion

			#region Mining for Gems
			HarvestDefinition mininggems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			mininggems.BankWidth = 8;
			mininggems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			mininggems.MinTotal = 10;
			mininggems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			mininggems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			mininggems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			mininggems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			mininggems.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			mininggems.MaxRange = 2;

			// One ore per harvest action
			mininggems.ConsumedPerHarvest = 1;
			mininggems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			mininggems.EffectActions = new int[]{ 11 };
			mininggems.EffectSounds = new int[]{ 0x125, 0x126 };
			mininggems.EffectCounts = new int[]{ 1 };
			mininggems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			mininggems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			mininggems.NoResourcesMessage = "There is no gems here to mine.";
			mininggems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			mininggems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			mininggems.OutOfRangeMessage = 500446; // That is too far away.
			mininggems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			mininggems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			mininggems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 45.0, 20.0, 80.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 50.0, 25.0, 90.0, "You dig some onyx, and put it into your backpack.", typeof( Onyx ) ),
					new HarvestResource( 90.0, 60.0, 120.0, "You dig some jasper, and put it into your backpack.", typeof( Jasper ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 80.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 18.5, 0.5, res[1], res[0] ), // Onyx
					new HarvestVein( 1.5, 0.5, res[2], res[0] ) // Jasper
				};

			mininggems.Resources = res;
			mininggems.Veins = veins;

			Definitions.Add( mininggems );
			#endregion

			#region Mining for Bars
			HarvestDefinition bars = m_Bars = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			bars.BankWidth = 8;
			bars.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			bars.MinTotal = 10;
			bars.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			bars.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			bars.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			bars.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			bars.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			bars.MaxRange = 2;

			// One ore per harvest action
			bars.ConsumedPerHarvest = 1;
			bars.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			bars.EffectActions = new int[]{ 11 };
			bars.EffectSounds = new int[]{ 0x125, 0x126 };
			bars.EffectCounts = new int[]{ 1 };
			bars.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			bars.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			bars.NoResourcesMessage = "There is no metal here to mine.";
			bars.DoubleHarvestMessage = "Someone has gotten to the metal before you."; 
			bars.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			bars.OutOfRangeMessage = 500446; // That is too far away.
			bars.FailMessage = "You loosen some rocks but fail to find any useable metal.";
			bars.PackFullMessage = "Your backpack is full, so the metal you mined is lost.";
			bars.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 00.0, 00.0, 95.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 55.0, 20.0, 100.0, "You dig some copper bar and put it in your backpack.", typeof( CopperBar ) ),
					new HarvestResource( 60.0, 25.0, 105.0, "You dig some silver bar and put it in your backpack.", typeof( SilverBar ) ),
					new HarvestResource( 70.0, 30.0, 110.0, "You dig some gold bar and put it in your backpack.", typeof( GoldBar ) ),
					new HarvestResource( 75.0, 35.0, 115.0, "You dig some platinum bar and put it in your backpack.", typeof( PlatinumBar ) ),
					new HarvestResource( 80.0, 40.0, 120.0, "You dig some velium bar and put it in your backpack.", typeof( VeliumBar ) ),
					new HarvestResource( 85.0, 45.0, 125.0, "You dig some arycilan bar and put it in your backpack.", typeof( ArycilanBar ) ),
					new HarvestResource( 90.0, 50.0, 130.0, "You dig some orbsydian bar and put it in your backpack.", typeof( OrbsydianBar ) ),
					new HarvestResource( 95.0, 55.0, 135.0, "You dig some xulian bar and put it in your backpack.", typeof( XulianBar ) ),
					new HarvestResource( 99.0, 60.0, 140.0, "You dig some paragon bar and put it in your backpack.", typeof( ParagonBar ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 30.0, 0.0, res[0], null   ), // Jewelry Rock
					new HarvestVein( 20.0, 0.5, res[1], res[0] ), // Copper
					new HarvestVein( 15.2, 0.5, res[2], res[0] ), // Silver
					new HarvestVein( 11.6, 0.5, res[3], res[0] ), // Gold
					new HarvestVein( 7.8, 0.5, res[4], res[0] ), // Platinum
					new HarvestVein( 6.2, 0.5, res[5], res[0] ), // Velium
					new HarvestVein( 3.7, 0.5, res[6], res[0] ), // Arycilan
					new HarvestVein( 4.2, 0.5, res[7], res[0] ), // Orbsydian
					new HarvestVein( 2.3, 0.5, res[8], res[0] ), // Xulian
					new HarvestVein( 1.8, 0.5, res[9], res[0] )  // Paragon
				};

			bars.Resources = res;
			bars.Veins = veins;

			Definitions.Add( bars );
			#endregion
		}

		public override bool BeginHarvesting( Mobile from, Item tool )
		{
			if ( !base.BeginHarvesting( from, tool ) )
				return false;

			from.SendLocalizedMessage( 503033 ); // Where do you wish to dig?
			return true;
		}

		public override void SendSuccessTo( Mobile from, Item item, HarvestResource resource )
		{
			if ( item is BaseBars )
				from.SendMessage( "You carefully extract some workable bars from the vein!" );
			else
				base.SendSuccessTo( from, item, resource );
		}

		public override bool CheckHarvest( Mobile from, Item tool )
		{
			if ( !base.CheckHarvest( from, tool ) )
				return false;

			if ( from.Mounted )
			{
				from.SendLocalizedMessage( 501864 ); // You can't mine while riding.
				return false;
			}
			else if ( from.IsBodyMod && !from.Body.IsHuman )
			{
				from.SendLocalizedMessage( 501865 ); // You can't mine while polymorphed.
				return false;
			}

			return true;
		}

		public override void OnBadHarvestTarget( Mobile from, Item tool, object toHarvest )
		{
			if( toHarvest is StaticTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else if( toHarvest is LandTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else
			{
				from.SendMessage( "You can't harvest that." );
			}
		}

		public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested)
		{
			HarvestResource res = vein.PrimaryResource;

			if( from.Map == Map.Ilshenar )
			{
				if( res == resource && res.Types[0] == typeof( ParagonBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
				else if( res == resource && res.Types[0] == typeof( OrbsydianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
			}
			else if( from.Map == Map.Malas )
			{
				if( res == resource && res.Types[0] == typeof( ArycilanBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
				else if( res == resource && res.Types[0] == typeof( XulianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
			}
			else
			{
				base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
			}
		}


		private static int[] m_MountainAndCaveTiles = new int[]
			{
				220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
				230, 231, 236, 237, 238, 239, 240, 241, 242, 243,
				244, 245, 246, 247, 252, 253, 254, 255, 256, 257,
				258, 259, 260, 261, 262, 263, 268, 269, 270, 271,
				272, 273, 274, 275, 276, 277, 278, 279, 286, 287,
				288, 289, 290, 291, 292, 293, 294, 296, 296, 297,
				321, 322, 323, 324, 467, 468, 469, 470, 471, 472,
				473, 474, 476, 477, 478, 479, 480, 481, 482, 483,
				484, 485, 486, 487, 492, 493, 494, 495, 543, 544,
				545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
				555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
				565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
				575, 576, 577, 578, 579, 581, 582, 583, 584, 585,
				586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
				596, 597, 598, 599, 600, 601, 610, 611, 612, 613,

				1010, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
				1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1771, 1772,
				1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782,
				1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1801, 1802,
				1803, 1804, 1805, 1806, 1807, 1808, 1809, 1811, 1812, 1813,
				1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
				1824, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
				1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849,
				1850, 1851, 1852, 1853, 1854, 1861, 1862, 1863, 1864, 1865,
				1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875,
				1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1981,
				1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991,
				1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
				2002, 2003, 2004, 2028, 2029, 2030, 2031, 2032, 2033, 2100,
				2101, 2102, 2103, 2104, 2105,

				0x453B, 0x453C, 0x453D, 0x453E, 0x453F, 0x4540, 0x4541,
				0x4542, 0x4543, 0x4544,	0x4545, 0x4546, 0x4547, 0x4548,
				0x4549, 0x454A, 0x454B, 0x454C, 0x454D, 0x454E,	0x454F
			};

		public static void Initialize()
		{
			Array.Sort( m_CrystalTiles );
		}

		private static int[] m_CrystalTiles = new int[]
			{
				0x2206, 0x2207, 0x2208, 0x2209, 0x220A, 0x220B, 0x220C,
				0x220D, 0x220E, 0x220F, 0x2210, 0x2211, 0x2212, 0x2213,
				0x2214, 0x2215, 0x2216, 0x2217, 0x2218, 0x2219, 0x221A,
				0x221B, 0x221C, 0x221D, 0x221E, 0x221F, 0x2220, 0x2221,
				0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227, 0x2228,
				0x2229, 0x222A, 0x222B, 0x222C,
				
				0x223A, 0x223B, 0x223C, 0x223D, 0x223E, 0x223F, 0x2240,
				0x2241, 0x2242, 0x2243, 0x2243, 0x2244, 0x2245, 0x2246, 
				0x2247, 0x2248, 0x2249
			};

		public override bool GetHarvestDetails( Mobile from, Item tool, object toHarvest, out int tileID, out Map map, out Point3D loc )
		{
			if ( toHarvest is Static && !((Static)toHarvest).Movable )
			{
				Static obj = (Static)toHarvest;

				tileID = obj.ItemID;
				map = obj.Map;
				loc = obj.GetWorldLocation();
			}
			else if ( toHarvest is StaticTarget )
			{
				StaticTarget obj = (StaticTarget)toHarvest;

				tileID = obj.ItemID;
				map = from.Map;
				loc = obj.Location;
			}
			else
			{
				return base.GetHarvestDetails( from, tool, toHarvest, out tileID, out map, out loc );
			}

			return ( map != null && map != Map.Internal );
		}

	}
}

Here is the Edited Code I've added what You've said and it seems to be working and compiled with no Errors...

Code:
/**************************************************************/
/*					  Jewel Crafting System 3
/* 
/*	Scripted by Ravenal/awakenlands
/*  Completed on:  5/31/2005
/*
/*	This script is for anyone to use and edit, please be 
/*  considerate not to claim this as your script, thanks.
/*	
/*	Script Site:	   http://jcs3.uniphix.com
/*	Shard's Site:	   http://www.paragonix.org
/*	Developer's Site:  http://www.orbsydia.com
/*	Emulator's Site:   http://www.runuo.com
/*
/*					  Script Version 3.0
/**************************************************************/

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
using Server.Engines.Harvest;

namespace Server.Engines.JewelCraft
{
	public class CrystalMining : HarvestSystem
	{
		private static CrystalMining m_System;

		public static CrystalMining System
		{
			get
			{
				if ( m_System == null )
					m_System = new CrystalMining();

				return m_System;
			}
		}

		private HarvestDefinition m_MiningGems, m_Bars;

		public HarvestDefinition MiningGems
		{
			get{ return m_MiningGems; }
		}

		public HarvestDefinition Bars
		{
			get{ return m_Bars; }
		}

		private CrystalMining()
		{
			HarvestResource[] res;
			HarvestVein[] veins;

			#region Crystal Mining for Gems
			HarvestDefinition gems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			gems.BankWidth = 8;
			gems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			gems.MinTotal = 10;
			gems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			gems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			gems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			gems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			gems.Tiles = m_CrystalTiles;

			// Players must be within 2 tiles to harvest
			gems.MaxRange = 2;

			// One ore per harvest action
			gems.ConsumedPerHarvest = 1;
			gems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			gems.EffectActions = new int[]{ 11 };
			gems.EffectSounds = new int[]{ 0x125, 0x126 };
			gems.EffectCounts = new int[]{ 1 };
			gems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			gems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			gems.NoResourcesMessage = "There is no gems here to mine.";
			gems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			gems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			gems.OutOfRangeMessage = 500446; // That is too far away.
			gems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			gems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			gems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource(  0.0,  0.0, 100.0, "You chip some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 20.0,  0.0,  50.0, "You chip some amber, and put it into your backpack.", typeof( Amber ) ),
					new HarvestResource( 25.0,  5.0,  55.0, "You chip some emerald, and put it into your backpack.", typeof( Emerald ) ),
					new HarvestResource( 30.0, 10.0,  60.0, "You chip some star rose, and put it into your backpack.", typeof( StarRose ) ),
					new HarvestResource( 35.0, 15.0,  65.0, "You chip some amethyst, and put it into your backpack.", typeof( Amethyst ) ),
					new HarvestResource( 40.0, 20.0,  70.0, "You chip some citrine, and put it into your backpack.", typeof( Citrine ) ),
					new HarvestResource( 45.0, 25.0,  75.0, "You chip some turquoise, and put it into your backpack.", typeof( Turquoise ) ),
					new HarvestResource( 50.0, 30.0,  80.0, "You chip some ruby, and put it into your backpack.", typeof( Ruby ) ),
					new HarvestResource( 55.0, 35.0,  85.0, "You chip some sapphire, and put it into your backpack.", typeof( Sapphire ) ),
					new HarvestResource( 60.0, 40.0,  90.0, "You chip some tourmaline, and put it into your backpack.", typeof( Tourmaline ) ),	
					new HarvestResource( 65.0, 45.0,  95.0, "You chip some star sapphire, and put it into your backpack.", typeof( StarSapphire ) ),	
					new HarvestResource( 70.0, 50.0, 105.0, "You chip some topaz, and put it into your backpack.", typeof( Topaz ) ),
					new HarvestResource( 75.0, 60.0, 115.0, "You chip some jade, and put it into your backpack.", typeof( Jade ) ),
					new HarvestResource( 80.0, 70.0, 125.0, "You chip some fire emerald, and put it into your backpack.", typeof( FireEmerald ) ),
					new HarvestResource( 90.0, 80.0, 135.0, "You chip some star ruby, and put it into your backpack.", typeof( StarRuby ) ),
					new HarvestResource( 95.0, 90.0, 145.0, "You chip some diamond, and put it into your backpack.", typeof( Diamond ) ),
					new HarvestResource( 99.0, 95.0, 160.0, "You chip some blue diamond, and put it into your backpack.", typeof( BlueDiamond ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 45.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 8.8, 0.5, res[1], res[0] ), // Amber
					new HarvestVein( 7.3, 0.5, res[2], res[0] ), // Emerald
					new HarvestVein( 5.1, 0.5, res[3], res[0] ), // Star Rose
					new HarvestVein( 4.8, 0.5, res[4], res[0] ), // Amethyst
					new HarvestVein( 4.6, 0.5, res[5], res[0] ), // Citrine
					new HarvestVein( 3.8, 0.5, res[6], res[0] ), // Turquoise
					new HarvestVein( 3.5, 0.5, res[7], res[0] ), // Ruby
					new HarvestVein( 3.1, 0.5, res[8], res[0] ), // Sapphire
					new HarvestVein( 2.3, 0.5, res[9], res[0] ), // Tourmaline
					new HarvestVein( 2.1, 0.5, res[10], res[0] ), // Star Sapphire
					new HarvestVein( 1.9, 0.5, res[11], res[0] ), // Topaz
					new HarvestVein( 1.6, 0.5, res[12], res[0] ), // Jade
					new HarvestVein( 1.2, 0.5, res[13], res[0] ), // Fire Emerald
					new HarvestVein( 0.9, 0.5, res[14], res[0] ), // Star Ruby
					new HarvestVein( 0.7, 0.5, res[15], res[0] ), // Diamond
					new HarvestVein( 0.6, 0.25, res[16], res[0] ) // Blue Diamond
				};

			gems.Resources = res;
			gems.Veins = veins;

			Definitions.Add( gems );
			#endregion

			#region Mining for Gems
			HarvestDefinition mininggems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			mininggems.BankWidth = 8;
			mininggems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			mininggems.MinTotal = 10;
			mininggems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			mininggems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			mininggems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			mininggems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			mininggems.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			mininggems.MaxRange = 2;

			// One ore per harvest action
			mininggems.ConsumedPerHarvest = 1;
			mininggems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			mininggems.EffectActions = new int[]{ 11 };
			mininggems.EffectSounds = new int[]{ 0x125, 0x126 };
			mininggems.EffectCounts = new int[]{ 1 };
			mininggems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			mininggems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			mininggems.NoResourcesMessage = "There is no gems here to mine.";
			mininggems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			mininggems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			mininggems.OutOfRangeMessage = 500446; // That is too far away.
			mininggems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			mininggems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			mininggems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 45.0, 20.0, 80.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 50.0, 25.0, 90.0, "You dig some onyx, and put it into your backpack.", typeof( Onyx ) ),
					new HarvestResource( 90.0, 60.0, 120.0, "You dig some jasper, and put it into your backpack.", typeof( Jasper ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 80.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 18.5, 0.5, res[1], res[0] ), // Onyx
					new HarvestVein( 1.5, 0.5, res[2], res[0] ) // Jasper
				};

			mininggems.Resources = res;
			mininggems.Veins = veins;

			Definitions.Add( mininggems );
			#endregion

			#region Mining for Bars
			HarvestDefinition bars = m_Bars = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			bars.BankWidth = 8;
			bars.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			bars.MinTotal = 10;
			bars.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			bars.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			bars.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			bars.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			bars.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			bars.MaxRange = 2;

			// One ore per harvest action
			bars.ConsumedPerHarvest = 1;
			bars.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			bars.EffectActions = new int[]{ 11 };
			bars.EffectSounds = new int[]{ 0x125, 0x126 };
			bars.EffectCounts = new int[]{ 1 };
			bars.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			bars.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			bars.NoResourcesMessage = "There is no metal here to mine.";
			bars.DoubleHarvestMessage = "Someone has gotten to the metal before you."; 
			bars.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			bars.OutOfRangeMessage = 500446; // That is too far away.
			bars.FailMessage = "You loosen some rocks but fail to find any useable metal.";
			bars.PackFullMessage = "Your backpack is full, so the metal you mined is lost.";
			bars.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 00.0, 00.0, 95.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 55.0, 20.0, 100.0, "You dig some copper bar and put it in your backpack.", typeof( CopperBar ) ),
					new HarvestResource( 60.0, 25.0, 105.0, "You dig some silver bar and put it in your backpack.", typeof( SilverBar ) ),
					new HarvestResource( 70.0, 30.0, 110.0, "You dig some gold bar and put it in your backpack.", typeof( GoldBar ) ),
					new HarvestResource( 75.0, 35.0, 115.0, "You dig some platinum bar and put it in your backpack.", typeof( PlatinumBar ) ),
					new HarvestResource( 80.0, 40.0, 120.0, "You dig some velium bar and put it in your backpack.", typeof( VeliumBar ) ),
					new HarvestResource( 85.0, 45.0, 125.0, "You dig some arycilan bar and put it in your backpack.", typeof( ArycilanBar ) ),
					new HarvestResource( 90.0, 50.0, 130.0, "You dig some orbsydian bar and put it in your backpack.", typeof( OrbsydianBar ) ),
					new HarvestResource( 95.0, 55.0, 135.0, "You dig some xulian bar and put it in your backpack.", typeof( XulianBar ) ),
					new HarvestResource( 99.0, 60.0, 140.0, "You dig some paragon bar and put it in your backpack.", typeof( ParagonBar ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 30.0, 0.0, res[0], null   ), // Jewelry Rock
					new HarvestVein( 20.0, 0.5, res[1], res[0] ), // Copper
					new HarvestVein( 15.2, 0.5, res[2], res[0] ), // Silver
					new HarvestVein( 11.6, 0.5, res[3], res[0] ), // Gold
					new HarvestVein( 7.8, 0.5, res[4], res[0] ), // Platinum
					new HarvestVein( 6.2, 0.5, res[5], res[0] ), // Velium
					new HarvestVein( 3.7, 0.5, res[6], res[0] ), // Arycilan
					new HarvestVein( 4.2, 0.5, res[7], res[0] ), // Orbsydian
					new HarvestVein( 2.3, 0.5, res[8], res[0] ), // Xulian
					new HarvestVein( 1.8, 0.5, res[9], res[0] )  // Paragon
				};

			bars.Resources = res;
			bars.Veins = veins;

			Definitions.Add( bars );
			#endregion
		}

		public override bool BeginHarvesting( Mobile from, Item tool )
		{
			if ( !base.BeginHarvesting( from, tool ) )
				return false;

			from.SendLocalizedMessage( 503033 ); // Where do you wish to dig?
			return true;
		}

		public override void SendSuccessTo( Mobile from, Item item, HarvestResource resource )
		{
			if ( item is BaseBars )
				from.SendMessage( "You carefully extract some workable bars from the vein!" );
			else
				base.SendSuccessTo( from, item, resource );
		}

		public override bool CheckHarvest( Mobile from, Item tool )
		{
			if ( !base.CheckHarvest( from, tool ) )
				return false;

			if ( from.Mounted )
			{
				from.SendLocalizedMessage( 501864 ); // You can't mine while riding.
				return false;
			}
			else if ( from.IsBodyMod && !from.Body.IsHuman )
			{
				from.SendLocalizedMessage( 501865 ); // You can't mine while polymorphed.
				return false;
			}

			return true;
		}

		public override void OnBadHarvestTarget( Mobile from, Item tool, object toHarvest )
		{
			if( toHarvest is StaticTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else if( toHarvest is LandTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else
			{
				from.SendMessage( "You can't harvest that." );
			}
		}

		public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested, Type type )
		{
			HarvestResource res = vein.PrimaryResource;

			if( from.Map == Map.Ilshenar )
			{
				if( res == resource && res.Types[0] == typeof( ParagonBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested, type);
				}
				else if( res == resource && res.Types[0] == typeof( OrbsydianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested, type);
				}
			}
			else if( from.Map == Map.Malas )
			{
				if( res == resource && res.Types[0] == typeof( ArycilanBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested, type);
				}
				else if( res == resource && res.Types[0] == typeof( XulianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested, type);
				}
			}
			else
			{
				base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested, type);
			}
		}


		private static int[] m_MountainAndCaveTiles = new int[]
			{
				220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
				230, 231, 236, 237, 238, 239, 240, 241, 242, 243,
				244, 245, 246, 247, 252, 253, 254, 255, 256, 257,
				258, 259, 260, 261, 262, 263, 268, 269, 270, 271,
				272, 273, 274, 275, 276, 277, 278, 279, 286, 287,
				288, 289, 290, 291, 292, 293, 294, 296, 296, 297,
				321, 322, 323, 324, 467, 468, 469, 470, 471, 472,
				473, 474, 476, 477, 478, 479, 480, 481, 482, 483,
				484, 485, 486, 487, 492, 493, 494, 495, 543, 544,
				545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
				555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
				565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
				575, 576, 577, 578, 579, 581, 582, 583, 584, 585,
				586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
				596, 597, 598, 599, 600, 601, 610, 611, 612, 613,

				1010, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
				1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1771, 1772,
				1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782,
				1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1801, 1802,
				1803, 1804, 1805, 1806, 1807, 1808, 1809, 1811, 1812, 1813,
				1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
				1824, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
				1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849,
				1850, 1851, 1852, 1853, 1854, 1861, 1862, 1863, 1864, 1865,
				1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875,
				1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1981,
				1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991,
				1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
				2002, 2003, 2004, 2028, 2029, 2030, 2031, 2032, 2033, 2100,
				2101, 2102, 2103, 2104, 2105,

				0x453B, 0x453C, 0x453D, 0x453E, 0x453F, 0x4540, 0x4541,
				0x4542, 0x4543, 0x4544,	0x4545, 0x4546, 0x4547, 0x4548,
				0x4549, 0x454A, 0x454B, 0x454C, 0x454D, 0x454E,	0x454F
			};

		public static void Initialize()
		{
			Array.Sort( m_CrystalTiles );
		}

		private static int[] m_CrystalTiles = new int[]
			{
				0x2206, 0x2207, 0x2208, 0x2209, 0x220A, 0x220B, 0x220C,
				0x220D, 0x220E, 0x220F, 0x2210, 0x2211, 0x2212, 0x2213,
				0x2214, 0x2215, 0x2216, 0x2217, 0x2218, 0x2219, 0x221A,
				0x221B, 0x221C, 0x221D, 0x221E, 0x221F, 0x2220, 0x2221,
				0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227, 0x2228,
				0x2229, 0x222A, 0x222B, 0x222C,
				
				0x223A, 0x223B, 0x223C, 0x223D, 0x223E, 0x223F, 0x2240,
				0x2241, 0x2242, 0x2243, 0x2243, 0x2244, 0x2245, 0x2246, 
				0x2247, 0x2248, 0x2249
			};

		public override bool GetHarvestDetails( Mobile from, Item tool, object toHarvest, out int tileID, out Map map, out Point3D loc )
		{
			if ( toHarvest is Static && !((Static)toHarvest).Movable )
			{
				Static obj = (Static)toHarvest;

				tileID = obj.ItemID;
				map = obj.Map;
				loc = obj.GetWorldLocation();
			}
			else if ( toHarvest is StaticTarget )
			{
				StaticTarget obj = (StaticTarget)toHarvest;

				tileID = obj.ItemID;
				map = from.Map;
				loc = obj.Location;
			}
			else
			{
				return base.GetHarvestDetails( from, tool, toHarvest, out tileID, out map, out loc );
			}

			return ( map != null && map != Map.Internal );
		}

	}
}

Thanks again for the cool code, will give my Player Crafters/Miners something else for fun to do!
 

Venom1975

Wanderer
Jewel Crafting System!

Here is the Code Before the Additions I've made:

Code:
/**************************************************************/
/*					  Jewel Crafting System 3
/* 
/*	Scripted by Ravenal/awakenlands
/*  Completed on:  5/31/2005
/*
/*	This script is for anyone to use and edit, please be 
/*  considerate not to claim this as your script, thanks.
/*	
/*	Script Site:	   http://jcs3.uniphix.com
/*	Shard's Site:	   http://www.paragonix.org
/*	Developer's Site:  http://www.orbsydia.com
/*	Emulator's Site:   http://www.runuo.com
/*
/*					  Script Version 3.0
/**************************************************************/

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
using Server.Engines.Harvest;

namespace Server.Engines.JewelCraft
{
	public class CrystalMining : HarvestSystem
	{
		private static CrystalMining m_System;

		public static CrystalMining System
		{
			get
			{
				if ( m_System == null )
					m_System = new CrystalMining();

				return m_System;
			}
		}

		private HarvestDefinition m_MiningGems, m_Bars;

		public HarvestDefinition MiningGems
		{
			get{ return m_MiningGems; }
		}

		public HarvestDefinition Bars
		{
			get{ return m_Bars; }
		}

		private CrystalMining()
		{
			HarvestResource[] res;
			HarvestVein[] veins;

			#region Crystal Mining for Gems
			HarvestDefinition gems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			gems.BankWidth = 8;
			gems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			gems.MinTotal = 10;
			gems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			gems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			gems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			gems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			gems.Tiles = m_CrystalTiles;

			// Players must be within 2 tiles to harvest
			gems.MaxRange = 2;

			// One ore per harvest action
			gems.ConsumedPerHarvest = 1;
			gems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			gems.EffectActions = new int[]{ 11 };
			gems.EffectSounds = new int[]{ 0x125, 0x126 };
			gems.EffectCounts = new int[]{ 1 };
			gems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			gems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			gems.NoResourcesMessage = "There is no gems here to mine.";
			gems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			gems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			gems.OutOfRangeMessage = 500446; // That is too far away.
			gems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			gems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			gems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource(  0.0,  0.0, 100.0, "You chip some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 20.0,  0.0,  50.0, "You chip some amber, and put it into your backpack.", typeof( Amber ) ),
					new HarvestResource( 25.0,  5.0,  55.0, "You chip some emerald, and put it into your backpack.", typeof( Emerald ) ),
					new HarvestResource( 30.0, 10.0,  60.0, "You chip some star rose, and put it into your backpack.", typeof( StarRose ) ),
					new HarvestResource( 35.0, 15.0,  65.0, "You chip some amethyst, and put it into your backpack.", typeof( Amethyst ) ),
					new HarvestResource( 40.0, 20.0,  70.0, "You chip some citrine, and put it into your backpack.", typeof( Citrine ) ),
					new HarvestResource( 45.0, 25.0,  75.0, "You chip some turquoise, and put it into your backpack.", typeof( Turquoise ) ),
					new HarvestResource( 50.0, 30.0,  80.0, "You chip some ruby, and put it into your backpack.", typeof( Ruby ) ),
					new HarvestResource( 55.0, 35.0,  85.0, "You chip some sapphire, and put it into your backpack.", typeof( Sapphire ) ),
					new HarvestResource( 60.0, 40.0,  90.0, "You chip some tourmaline, and put it into your backpack.", typeof( Tourmaline ) ),	
					new HarvestResource( 65.0, 45.0,  95.0, "You chip some star sapphire, and put it into your backpack.", typeof( StarSapphire ) ),	
					new HarvestResource( 70.0, 50.0, 105.0, "You chip some topaz, and put it into your backpack.", typeof( Topaz ) ),
					new HarvestResource( 75.0, 60.0, 115.0, "You chip some jade, and put it into your backpack.", typeof( Jade ) ),
					new HarvestResource( 80.0, 70.0, 125.0, "You chip some fire emerald, and put it into your backpack.", typeof( FireEmerald ) ),
					new HarvestResource( 90.0, 80.0, 135.0, "You chip some star ruby, and put it into your backpack.", typeof( StarRuby ) ),
					new HarvestResource( 95.0, 90.0, 145.0, "You chip some diamond, and put it into your backpack.", typeof( Diamond ) ),
					new HarvestResource( 99.0, 95.0, 160.0, "You chip some blue diamond, and put it into your backpack.", typeof( BlueDiamond ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 45.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 8.8, 0.5, res[1], res[0] ), // Amber
					new HarvestVein( 7.3, 0.5, res[2], res[0] ), // Emerald
					new HarvestVein( 5.1, 0.5, res[3], res[0] ), // Star Rose
					new HarvestVein( 4.8, 0.5, res[4], res[0] ), // Amethyst
					new HarvestVein( 4.6, 0.5, res[5], res[0] ), // Citrine
					new HarvestVein( 3.8, 0.5, res[6], res[0] ), // Turquoise
					new HarvestVein( 3.5, 0.5, res[7], res[0] ), // Ruby
					new HarvestVein( 3.1, 0.5, res[8], res[0] ), // Sapphire
					new HarvestVein( 2.3, 0.5, res[9], res[0] ), // Tourmaline
					new HarvestVein( 2.1, 0.5, res[10], res[0] ), // Star Sapphire
					new HarvestVein( 1.9, 0.5, res[11], res[0] ), // Topaz
					new HarvestVein( 1.6, 0.5, res[12], res[0] ), // Jade
					new HarvestVein( 1.2, 0.5, res[13], res[0] ), // Fire Emerald
					new HarvestVein( 0.9, 0.5, res[14], res[0] ), // Star Ruby
					new HarvestVein( 0.7, 0.5, res[15], res[0] ), // Diamond
					new HarvestVein( 0.6, 0.25, res[16], res[0] ) // Blue Diamond
				};

			gems.Resources = res;
			gems.Veins = veins;

			Definitions.Add( gems );
			#endregion

			#region Mining for Gems
			HarvestDefinition mininggems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			mininggems.BankWidth = 8;
			mininggems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			mininggems.MinTotal = 10;
			mininggems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			mininggems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			mininggems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			mininggems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			mininggems.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			mininggems.MaxRange = 2;

			// One ore per harvest action
			mininggems.ConsumedPerHarvest = 1;
			mininggems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			mininggems.EffectActions = new int[]{ 11 };
			mininggems.EffectSounds = new int[]{ 0x125, 0x126 };
			mininggems.EffectCounts = new int[]{ 1 };
			mininggems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			mininggems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			mininggems.NoResourcesMessage = "There is no gems here to mine.";
			mininggems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			mininggems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			mininggems.OutOfRangeMessage = 500446; // That is too far away.
			mininggems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			mininggems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			mininggems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 45.0, 20.0, 80.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 50.0, 25.0, 90.0, "You dig some onyx, and put it into your backpack.", typeof( Onyx ) ),
					new HarvestResource( 90.0, 60.0, 120.0, "You dig some jasper, and put it into your backpack.", typeof( Jasper ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 80.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 18.5, 0.5, res[1], res[0] ), // Onyx
					new HarvestVein( 1.5, 0.5, res[2], res[0] ) // Jasper
				};

			mininggems.Resources = res;
			mininggems.Veins = veins;

			Definitions.Add( mininggems );
			#endregion

			#region Mining for Bars
			HarvestDefinition bars = m_Bars = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			bars.BankWidth = 8;
			bars.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			bars.MinTotal = 10;
			bars.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			bars.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			bars.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			bars.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			bars.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			bars.MaxRange = 2;

			// One ore per harvest action
			bars.ConsumedPerHarvest = 1;
			bars.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			bars.EffectActions = new int[]{ 11 };
			bars.EffectSounds = new int[]{ 0x125, 0x126 };
			bars.EffectCounts = new int[]{ 1 };
			bars.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			bars.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			bars.NoResourcesMessage = "There is no metal here to mine.";
			bars.DoubleHarvestMessage = "Someone has gotten to the metal before you."; 
			bars.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			bars.OutOfRangeMessage = 500446; // That is too far away.
			bars.FailMessage = "You loosen some rocks but fail to find any useable metal.";
			bars.PackFullMessage = "Your backpack is full, so the metal you mined is lost.";
			bars.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 00.0, 00.0, 95.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 55.0, 20.0, 100.0, "You dig some copper bar and put it in your backpack.", typeof( CopperBar ) ),
					new HarvestResource( 60.0, 25.0, 105.0, "You dig some silver bar and put it in your backpack.", typeof( SilverBar ) ),
					new HarvestResource( 70.0, 30.0, 110.0, "You dig some gold bar and put it in your backpack.", typeof( GoldBar ) ),
					new HarvestResource( 75.0, 35.0, 115.0, "You dig some platinum bar and put it in your backpack.", typeof( PlatinumBar ) ),
					new HarvestResource( 80.0, 40.0, 120.0, "You dig some velium bar and put it in your backpack.", typeof( VeliumBar ) ),
					new HarvestResource( 85.0, 45.0, 125.0, "You dig some arycilan bar and put it in your backpack.", typeof( ArycilanBar ) ),
					new HarvestResource( 90.0, 50.0, 130.0, "You dig some orbsydian bar and put it in your backpack.", typeof( OrbsydianBar ) ),
					new HarvestResource( 95.0, 55.0, 135.0, "You dig some xulian bar and put it in your backpack.", typeof( XulianBar ) ),
					new HarvestResource( 99.0, 60.0, 140.0, "You dig some paragon bar and put it in your backpack.", typeof( ParagonBar ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 30.0, 0.0, res[0], null   ), // Jewelry Rock
					new HarvestVein( 20.0, 0.5, res[1], res[0] ), // Copper
					new HarvestVein( 15.2, 0.5, res[2], res[0] ), // Silver
					new HarvestVein( 11.6, 0.5, res[3], res[0] ), // Gold
					new HarvestVein( 7.8, 0.5, res[4], res[0] ), // Platinum
					new HarvestVein( 6.2, 0.5, res[5], res[0] ), // Velium
					new HarvestVein( 3.7, 0.5, res[6], res[0] ), // Arycilan
					new HarvestVein( 4.2, 0.5, res[7], res[0] ), // Orbsydian
					new HarvestVein( 2.3, 0.5, res[8], res[0] ), // Xulian
					new HarvestVein( 1.8, 0.5, res[9], res[0] )  // Paragon
				};

			bars.Resources = res;
			bars.Veins = veins;

			Definitions.Add( bars );
			#endregion
		}

		public override bool BeginHarvesting( Mobile from, Item tool )
		{
			if ( !base.BeginHarvesting( from, tool ) )
				return false;

			from.SendLocalizedMessage( 503033 ); // Where do you wish to dig?
			return true;
		}

		public override void SendSuccessTo( Mobile from, Item item, HarvestResource resource )
		{
			if ( item is BaseBars )
				from.SendMessage( "You carefully extract some workable bars from the vein!" );
			else
				base.SendSuccessTo( from, item, resource );
		}

		public override bool CheckHarvest( Mobile from, Item tool )
		{
			if ( !base.CheckHarvest( from, tool ) )
				return false;

			if ( from.Mounted )
			{
				from.SendLocalizedMessage( 501864 ); // You can't mine while riding.
				return false;
			}
			else if ( from.IsBodyMod && !from.Body.IsHuman )
			{
				from.SendLocalizedMessage( 501865 ); // You can't mine while polymorphed.
				return false;
			}

			return true;
		}

		public override void OnBadHarvestTarget( Mobile from, Item tool, object toHarvest )
		{
			if( toHarvest is StaticTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else if( toHarvest is LandTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else
			{
				from.SendMessage( "You can't harvest that." );
			}
		}

		public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested)
		{
			HarvestResource res = vein.PrimaryResource;

			if( from.Map == Map.Ilshenar )
			{
				if( res == resource && res.Types[0] == typeof( ParagonBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
				else if( res == resource && res.Types[0] == typeof( OrbsydianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
			}
			else if( from.Map == Map.Malas )
			{
				if( res == resource && res.Types[0] == typeof( ArycilanBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
				else if( res == resource && res.Types[0] == typeof( XulianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
				}
			}
			else
			{
				base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested);
			}
		}


		private static int[] m_MountainAndCaveTiles = new int[]
			{
				220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
				230, 231, 236, 237, 238, 239, 240, 241, 242, 243,
				244, 245, 246, 247, 252, 253, 254, 255, 256, 257,
				258, 259, 260, 261, 262, 263, 268, 269, 270, 271,
				272, 273, 274, 275, 276, 277, 278, 279, 286, 287,
				288, 289, 290, 291, 292, 293, 294, 296, 296, 297,
				321, 322, 323, 324, 467, 468, 469, 470, 471, 472,
				473, 474, 476, 477, 478, 479, 480, 481, 482, 483,
				484, 485, 486, 487, 492, 493, 494, 495, 543, 544,
				545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
				555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
				565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
				575, 576, 577, 578, 579, 581, 582, 583, 584, 585,
				586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
				596, 597, 598, 599, 600, 601, 610, 611, 612, 613,

				1010, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
				1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1771, 1772,
				1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782,
				1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1801, 1802,
				1803, 1804, 1805, 1806, 1807, 1808, 1809, 1811, 1812, 1813,
				1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
				1824, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
				1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849,
				1850, 1851, 1852, 1853, 1854, 1861, 1862, 1863, 1864, 1865,
				1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875,
				1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1981,
				1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991,
				1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
				2002, 2003, 2004, 2028, 2029, 2030, 2031, 2032, 2033, 2100,
				2101, 2102, 2103, 2104, 2105,

				0x453B, 0x453C, 0x453D, 0x453E, 0x453F, 0x4540, 0x4541,
				0x4542, 0x4543, 0x4544,	0x4545, 0x4546, 0x4547, 0x4548,
				0x4549, 0x454A, 0x454B, 0x454C, 0x454D, 0x454E,	0x454F
			};

		public static void Initialize()
		{
			Array.Sort( m_CrystalTiles );
		}

		private static int[] m_CrystalTiles = new int[]
			{
				0x2206, 0x2207, 0x2208, 0x2209, 0x220A, 0x220B, 0x220C,
				0x220D, 0x220E, 0x220F, 0x2210, 0x2211, 0x2212, 0x2213,
				0x2214, 0x2215, 0x2216, 0x2217, 0x2218, 0x2219, 0x221A,
				0x221B, 0x221C, 0x221D, 0x221E, 0x221F, 0x2220, 0x2221,
				0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227, 0x2228,
				0x2229, 0x222A, 0x222B, 0x222C,
				
				0x223A, 0x223B, 0x223C, 0x223D, 0x223E, 0x223F, 0x2240,
				0x2241, 0x2242, 0x2243, 0x2243, 0x2244, 0x2245, 0x2246, 
				0x2247, 0x2248, 0x2249
			};

		public override bool GetHarvestDetails( Mobile from, Item tool, object toHarvest, out int tileID, out Map map, out Point3D loc )
		{
			if ( toHarvest is Static && !((Static)toHarvest).Movable )
			{
				Static obj = (Static)toHarvest;

				tileID = obj.ItemID;
				map = obj.Map;
				loc = obj.GetWorldLocation();
			}
			else if ( toHarvest is StaticTarget )
			{
				StaticTarget obj = (StaticTarget)toHarvest;

				tileID = obj.ItemID;
				map = from.Map;
				loc = obj.Location;
			}
			else
			{
				return base.GetHarvestDetails( from, tool, toHarvest, out tileID, out map, out loc );
			}

			return ( map != null && map != Map.Internal );
		}

	}
}

Here is the Edited Code I've added what You've said and it seems to be working and compiled with no Errors...

Code:
/**************************************************************/
/*					  Jewel Crafting System 3
/* 
/*	Scripted by Ravenal/awakenlands
/*  Completed on:  5/31/2005
/*
/*	This script is for anyone to use and edit, please be 
/*  considerate not to claim this as your script, thanks.
/*	
/*	Script Site:	   http://jcs3.uniphix.com
/*	Shard's Site:	   http://www.paragonix.org
/*	Developer's Site:  http://www.orbsydia.com
/*	Emulator's Site:   http://www.runuo.com
/*
/*					  Script Version 3.0
/**************************************************************/

using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
using Server.Engines.Harvest;

namespace Server.Engines.JewelCraft
{
	public class CrystalMining : HarvestSystem
	{
		private static CrystalMining m_System;

		public static CrystalMining System
		{
			get
			{
				if ( m_System == null )
					m_System = new CrystalMining();

				return m_System;
			}
		}

		private HarvestDefinition m_MiningGems, m_Bars;

		public HarvestDefinition MiningGems
		{
			get{ return m_MiningGems; }
		}

		public HarvestDefinition Bars
		{
			get{ return m_Bars; }
		}

		private CrystalMining()
		{
			HarvestResource[] res;
			HarvestVein[] veins;

			#region Crystal Mining for Gems
			HarvestDefinition gems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			gems.BankWidth = 8;
			gems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			gems.MinTotal = 10;
			gems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			gems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			gems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			gems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			gems.Tiles = m_CrystalTiles;

			// Players must be within 2 tiles to harvest
			gems.MaxRange = 2;

			// One ore per harvest action
			gems.ConsumedPerHarvest = 1;
			gems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			gems.EffectActions = new int[]{ 11 };
			gems.EffectSounds = new int[]{ 0x125, 0x126 };
			gems.EffectCounts = new int[]{ 1 };
			gems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			gems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			gems.NoResourcesMessage = "There is no gems here to mine.";
			gems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			gems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			gems.OutOfRangeMessage = 500446; // That is too far away.
			gems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			gems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			gems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource(  0.0,  0.0, 100.0, "You chip some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 20.0,  0.0,  50.0, "You chip some amber, and put it into your backpack.", typeof( Amber ) ),
					new HarvestResource( 25.0,  5.0,  55.0, "You chip some emerald, and put it into your backpack.", typeof( Emerald ) ),
					new HarvestResource( 30.0, 10.0,  60.0, "You chip some star rose, and put it into your backpack.", typeof( StarRose ) ),
					new HarvestResource( 35.0, 15.0,  65.0, "You chip some amethyst, and put it into your backpack.", typeof( Amethyst ) ),
					new HarvestResource( 40.0, 20.0,  70.0, "You chip some citrine, and put it into your backpack.", typeof( Citrine ) ),
					new HarvestResource( 45.0, 25.0,  75.0, "You chip some turquoise, and put it into your backpack.", typeof( Turquoise ) ),
					new HarvestResource( 50.0, 30.0,  80.0, "You chip some ruby, and put it into your backpack.", typeof( Ruby ) ),
					new HarvestResource( 55.0, 35.0,  85.0, "You chip some sapphire, and put it into your backpack.", typeof( Sapphire ) ),
					new HarvestResource( 60.0, 40.0,  90.0, "You chip some tourmaline, and put it into your backpack.", typeof( Tourmaline ) ),	
					new HarvestResource( 65.0, 45.0,  95.0, "You chip some star sapphire, and put it into your backpack.", typeof( StarSapphire ) ),	
					new HarvestResource( 70.0, 50.0, 105.0, "You chip some topaz, and put it into your backpack.", typeof( Topaz ) ),
					new HarvestResource( 75.0, 60.0, 115.0, "You chip some jade, and put it into your backpack.", typeof( Jade ) ),
					new HarvestResource( 80.0, 70.0, 125.0, "You chip some fire emerald, and put it into your backpack.", typeof( FireEmerald ) ),
					new HarvestResource( 90.0, 80.0, 135.0, "You chip some star ruby, and put it into your backpack.", typeof( StarRuby ) ),
					new HarvestResource( 95.0, 90.0, 145.0, "You chip some diamond, and put it into your backpack.", typeof( Diamond ) ),
					new HarvestResource( 99.0, 95.0, 160.0, "You chip some blue diamond, and put it into your backpack.", typeof( BlueDiamond ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 45.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 8.8, 0.5, res[1], res[0] ), // Amber
					new HarvestVein( 7.3, 0.5, res[2], res[0] ), // Emerald
					new HarvestVein( 5.1, 0.5, res[3], res[0] ), // Star Rose
					new HarvestVein( 4.8, 0.5, res[4], res[0] ), // Amethyst
					new HarvestVein( 4.6, 0.5, res[5], res[0] ), // Citrine
					new HarvestVein( 3.8, 0.5, res[6], res[0] ), // Turquoise
					new HarvestVein( 3.5, 0.5, res[7], res[0] ), // Ruby
					new HarvestVein( 3.1, 0.5, res[8], res[0] ), // Sapphire
					new HarvestVein( 2.3, 0.5, res[9], res[0] ), // Tourmaline
					new HarvestVein( 2.1, 0.5, res[10], res[0] ), // Star Sapphire
					new HarvestVein( 1.9, 0.5, res[11], res[0] ), // Topaz
					new HarvestVein( 1.6, 0.5, res[12], res[0] ), // Jade
					new HarvestVein( 1.2, 0.5, res[13], res[0] ), // Fire Emerald
					new HarvestVein( 0.9, 0.5, res[14], res[0] ), // Star Ruby
					new HarvestVein( 0.7, 0.5, res[15], res[0] ), // Diamond
					new HarvestVein( 0.6, 0.25, res[16], res[0] ) // Blue Diamond
				};

			gems.Resources = res;
			gems.Veins = veins;

			Definitions.Add( gems );
			#endregion

			#region Mining for Gems
			HarvestDefinition mininggems = m_MiningGems = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			mininggems.BankWidth = 8;
			mininggems.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			mininggems.MinTotal = 10;
			mininggems.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			mininggems.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			mininggems.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			mininggems.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			mininggems.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			mininggems.MaxRange = 2;

			// One ore per harvest action
			mininggems.ConsumedPerHarvest = 1;
			mininggems.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			mininggems.EffectActions = new int[]{ 11 };
			mininggems.EffectSounds = new int[]{ 0x125, 0x126 };
			mininggems.EffectCounts = new int[]{ 1 };
			mininggems.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			mininggems.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			mininggems.NoResourcesMessage = "There is no gems here to mine.";
			mininggems.DoubleHarvestMessage = "Someone has gotten to the gems before you."; 
			mininggems.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			mininggems.OutOfRangeMessage = 500446; // That is too far away.
			mininggems.FailMessage = "You loosen some rocks but fail to find any useable gems.";
			mininggems.PackFullMessage = "Your backpack is full, so the gem you mined is lost.";
			mininggems.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 45.0, 20.0, 80.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 50.0, 25.0, 90.0, "You dig some onyx, and put it into your backpack.", typeof( Onyx ) ),
					new HarvestResource( 90.0, 60.0, 120.0, "You dig some jasper, and put it into your backpack.", typeof( Jasper ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 80.0, 0.0, res[0], null ), // Jewelry Rock
					new HarvestVein( 18.5, 0.5, res[1], res[0] ), // Onyx
					new HarvestVein( 1.5, 0.5, res[2], res[0] ) // Jasper
				};

			mininggems.Resources = res;
			mininggems.Veins = veins;

			Definitions.Add( mininggems );
			#endregion

			#region Mining for Bars
			HarvestDefinition bars = m_Bars = new HarvestDefinition();

			// Resource banks are every 8x8 tiles
			bars.BankWidth = 8;
			bars.BankHeight = 8;

			// Every bank holds from 10 to 34 ore
			bars.MinTotal = 10;
			bars.MaxTotal = 34;

			// A resource bank will respawn its content every 10 to 20 minutes
			bars.MinRespawn = TimeSpan.FromMinutes( 10.0 );
			bars.MaxRespawn = TimeSpan.FromMinutes( 20.0 );

			// Skill checking is done on the Mining skill
			bars.Skill = SkillName.Mining;

			// Set the list of harvestable tiles
			bars.Tiles = m_MountainAndCaveTiles;

			// Players must be within 2 tiles to harvest
			bars.MaxRange = 2;

			// One ore per harvest action
			bars.ConsumedPerHarvest = 1;
			bars.ConsumedPerFeluccaHarvest = 2;

			// The digging effect
			bars.EffectActions = new int[]{ 11 };
			bars.EffectSounds = new int[]{ 0x125, 0x126 };
			bars.EffectCounts = new int[]{ 1 };
			bars.EffectDelay = TimeSpan.FromSeconds( 1.6 );
			bars.EffectSoundDelay = TimeSpan.FromSeconds( 0.9 );

			bars.NoResourcesMessage = "There is no metal here to mine.";
			bars.DoubleHarvestMessage = "Someone has gotten to the metal before you."; 
			bars.TimedOutOfRangeMessage = 503041; // You have moved too far away to continue mining.
			bars.OutOfRangeMessage = 500446; // That is too far away.
			bars.FailMessage = "You loosen some rocks but fail to find any useable metal.";
			bars.PackFullMessage = "Your backpack is full, so the metal you mined is lost.";
			bars.ToolBrokeMessage = 1044038; // You have worn out your tool!

			res = new HarvestResource[]
				{
					new HarvestResource( 00.0, 00.0, 95.0, "You dig some sort of jewelry rock and put it in your backpack.", typeof( JewelRock ) ),
					new HarvestResource( 55.0, 20.0, 100.0, "You dig some copper bar and put it in your backpack.", typeof( CopperBar ) ),
					new HarvestResource( 60.0, 25.0, 105.0, "You dig some silver bar and put it in your backpack.", typeof( SilverBar ) ),
					new HarvestResource( 70.0, 30.0, 110.0, "You dig some gold bar and put it in your backpack.", typeof( GoldBar ) ),
					new HarvestResource( 75.0, 35.0, 115.0, "You dig some platinum bar and put it in your backpack.", typeof( PlatinumBar ) ),
					new HarvestResource( 80.0, 40.0, 120.0, "You dig some velium bar and put it in your backpack.", typeof( VeliumBar ) ),
					new HarvestResource( 85.0, 45.0, 125.0, "You dig some arycilan bar and put it in your backpack.", typeof( ArycilanBar ) ),
					new HarvestResource( 90.0, 50.0, 130.0, "You dig some orbsydian bar and put it in your backpack.", typeof( OrbsydianBar ) ),
					new HarvestResource( 95.0, 55.0, 135.0, "You dig some xulian bar and put it in your backpack.", typeof( XulianBar ) ),
					new HarvestResource( 99.0, 60.0, 140.0, "You dig some paragon bar and put it in your backpack.", typeof( ParagonBar ) )
				};

			veins = new HarvestVein[]
				{
					new HarvestVein( 30.0, 0.0, res[0], null   ), // Jewelry Rock
					new HarvestVein( 20.0, 0.5, res[1], res[0] ), // Copper
					new HarvestVein( 15.2, 0.5, res[2], res[0] ), // Silver
					new HarvestVein( 11.6, 0.5, res[3], res[0] ), // Gold
					new HarvestVein( 7.8, 0.5, res[4], res[0] ), // Platinum
					new HarvestVein( 6.2, 0.5, res[5], res[0] ), // Velium
					new HarvestVein( 3.7, 0.5, res[6], res[0] ), // Arycilan
					new HarvestVein( 4.2, 0.5, res[7], res[0] ), // Orbsydian
					new HarvestVein( 2.3, 0.5, res[8], res[0] ), // Xulian
					new HarvestVein( 1.8, 0.5, res[9], res[0] )  // Paragon
				};

			bars.Resources = res;
			bars.Veins = veins;

			Definitions.Add( bars );
			#endregion
		}

		public override bool BeginHarvesting( Mobile from, Item tool )
		{
			if ( !base.BeginHarvesting( from, tool ) )
				return false;

			from.SendLocalizedMessage( 503033 ); // Where do you wish to dig?
			return true;
		}

		public override void SendSuccessTo( Mobile from, Item item, HarvestResource resource )
		{
			if ( item is BaseBars )
				from.SendMessage( "You carefully extract some workable bars from the vein!" );
			else
				base.SendSuccessTo( from, item, resource );
		}

		public override bool CheckHarvest( Mobile from, Item tool )
		{
			if ( !base.CheckHarvest( from, tool ) )
				return false;

			if ( from.Mounted )
			{
				from.SendLocalizedMessage( 501864 ); // You can't mine while riding.
				return false;
			}
			else if ( from.IsBodyMod && !from.Body.IsHuman )
			{
				from.SendLocalizedMessage( 501865 ); // You can't mine while polymorphed.
				return false;
			}

			return true;
		}

		public override void OnBadHarvestTarget( Mobile from, Item tool, object toHarvest )
		{
			if( toHarvest is StaticTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else if( toHarvest is LandTarget )
			{
				from.SendLocalizedMessage( 501862 ); // You can't mine there.
			}
			else
			{
				from.SendMessage( "You can't harvest that." );
			}
		}

		public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested,[COLOR=Red] Type type [/COLOR] )
		{
			HarvestResource res = vein.PrimaryResource;

			if( from.Map == Map.Ilshenar )
			{
				if( res == resource && res.Types[0] == typeof( ParagonBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested[COLOR=Red], type[/COLOR]);
				}
				else if( res == resource && res.Types[0] == typeof( OrbsydianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested[COLOR=Red], type[/COLOR]);
				}
			}
			else if( from.Map == Map.Malas )
			{
				if( res == resource && res.Types[0] == typeof( ArycilanBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested[COLOR=Red], type[/COLOR]);
				}
				else if( res == resource && res.Types[0] == typeof( XulianBar ) )
				{
					base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested[COLOR=Red], type[/COLOR]);
				}
			}
			else
			{
				base.OnHarvestFinished (from, tool, def, vein, bank, resource, harvested[COLOR=Red], type[/COLOR]);
			}
		}


		private static int[] m_MountainAndCaveTiles = new int[]
			{
				220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
				230, 231, 236, 237, 238, 239, 240, 241, 242, 243,
				244, 245, 246, 247, 252, 253, 254, 255, 256, 257,
				258, 259, 260, 261, 262, 263, 268, 269, 270, 271,
				272, 273, 274, 275, 276, 277, 278, 279, 286, 287,
				288, 289, 290, 291, 292, 293, 294, 296, 296, 297,
				321, 322, 323, 324, 467, 468, 469, 470, 471, 472,
				473, 474, 476, 477, 478, 479, 480, 481, 482, 483,
				484, 485, 486, 487, 492, 493, 494, 495, 543, 544,
				545, 546, 547, 548, 549, 550, 551, 552, 553, 554,
				555, 556, 557, 558, 559, 560, 561, 562, 563, 564,
				565, 566, 567, 568, 569, 570, 571, 572, 573, 574,
				575, 576, 577, 578, 579, 581, 582, 583, 584, 585,
				586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
				596, 597, 598, 599, 600, 601, 610, 611, 612, 613,

				1010, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749,
				1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1771, 1772,
				1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782,
				1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1801, 1802,
				1803, 1804, 1805, 1806, 1807, 1808, 1809, 1811, 1812, 1813,
				1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
				1824, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
				1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849,
				1850, 1851, 1852, 1853, 1854, 1861, 1862, 1863, 1864, 1865,
				1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875,
				1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1981,
				1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991,
				1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
				2002, 2003, 2004, 2028, 2029, 2030, 2031, 2032, 2033, 2100,
				2101, 2102, 2103, 2104, 2105,

				0x453B, 0x453C, 0x453D, 0x453E, 0x453F, 0x4540, 0x4541,
				0x4542, 0x4543, 0x4544,	0x4545, 0x4546, 0x4547, 0x4548,
				0x4549, 0x454A, 0x454B, 0x454C, 0x454D, 0x454E,	0x454F
			};

		public static void Initialize()
		{
			Array.Sort( m_CrystalTiles );
		}

		private static int[] m_CrystalTiles = new int[]
			{
				0x2206, 0x2207, 0x2208, 0x2209, 0x220A, 0x220B, 0x220C,
				0x220D, 0x220E, 0x220F, 0x2210, 0x2211, 0x2212, 0x2213,
				0x2214, 0x2215, 0x2216, 0x2217, 0x2218, 0x2219, 0x221A,
				0x221B, 0x221C, 0x221D, 0x221E, 0x221F, 0x2220, 0x2221,
				0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227, 0x2228,
				0x2229, 0x222A, 0x222B, 0x222C,
				
				0x223A, 0x223B, 0x223C, 0x223D, 0x223E, 0x223F, 0x2240,
				0x2241, 0x2242, 0x2243, 0x2243, 0x2244, 0x2245, 0x2246, 
				0x2247, 0x2248, 0x2249
			};

		public override bool GetHarvestDetails( Mobile from, Item tool, object toHarvest, out int tileID, out Map map, out Point3D loc )
		{
			if ( toHarvest is Static && !((Static)toHarvest).Movable )
			{
				Static obj = (Static)toHarvest;

				tileID = obj.ItemID;
				map = obj.Map;
				loc = obj.GetWorldLocation();
			}
			else if ( toHarvest is StaticTarget )
			{
				StaticTarget obj = (StaticTarget)toHarvest;

				tileID = obj.ItemID;
				map = from.Map;
				loc = obj.Location;
			}
			else
			{
				return base.GetHarvestDetails( from, tool, toHarvest, out tileID, out map, out loc );
			}

			return ( map != null && map != Map.Internal );
		}

	}
}

Thanks again for the cool code, will give my Player Crafters/Miners something else for fun to do! The items you see here in the changed Code Window are Red, This is what I've added to the Script for it to work and with no compiling errors
 

Ravenal

Knight
That System changes on the OnFinishedHarvest is not the default RunUO it is part of a custom system, which means I will only support this system on a fresh install of RunUO you will have to edit the HarvestSystem.cs according for CrystalMining.cs to work...

There is a major known issue on Orbsydia that he seems to not be able to craft and feels it could be conflicted with the Daat99 system..
 

Ravenal

Knight
So far I am going to say that the way he edited the Core stuff on Both Harvest and Craft my system will be useless because he changed alot of things how the CraftItem.cs is produced...

If anyone is having this same issue please post here I need to know how many are having issues.

You also release the way he built the system on overriding the CraftItem.cs and other Core files means when the new RunUO comes out You will have issues converting, Jewel Craft System 3.0 Will NOT have these issues and will be updated for purpose for future RunUO Versions.
 

locksmith

Wanderer
awakenlands said:
Figuring out what the issue was is that If you ADD the Daat99's Custom Ore stuff you will have to manually add what is listed below

This is exactly why you shouldn't ever edit the "Harvest System" Core stuff when most of it is overrided in the scripts...


For example

"OnHarvestFinished( from, tool, def, vein, bank, resource, toHarvest, type );
}
public virtual void OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested, Type type )
{
}"

he is missing a BIG thing in there that is supoose to be used on the OnHarvest Finished...

Really the Attcuall DEFAULT OnHarvestFinished is this


OnHarvestFinished( Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested )

So for my system to work with that system, you will have to add "Type, type" to the end of the CrystalMining.cs 's OnHarvestFinished

?? can you please tell us which file and where to put the code? It seems like dat99 breaks everything! i have these problems every time i try to install anything. if you have a fix for this please post it......
 

Ravenal

Knight
locksmith said:
?? can you please tell us which file and where to put the code? It seems like dat99 breaks everything! i have these problems every time i try to install anything. if you have a fix for this please post it......

Alright this is "IF" You have installed the Daa99 OWIwhatever System...

OTher than that if you haven't installed his system then that is to be edited in the CrystalMining.cs if not then just install it there is no need to fix that File if you do not have his system.
 

Zarraz

Wanderer
realy every one who is having truble with adding this script becouse of the Daat99 O.W.L.T.R sysrem should go to his post and tell him to fix his script so it does not chang any of the cor files and we all would have a easer time adding his script and any othere script that come out
 
Top