Skip to content

Commit

Permalink
Fix Trade Skill Limit (#192)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>

* Update Configuration Version
2023031100 -> 2023053000

* Fix an incorrect check method

---------

Co-authored-by: Fyre <[email protected]>
  • Loading branch information
2 people authored and billy1arm committed Oct 22, 2023
1 parent f9889b8 commit 2212e1e
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 40 deletions.
2 changes: 1 addition & 1 deletion cmake/MangosParams.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
set(MANGOS_EXP "WOTLK")
set(MANGOS_PKG "Mangos Two")
set(MANGOS_WORLD_VER 2023062700)
set(MANGOS_WORLD_VER 2023102200)
set(MANGOS_REALM_VER 2021010100)
set(MANGOS_AHBOT_VER 2021010100)
37 changes: 20 additions & 17 deletions src/game/Object/Player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4010,12 +4010,16 @@ 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;
<<<<<<< HEAD
uint32 maxProfs = GetSession()->GetSecurity() < AccountTypes(sWorld.getConfig(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT)) ? sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL) : 11;
if (freeProfs <= maxProfs)
=======
if (freeProfs <= sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL))
>>>>>>> 360ddbdf8 (Fix Trade Skill Limit (#192))
{
SetFreePrimaryProfessions(freeProfs);
}
Expand Down Expand Up @@ -4745,17 +4749,6 @@ TrainerSpellState Player::GetTrainerSpellState(TrainerSpell const* trainer_spell
return TRAINER_SPELL_RED;
}

bool prof = SpellMgr::IsProfessionSpell(trainer_spell->learnedSpell);

// 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->learnedSpell))
{
// check prev.rank requirement
Expand All @@ -4771,12 +4764,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->learnedSpell);
Expand Down Expand Up @@ -23458,9 +23457,13 @@ void Player::SetPhaseMask(uint32 newPhaseMask, bool update)

void Player::InitPrimaryProfessions()
{
<<<<<<< HEAD
uint32 maxProfs = GetSession()->GetSecurity() < AccountTypes(sWorld.getConfig(CONFIG_UINT32_TRADE_SKILL_GMIGNORE_MAX_PRIMARY_COUNT))
? sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL) : 11;
SetFreePrimaryProfessions(maxProfs);
=======
SetFreePrimaryProfessions(sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL));
>>>>>>> 360ddbdf8 (Fix Trade Skill Limit (#192))
}

void Player::SendComboPoints()
Expand Down
4 changes: 0 additions & 4 deletions src/game/WorldHandlers/World.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -660,10 +660,6 @@ void World::LoadConfigSettings(bool reload)

setConfigMinMax(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL, "MaxPrimaryTradeSkill", 2, 0, 11);

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);
Expand Down
3 changes: 0 additions & 3 deletions src/game/WorldHandlers/World.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,6 @@ enum eConfigUInt32Values
CONFIG_UINT32_BIRTHDAY_TIME,
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,
Expand Down
15 changes: 0 additions & 15 deletions src/mangosd/mangosd.conf.dist.in
Original file line number Diff line number Diff line change
Expand Up @@ -738,18 +738,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
Expand Down Expand Up @@ -895,9 +883,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
Expand Down

0 comments on commit 2212e1e

Please sign in to comment.