Bumping this because the full fix was never fully clarified.
Also, if the server-side check is removed, what's stopping someone from just manually removing their own client-side check and placing talent points however they want?
I'm very new to emulation so apologies if I made a mistake and please correct me.
You don't have to change the server-side check, you can just change it to whatever you like. Client-side and server-side talent requirements should always be identical, otherwise you get either:
-a bug like in the OP's pic where the player's client says that you can put a point in the next row of talents, but you can't (because the client-side requirement is more relaxed than the server side one)
or:
-the opposite, where at some point the next tier is grayed out but you can still learn talents from it (sort of like the vulnerability you describe, except the player doesn't even need to modify their client to get access to talents that the server thinks you can learn)
To modify the required number of talent points spent to unlock the next tier/row (TrinityCore WotLK):
- in InterfaceFrameXMLTalentFrameBase.lua change PLAYER_TALENTS_PER_TIER to your desired points requirement. This is the client-side (cosmetic) change. Every player needs to have this.
- in gameEntitiesPlayerPlayer.cpp change this part:
if (spentPoints < (talentInfo->Row * MAX_TALENT_RANK))
to something like this (note the added parentheses to account for order of operations):
if (spentPoints < (talentInfo->Row * (MAX_TALENT_RANK - 2) ))
- Hunter pet talents: if you want to change hunter pet talent requirements per tier, you need to change PET_TALENTS_PER_TIER in TalentFrameBase.lua like you did for player talents, and in Player.cpp, make the same change you did for player talents, except in Player::LearnPetTalent this time, where it reads:
if (spentPoints < (talentInfo->Row * MAX_PET_TALENT_RANK))
WoW will crash if you try to start it with modified interface files, so you (and everyone else using the client-side modification) need to use a cracked Wow.exe found
here.
In this case, the server-side requirement would be 5 - 2 = 3 per tier (3 points spent required for tier 2, 6 points spent required for tier 3, etc), and you would likewise set PLAYER_TALENTS_PER_TIER to 3 to avoid bugs. MAX_TALENT_RANK is defined as 5 in gameDataStoresDBCStructure.h, but it's used for other things and I don't know what the results would be if you changed it directly. MAX_PET_TALENT_RANK is defined as 3.
In the following image I set the per-tier requirement to 4 points spent:
Edit: see next post to fix mouseover tooltips and preview talents!
Unfortunately this has a minor cosmetic bug. Even though you can change when tiers unlock, if you mouse over a talent that you don't meet the original points requirement for, it puts "Requires X points in Y Talents" in the tooltip, and doesn't have the green "Click to learn" text at the bottom.
Moving a talent to an earlier row client-side affects whether a talent is deemed out of the player's reach or not, as the "Requires" text goes away and the "Click to learn" text appears, so I assume this requires another client-side edit, but I have no idea where.
All this required was changing the row for Soul Siphon in Talent.dbc, so the mouseover tooltip for talents somehow (directly or indirectly) looks at that value, right?
Does anyone know how to fix this? Unfortunately the download for stoneharry's Edge of Chaos client is no longer available at that link, so I can't check how it was done there (if at all).