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!

FULL Diablo 2 Style Socket System =)

vicious_kyss

Wanderer
Haradric Cube Revisited

LordHogFred said:
Well I have to say I couldn't agree more. I would love to make a Horadric Cube but alas I wou;dn't know where to start. If someone could get the basic code to me (placing X items in a container to form Y item) I would be more than happy to work on one and get it sorrted. :D


Maybe you could have a seperate skill for such a thing, or use the same concepts behind creating the bolt of cloth from the loom... I'm a complete newb to scripting, but since the loom already creates the bolt of cloth, might be an easy thing to clone???
 

KillerBeeZ

Knight
vicious_kyss said:
Maybe you could have a seperate skill for such a thing, or use the same concepts behind creating the bolt of cloth from the loom... I'm a complete newb to scripting, but since the loom already creates the bolt of cloth, might be an easy thing to clone???

you need to keep reading, your quote was from the 1st page. I already made a cube

go to the 3rd page of this thread

feel free to edit as you see fit
 

Lagg Master

Sorceror
Code:
RunUO - [[url]www.runuo.com][/url] Version 1.0.0, Build 36918
Scripts: Compiling C# scripts...failed (10 errors, 0 warnings)
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\AccrualOfReception.cs: CS0101: (line 11, column
15) The namespace 'Server.Items' already contains a definition for 'AccrualOfRec
eption'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\AccrualOfRuining.cs: CS0101: (line 11, column 15
) The namespace 'Server.Items' already contains a definition for 'AccrualOfRuini
ng'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\GreaterAccrualOfReception.cs: CS0101: (line 11,
column 15) The namespace 'Server.Items' already contains a definition for 'Great
erAccrualOfReception'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\GreaterAccrualOfRuining.cs: CS0101: (line 11, co
lumn 15) The namespace 'Server.Items' already contains a definition for 'Greater
AccrualOfRuining'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\HallowedAccrualOfDexterity.cs: CS0101: (line 11,
 column 15) The namespace 'Server.Items' already contains a definition for 'Hall
owedAccrualOfDexterity'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\HallowedAccrualOfStrength.cs: CS0101: (line 11,
column 15) The namespace 'Server.Items' already contains a definition for 'Hallo
wedAccrualOfStrength'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\LesserAccrualOfReception.cs: CS0101: (line 11, c
olumn 15) The namespace 'Server.Items' already contains a definition for 'Lesser
AccrualOfReception'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\LesserAccrualOfRuining.cs: CS0101: (line 11, col
umn 15) The namespace 'Server.Items' already contains a definition for 'LesserAc
crualOfRuining'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\UnsanctifiedAccrualOfDexterity.cs: CS0101: (line
 11, column 15) The namespace 'Server.Items' already contains a definition for '
UnsanctifiedAccrualOfDexterity'
 - Error: Scripts\Custom\FULL D2 Socket System - Zip 2\FULL D2 Socket System - Z
ip 2\Augmentations - OLD SYSTEM\UnsanctifiedAccrualOfStrength.cs: CS0101: (line
11, column 15) The namespace 'Server.Items' already contains a definition for 'U
nsanctifiedAccrualOfStrength'
Scripts: One or more scripts failed to compile or no script files were found.
 - Press return to exit, or R to try again.




and when i remove the files




Code:
RunUO - [www.runuo.com] Version 1.0.0, Build 36918
Scripts: Compiling C# scripts...failed (9 errors, 4 warnings)
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 17, column 17) Th
e keyword new is required on 'Server.Items.BaseShield.AugmentList' because it hi
des inherited member 'Server.Items.BaseArmor.AugmentList'
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0114: (line 23, column 25) 'S
erver.Items.BaseShield.SocketLabel' hides inherited member 'Server.Items.BaseArm
or.SocketLabel'. To make the current member override that implementation, add th
e override keyword. Otherwise add the new keyword.
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 26, column 14) Th
e keyword new is required on 'Server.Items.BaseShield.UsedSockets' because it hi
des inherited member 'Server.Items.BaseArmor.UsedSockets'
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 33, column 14) Th
e keyword new is required on 'Server.Items.BaseShield.MaxSockets' because it hid
es inherited member 'Server.Items.BaseArmor.MaxSockets'
 - Error: Scripts\Custom\DefBlacksmithy.cs: CS0246: (line 284, column 23) The ty
pe or namespace name 'SocketedChaosShield' could not be found (are you missing a
 using directive or an assembly reference?)
 - Error: Scripts\Custom\DefBlacksmithy.cs: CS0246: (line 285, column 23) The ty
pe or namespace name 'SocketedOrderShield' could not be found (are you missing a
 using directive or an assembly reference?)
 - Error: Scripts\Custom\Loot.cs: CS0246: (line 17, column 43) The type or names
pace name 'LongBow' could not be found (are you missing a using directive or an
assembly reference?)
 - Error: Scripts\Custom\Loot.cs: CS0246: (line 17, column 64) The type or names
pace name 'WarBow' could not be found (are you missing a using directive or an a
ssembly reference?)
 - Error: Scripts\Custom\Loot.cs: CS0246: (line 18, column 13) The type or names
pace name 'ElvenBow' could not be found (are you missing a using directive or an
 assembly reference?)
 - Error: Scripts\Custom\LootPack.cs: CS1501: (line 75, column 21) No overload f
or method 'GetLootingRights' takes '1' arguments
 - Error: Scripts\Engines\Khaldun\Mobiles\GrimmochDrummel.cs: CS0117: (line 74,
column 15) 'Server.Loot' does not contain a definition for 'RandomGrimmochJourna
l'
 - Error: Scripts\Engines\Khaldun\Mobiles\LysanderGathenwale.cs: CS0117: (line 1
04, column 25) 'Server.Loot' does not contain a definition for 'RandomLysanderNo
tebook'
 - Error: Scripts\Engines\Khaldun\Mobiles\TavaraSewel.cs: CS0117: (line 92, colu
mn 24) 'Server.Loot' does not contain a definition for 'RandomTavarasJournal'
Scripts: One or more scripts failed to compile or no script files were found.
 - Press return to exit, or R to try again.
 

Lagg Master

Sorceror
Code:
RunUO - [[url]www.runuo.com][/url] Version 1.0.0, Build 36918
Scripts: Compiling C# scripts...failed (3 errors, 4 warnings)
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 17, column 17) Th
e keyword new is required on 'Server.Items.BaseShield.AugmentList' because it hi
des inherited member 'Server.Items.BaseArmor.AugmentList'
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0114: (line 23, column 25) 'S
erver.Items.BaseShield.SocketLabel' hides inherited member 'Server.Items.BaseArm
or.SocketLabel'. To make the current member override that implementation, add th
e override keyword. Otherwise add the new keyword.
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 26, column 14) Th
e keyword new is required on 'Server.Items.BaseShield.UsedSockets' because it hi
des inherited member 'Server.Items.BaseArmor.UsedSockets'
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 33, column 14) Th
e keyword new is required on 'Server.Items.BaseShield.MaxSockets' because it hid
es inherited member 'Server.Items.BaseArmor.MaxSockets'
 - Error: Scripts\Custom\DefBlacksmithy.cs: CS0246: (line 284, column 23) The ty
