From bc746dbf1428a116f6ceb3ff8b93a53a2c616e9b Mon Sep 17 00:00:00 2001 From: mark1145 Date: Sat, 6 Aug 2022 23:53:02 +1000 Subject: [PATCH] fix: Fixes exceptional crafting chance (#1136) --- .../UOContent/Engines/Craft/Core/CraftItem.cs | 17 ++++++----------- .../Items/Skill Items/Misc/RecipeScroll.cs | 6 ++---- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/Projects/UOContent/Engines/Craft/Core/CraftItem.cs b/Projects/UOContent/Engines/Craft/Core/CraftItem.cs index ebd16a6ef..cbbe57768 100644 --- a/Projects/UOContent/Engines/Craft/Core/CraftItem.cs +++ b/Projects/UOContent/Engines/Craft/Core/CraftItem.cs @@ -813,8 +813,7 @@ namespace Server.Engines.Craft public bool CheckSkills( Mobile from, Type typeRes, CraftSystem craftSystem, ref int quality, out bool allRequiredSkills - ) => - CheckSkills(from, typeRes, craftSystem, ref quality, out allRequiredSkills, true); + ) => CheckSkills(from, typeRes, craftSystem, ref quality, out allRequiredSkills, true); public bool CheckSkills( Mobile from, Type typeRes, CraftSystem craftSystem, ref int quality, @@ -873,19 +872,15 @@ namespace Server.Engines.Craft return 0; } - double chance = craftSystem.GetChanceAtMin(this) + (valMainSkill - minMainSkill) / (maxMainSkill - minMainSkill) * - (1.0 - craftSystem.GetChanceAtMin(this)); + var minChance = craftSystem.GetChanceAtMin(this); - if (allRequiredSkills && from.Talisman is BaseTalisman talisman && talisman.Skill == craftSystem.MainSkill) + double chance = minChance + (valMainSkill - minMainSkill) / (maxMainSkill - minMainSkill) * (1.0 - minChance); + + if (from.Talisman is BaseTalisman talisman && talisman.Skill == craftSystem.MainSkill) { chance += talisman.SuccessBonus / 100.0; } - if (allRequiredSkills && valMainSkill >= maxMainSkill) - { - chance = 1.0; - } - return chance; } @@ -914,7 +909,7 @@ namespace Server.Engines.Craft var chance = GetSuccessChance(from, typeRes, craftSystem, false, out var allRequiredSkills); - if (!allRequiredSkills || !(chance >= 0.0)) + if (!allRequiredSkills || chance <= 0.0) { from.EndAction(); from.SendGump( diff --git a/Projects/UOContent/Items/Skill Items/Misc/RecipeScroll.cs b/Projects/UOContent/Items/Skill Items/Misc/RecipeScroll.cs index e9a5125e3..9f7d08298 100644 --- a/Projects/UOContent/Items/Skill Items/Misc/RecipeScroll.cs +++ b/Projects/UOContent/Items/Skill Items/Misc/RecipeScroll.cs @@ -79,10 +79,8 @@ namespace Server.Items if (allRequiredSkills && chance >= 0.0) { - pm.SendLocalizedMessage( - 1073451, - r.TextDefinition.ToString() - ); // You have learned a new recipe: ~1_RECIPE~ + // You have learned a new recipe: ~1_RECIPE~ + pm.SendLocalizedMessage(1073451, r.TextDefinition.ToString()); pm.AcquireRecipe(r); Delete(); }