From 360ddbdf862780c35664d44e15f9de9a3be13dab Mon Sep 17 00:00:00 2001 From: Meltie2013 Date: Sat, 21 Oct 2023 23:21:52 -0500 Subject: [PATCH] Fix Trade Skill Limit (#192) * Fix trade skill max limit count - Removed unused configuration - Removed GM Ignore configurations Notice: With GM Ignore configurations removed, trade skill count works as intended again. Accounts with higher permission can still learn additional trade skills for testing or debugging. As before there was no limit to how many you could learn before this commit. Co-authored-by: Fyre * Update Configuration Version 2023031100 -> 2023053000 * Fix an incorrect check method --------- Co-authored-by: Fyre --- cmake/MangosParams.cmake | 2 +- src/game/Object/Player.cpp | 34 +++++++++++++------------------- src/game/WorldHandlers/World.cpp | 4 ---- src/game/WorldHandlers/World.h | 3 --- src/mangosd/mangosd.conf.dist.in | 15 -------------- 5 files changed, 15 insertions(+), 43 deletions(-) diff --git a/cmake/MangosParams.cmake b/cmake/MangosParams.cmake index bc020d8eb..9020f2d09 100644 --- a/cmake/MangosParams.cmake +++ b/cmake/MangosParams.cmake @@ -1,5 +1,5 @@ set(MANGOS_EXP "TBC") set(MANGOS_PKG "Mangos One") -set(MANGOS_WORLD_VER 2023062700) +set(MANGOS_WORLD_VER 2023102200) set(MANGOS_REALM_VER 2021010100) set(MANGOS_AHBOT_VER 2021010100) diff --git a/src/game/Object/Player.cpp b/src/game/Object/Player.cpp index 6e93eb30c..9255d651f 100644 --- a/src/game/Object/Player.cpp +++ b/src/game/Object/Player.cpp @@ -3755,12 +3755,11 @@ void Player::removeSpell(uint32 spell_id, bool disabled, bool learn_low_rank, bo UpdateFreeTalentPoints(false); } - // update free primary prof.points (if not overflow setting, can be in case GM use before .learn prof. learning) + // update free primary prof.points (if any, can be none in case GM .learn prof. learning) if (sSpellMgr.IsPrimaryProfessionFirstRankSpell(spell_id)) { uint32 freeProfs = GetFreePrimaryProfessionPoints() + 1; - uint32 maxProfs = GetSession()->GetSecurity() < AccountTypes(sWorld.getConfig(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT)) ? sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL) : 10; - if (freeProfs <= maxProfs) + if (freeProfs <= sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL)) { SetFreePrimaryProfessions(freeProfs); } @@ -4444,16 +4443,7 @@ TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell return TRAINER_SPELL_RED; } - bool prof = SpellMgr::IsProfessionSpell(trainer_spell->spell); - // check level requirement - if (!prof || GetSession()->GetSecurity() < AccountTypes(sWorld.getConfig(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_LEVEL))) - { - if (getLevel() < reqLevel) - { - return TRAINER_SPELL_RED; - } - } if (SpellChainNode const* spell_chain = sSpellMgr.GetSpellChainNode(trainer_spell->spell)) { @@ -4470,12 +4460,18 @@ TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell } } + // check level requirement + bool prof = SpellMgr::IsProfessionSpell(trainer_spell->spell); + if (prof || trainer_spell->reqLevel && (trainer_spell->reqLevel) < reqLevel) + { + return TRAINER_SPELL_RED; + } + // check skill requirement - if (!prof || GetSession()->GetSecurity() < AccountTypes(sWorld.getConfig(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_SKILL))) - if (trainer_spell->reqSkill && GetBaseSkillValue(trainer_spell->reqSkill) < trainer_spell->reqSkillValue) - { - return TRAINER_SPELL_RED; - } + if (prof || trainer_spell->reqSkill && GetBaseSkillValue(trainer_spell->reqSkill) < trainer_spell->reqSkillValue) + { + return TRAINER_SPELL_RED; + } // exist, already checked at loading SpellEntry const* spell = sSpellStore.LookupEntry(trainer_spell->spell); @@ -21977,9 +21973,7 @@ template void Player::UpdateVisibilityOf(WorldObject const* viewPoint, DynamicOb void Player::InitPrimaryProfessions() { - uint32 maxProfs = GetSession()->GetSecurity() < AccountTypes(sWorld.getConfig(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT)) - ? sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL) : 10; - SetFreePrimaryProfessions(maxProfs); + SetFreePrimaryProfessions(sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL)); } void Player::SendComboPoints() diff --git a/src/game/WorldHandlers/World.cpp b/src/game/WorldHandlers/World.cpp index c2454e60e..bc23331e3 100644 --- a/src/game/WorldHandlers/World.cpp +++ b/src/game/WorldHandlers/World.cpp @@ -637,10 +637,6 @@ void World::LoadConfigSettings(bool reload) setConfigMinMax(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL, "MaxPrimaryTradeSkill", 2, 0, 10); - setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT, "TradeSkill.GMIgnore.MaxPrimarySkillsCount", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); - setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_LEVEL, "TradeSkill.GMIgnore.Level", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); - setConfigMinMax(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_SKILL, "TradeSkill.GMIgnore.Skill", SEC_CONSOLE, SEC_PLAYER, SEC_CONSOLE); - setConfigMinMax(CONFIG_UINT32_MIN_PETITION_SIGNS, "MinPetitionSigns", 9, 0, 9); setConfig(CONFIG_UINT32_GM_LOGIN_STATE, "GM.LoginState", 2); diff --git a/src/game/WorldHandlers/World.h b/src/game/WorldHandlers/World.h index d2be4e0bd..be71f6552 100644 --- a/src/game/WorldHandlers/World.h +++ b/src/game/WorldHandlers/World.h @@ -115,9 +115,6 @@ enum eConfigUInt32Values CONFIG_UINT32_MAX_SPELL_CASTS_IN_CHAIN, CONFIG_UINT32_RABBIT_DAY, CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL, - CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT, - CONFIG_UINT32_TRADE_SKILL_GMIGNORE_LEVEL, - CONFIG_UINT32_TRADE_SKILL_GMIGNORE_SKILL, CONFIG_UINT32_MIN_PETITION_SIGNS, CONFIG_UINT32_GM_LOGIN_STATE, CONFIG_UINT32_GM_VISIBLE_STATE, diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index 196215f73..6b69a6258 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -706,18 +706,6 @@ SD3ErrorLogFile = "scriptdev3-errors.log" # Default: 2 # Max : 10 # -# TradeSkill.GMIgnore.MaxPrimarySkillsCount -# GM level starting from max primary skill count requirement ignored. -# Default: 4 (Console as noneone) -# -# TradeSkill.GMIgnore.Level -# GM level starting from trade skill level requirement ignored. -# Default: 4 (Console as noneone) -# -# TradeSkill.GMIgnore.Skill -# GM level starting from trade skill skill requirement ignored. -# Default: 4 (Console as noneone) -# # MinPetitionSigns # Min signatures count to creating guild (0..9). # Default: 9 @@ -832,9 +820,6 @@ TimerBar.Breath.Max = 180 TimerBar.Fire.GMLevel = 4 TimerBar.Fire.Max = 1 MaxPrimaryTradeSkill = 2 -TradeSkill.GMIgnore.MaxPrimarySkillsCount = 4 -TradeSkill.GMIgnore.Level = 4 -TradeSkill.GMIgnore.Skill = 4 MinPetitionSigns = 9 MaxGroupXPDistance = 74 MailDeliveryDelay = 3600