pe or namespace name 'SocketedChaosShield' could not be found (are you missing a
 using directive or an assembly reference?)
 - Error: Scripts\Custom\DefBlacksmithy.cs: CS0246: (line 285, column 23) The ty
pe or namespace name 'SocketedOrderShield' could not be found (are you missing a
 using directive or an assembly reference?)
 - Error: Scripts\Custom\LootPack.cs: CS1501: (line 75, column 21) No overload f
or method 'GetLootingRights' takes '1' arguments
Scripts: One or more scripts failed to compile or no script files were found.
 - Press return to exit, or R to try again.


this is what i get after i added the new loot.cs file
and thanks for helping
 

Miles84

Wanderer
I noticed whenever I have like an error or something in a script...it shows like 3432424324234 warnings from this system...such as:

- Warning: Scripts\Custom\Socketed System\Updated Augment List Items\Socketed W
eapons\Swords\SocketedLongsword.cs: CS0219: (line 50, column 8) The variable 'i'
is assigned but its value is never used

I also just noticed something else...the hit areas for weapons are not working...it displays correctly and everything...even shows up in props...anyone else having this probelm?
 

Phantom

Knight
Miles84 said:
I noticed whenever I have like an error or something in a script...it shows like 3432424324234 warnings from this system...such as:

- Warning: Scripts\Custom\Socketed System\Updated Augment List Items\Socketed W
eapons\Swords\SocketedLongsword.cs: CS0219: (line 50, column 8) The variable 'i'
is assigned but its value is never used

I also just noticed something else...the hit areas for weapons are not working...it displays correctly and everything...even shows up in props...anyone else having this probelm?

This is normal, and the only way to fix it, is to correct the code.

The thing is the code works how it is, and unless you know how to fix it, you shouldn't even bother trying to fix it.
 

Miles84

Wanderer
Phantom said:
This is normal, and the only way to fix it, is to correct the code.

The thing is the code works how it is, and unless you know how to fix it, you shouldn't even bother trying to fix it.

Well I was wrong...I just upgraded to new runuo and didnt know hit areas only worked if there was more then 1 enemy your fighting....makes sense though....
 

KillerBeeZ

Knight
Miles84 said:
I noticed whenever I have like an error or something in a script...it shows like 3432424324234 warnings from this system...such as:

- Warning: Scripts\Custom\Socketed System\Updated Augment List Items\Socketed W
eapons\Swords\SocketedLongsword.cs: CS0219: (line 50, column 8) The variable 'i'
is assigned but its value is never used

I fixed this on my shard, but it seems like it has also been fixed here as well, you just had to remove an unused line..

I suggest you upgrade your scripts to the current version of this system

... as for the hit area, I removed those as well so I never saw that error (I don't like user created hit area all that much) so not sure how to fix it.
 

Miles84

Wanderer
KillerBeeZ said:
I fixed this on my shard, but it seems like it has also been fixed here as well, you just had to remove an unused line..

I suggest you upgrade your scripts to the current version of this system

... as for the hit area, I removed those as well so I never saw that error (I don't like user created hit area all that much) so not sure how to fix it.

unused line? I have the current version
 

KillerBeeZ

Knight
Miles84 said:
unused line? I have the current version

if you had the current version, you would not get that error, I challenge you to find the variable "i" in any of the current socketed item scripts.

this "i" was in the older scripts as a versioning variable, it was not done correctly and looked like it was never finished.

in any case, trust me, you do not have the current scripts.

The only scripts you really need to fix this are the items (socketed heater shield, socketed plate arms and so on.)

take a look at the new ones, then look at yours.
 

Maxi - II

Wanderer
ok need help

ok I tried this with the updated runuo package (unziped to desktop) then added the custom folder and placed the files in the D2 package. I did everything on the (how to.txt) and this is the errors I get when i try to start the server.

RunUO - [www.runuo.com] Version 1.0.0, Build 36918
Scripts: Compiling C# scripts...failed (3 errors, 4 warnings)
- Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 16, column 17) The keyword new is required on 'Server.Items.BaseShield.AugmentList' because it hides inherited member 'Server.Items.BaseArmor.AugmentList'
- Warning: Scripts\Items\Shields\BaseShield.cs: CS0114: (line 22, column 25) 'Server.Items.BaseShield.SocketLabel' hides inherited member 'Server.Items.BaseArmor.SocketLabel'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.
- Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 25, column 14) The keyword new is required on 'Server.Items.BaseShield.UsedSockets' because it hides inherited member 'Server.Items.BaseArmor.UsedSockets'
- Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 32, column 14) The keyword new is required on 'Server.Items.BaseShield.MaxSockets' because it hides inherited member 'Server.Items.BaseArmor.MaxSockets'
- Error: Scripts\custom\FULL Diablo 2 Style Socket\DefBlacksmithy.cs: CS0246: (line 284, column 23) The type or namespace name 'SocketedChaosShield' could notbe found (are you missing a using directive or an assembly reference?)
- Error: Scripts\custom\FULL Diablo 2 Style Socket\DefBlacksmithy.cs: CS0246: (line 285, column 23) The type or namespace name 'SocketedOrderShield' could notbe found (are you missing a using directive or an assembly reference?)
- Error: Scripts\custom\FULL Diablo 2 Style Socket\LootPack.cs: CS1501: (line 75, column 21) No overload for method 'GetLootingRights' takes '1' arguments
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.


I realy want to try this and will start a new shard to get it to work........
 

Maxi - II

Wanderer
no help on these scripts?

I'm not to sure how to make this work..... The more I try the more errors I get....

I used the newest dl from runuo and the updated DL for this package and I still get mass errors like the one i posted.


I love the game Diablo 2 and it could be cool to have it in uo so thanks to the writer and fer the idea, but man i can't get it to work........



if there is no longer help here but someone feels like helping me out feel free to PMSG me



thanks
 

brainless

Wanderer
I managed to get D2 Socket System to compile without errors, but it seems like no monsters are dropping the gems. I can craft the socketed gear and add the gems normally if I just create one, but no monster drops them. I tried balron, dragon, lich lord and lich to test. I had to edit my existing LootPack.cs because the one provided with the D2 pack gave me an error I had no idea how to fix. Here's my current LootPack.cs if someone could help me. Having the irritating feeling of "so close, but still so far away" :)

Code:
using System;
using System.Collections;
using Server;
using Server.Items;
using Server.Mobiles;

