Go Back   RunUO - Ultima Online Emulation > RunUO > Custom Script Release Archive

Custom Script Release Archive This is a pre-script database archive of what our users had released.

 
 
Thread Tools Display Modes
Old 05-31-2005, 04:43 AM   #1 (permalink)
Forum Expert
 
Ravenal's Avatar
 
Join Date: Oct 2003
Location: Spokane Valley, WA
Age: 24
Posts: 1,533
Default Jewel Craft System 3

JEWEL CRAFT SYSTEM III


by Ravenal of OrBSydia




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
Attached Files
File Type: zip Jewel Crafting System3.[0d].OrB.zip (66.5 KB, 597 views)
__________________

Ravenal is offline  
Old 05-31-2005, 05:59 AM   #2 (permalink)
Forum Expert
 
Marak's Avatar
 
Join Date: Mar 2005
Location: Firmly Seated Infront of the Computer.
Age: 25
Posts: 429
Default

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
Marak is offline  
Old 05-31-2005, 06:06 AM   #3 (permalink)
Forum Expert
 
Ravenal's Avatar
 
Join Date: Oct 2003
Location: Spokane Valley, WA
Age: 24
Posts: 1,533
Default

Go for it this is for anyone to take and enjoy
__________________

Ravenal is offline  
Old 05-31-2005, 06:55 AM   #4 (permalink)
Newbie
 
endwolf's Avatar
 
Join Date: Jul 2004
Location: Louisiana
Age: 39
Posts: 74
Default Only One Error WOOt

- Error: Scripts\Engines\Harvest\CrystalMining.cs: CS0115: (line 343, column 24
) 'Server.Engines.JewelCraft.CrystalMining.OnHarvest Finished(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?
endwolf is offline  
Old 05-31-2005, 07:53 AM   #5 (permalink)
Forum Expert
 
Marak's Avatar
 
Join Date: Mar 2005
Location: Firmly Seated Infront of the Computer.
Age: 25
Posts: 429
Default

hmm not sure, we have over 80 custom scripts installed - and drag and dropped without a hitch... hmm
Marak is offline  
Old 05-31-2005, 07:57 AM   #6 (permalink)
Forum Expert
 
Marak's Avatar
 
Join Date: Mar 2005
Location: Firmly Seated Infront of the Computer.
Age: 25
Posts: 429
Default

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 is offline  
Old 05-31-2005, 07:58 AM   #7 (permalink)
Forum Expert
 
Marak's Avatar
 
Join Date: Mar 2005
Location: Firmly Seated Infront of the Computer.
Age: 25
Posts: 429
Default

Quote:
Originally Posted by endwolf
- Error: Scripts\Engines\Harvest\CrystalMining.cs: CS0115: (line 343, column 24
) 'Server.Engines.JewelCraft.CrystalMining.OnHarvest Finished(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?
Marak is offline  
Old 05-31-2005, 02:02 PM   #8 (permalink)
Forum Expert
 
Ravenal's Avatar
 
Join Date: Oct 2003
Location: Spokane Valley, WA
Age: 24
Posts: 1,533
Default

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 is offline  
Old 05-31-2005, 08:06 PM   #9 (permalink)
Forum Expert
 
Ravenal's Avatar
 
Join Date: Oct 2003
Location: Spokane Valley, WA
Age: 24
Posts: 1,533
Default

Quote:
Originally Posted by endwolf
- Error: Scripts\Engines\Harvest\CrystalMining.cs: CS0115: (line 343, column 24
) 'Server.Engines.JewelCraft.CrystalMining.OnHarvest Finished(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
__________________

Ravenal is offline  
Old 05-31-2005, 09:13 PM   #10 (permalink)
Forum Expert
 
Marak's Avatar
 
Join Date: Mar 2005
Location: Firmly Seated Infront of the Computer.
Age: 25
Posts: 429
Default

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
Marak is offline  
Old 05-31-2005, 11:48 PM   #11 (permalink)
Forum Expert
 
Ravenal's Avatar
 
Join Date: Oct 2003
Location: Spokane Valley, WA
Age: 24
Posts: 1,533
Default

__________________

Ravenal is offline  
Old 06-02-2005, 03:46 PM   #12 (permalink)
Forum Expert
 
Ravenal's Avatar
 
Join Date: Oct 2003
Location: Spokane Valley, WA
Age: 24
Posts: 1,533
Default

Version 3.0a released today, fixes occured with some issues with Names
__________________

Ravenal is offline  
Old 06-02-2005, 05:35 PM   #13 (permalink)
Forum Newbie
 
Join Date: Jun 2005
Age: 33
Posts: 28
Send a message via ICQ to Venom1975 Send a message via MSN to Venom1975 Send a message via Yahoo to Venom1975
Default

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 is offline  
Old 06-02-2005, 05:44 PM   #14 (permalink)
Forum Newbie
 
Join Date: Jun 2005
Age: 33
Posts: 28
Send a message via ICQ to Venom1975 Send a message via MSN to Venom1975 Send a message via Yahoo to Venom1975
Default 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 is offline  
Old 06-02-2005, 05:47 PM   #15 (permalink)
Forum Newbie
 
Join Date: Jun 2005
Age: 33
Posts: 28
Send a message via ICQ to Venom1975 Send a message via MSN to Venom1975 Send a message via Yahoo to Venom1975
Default 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 Harv