Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
345
Scripts/Services/MondainsLegacyQuests/BaseReward.cs
Normal file
345
Scripts/Services/MondainsLegacyQuests/BaseReward.cs
Normal file
@@ -0,0 +1,345 @@
|
||||
#region References
|
||||
using System;
|
||||
|
||||
using Server.Engines.Craft;
|
||||
using Server.Items;
|
||||
#endregion
|
||||
|
||||
namespace Server.Engines.Quests
|
||||
{
|
||||
public class BaseReward
|
||||
{
|
||||
private static readonly int[] m_SatchelHues = new[]
|
||||
{0x1C, 0x37, 0x71, 0x3A, 0x62, 0x44, 0x59, 0x13, 0x21, 0x3, 0xD, 0x3F,}; // TODO update
|
||||
|
||||
private static readonly int[] m_RewardBagHues = new[]
|
||||
{
|
||||
// from, to,
|
||||
0x385, 0x3E9, 0x4B0, 0x4E6, 0x514, 0x54A, 0x578, 0x5AE, 0x5DC, 0x612, 0x640, 0x676, 0x6A5, 0x6DA, 0x708, 0x774
|
||||
};
|
||||
|
||||
public BaseReward(object name)
|
||||
: this(null, 1, name)
|
||||
{ }
|
||||
|
||||
public BaseReward(Type type, object name)
|
||||
: this(type, 1, name)
|
||||
{ }
|
||||
|
||||
public BaseReward(Type type, int amount, object name)
|
||||
{
|
||||
Type = type;
|
||||
Amount = amount;
|
||||
Name = name;
|
||||
}
|
||||
|
||||
public BaseQuest Quest { get; set; }
|
||||
|
||||
public Type Type { get; set; }
|
||||
|
||||
public int Amount { get; set; }
|
||||
|
||||
public object Name { get; set; }
|
||||
|
||||
public static int SatchelHue()
|
||||
{
|
||||
return m_SatchelHues[Utility.Random(m_SatchelHues.Length)];
|
||||
}
|
||||
|
||||
public static int RewardBagHue()
|
||||
{
|
||||
if (Utility.RandomDouble() < 0.005)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int row = Utility.Random(m_RewardBagHues.Length / 2) * 2;
|
||||
|
||||
return Utility.RandomMinMax(m_RewardBagHues[row], m_RewardBagHues[row + 1]);
|
||||
}
|
||||
|
||||
public static int StrongboxHue()
|
||||
{
|
||||
return Utility.RandomMinMax(0x898, 0x8B0);
|
||||
}
|
||||
|
||||
public static void ApplyMods(Item item)
|
||||
{
|
||||
if (item != null)
|
||||
{
|
||||
if (Core.SA && RandomItemGenerator.Enabled)
|
||||
{
|
||||
RunicReforging.GenerateRandomItem(item, 0, 10, 850);
|
||||
}
|
||||
else
|
||||
{
|
||||
int attributeCount = Utility.RandomMinMax(1, 5);
|
||||
if(item is BaseJewel)
|
||||
BaseRunicTool.ApplyAttributesTo((BaseJewel)item, false, 0, attributeCount, 10, 100);
|
||||
else if (item is BaseWeapon)
|
||||
BaseRunicTool.ApplyAttributesTo((BaseWeapon)item, false, 0, attributeCount, 10, 100);
|
||||
else if (item is BaseRanged)
|
||||
BaseRunicTool.ApplyAttributesTo((BaseRanged)item, false, 0, attributeCount, 10, 100);
|
||||
else if (item is BaseArmor)
|
||||
BaseRunicTool.ApplyAttributesTo((BaseArmor)item, false, 0, attributeCount, 10, 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Item Jewlery()
|
||||
{
|
||||
BaseJewel item = Loot.RandomJewelry();
|
||||
ApplyMods(item);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
public static Item FletcherRecipe()
|
||||
{
|
||||
return GetRecipe(Enum.GetValues(typeof(BowRecipes)));
|
||||
}
|
||||
|
||||
public static Item FletcherRunic()
|
||||
{
|
||||
var ran = Utility.RandomDouble();
|
||||
|
||||
if (Core.HS)
|
||||
{
|
||||
if (ran <= 0.0001)
|
||||
{
|
||||
return new RunicFletcherTool(CraftResource.Heartwood, 15);
|
||||
}
|
||||
else if (ran <= 0.0005)
|
||||
{
|
||||
return new RunicFletcherTool(CraftResource.YewWood, 25);
|
||||
}
|
||||
else if (ran <= 0.0025)
|
||||
{
|
||||
return new RunicFletcherTool(CraftResource.AshWood, 35);
|
||||
}
|
||||
else if (ran <= 0.005)
|
||||
{
|
||||
return new RunicFletcherTool(CraftResource.OakWood, 45);
|
||||
}
|
||||
}
|
||||
else if (ran <= 0.01)
|
||||
{
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
return new RunicFletcherTool(CraftResource.OakWood, 45);
|
||||
case 1:
|
||||
return new RunicFletcherTool(CraftResource.AshWood, 35);
|
||||
case 2:
|
||||
return new RunicFletcherTool(CraftResource.YewWood, 25);
|
||||
case 3:
|
||||
return new RunicFletcherTool(CraftResource.Heartwood, 15);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Item RangedWeapon()
|
||||
{
|
||||
BaseWeapon item = Loot.RandomRangedWeapon(false, true);
|
||||
ApplyMods(item);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
public static Item TailorRecipe()
|
||||
{
|
||||
return GetRecipe(new int[] { 501, 502, 503, 504, 505, 550, 551, 552 });
|
||||
}
|
||||
|
||||
public static Item Armor()
|
||||
{
|
||||
BaseArmor item = Loot.RandomArmor(false, true);
|
||||
ApplyMods(item);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
public static Item SmithRecipe()
|
||||
{
|
||||
return GetRecipe(new int[] { 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 350, 351, 352, 353, 354 });
|
||||
}
|
||||
|
||||
public static Item Weapon()
|
||||
{
|
||||
BaseWeapon item = Loot.RandomWeapon(false, true);
|
||||
ApplyMods(item);
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
public static Item TinkerRecipe()
|
||||
{
|
||||
RecipeScroll recipe = null;
|
||||
|
||||
if (0.01 > Utility.RandomDouble())
|
||||
{
|
||||
recipe = new RecipeScroll(Utility.RandomList(450, 451, 452, 453));
|
||||
}
|
||||
|
||||
return recipe;
|
||||
}
|
||||
|
||||
public static Item AlchemyRecipe()
|
||||
{
|
||||
RecipeScroll recipes;
|
||||
|
||||
if (Core.TOL)
|
||||
{
|
||||
recipes = GetRecipe(new int[] { 400, 401, 402 });
|
||||
}
|
||||
else
|
||||
{
|
||||
recipes = GetRecipe(new int[] { 400, 401, 402, 454 });
|
||||
}
|
||||
|
||||
return recipes;
|
||||
}
|
||||
|
||||
public static Item CarpentryRecipe()
|
||||
{
|
||||
int[] array = new int[24];
|
||||
|
||||
for (int i = 0; i <= 20; i++)
|
||||
{
|
||||
array[i] = 100 + i;
|
||||
}
|
||||
|
||||
array[21] = 150;
|
||||
array[22] = 151;
|
||||
array[23] = 152;
|
||||
|
||||
return GetRecipe(array);
|
||||
}
|
||||
|
||||
public static Item CarpenterRunic()
|
||||
{
|
||||
var ran = Utility.RandomDouble();
|
||||
|
||||
if (Core.HS)
|
||||
{
|
||||
if (ran <= 0.0001)
|
||||
{
|
||||
return new RunicDovetailSaw(CraftResource.Heartwood, 15);
|
||||
}
|
||||
else if (ran <= 0.0005)
|
||||
{
|
||||
return new RunicDovetailSaw(CraftResource.YewWood, 25);
|
||||
}
|
||||
else if (ran <= 0.0025)
|
||||
{
|
||||
return new RunicDovetailSaw(CraftResource.AshWood, 35);
|
||||
}
|
||||
else if (ran <= 0.005)
|
||||
{
|
||||
return new RunicDovetailSaw(CraftResource.OakWood, 45);
|
||||
}
|
||||
}
|
||||
else if (ran <= 0.01)
|
||||
{
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
return new RunicDovetailSaw(CraftResource.OakWood, 45);
|
||||
case 1:
|
||||
return new RunicDovetailSaw(CraftResource.AshWood, 35);
|
||||
case 2:
|
||||
return new RunicDovetailSaw(CraftResource.YewWood, 25);
|
||||
case 3:
|
||||
return new RunicDovetailSaw(CraftResource.Heartwood, 15);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Item RandomFurniture()
|
||||
{
|
||||
if (0.005 >= Utility.RandomDouble())
|
||||
{
|
||||
return Loot.Construct(ElvishFurniture);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Type[] ElvishFurniture =
|
||||
{
|
||||
typeof(WarriorStatueSouthDeed),
|
||||
typeof(WarriorStatueEastDeed),
|
||||
typeof(SquirrelStatueSouthDeed),
|
||||
typeof(SquirrelStatueEastDeed),
|
||||
typeof(ElvenDresserSouthDeed),
|
||||
typeof(ElvenDresserEastDeed),
|
||||
typeof(TallElvenBedSouthDeed),
|
||||
typeof(TallElvenBedEastDeed),
|
||||
typeof(StoneAnvilSouthDeed),
|
||||
typeof(StoneAnvilEastDeed),
|
||||
typeof(OrnateElvenChestEastDeed)
|
||||
};
|
||||
|
||||
public static Item CookRecipe()
|
||||
{
|
||||
return GetRecipe(Enum.GetValues(typeof(CookRecipes)));
|
||||
}
|
||||
|
||||
public static RecipeScroll GetRecipe(Array list)
|
||||
{
|
||||
var recipes = new int[list.Length];
|
||||
|
||||
int index = 0;
|
||||
int mid = -1;
|
||||
|
||||
foreach (int i in list)
|
||||
{
|
||||
int val = i - (i / 100) * 100;
|
||||
|
||||
if (val >= 50 && mid == -1)
|
||||
{
|
||||
mid = index;
|
||||
}
|
||||
|
||||
recipes[index] = i;
|
||||
index += 1;
|
||||
}
|
||||
|
||||
if (list.Length == 0) // empty list
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var ran = Utility.RandomDouble();
|
||||
|
||||
if (mid == -1 && ran <= 0.33) // only lesser recipes in list
|
||||
{
|
||||
return new RecipeScroll(recipes[Utility.Random(list.Length)]);
|
||||
}
|
||||
else if (mid == 0 && ran <= 0.01) // only greater recipes in list
|
||||
{
|
||||
return new RecipeScroll(recipes[Utility.Random(list.Length)]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ran <= 0.01)
|
||||
{
|
||||
return new RecipeScroll(recipes[Utility.RandomMinMax(mid, list.Length - 1)]);
|
||||
}
|
||||
else if (ran <= 0.33)
|
||||
{
|
||||
return new RecipeScroll(recipes[Utility.Random(mid)]);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public virtual void GiveReward()
|
||||
{ }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user