namespace Server
{
	public class LootPack
	{
		private static int[] m_LuckTable = new int[]
			{
				100,  146,  184,  216,  244,  270,  294,  317,  338,  359,  378,  397,  415,  433,  450,  466,  482,  498,  513,  528,  542,  556,  570,  584,  597,  611,  624,  636,  649,  661,
				673,  685,  697,  709,  720,  732,  743,  754,  765,  776,  787,  797,  808,  818,  828,  838,  849,  859,  868,  878,  888,  898,  907,  917,  926,  935,  945,  954,  963,  972,
				981,  990,  999,  1007, 1016, 1025, 1033, 1042, 1050, 1059, 1067, 1076, 1084, 1092, 1100, 1108, 1116, 1125, 1133, 1140, 1148, 1156, 1164, 1172, 1180, 1187, 1195, 1203, 1210, 1218,
				1225, 1233, 1240, 1247, 1255, 1262, 1269, 1277, 1284, 1291, 1298, 1305, 1312, 1320, 1327, 1334, 1341, 1347, 1354, 1361, 1368, 1375, 1382, 1389, 1395, 1402, 1409, 1415, 1422, 1429,
				1435, 1442, 1448, 1455, 1462, 1468, 1474, 1481, 1487, 1494, 1500, 1506, 1513, 1519, 1525, 1532, 1538, 1544, 1550, 1557, 1563, 1569, 1575, 1581, 1587, 1593, 1599, 1605, 1611, 1617,
				1623, 1629, 1635, 1641, 1647, 1653, 1659, 1665, 1671, 1676, 1682, 1688, 1694, 1700, 1705, 1711, 1717, 1722, 1728, 1734, 1740, 1745, 1751, 1756, 1762, 1768, 1773, 1779, 1784, 1790,
				1795, 1801, 1806, 1812, 1817, 1823, 1828, 1834, 1839, 1844, 1850, 1855, 1861, 1866, 1871, 1877, 1882, 1887, 1892, 1898, 1903, 1908, 1914, 1919, 1924, 1929, 1934, 1940, 1945, 1950,
				1955, 1960, 1965, 1970, 1976, 1981, 1986, 1991, 1996, 2001, 2006, 2011, 2016, 2021, 2026, 2031, 2036, 2041, 2046, 2051, 2056, 2061, 2066, 2071, 2076, 2081, 2085, 2090, 2095, 2100,
				2105, 2110, 2115, 2119, 2124, 2129, 2134, 2139, 2143, 2148, 2153, 2158, 2163, 2167, 2172, 2177, 2181, 2186, 2191, 2196, 2200, 2205, 2210, 2214, 2219, 2224, 2228, 2233, 2238, 2242,
				2247, 2251, 2256, 2261, 2265, 2270, 2274, 2279, 2283, 2288, 2292, 2297, 2301, 2306, 2311, 2315, 2320, 2324, 2328, 2333, 2337, 2342, 2346, 2351, 2355, 2360, 2364, 2368, 2373, 2377,
				2382, 2386, 2390, 2395, 2399, 2404, 2408, 2412, 2417, 2421, 2425, 2430, 2434, 2438, 2443, 2447, 2451, 2456, 2460, 2464, 2468, 2473, 2477, 2481, 2485, 2490, 2494, 2498, 2502, 2507,
				2511, 2515, 2519, 2523, 2528, 2532, 2536, 2540, 2544, 2549, 2553, 2557, 2561, 2565, 2569, 2573, 2578, 2582, 2586, 2590, 2594, 2598, 2602, 2606, 2610, 2615, 2619, 2623, 2627, 2631,
				2635, 2639, 2643, 2647, 2651, 2655, 2659, 2663, 2667, 2671, 2675, 2679, 2683, 2687, 2691, 2695, 2699, 2703, 2707, 2711, 2715, 2719, 2723, 2727, 2731, 2735, 2739, 2743, 2747, 2750,
				2754, 2758, 2762, 2766, 2770, 2774, 2778, 2782, 2786, 2789, 2793, 2797, 2801, 2805, 2809, 2813, 2816, 2820, 2824, 2828, 2832, 2836, 2839, 2843, 2847, 2851, 2855, 2858, 2862, 2866,
				2870, 2874, 2877, 2881, 2885, 2889, 2893, 2896, 2900, 2904, 2908, 2911, 2915, 2919, 2922, 2926, 2930, 2934, 2937, 2941, 2945, 2949, 2952, 2956, 2960, 2963, 2967, 2971, 2974, 2978,
				2982, 2985, 2989, 2993, 2996, 3000, 3004, 3007, 3011, 3015, 3018, 3022, 3026, 3029, 3033, 3036, 3040, 3044, 3047, 3051, 3055, 3058, 3062, 3065, 3069, 3072, 3076, 3080, 3083, 3087,
				3090, 3094, 3098, 3101, 3105, 3108, 3112, 3115, 3119, 3122, 3126, 3129, 3133, 3137, 3140, 3144, 3147, 3151, 3154, 3158, 3161, 3165, 3168, 3172, 3175, 3179, 3182, 3186, 3189, 3193,
				3196, 3200, 3203, 3206, 3210, 3213, 3217, 3220, 3224, 3227, 3231, 3234, 3238, 3241, 3244, 3248, 3251, 3255, 3258, 3262, 3265, 3268, 3272, 3275, 3279, 3282, 3285, 3289, 3292, 3296,
				3299, 3302, 3306, 3309, 3312, 3316, 3319, 3323, 3326, 3329, 3333, 3336, 3339, 3343, 3346, 3349, 3353, 3356, 3360, 3363, 3366, 3370, 3373, 3376, 3379, 3383, 3386, 3389, 3393, 3396,
				3399, 3403, 3406, 3409, 3413, 3416, 3419, 3422, 3426, 3429, 3432, 3436, 3439, 3442, 3445, 3449, 3452, 3455, 3459, 3462, 3465, 3468, 3472, 3475, 3478, 3481, 3485, 3488, 3491, 3494,
				3497, 3501, 3504, 3507, 3510, 3514, 3517, 3520, 3523, 3527, 3530, 3533, 3536, 3539, 3543, 3546, 3549, 3552, 3555, 3559, 3562, 3565, 3568, 3571, 3574, 3578, 3581, 3584, 3587, 3590,
				3593, 3597, 3600, 3603, 3606, 3609, 3612, 3616, 3619, 3622, 3625, 3628, 3631, 3634, 3638, 3641, 3644, 3647, 3650, 3653, 3656, 3659, 3663, 3666, 3669, 3672, 3675, 3678, 3681, 3684,
				3687, 3690, 3694, 3697, 3700, 3703, 3706, 3709, 3712, 3715, 3718, 3721, 3724, 3728, 3731, 3734, 3737, 3740, 3743, 3746, 3749, 3752, 3755, 3758, 3761, 3764, 3767, 3770, 3773, 3776,
				3779, 3783, 3786, 3789, 3792, 3795, 3798, 3801, 3804, 3807, 3810, 3813, 3816, 3819, 3822, 3825, 3828, 3831, 3834, 3837, 3840, 3843, 3846, 3849, 3852, 3855, 3858, 3861, 3864, 3867,
				3870, 3873, 3876, 3879, 3882, 3885, 3888, 3891, 3894, 3897, 3900, 3902, 3905, 3908, 3911, 3914, 3917, 3920, 3923, 3926, 3929, 3932, 3935, 3938, 3941, 3944, 3947, 3950, 3953, 3955,
				3958, 3961, 3964, 3967, 3970, 3973, 3976, 3979, 3982, 3985, 3988, 3991, 3993, 3996, 3999, 4002, 4005, 4008, 4011, 4014, 4017, 4020, 4022, 4025, 4028, 4031, 4034, 4037, 4040, 4043,
				4046, 4048, 4051, 4054, 4057, 4060, 4063, 4066, 4068, 4071, 4074, 4077, 4080, 4083, 4086, 4089, 4091, 4094, 4097, 4100, 4103, 4106, 4108, 4111, 4114, 4117, 4120, 4123, 4125, 4128,
				4131, 4134, 4137, 4140, 4142, 4145, 4148, 4151, 4154, 4157, 4159, 4162, 4165, 4168, 4171, 4173, 4176, 4179, 4182, 4185, 4187, 4190, 4193, 4196, 4199, 4201, 4204, 4207, 4210, 4213,
				4215, 4218, 4221, 4224, 4226, 4229, 4232, 4235, 4238, 4240, 4243, 4246, 4249, 4251, 4254, 4257, 4260, 4262, 4265, 4268, 4271, 4274, 4276, 4279, 4282, 4285, 4287, 4290, 4293, 4296,
				4298, 4301, 4304, 4306, 4309, 4312, 4315, 4317, 4320, 4323, 4326, 4328, 4331, 4334, 4337, 4339, 4342, 4345, 4347, 4350, 4353, 4356, 4358, 4361, 4364, 4366, 4369, 4372, 4374, 4377,
				4380, 4383, 4385, 4388, 4391, 4393, 4396, 4399, 4401, 4404, 4407, 4410, 4412, 4415, 4418, 4420, 4423, 4426, 4428, 4431, 4434, 4436, 4439, 4442, 4444, 4447, 4450, 4452, 4455, 4458,
				4460, 4463, 4466, 4468, 4471, 4474, 4476, 4479, 4482, 4484, 4487, 4490, 4492, 4495, 4497, 4500, 4503, 4505, 4508, 4511, 4513, 4516, 4519, 4521, 4524, 4526, 4529, 4532, 4534, 4537,
				4540, 4542, 4545, 4548, 4550, 4553, 4555, 4558, 4561, 4563, 4566, 4568, 4571, 4574, 4576, 4579, 4581, 4584, 4587, 4589, 4592, 4594, 4597, 4600, 4602, 4605, 4607, 4610, 4613, 4615,
				4618, 4620, 4623, 4626, 4628, 4631, 4633, 4636, 4639, 4641, 4644, 4646, 4649, 4651, 4654, 4657, 4659, 4662, 4664, 4667, 4669, 4672, 4675, 4677, 4680, 4682, 4685, 4687, 4690, 4692,
				4695, 4698, 4700, 4703, 4705, 4708, 4710, 4713, 4715, 4718, 4720, 4723, 4726, 4728, 4731, 4733, 4736, 4738, 4741, 4743, 4746, 4748, 4751, 4753, 4756, 4759, 4761, 4764, 4766, 4769,
				4771, 4774, 4776, 4779, 4781, 4784, 4786, 4789, 4791, 4794, 4796, 4799, 4801, 4804, 4806, 4809, 4811, 4814, 4816, 4819, 4821, 4824, 4826, 4829, 4831, 4834, 4836, 4839, 4841, 4844,
				4846, 4849, 4851, 4854, 4856, 4859, 4861, 4864, 4866, 4869, 4871, 4874, 4876, 4879, 4881, 4884, 4886, 4889, 4891, 4893, 4896, 4898, 4901, 4903, 4906, 4908, 4911, 4913, 4916, 4918,
				4921, 4923, 4926, 4928, 4930, 4933, 4935, 4938, 4940, 4943, 4945, 4948, 4950, 4953, 4955, 4957, 4960, 4962, 4965, 4967, 4970, 4972, 4975, 4977, 4979, 4982, 4984, 4987, 4989, 4992,
				4994, 4996, 4999, 5001, 5004, 5006, 5009, 5011, 5013, 5016, 5018, 5021, 5023, 5026, 5028, 5030, 5033, 5035, 5038, 5040, 5042, 5045, 5047, 5050, 5052, 5055, 5057, 5059, 5062, 5064,
				5067, 5069, 5071, 5074, 5076, 5079, 5081, 5083, 5086, 5088, 5091, 5093, 5095, 5098, 5100, 5102, 5105, 5107, 5110, 5112, 5114, 5117, 5119, 5122, 5124, 5126, 5129, 5131, 5133, 5136
			};

