Scripts/Commands: Fixed .modify gender not setting correct customizations

Port From (https://github.com/TrinityCore/TrinityCore/commit/1d51013b71d46a2825519cdb85d7049109b226ae)
This commit is contained in:
hondacrx
2021-01-26 18:27:47 -05:00
parent 663b230e67
commit 39f0ecfc83
@@ -597,6 +597,39 @@ namespace Game.Chat
// Change display ID
target.InitDisplayIds();
target.RestoreDisplayId(false);
Global.CharacterCacheStorage.UpdateCharacterGender(target.GetGUID(), (byte)gender);
// Generate random customizations
List<ChrCustomizationChoice> customizations = new List<ChrCustomizationChoice>();
var options = Global.DB2Mgr.GetCustomiztionOptions(target.GetRace(), gender);
WorldSession worldSession = target.GetSession();
foreach (ChrCustomizationOptionRecord option in options)
{
ChrCustomizationReqRecord optionReq = CliDB.ChrCustomizationReqStorage.LookupByKey(option.ChrCustomizationReqID);
if (optionReq != null && !worldSession.MeetsChrCustomizationReq(optionReq, target.GetClass(), false, customizations))
continue;
// Loop over the options until the first one fits
var choicesForOption = Global.DB2Mgr.GetCustomiztionChoices(option.Id);
foreach (ChrCustomizationChoiceRecord choiceForOption in choicesForOption)
{
var choiceReq = CliDB.ChrCustomizationReqStorage.LookupByKey(choiceForOption.ChrCustomizationReqID);
if (choiceReq != null && !worldSession.MeetsChrCustomizationReq(choiceReq, target.GetClass(), false, customizations))
continue;
ChrCustomizationChoiceRecord choiceEntry = choicesForOption[0];
ChrCustomizationChoice choice = new ChrCustomizationChoice();
choice.ChrCustomizationOptionID = option.Id;
choice.ChrCustomizationChoiceID = choiceEntry.Id;
customizations.Add(choice);
break;
}
}
target.SetCustomizations(customizations);
handler.SendSysMessage(CypherStrings.YouChangeGender, handler.GetNameLink(target), gender);
if (handler.NeedReportToTarget(target))