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 "