		public static int GetLuckChance( Mobile from )
		{
			if ( !Core.AOS )
				return 0;

			int luck = from.Luck;

			if ( luck > m_LuckTable.Length )
				luck = m_LuckTable.Length;

			--luck;

			if ( luck < 0 )
				return 0;

			return m_LuckTable[luck];
		}

		public static int GetLuckChanceForKiller( Mobile dead )
		{
			ArrayList list = BaseCreature.GetLootingRights( dead.DamageEntries, dead.HitsMax );

			DamageStore highest = null;

			for ( int i = 0; i < list.Count; ++i )
			{
				DamageStore ds = (DamageStore)list[i];

				if ( ds.m_HasRight && (highest == null || ds.m_Damage > highest.m_Damage) )
					highest = ds;
			}

			if ( highest == null )
				return 0;

			return GetLuckChance( highest.m_Mobile );
		}

		public static bool CheckLuck( int chance )
		{
			return ( chance > Utility.Random( 10000 ) );
		}

		private LootPackEntry[] m_Entries;

		public LootPack( LootPackEntry[] entries )
		{
			m_Entries = entries;
		}

		public void Generate( Mobile from, Container cont, bool spawning, int luckChance )
		{
			if ( cont == null )
				return;

			bool checkLuck = Core.AOS;

			for ( int i = 0; i < m_Entries.Length; ++i )
			{
				LootPackEntry entry = m_Entries[i];

				bool shouldAdd = ( entry.Chance > Utility.Random( 10000 ) );

				if ( !shouldAdd && checkLuck )
				{
					checkLuck = false;

					if ( LootPack.CheckLuck( luckChance ) )
						shouldAdd = ( entry.Chance > Utility.Random( 10000 ) );
				}

				if ( !shouldAdd )
					continue;

				Item item = entry.Construct( from, luckChance, spawning );

				if ( item != null )
				{
					if ( !item.Stackable || !cont.TryDropItem( from, item, false ) )
						cont.DropItem( item );
				}
			}
		}

		public static readonly LootPackItem[] Gold = new LootPackItem[]
			{
				new LootPackItem( typeof( Gold ), 1 )
			};
		//TOKEN
		private static readonly LootPackItem[] Tokens = new LootPackItem[]
			{
				new LootPackItem( typeof( Tokens ), 1 )
			};
//TOKEN

		public static readonly LootPackItem[] Instruments = new LootPackItem[]
			{
				new LootPackItem( typeof( BaseInstrument ), 1 )
			};

