From ca4b266db6b00a865157f34753d72b8a49223ac1 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sun, 4 Jan 2026 19:53:49 -0600 Subject: [PATCH] feat(glue): implement CCharacterCreation::GetRandomRaceAndSex --- src/glue/CCharacterCreation.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/glue/CCharacterCreation.cpp b/src/glue/CCharacterCreation.cpp index f52c154..531d5f7 100644 --- a/src/glue/CCharacterCreation.cpp +++ b/src/glue/CCharacterCreation.cpp @@ -1,12 +1,16 @@ #include "glue/CCharacterCreation.hpp" #include "glue/CCharacterSelection.hpp" +#include "client/ClientServices.hpp" #include "component/CCharacterComponent.hpp" #include "component/Types.hpp" #include "db/Db.hpp" #include "glue/CGlueLoading.hpp" #include "model/CM2Shared.hpp" +#include "net/Connection.hpp" #include "object/client/Player_C.hpp" #include "ui/simple/CSimpleModelFFX.hpp" +#include "util/Random.hpp" +#include CCharacterComponent* CCharacterCreation::s_character; CSimpleModelFFX* CCharacterCreation::s_charCustomizeFrame; @@ -109,9 +113,18 @@ int32_t CCharacterCreation::GetRandomClassID() { } void CCharacterCreation::GetRandomRaceAndSex(ComponentData* data) { - // TODO - data->raceID = 1; - data->sexID = UNITSEX_MALE; + data->sexID = CRandom::dice(2, g_rndSeed); + + ChrRacesRec* raceRec; + + do { + auto raceIndex = CRandom::dice(CCharacterCreation::s_races.Count(), g_rndSeed); + auto raceID = CCharacterCreation::s_races[raceIndex]; + + data->raceID = raceID; + + raceRec = g_chrRacesDB.GetRecord(raceID); + } while (raceRec->m_requiredExpansion > ClientServices::Connection()->m_accountExpansion); } int32_t CCharacterCreation::GetSelectedRaceID() {