From 4979da69325e3038073d9e10cedf9ef04b55e58d Mon Sep 17 00:00:00 2001 From: catapultam-habeo <97849758+catapultam-habeo@users.noreply.github.com> Date: Mon, 19 Aug 2024 20:57:34 -0500 Subject: [PATCH] [Bug Fix] Apply Race & Class restrictions to Auto-Combines (#4452) --- zone/tradeskills.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/zone/tradeskills.cpp b/zone/tradeskills.cpp index f44ce19d6..d0abc1b5f 100644 --- a/zone/tradeskills.cpp +++ b/zone/tradeskills.cpp @@ -625,6 +625,41 @@ void Object::HandleAutoCombine(Client* user, const RecipeAutoCombine_Struct* rac return; } + if (spec.tradeskill == EQ::skills::SkillAlchemy) { + if (!user->GetClass() == Class::Shaman) { + user->Message(Chat::Red, "This tradeskill can only be performed by a shaman."); + auto outapp = new EQApplicationPacket(OP_TradeSkillCombine, 0); + user->QueuePacket(outapp); + safe_delete(outapp); + return; + } + else if (user->GetLevel() < MIN_LEVEL_ALCHEMY) { + user->Message(Chat::Red, "You cannot perform alchemy until you reach level %i.", MIN_LEVEL_ALCHEMY); + auto outapp = new EQApplicationPacket(OP_TradeSkillCombine, 0); + user->QueuePacket(outapp); + safe_delete(outapp); + return; + } + } + else if (spec.tradeskill == EQ::skills::SkillTinkering) { + if (user->GetRace() != GNOME) { + user->Message(Chat::Red, "Only gnomes can tinker."); + auto outapp = new EQApplicationPacket(OP_TradeSkillCombine, 0); + user->QueuePacket(outapp); + safe_delete(outapp); + return; + } + } + else if (spec.tradeskill == EQ::skills::SkillMakePoison) { + if (!user->GetClass() == Class::Rogue) { + user->Message(Chat::Red, "Only rogues can mix poisons."); + auto outapp = new EQApplicationPacket(OP_TradeSkillCombine, 0); + user->QueuePacket(outapp); + safe_delete(outapp); + return; + } + } + //pull the list of components const auto query = fmt::format("SELECT item_id, componentcount " "FROM tradeskill_recipe_entries "