		public static readonly LootPackItem[] MagicItems = new LootPackItem[]
			{
				new LootPackItem( typeof( BaseJewel ), 1 ),
				new LootPackItem( typeof( BaseArmor ), 4 ),
				new LootPackItem( typeof( BaseWeapon ), 4 ),
				new LootPackItem( typeof( BaseShield ), 1 )
			};

		public static readonly LootPackItem[] LowScrollItems = new LootPackItem[]
			{
				new LootPackItem( typeof( ClumsyScroll ), 1 )
			};

		public static readonly LootPackItem[] MedScrollItems = new LootPackItem[]
			{
				new LootPackItem( typeof( ArchCureScroll ), 1 )
			};

		public static readonly LootPackItem[] HighScrollItems = new LootPackItem[]
			{
				new LootPackItem( typeof( SummonAirElementalScroll ), 1 )
			};

		public static readonly LootPackItem[] GemItems = new LootPackItem[]
			{
				new LootPackItem( typeof( Amber ), 1 )
			};

		public static readonly LootPackItem[] PotionItems = new LootPackItem[]
			{
				new LootPackItem( typeof( AgilityPotion ), 1 ),
				new LootPackItem( typeof( StrengthPotion ), 1 ),
				new LootPackItem( typeof( RefreshPotion ), 1 ),
				new LootPackItem( typeof( LesserCurePotion ), 1 ),
				new LootPackItem( typeof( LesserHealPotion ), 1 ),
				new LootPackItem( typeof( LesserPoisonPotion ), 1 )
			};

// SOCKET ADDITION START
		private static readonly LootPackItem[] ChippedGems = new LootPackItem[]
			{
				new LootPackItem( typeof( ChippedAmethyst ), 1 ),
				new LootPackItem( typeof( ChippedEmerald ), 1 ),
				new LootPackItem( typeof( ChippedDiamond ), 1 ),
				new LootPackItem( typeof( ChippedRuby ), 1 ),
				new LootPackItem( typeof( ChippedSapphire ), 1 ),
				new LootPackItem( typeof( ChippedTopaz ), 1 )
			};

		private static readonly LootPackItem[] FlawedGems = new LootPackItem[]
			{
				new LootPackItem( typeof( FlawedAmethyst ), 1 ),
				new LootPackItem( typeof( FlawedEmerald ), 1 ),
				new LootPackItem( typeof( FlawedDiamond ), 1 ),
				new LootPackItem( typeof( FlawedRuby ), 1 ),
				new LootPackItem( typeof( FlawedSapphire ), 1 ),
				new LootPackItem( typeof( FlawedTopaz ), 1 )
			};

		private static readonly LootPackItem[] PlainGems = new LootPackItem[]
			{
				new LootPackItem( typeof( PlainAmethyst ), 1 ),
				new LootPackItem( typeof( PlainEmerald ), 1 ),
				new LootPackItem( typeof( PlainDiamond ), 1 ),
				new LootPackItem( typeof( PlainRuby ), 1 ),
				new LootPackItem( typeof( PlainSapphire ), 1 ),
				new LootPackItem( typeof( PlainTopaz ), 1 )
			};

		private static readonly LootPackItem[] FlawlessGems = new LootPackItem[]
			{
				new LootPackItem( typeof( FlawlessAmethyst ), 1 ),
				new LootPackItem( typeof( FlawlessEmerald ), 1 ),
				new LootPackItem( typeof( FlawlessDiamond ), 1 ),
				new LootPackItem( typeof( FlawlessRuby ), 1 ),
				new LootPackItem( typeof( FlawlessSapphire ), 1 ),
				new LootPackItem( typeof( FlawlessTopaz ), 1 )
			};

		private static readonly LootPackItem[] PerfectGems = new LootPackItem[]
			{
				new LootPackItem( typeof( PerfectAmethyst ), 1 ),
				new LootPackItem( typeof( PerfectEmerald ), 1 ),
				new LootPackItem( typeof( PerfectDiamond ), 1 ),
				new LootPackItem( typeof( PerfectRuby ), 1 ),
				new LootPackItem( typeof( PerfectSapphire ), 1 ),
				new LootPackItem( typeof( PerfectTopaz ), 1 )
			};
// SOCKET ADDITION END

		#region AOS definitions
		public static readonly LootPack AosPoor = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "1d10+10" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, MagicItems,	  0.02, 1, 5, 0, 90 ),
				new LootPackEntry( false, Instruments,	  0.02, 1 ),

// SOCKET ADDITION START
				new LootPackEntry( false, ChippedGems,	  0.05, 1 )
// SOCKET ADDITION END
			} );

		public static readonly LootPack AosMeager = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "3d10+20" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, MagicItems,	  1.00, 1, 2, 0, 10 ),
				new LootPackEntry( false, MagicItems,	  0.20, 1, 5, 0, 90 ),
				new LootPackEntry( false, Instruments,	  0.10, 1 ),

// SOCKET ADDITION START
				new LootPackEntry( false, ChippedGems,	  0.23, 1 ),
				new LootPackEntry( false, FlawedGems,	  0.14, 1 )
// SOCKET ADDITION END
			} );

		public static readonly LootPack AosAverage = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "5d10+50" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, MagicItems,	  5.00, 1, 4, 0, 20 ),
				new LootPackEntry( false, MagicItems,	  2.00, 1, 3, 0, 50 ),
				new LootPackEntry( false, MagicItems,	  0.50, 1, 5, 0, 90 ),
				new LootPackEntry( false, Instruments,	  0.40, 1 ),

// SOCKET ADDITION START
				new LootPackEntry( false, ChippedGems,	  0.23, 1 ),
				new LootPackEntry( false, FlawedGems,	  0.14, 1 ),
				new LootPackEntry( false, PlainGems,	  0.09, 1 )
// SOCKET ADDITION END
			} );

		public static readonly LootPack AosRich = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "10d10+150" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, MagicItems,	 20.00, 1, 4, 0, 40 ),
				new LootPackEntry( false, MagicItems,	 10.00, 1, 5, 0, 60 ),
				new LootPackEntry( false, MagicItems,	  1.00, 1, 5, 0, 90 ),
				new LootPackEntry( false, Instruments,	  1.00, 1 ),

// SOCKET ADDITION START
				new LootPackEntry( false, ChippedGems,	  0.23, 1 ),
				new LootPackEntry( false, FlawedGems,	  0.14, 1 ),
				new LootPackEntry( false, PlainGems,	  0.09, 1 ),
				new LootPackEntry( false, FlawlessGems,	  0.05, 1 )				
// SOCKET ADDITION END
			} );

		public static readonly LootPack AosFilthyRich = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "2d100+200" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, MagicItems,	 33.00, 1, 4, 0, 50 ),
				new LootPackEntry( false, MagicItems,	 33.00, 1, 4, 0, 60 ),
				new LootPackEntry( false, MagicItems,	 20.00, 1, 5, 0, 75 ),
				new LootPackEntry( false, MagicItems,	  5.00, 1, 5, 0, 100 ),
				new LootPackEntry( false, Instruments,	  2.00, 1 ),

