From f326f30fc6bc8f805cecd30f36475f961da87282 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Mon, 29 Dec 2025 22:02:20 -0600 Subject: [PATCH] feat(glue): implement Script_GetCreateBackgroundModel --- src/glue/CCharacterCreationScript.cpp | 37 ++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/glue/CCharacterCreationScript.cpp b/src/glue/CCharacterCreationScript.cpp index 2e6a27e..3568b4a 100644 --- a/src/glue/CCharacterCreationScript.cpp +++ b/src/glue/CCharacterCreationScript.cpp @@ -276,7 +276,42 @@ int32_t Script_IsRaceClassRestricted(lua_State* L) { } int32_t Script_GetCreateBackgroundModel(lua_State* L) { - WHOA_UNIMPLEMENTED(0); + if (SFile::IsStreamingTrial()) { + lua_pushstring(L, "CharacterSelect"); + + return 1; + } + + if (CCharacterCreation::s_selectedClassID == 6) { + auto classRec = g_chrClassesDB.GetRecord(6); + + if (classRec) { + lua_pushstring(L, classRec->m_filename); + + return 1; + } + } else { + auto raceID = CCharacterCreation::s_character->m_data.raceID; + + if (raceID == 7) { + raceID = 3; + } else if (raceID == 8) { + raceID = 2; + } + + auto raceRec = g_chrRacesDB.GetRecord(raceID); + + if (raceRec) { + lua_pushstring(L, raceRec->m_clientFileString); + + return 1; + } + } + + // Race or class background not found + lua_pushstring(L, ""); + + return 1; } static FrameScript_Method s_ScriptFunctions[NUM_SCRIPT_FUNCTIONS_CHAR_CREATE] = {