Core/Chat: Allow incorrect spell/skill language assignments to mirror client behavior

Port From (https://github.com/TrinityCore/TrinityCore/commit/14098b28b39bc9d1ea17d18a7ecd3dd610f29cdc)
This commit is contained in:
hondacrx
2021-05-03 22:15:02 -04:00
parent 89633000d1
commit cbb22d291e
10 changed files with 89 additions and 132 deletions
+12 -11
View File
@@ -1807,19 +1807,20 @@ namespace Game
if (condition.LanguageID != 0)
{
LanguageDesc langDesc = Global.LanguageMgr.GetLanguageDescById((Language)condition.LanguageID);
if (langDesc != null)
int languageSkill = 0;
if (player.HasAuraTypeWithMiscvalue(AuraType.ComprehendLanguage, condition.LanguageID))
languageSkill = 300;
else
{
uint languageSkill = player.GetSkillValue((SkillType)langDesc.SkillId);
if (languageSkill == 0 && player.HasAuraTypeWithMiscvalue(AuraType.ComprehendLanguage, condition.LanguageID))
languageSkill = 300;
if (condition.MinLanguage != 0 && languageSkill < condition.MinLanguage)
return false;
if (condition.MaxLanguage != 0 && languageSkill > condition.MaxLanguage)
return false;
foreach (var languageDesc in Global.LanguageMgr.GetLanguageDescById((Language)condition.LanguageID))
languageSkill = Math.Max(languageSkill, player.GetSkillValue((SkillType)languageDesc.SkillId));
}
if (condition.MinLanguage != 0 && languageSkill < condition.MinLanguage)
return false;
if (condition.MaxLanguage != 0 && languageSkill > condition.MaxLanguage)
return false;
}
if (condition.MinFactionID[0] != 0 && condition.MinFactionID[1] != 0 && condition.MinFactionID[2] != 0 && condition.MaxFactionID != 0)