// SOCKET ADDITION START
				new LootPackEntry( false, ChippedGems,	  0.23, 1 ),
				new LootPackEntry( false, FlawedGems,	  0.14, 1 ),
				new LootPackEntry( false, PlainGems,	  0.09, 1 ),
				new LootPackEntry( false, FlawlessGems,	  0.05, 1 ),	
				new LootPackEntry( false, PerfectGems,	  0.02, 1 )				
// SOCKET ADDITION END
			} );

		public static readonly LootPack AosUltraRich = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "5d100+500" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 35, 100 ),
				new LootPackEntry( false, Instruments,	  2.00, 1 ),

// SOCKET ADDITION START
				new LootPackEntry( false, ChippedGems,	  0.25, 1 ),
				new LootPackEntry( false, FlawedGems,	  0.16, 1 ),
				new LootPackEntry( false, PlainGems,	  0.11, 1 ),
				new LootPackEntry( false, FlawlessGems,	  0.08, 1 ),	
				new LootPackEntry( false, PerfectGems,	  0.05, 1 )				
// SOCKET ADDITION END
			} );

		public static readonly LootPack AosSuperBoss = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "5d100+500" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 25, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 33, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 33, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 33, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 33, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 50, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 5, 50, 100 ),
				new LootPackEntry( false, Instruments,	  2.00, 1 ),

// SOCKET ADDITION START
				new LootPackEntry( false, ChippedGems,	  1.25, 1 ),
				new LootPackEntry( false, FlawedGems,	  1.16, 1 ),
				new LootPackEntry( false, PlainGems,	  1.11, 1 ),
				new LootPackEntry( false, FlawlessGems,	  1.08, 1 ),	
				new LootPackEntry( false, PerfectGems,	  1.05, 1 )				
