From 15611810daa19c2fbcccf6a4d8f7ba95d7ff7a06 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 19 Dec 2020 20:02:57 +0100 Subject: Core/Players: Fixed worgen character creation Closes #25731 --- src/server/game/DataStores/DB2Stores.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 70d54661a19..d09920fb960 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -974,6 +974,11 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul if (ChrCustomizationChoiceEntry const* customizationChoice = sChrCustomizationChoiceStore.LookupEntry(reqChoice->ChrCustomizationChoiceID)) _chrCustomizationRequiredChoices[reqChoice->ChrCustomizationReqID][customizationChoice->ChrCustomizationOptionID].push_back(reqChoice->ChrCustomizationChoiceID); + std::unordered_map parentRaces; + for (ChrRacesEntry const* chrRace : sChrRacesStore) + if (chrRace->UnalteredVisualRaceID) + parentRaces[chrRace->UnalteredVisualRaceID] = chrRace->ID; + for (ChrRaceXChrModelEntry const* raceModel : sChrRaceXChrModelStore) { if (ChrModelEntry const* model = sChrModelStore.LookupEntry(raceModel->ChrModelID)) @@ -981,7 +986,16 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul _chrModelsByRaceAndGender[{ uint8(raceModel->ChrRacesID), uint8(model->Sex) }] = model; if (std::vector const* customizationOptionsForModel = Trinity::Containers::MapGetValuePtr(customizationOptionsByModel, model->ID)) - _chrCustomizationOptionsByRaceAndGender[{ uint8(raceModel->ChrRacesID), uint8(model->Sex) }] = *customizationOptionsForModel; + { + std::vector& raceOptions = _chrCustomizationOptionsByRaceAndGender[{ uint8(raceModel->ChrRacesID), uint8(model->Sex) }]; + raceOptions.insert(raceOptions.end(), customizationOptionsForModel->begin(), customizationOptionsForModel->end()); + + if (uint32 const* parentRace = Trinity::Containers::MapGetValuePtr(parentRaces, raceModel->ChrRacesID)) + { + std::vector& parentRaceOptions = _chrCustomizationOptionsByRaceAndGender[{ uint8(*parentRace), uint8(model->Sex) }]; + parentRaceOptions.insert(parentRaceOptions.end(), customizationOptionsForModel->begin(), customizationOptionsForModel->end()); + } + } // link shapeshift displays to race/gender/form for (std::pair> const& shapeshiftOptionsForModel : Trinity::Containers::MapEqualRange(shapeshiftFormByModel, model->ID)) -- cgit v1.2.3