379 lines
17 KiB
C#
379 lines
17 KiB
C#
using System;
|
|
using Server.Items;
|
|
|
|
namespace Server.Engines.Craft
|
|
{
|
|
public enum AlchemyRecipes
|
|
{
|
|
BarrabHemolymphConcentrate = 900,
|
|
JukariBurnPoiltice = 901,
|
|
KurakAmbushersEssence = 902,
|
|
BarakoDraftOfMight = 903,
|
|
UraliTranceTonic = 904,
|
|
SakkhraProphylaxisPotion = 905,
|
|
}
|
|
|
|
public class DefAlchemy : CraftSystem
|
|
{
|
|
public override SkillName MainSkill
|
|
{
|
|
get
|
|
{
|
|
return SkillName.Alchemy;
|
|
}
|
|
}
|
|
|
|
public override int GumpTitleNumber
|
|
{
|
|
get
|
|
{
|
|
return 1044001;
|
|
}// <CENTER>ALCHEMY MENU</CENTER>
|
|
}
|
|
|
|
private static CraftSystem m_CraftSystem;
|
|
|
|
public static CraftSystem CraftSystem
|
|
{
|
|
get
|
|
{
|
|
if (m_CraftSystem == null)
|
|
m_CraftSystem = new DefAlchemy();
|
|
|
|
return m_CraftSystem;
|
|
}
|
|
}
|
|
|
|
public override double GetChanceAtMin(CraftItem item)
|
|
{
|
|
return 0.0; // 0%
|
|
}
|
|
|
|
private DefAlchemy()
|
|
: base(1, 1, 1.25)// base( 1, 1, 3.1 )
|
|
{
|
|
}
|
|
|
|
public override int CanCraft(Mobile from, ITool tool, Type itemType)
|
|
{
|
|
int num = 0;
|
|
|
|
if (tool == null || tool.Deleted || tool.UsesRemaining <= 0)
|
|
return 1044038; // You have worn out your tool!
|
|
else if (!tool.CheckAccessible(from, ref num))
|
|
return num; // The tool must be on your person to use.
|
|
|
|
return 0;
|
|
}
|
|
|
|
public override void PlayCraftEffect(Mobile from)
|
|
{
|
|
from.PlaySound(0x242);
|
|
}
|
|
|
|
private static readonly Type typeofPotion = typeof(BasePotion);
|
|
|
|
public static bool IsPotion(Type type)
|
|
{
|
|
return typeofPotion.IsAssignableFrom(type);
|
|
}
|
|
|
|
public override int PlayEndingEffect(Mobile from, bool failed, bool lostMaterial, bool toolBroken, int quality, bool makersMark, CraftItem item)
|
|
{
|
|
if (toolBroken)
|
|
from.SendLocalizedMessage(1044038); // You have worn out your tool
|
|
|
|
if (failed)
|
|
{
|
|
if (IsPotion(item.ItemType))
|
|
{
|
|
from.AddToBackpack(new Bottle());
|
|
return 500287; // You fail to create a useful potion.
|
|
}
|
|
else
|
|
{
|
|
return 1044043; // You failed to create the item, and some of your materials are lost.
|
|
}
|
|
}
|
|
else
|
|
{
|
|
from.PlaySound(0x240); // Sound of a filling bottle
|
|
|
|
if (IsPotion(item.ItemType))
|
|
{
|
|
if (quality == -1)
|
|
return 1048136; // You create the potion and pour it into a keg.
|
|
else
|
|
return 500279; // You pour the potion into a bottle...
|
|
}
|
|
else
|
|
{
|
|
return 1044154; // You create the item.
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void InitCraftList()
|
|
{
|
|
int index = -1;
|
|
|
|
// Healing and Curative
|
|
index = AddCraft(typeof(RefreshPotion), 1116348, 1044538, -25, 25.0, typeof(BlackPearl), 1044353, 1, 1044361);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(TotalRefreshPotion), 1116348, 1044539, 25.0, 75.0, typeof(BlackPearl), 1044353, 5, 1044361);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(LesserHealPotion), 1116348, 1044543, -25.0, 25.0, typeof(Ginseng), 1044356, 1, 1044364);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(HealPotion), 1116348, 1044544, 15.0, 65.0, typeof(Ginseng), 1044356, 3, 1044364);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(GreaterHealPotion), 1116348, 1044545, 55.0, 105.0, typeof(Ginseng), 1044356, 7, 1044364);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(LesserCurePotion), 1116348, 1044552, -10.0, 40.0, typeof(Garlic), 1044355, 1, 1044363);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(CurePotion), 1116348, 1044553, 25.0, 75.0, typeof(Garlic), 1044355, 3, 1044363);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(GreaterCurePotion), 1116348, 1044554, 65.0, 115.0, typeof(Garlic), 1044355, 6, 1044363);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
if (Core.SA)
|
|
{
|
|
index = AddCraft(typeof(ElixirOfRebirth), 1116348, 1112762, 65.0, 115.0, typeof(MedusaBlood), 1031702, 1, 1044253);
|
|
AddRes(index, typeof(SpidersSilk), 1044360, 3, 1044368);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
}
|
|
|
|
if (Core.TOL)
|
|
{
|
|
index = AddCraft(typeof(BarrabHemolymphConcentrate), 1116348, 1156724, 51.0, 151.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(Ginseng), 1044356, 20, 1044364);
|
|
AddRes(index, typeof(PlantClippings), 1112131, 5, 1044253);
|
|
AddRes(index, typeof(MyrmidexEggsac), 1156725, 5, 1044253);
|
|
AddRecipe(index, (int)AlchemyRecipes.BarrabHemolymphConcentrate);
|
|
}
|
|
|
|
// Enhancement
|
|
index = AddCraft(typeof(AgilityPotion), 1116349, 1044540, 15.0, 65.0, typeof(Bloodmoss), 1044354, 1, 1044362);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(GreaterAgilityPotion), 1116349, 1044541, 35.0, 85.0, typeof(Bloodmoss), 1044354, 3, 1044362);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(NightSightPotion), 1116349, 1044542, -25.0, 25.0, typeof(SpidersSilk), 1044360, 1, 1044368);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(StrengthPotion), 1116349, 1044546, 25.0, 75.0, typeof(MandrakeRoot), 1044357, 2, 1044365);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(GreaterStrengthPotion), 1116349, 1044547, 45.0, 95.0, typeof(MandrakeRoot), 1044357, 5, 1044365);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
if (Core.ML)
|
|
{
|
|
index = AddCraft(typeof(InvisibilityPotion), 1116349, 1074860, 65.0, 115.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(Bloodmoss), 1044354, 4, 1044362);
|
|
AddRes(index, typeof(Nightshade), 1044358, 3, 1044366);
|
|
AddRecipe(index, (int)TinkerRecipes.InvisibilityPotion);
|
|
}
|
|
|
|
if (Core.TOL)
|
|
{
|
|
index = AddCraft(typeof(JukariBurnPoiltice), 1116349, 1156726, 51.0, 151.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(BlackPearl), 1044353, 20, 1044361);
|
|
AddRes(index, typeof(Vanilla), 1080000, 10, 1080008);
|
|
AddRes(index, typeof(LavaBerry), 1156727, 5, 1044253);
|
|
AddRecipe(index, (int)AlchemyRecipes.JukariBurnPoiltice);
|
|
|
|
index = AddCraft(typeof(KurakAmbushersEssence), 1116349, 1156728, 51.0, 151.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(Bloodmoss), 1044354, 20, 1044362);
|
|
AddRes(index, typeof(BlueDiamond), 1032696, 1, 1044253);
|
|
AddRes(index, typeof(TigerPelt), 1156727, 10, 1044253);
|
|
AddRecipe(index, (int)AlchemyRecipes.KurakAmbushersEssence);
|
|
|
|
index = AddCraft(typeof(BarakoDraftOfMight), 1116349, 1156729, 51.0, 151.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(SpidersSilk), 1044360, 20, 1044368);
|
|
AddRes(index, typeof(BaseBeverage), 1022459, 10, 1044253);
|
|
AddRes(index, typeof(PerfectBanana), 1156730, 5, 1044253);
|
|
SetBeverageType(index, BeverageType.Liquor);
|
|
AddRecipe(index, (int)AlchemyRecipes.BarakoDraftOfMight);
|
|
|
|
index = AddCraft(typeof(UraliTranceTonic), 1116349, 1156734, 51.0, 151.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(MandrakeRoot), 1044357, 20, 1044365);
|
|
AddRes(index, typeof(YellowScales), 1156799, 10, 1044253);
|
|
AddRes(index, typeof(RiverMoss), 1156731, 5, 1044253);
|
|
AddRecipe(index, (int)AlchemyRecipes.UraliTranceTonic);
|
|
|
|
index = AddCraft(typeof(SakkhraProphylaxisPotion), 1116349, 1156732, 51.0, 151.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(Nightshade), 1044358, 20, 1044366);
|
|
AddRes(index, typeof(BaseBeverage), 1022503, 10, 1044253);
|
|
AddRes(index, typeof(BlueCorn), 1156733, 5, 1044253);
|
|
SetBeverageType(index, BeverageType.Wine);
|
|
AddRecipe(index, (int)AlchemyRecipes.SakkhraProphylaxisPotion);
|
|
}
|
|
|
|
// Toxic
|
|
index = AddCraft(typeof(LesserPoisonPotion), 1116350, 1044548, -5.0, 45.0, typeof(Nightshade), 1044358, 1, 1044366);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(PoisonPotion), 1116350, 1044549, 15.0, 65.0, typeof(Nightshade), 1044358, 2, 1044366);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(GreaterPoisonPotion), 1116350, 1044550, 55.0, 105.0, typeof(Nightshade), 1044358, 4, 1044366);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(DeadlyPoisonPotion), 1116350, 1044551, 90.0, 140.0, typeof(Nightshade), 1044358, 8, 1044366);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
if (Core.ML)
|
|
{
|
|
index = AddCraft(typeof(ParasiticPotion), 1116350, 1072942, 65.0, 115.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(ParasiticPlant), 1073474, 5, 1044253);
|
|
AddRecipe(index, (int)TinkerRecipes.ParasiticPotion);
|
|
|
|
index = AddCraft(typeof(DarkglowPotion), 1116350, 1072943, 65.0, 115.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(LuminescentFungi), 1073475, 5, 1044253);
|
|
AddRecipe(index, (int)TinkerRecipes.DarkglowPotion);
|
|
|
|
index = AddCraft(typeof(ScouringToxin), 1116350, 1112292, 75.0, 100.0, typeof(ToxicVenomSac), 1112291, 1, 1044253);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
}
|
|
|
|
// Explosive
|
|
index = AddCraft(typeof(LesserExplosionPotion), 1116351, 1044555, 5.0, 55.0, typeof(SulfurousAsh), 1044359, 3, 1044367);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(ExplosionPotion), 1116351, 1044556, 35.0, 85.0, typeof(SulfurousAsh), 1044359, 5, 1044367);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
index = AddCraft(typeof(GreaterExplosionPotion), 1116351, 1044557, 65.0, 115.0, typeof(SulfurousAsh), 1044359, 10, 1044367);
|
|
AddRes(index, typeof(Bottle), 1044529, 1, 500315);
|
|
|
|
if (Core.ML)
|
|
{
|
|
index = AddCraft(typeof(ConflagrationPotion), 1116351, 1072096, 55.0, 105.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(GraveDust), 1023983, 5, 1044253);
|
|
|
|
index = AddCraft(typeof(GreaterConflagrationPotion), 1116351, 1072099, 70.0, 120.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(GraveDust), 1023983, 10, 1044253);
|
|
|
|
index = AddCraft(typeof(ConfusionBlastPotion), 1116351, 1072106, 55.0, 105.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(PigIron), 1023978, 5, 1044253);
|
|
|
|
index = AddCraft(typeof(GreaterConfusionBlastPotion), 1116351, 1072109, 70.0, 120.0, typeof(Bottle), 1044529, 1, 500315);
|
|
AddRes(index, typeof(PigIron), 1023978, 10, 1044253);
|
|
}
|
|
|
|
if (Core.SA)
|
|
{
|
|
index = AddCraft(typeof(BlackPowder), 1116351, 1095826, 65.0, 115.0, typeof(SulfurousAsh), 1023980, 1, 1044253);
|
|
AddRes(index, typeof(Saltpeter), 1116302, 6, 1044253);
|
|
AddRes(index, typeof(Charcoal), 1116303, 1, 1044253);
|
|
if (Core.EJ) SetUseAllRes(index, true);
|
|
|
|
// Removed for Dark Tides Cannon Changes
|
|
if (!Core.EJ)
|
|
{
|
|
index = AddCraft(typeof(Matchcord), 1116351, 1095184, 25.0, 80.0, typeof(DarkYarn), 1023615, 1, 1044253);
|
|
AddRes(index, typeof(BaseBeverage), 1024088, 1, 1044253);
|
|
AddRes(index, typeof(Saltpeter), 1116302, 1, 1044253);
|
|
AddRes(index, typeof(Potash), 1116319, 1, 1044253);
|
|
}
|
|
|
|
index = AddCraft(typeof(FuseCord), 1116351, 1116305, 55.0, 105.0, typeof(DarkYarn), 1023615, 1, 1044253);
|
|
AddRes(index, typeof(BlackPowder), 1095826, 1, 1044253);
|
|
AddRes(index, typeof(Potash), 1116319, 1, 1044253);
|
|
SetNeedWater(index, true);
|
|
}
|
|
|
|
// Strange Brew
|
|
if (Core.SE)
|
|
{
|
|
index = AddCraft(typeof(SmokeBomb), 1116353, 1030248, 90.0, 120.0, typeof(Eggs), 1044477, 1, 1044253);
|
|
AddRes(index, typeof(Ginseng), 1044356, 3, 1044364);
|
|
}
|
|
|
|
if (Core.ML)
|
|
{
|
|
index = AddCraft(typeof(HoveringWisp), 1116353, 1072881, 75.0, 125.0, typeof(CapturedEssence), 1032686, 4, 1044253);
|
|
|
|
if (!Core.TOL) // Removed at OSI Publish 103
|
|
AddRecipe(index, (int)TinkerRecipes.HoveringWisp);
|
|
}
|
|
|
|
if (Core.SA)
|
|
{
|
|
index = AddCraft(typeof(NaturalDye), 1116353, 1112136, 75.0, 100.0, typeof(PlantPigment), 1112132, 1, 1044253);
|
|
AddRes(index, typeof(ColorFixative), 1112135, 1, 1044253);
|
|
SetItemHue(index, 2101);
|
|
SetRequireResTarget(index);
|
|
|
|
index = AddCraft(typeof(NexusCore), 1116353, 1153501, 90.0, 120.0, typeof(MandrakeRoot), 1015013, 10, 1044253);
|
|
AddRes(index, typeof(SpidersSilk), 1015007, 10, 1044253);
|
|
AddRes(index, typeof(DarkSapphire), 1032690, 5, 1044253);
|
|
AddRes(index, typeof(CrushedGlass), 1113351, 5, 1044253);
|
|
ForceNonExceptional(index);
|
|
}
|
|
|
|
// Ingrediants
|
|
if (Core.SA)
|
|
{
|
|
// Ingrediants
|
|
index = AddCraft(typeof(PlantPigment), 1044495, 1112132, 33.0, 83.0, typeof(PlantClippings), 1112131, 1, 1044253);
|
|
AddRes(index, typeof(Bottle), 1023854, 1, 1044253);
|
|
SetItemHue(index, 2101);
|
|
SetRequireResTarget(index);
|
|
|
|
index = AddCraft(typeof(ColorFixative), 1044495, 1112135, 75.0, 100.0, typeof(SilverSerpentVenom), 1112173, 1, 1044253);
|
|
AddRes(index, typeof(BaseBeverage), 1022503, 1, 1044253);
|
|
SetBeverageType(index, BeverageType.Wine);
|
|
|
|
index = AddCraft(typeof(CrystalGranules), 1044495, 1112329, 75.0, 100.0, typeof(ShimmeringCrystals), 1075095, 1, 1044253);
|
|
SetItemHue(index, 2625);
|
|
|
|
index = AddCraft(typeof(CrystalDust), 1044495, 1112328, 75.0, 100.0, typeof(CrystallineFragments), 1153988, 4, 1044253);
|
|
SetItemHue(index, 2103);
|
|
|
|
index = AddCraft(typeof(SoftenedReeds), 1044495, 1112249, 75.0, 100.0, typeof(DryReeds), 1112248, 1, 1112250);
|
|
AddRes(index, typeof(ScouringToxin), 1112292, 2, 1112326);
|
|
SetRequireResTarget(index);
|
|
SetRequiresBasketWeaving(index);
|
|
|
|
index = AddCraft(typeof(VialOfVitriol), 1044495, 1113331, 90.0, 100.0, typeof(ParasiticPotion), 1072848, 1, 1113754);
|
|
AddRes(index, typeof (Nightshade), 1044358, 30, 1044366);
|
|
AddSkill(index, SkillName.Magery, 75.0, 100.0);
|
|
|
|
index = AddCraft(typeof(BottleIchor), 1044495, 1113361, 90.0, 100.0, typeof(DarkglowPotion), 1072849, 1, 1113755);
|
|
AddRes(index, typeof(SpidersSilk), 1044360, 1, 1044368);
|
|
AddSkill(index, SkillName.Magery, 75.0, 100.0);
|
|
}
|
|
|
|
if (Core.HS)
|
|
{
|
|
index = AddCraft(typeof(Potash), 1044495, 1116319, 0.0, 50.0, typeof(Board), 1044041, 1, 1044253);
|
|
|
|
if (Core.EJ)
|
|
{
|
|
SetNeedWater(index, true);
|
|
SetUseAllRes(index, true);
|
|
}
|
|
else
|
|
{
|
|
AddRes(index, typeof(BaseBeverage), 1024088, 1, 1044253);
|
|
}
|
|
}
|
|
|
|
if (Core.SA)
|
|
{
|
|
index = AddCraft(typeof(GoldDust), 1044495, 1153504, 90.0, 120.0, typeof(Gold), 3000083, 1000, 1150747);
|
|
ForceNonExceptional(index);
|
|
}
|
|
}
|
|
}
|
|
}
|