// SOCKET ADDITION END
			} );
		#endregion

		#region Pre-AOS definitions
		public static readonly LootPack OldPoor = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "1d25" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, Instruments,	  0.02, 1 )
			} );

		public static readonly LootPack OldMeager = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "5d10+25" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, Instruments,	  0.10, 1 ),
				new LootPackEntry( false, MagicItems,	  1.00, 1, 1, 0, 60 ),
				new LootPackEntry( false, MagicItems,	  0.20, 1, 1, 10, 70 )
			} );

		public static readonly LootPack OldAverage = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "10d10+50" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, Instruments,	  0.40, 1 ),
				new LootPackEntry( false, MagicItems,	  5.00, 1, 1, 20, 80 ),
				new LootPackEntry( false, MagicItems,	  2.00, 1, 1, 30, 90 ),
				new LootPackEntry( false, MagicItems,	  0.50, 1, 1, 40, 100 )
			} );

		public static readonly LootPack OldRich = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "10d10+250" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, Instruments,	  1.00, 1 ),
				new LootPackEntry( false, MagicItems,	 20.00, 1, 1, 60, 100 ),
				new LootPackEntry( false, MagicItems,	 10.00, 1, 1, 65, 100 ),
				new LootPackEntry( false, MagicItems,	  1.00, 1, 1, 70, 100 )
			} );

		public static readonly LootPack OldFilthyRich = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "2d125+400" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, Instruments,	  2.00, 1 ),
				new LootPackEntry( false, MagicItems,	 33.00, 1, 1, 50, 100 ),
				new LootPackEntry( false, MagicItems,	 33.00, 1, 1, 60, 100 ),
				new LootPackEntry( false, MagicItems,	 20.00, 1, 1, 70, 100 ),
				new LootPackEntry( false, MagicItems,	  5.00, 1, 1, 80, 100 )
			} );

		public static readonly LootPack OldUltraRich = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "5d100+500" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, Instruments,	  2.00, 1 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 40, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 40, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 50, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 50, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 60, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 60, 100 )
			} );

		public static readonly LootPack OldSuperBoss = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry(  true, Gold,			100.00, "5d100+500" ),
				new LootPackEntry( true, Tokens,		100.00, "1d10+10" ),
				new LootPackEntry( false, Instruments,	  2.00, 1 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 40, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 40, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 40, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 50, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 50, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 50, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 60, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 60, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 60, 100 ),
				new LootPackEntry( false, MagicItems,	100.00, 1, 1, 70, 100 )
			} );
		#endregion

		#region Generic accessors
		public static LootPack Poor{ get{ return Core.AOS ? AosPoor : OldPoor; } }
		public static LootPack Meager{ get{ return Core.AOS ? AosMeager : OldMeager; } }
		public static LootPack Average{ get{ return Core.AOS ? AosAverage : OldAverage; } }
		public static LootPack Rich{ get{ return Core.AOS ? AosRich : OldRich; } }
		public static LootPack FilthyRich{ get{ return Core.AOS ? AosFilthyRich : OldFilthyRich; } }
		public static LootPack UltraRich{ get{ return Core.AOS ? AosUltraRich : OldUltraRich; } }
		public static LootPack SuperBoss{ get{ return Core.AOS ? AosSuperBoss : OldSuperBoss; } }
		#endregion

		public static readonly LootPack LowScrolls = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry( false, LowScrollItems,	100.00, 1 )
			} );

		public static readonly LootPack MedScrolls = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry( false, MedScrollItems,	100.00, 1 )
			} );

		public static readonly LootPack HighScrolls = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry( false, HighScrollItems,	100.00, 1 )
			} );

		public static readonly LootPack Gems = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry( false, GemItems,			100.00, 1 )
			} );

		public static readonly LootPack Potions = new LootPack( new LootPackEntry[]
			{
				new LootPackEntry( false, PotionItems,		100.00, 1 )
			} );
	}

	public class LootPackEntry
	{
		private int m_Chance;
		private LootPackDice m_Quantity;

		private int m_MaxProps, m_MinIntensity, m_MaxIntensity;

		private bool m_AtSpawnTime;

		private LootPackItem[] m_Items;

		public int Chance
		{
			get{ return m_Chance; }
			set{ m_Chance = value; }
		}

		public LootPackDice Quantity
		{
			get{ return m_Quantity; }
			set{ m_Quantity = value; }
		}

		public int MaxProps
		{
			get{ return m_MaxProps; }
			set{ m_MaxProps = value; }
		}

		public int MinIntensity
		{
			get{ return m_MinIntensity; }
			set{ m_MinIntensity = value; }
		}

		public int MaxIntensity
		{
			get{ return m_MaxIntensity; }
			set{ m_MaxIntensity = value; }
		}

		public LootPackItem[] Items
		{
			get{ return m_Items; }
			set{ m_Items = value; }
		}

		public Item Construct( Mobile from, int luckChance, bool spawning )
		{
			if ( m_AtSpawnTime != spawning )
				return null;

			int totalChance = 0;

			for ( int i = 0; i < m_Items.Length; ++i )
				totalChance += m_Items[i].Chance;

			int rnd = Utility.Random( totalChance );

			for ( int i = 0; i < m_Items.Length; ++i )
			{
				LootPackItem item = m_Items[i];

				if ( rnd < item.Chance )
					return Mutate( from, luckChance, item.Construct() );

				rnd -= item.Chance;
			}

			return null;
		}

		private int GetRandomOldBonus()
		{
			int rnd = Utility.Random( m_MinIntensity, m_MaxIntensity - m_MinIntensity );

			if ( 50 > rnd )
				return 1;
			else
				rnd -= 50;

			if ( 25 > rnd )
				return 2;
			else
				rnd -= 25;

			if ( 14 > rnd )
				return 3;
			else
				rnd -= 14;

			if ( 8 > rnd )
				return 4;

			return 5;
		}

		public Item Mutate( Mobile from, int luckChance, Item item )
		{
			if ( item != null )
			{
				if ( item is BaseWeapon && 1 > Utility.Random( 100 ) )
				{
					item.Delete();
					item = new FireHorn();
					return item;
				}

				if ( item is BaseWeapon || item is BaseArmor || item is BaseJewel )
				{
					if ( Core.AOS )
					{
						int bonusProps = GetBonusProperties();
						int min = m_MinIntensity;
						int max = m_MaxIntensity;

						if ( bonusProps < m_MaxProps && LootPack.CheckLuck( luckChance ) )
							++bonusProps;

						int props = 1 + bonusProps;

						if ( item is BaseWeapon )
							BaseRunicTool.ApplyAttributesTo( (BaseWeapon)item, false, luckChance, props, m_MinIntensity, m_MaxIntensity );
						else if ( item is BaseArmor )
							BaseRunicTool.ApplyAttributesTo( (BaseArmor)item, false, luckChance, props, m_MinIntensity, m_MaxIntensity );
						else if ( item is BaseJewel )
							BaseRunicTool.ApplyAttributesTo( (BaseJewel)item, false, luckChance, props, m_MinIntensity, m_MaxIntensity );
					}
					else // not aos
					{
						if ( item is BaseWeapon )
						{
							BaseWeapon weapon = (BaseWeapon)item;

							if ( 80 > Utility.Random( 100 ) )
								weapon.AccuracyLevel = (WeaponAccuracyLevel)GetRandomOldBonus();

							if ( 60 > Utility.Random( 100 ) )
								weapon.DamageLevel = (WeaponDamageLevel)GetRandomOldBonus();

							if ( 40 > Utility.Random( 100 ) )
								weapon.DurabilityLevel = (WeaponDurabilityLevel)GetRandomOldBonus();

							if ( 5 > Utility.Random( 100 ) )
								weapon.Slayer = SlayerName.Silver;

							if ( weapon.AccuracyLevel == 0 && weapon.DamageLevel == 0 && weapon.DurabilityLevel == 0 && weapon.Slayer == SlayerName.None && 5 > Utility.Random( 100 ) )
								weapon.Slayer = SlayerGroup.GetLootSlayerType( from.GetType() );
						}
						else if ( item is BaseArmor )
						{
							BaseArmor armor = (BaseArmor)item;

							if ( 80 > Utility.Random( 100 ) )
								armor.ProtectionLevel = (ArmorProtectionLevel)GetRandomOldBonus();

							if ( 40 > Utility.Random( 100 ) )
								armor.Durability = (ArmorDurabilityLevel)GetRandomOldBonus();
						}
					}
				}
				else if ( item is BaseInstrument )
				{
					SlayerName slayer = SlayerName.None;

					if ( Core.AOS )
						slayer = BaseRunicTool.GetRandomSlayer();
					else
						slayer = SlayerGroup.GetLootSlayerType( from.GetType() );

					if ( slayer == SlayerName.None )
					{
						item.Delete();
						return null;
					}

					BaseInstrument instr = (BaseInstrument)item;

					instr.Quality = InstrumentQuality.Regular;
					instr.Slayer = slayer;
				}

				if ( item.Stackable )
					item.Amount = m_Quantity.Roll();
			}

			return item;
		}

		public LootPackEntry( bool atSpawnTime, LootPackItem[] items, double chance, string quantity ) : this( atSpawnTime, items, chance, new LootPackDice( quantity ), 0, 0, 0 )
		{
		}

		public LootPackEntry( bool atSpawnTime, LootPackItem[] items, double chance, int quantity ) : this( atSpawnTime, items, chance, new LootPackDice( 0, 0, quantity ), 0, 0, 0 )
		{
		}

		public LootPackEntry( bool atSpawnTime, LootPackItem[] items, double chance, string quantity, int maxProps, int minIntensity, int maxIntensity ) : this( atSpawnTime, items, chance, new LootPackDice( quantity ), maxProps, minIntensity, maxIntensity )
		{
		}

		public LootPackEntry( bool atSpawnTime, LootPackItem[] items, double chance, int quantity, int maxProps, int minIntensity, int maxIntensity ) : this( atSpawnTime, items, chance, new LootPackDice( 0, 0, quantity ), maxProps, minIntensity, maxIntensity )
		{
		}

		public LootPackEntry( bool atSpawnTime, LootPackItem[] items, double chance, LootPackDice quantity, int maxProps, int minIntensity, int maxIntensity )
		{
			m_AtSpawnTime = atSpawnTime;
			m_Items = items;
			m_Chance = (int)(100 * chance);
			m_Quantity = quantity;
			m_MaxProps = maxProps;
			m_MinIntensity = minIntensity;
			m_MaxIntensity = maxIntensity;
		}

		public int GetBonusProperties()
		{
			int p0=0, p1=0, p2=0, p3=0, p4=0, p5=0;

			switch ( m_MaxProps )
			{
				case 1: p0= 3; p1= 1; break;
				case 2: p0= 6; p1= 3; p2= 1; break;
				case 3: p0=10; p1= 6; p2= 3; p3= 1; break;
				case 4: p0=16; p1=12; p2= 6; p3= 5; p4=1; break;
				case 5: p0=30; p1=25; p2=20; p3=15; p4=9; p5=1; break;
			}

			int pc = p0+p1+p2+p3+p4+p5;

			int rnd = Utility.Random( pc );

			if ( rnd < p5 )
				return 5;
			else
				rnd -= p5;

			if ( rnd < p4 )
				return 4;
			else
				rnd -= p4;

			if ( rnd < p3 )
				return 3;
			else
				rnd -= p3;

			if ( rnd < p2 )
				return 2;
			else
				rnd -= p2;

			if ( rnd < p1 )
				return 1;

			return 0;
		}
	}

	public class LootPackItem
	{
		private Type m_Type;
		private int m_Chance;

		public Type Type
		{
			get{ return m_Type; }
			set{ m_Type = value; }
		}

		public int Chance
		{
			get{ return m_Chance; }
			set{ m_Chance = value; }
		}

		private static Type[]   m_BlankTypes = new Type[]{ typeof( BlankScroll ) };
		private static Type[][] m_NecroTypes = new Type[][]
			{
				new Type[] // low
				{
					typeof( AnimateDeadScroll ),		typeof( BloodOathScroll ),		typeof( CorpseSkinScroll ),	typeof( CurseWeaponScroll ),
					typeof( EvilOmenScroll ),			typeof( HorrificBeastScroll ),	typeof( MindRotScroll ),	typeof( PainSpikeScroll ),
					typeof( SummonFamiliarScroll ),		typeof( WraithFormScroll )
				},
				new Type[] // med
				{
					typeof( LichFormScroll ),			typeof( PoisonStrikeScroll ),	typeof( StrangleScroll ),	typeof( WitherScroll )
				},
				new Type[] // high
				{
					typeof( VengefulSpiritScroll ),		typeof( VampiricEmbraceScroll )
				}
			};

		public static Item RandomScroll( int index, int minCircle, int maxCircle )
		{
			--minCircle;
			--maxCircle;

			int scrollCount = ((maxCircle - minCircle) + 1) * 8;

			if ( index == 0 )
				scrollCount += m_BlankTypes.Length;

			if ( Core.AOS )
				scrollCount += m_NecroTypes[index].Length;

			int rnd = Utility.Random( scrollCount );

			if ( index == 0 && rnd < m_BlankTypes.Length )
				return Loot.Construct( m_BlankTypes );
			else if ( index == 0 )
				rnd -= m_BlankTypes.Length;

			if ( Core.AOS && rnd < m_NecroTypes.Length )
				return Loot.Construct( m_NecroTypes[index] );
			else if ( Core.AOS )
				rnd -= m_NecroTypes[index].Length;

			return Loot.RandomScroll( minCircle * 8, (maxCircle * 8) + 7, SpellbookType.Regular );
		}

		public Item Construct()
		{
			try
			{
				Item item;

				if ( m_Type == typeof( BaseWeapon ) )
					item = Loot.RandomWeapon();
				else if ( m_Type == typeof( BaseArmor ) )
					item = Loot.RandomArmor();
				else if ( m_Type == typeof( BaseShield ) )
					item = Loot.RandomShield();
				else if ( m_Type == typeof( BaseJewel ) )
					item = Core.AOS ? Loot.RandomJewelry() : Loot.RandomArmorOrShieldOrWeapon();
				else if ( m_Type == typeof( BaseInstrument ) )
					item = Loot.RandomInstrument();
				else if ( m_Type == typeof( Amber ) ) // gem
					item = Loot.RandomGem();
				else if ( m_Type == typeof( ClumsyScroll ) ) // low scroll
					item = RandomScroll( 0, 1, 3 );
				else if ( m_Type == typeof( ArchCureScroll ) ) // med scroll
					item = RandomScroll( 1, 4, 7 );
				else if ( m_Type == typeof( SummonAirElementalScroll ) ) // high scroll
					item = RandomScroll( 2, 8, 8 );
				else
					item = Activator.CreateInstance( m_Type ) as Item;

				return item;
			}
			catch
			{
			}

			return null;
		}

		public LootPackItem( Type type, int chance )
		{
			m_Type = type;
			m_Chance = chance;
		}
	}

	public class LootPackDice
	{
		private int m_Count, m_Sides, m_Bonus;

		public int Count
		{
			get{ return m_Count; }
			set{ m_Count = value; }
		}

		public int Sides
		{
			get{ return m_Sides; }
			set{ m_Sides = value; }
		}

		public int Bonus
		{
			get{ return m_Bonus; }
			set{ m_Bonus = value; }
		}

		public int Roll()
		{
			int v = m_Bonus;

			for ( int i = 0; i < m_Count; ++i )
				v += Utility.Random( 1, m_Sides );

			return v;
		}

		public LootPackDice( string str )
		{
			int start = 0;
			int index = str.IndexOf( 'd', start );

			if ( index < start )
				return;

			m_Count = Utility.ToInt32( str.Substring( start, index-start ) );

			bool negative;

			start = index + 1;
			index = str.IndexOf( '+', start );

			if ( negative = (index < start) )
				index = str.IndexOf( '-', start );

			if ( index < start )
				index = str.Length;

			m_Sides = Utility.ToInt32( str.Substring( start, index-start ) );

			if ( index == str.Length )
				return;

			start = index + 1;
			index = str.Length;

			m_Bonus = Utility.ToInt32( str.Substring( start, index-start ) );

			if ( negative )
				m_Bonus *= -1;
		}

		public LootPackDice( int count, int sides, int bonus )
		{
			m_Count = count;
			m_Sides = sides;
			m_Bonus = bonus;
		}
	}
}
 

Kamilian

Wanderer
Lagg Master said:
Code:
RunUO - [[url]www.runuo.com][/url] Version 1.0.0, Build 36918
Scripts: Compiling C# scripts...failed (3 errors, 4 warnings)
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 17, column 17) Th
e keyword new is required on 'Server.Items.BaseShield.AugmentList' because it hi
des inherited member 'Server.Items.BaseArmor.AugmentList'
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0114: (line 23, column 25) 'S
erver.Items.BaseShield.SocketLabel' hides inherited member 'Server.Items.BaseArm
or.SocketLabel'. To make the current member override that implementation, add th
e override keyword. Otherwise add the new keyword.
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 26, column 14) Th
e keyword new is required on 'Server.Items.BaseShield.UsedSockets' because it hi
des inherited member 'Server.Items.BaseArmor.UsedSockets'
 - Warning: Scripts\Items\Shields\BaseShield.cs: CS0108: (line 33, column 14) Th
e keyword new is required on 'Server.Items.BaseShield.MaxSockets' because it hid
es inherited member 'Server.Items.BaseArmor.MaxSockets'
 - Error: Scripts\Custom\DefBlacksmithy.cs: CS0246: (line 284, column 23) The ty
pe or namespace name 'SocketedChaosShield' could not be found (are you missing a
 using directive or an assembly reference?)
 - Error: Scripts\Custom\DefBlacksmithy.cs: CS0246: (line 285, column 23) The ty
pe or namespace name 'SocketedOrderShield' could not be found (are you missing a
 using directive or an assembly reference?)
 - Error: Scripts\Custom\LootPack.cs: CS1501: (line 75, column 21) No overload f
or method 'GetLootingRights' takes '1' arguments
Scripts: One or more scripts failed to compile or no script files were found.
 - Press return to exit, or R to try again.


this is what i get after i added the new loot.cs file
and thanks for helping

.. if you look at LootPack.cs, the custom one included it has:

ArrayList list = BaseCreature.GetLootingRights( dead.DamageEntries, dead.HitsMax );

minus the red. I added the red section in and it cleared up the error with that.
 

Kamilian

Wanderer
I'm in the same boat. Installed everything fine, game loads no errors. I use uo:se I don't know if that would affect my drops on the gems or not. If anyone knows brainless's and I's solution please let us know :) . Great system seems really fun, just gota figure out how to get gems and weapons to drop.
 

brainless

Wanderer
Heh okay so the drop rate was REALLY LOW :)

Just grab the new lootpack.cs on page 11 and it's all good :)

Sorry for bothering, as it seems, with no reason at all. I'm familiar with the system as a player on another shard, I know it's really nice so thank you for making it. I'll go add it to my public shard now :)
 
Top