Fix NPC voice paths to use Sound\Creature\ with .ogg format

NPC sounds are in Sound\Creature\[npctype]\ not Sound\Character\.
Changed to use correct paths like humanmalestandardnpc/humanfemalestandardnpc
with .ogg extension. This matches actual WoW 3.3.5a structure.
This commit is contained in:
Kelsi 2026-02-09 01:52:07 -08:00
parent ed2c844cb0
commit 85cfe5793b

View file

@ -20,17 +20,15 @@ bool NpcVoiceManager::initialize(pipeline::AssetManager* assets) {
return false; return false;
} }
// Probe for actual sound file paths // Probe for actual sound file paths (NPC sounds are in Sound\Creature\)
LOG_INFO("=== Probing for NPC voice files ==="); LOG_INFO("=== Probing for NPC voice files ===");
std::vector<std::string> testPaths = { std::vector<std::string> testPaths = {
"Sound\\Character\\Human\\HumanMaleHello01.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting01.ogg",
"Sound\\Character\\Human\\HumanMaleGreeting01.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting02.ogg",
"Sound\\Character\\Human\\HumanVocMaleHello01.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting01.ogg",
"Sound\\Character\\PCVoice\\Human\\Male\\HumanMaleHello01.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting02.ogg",
"Sound\\Character\\PCGuildGreetings\\HumanMaleGuildGreeting01.wav", "Sound\\Creature\\NPCGhoul\\NPCGhoulVendor01.ogg",
"Sound\\Character\\Human\\HumanVocMaleYes01.wav", "Sound\\Creature\\NPCGhoul\\NPCGhoulVendor02.ogg",
"Sound\\Character\\Human\\HumanVocMaleYes02.wav",
"Sound\\Character\\Human\\HumanVocMaleYes03.wav",
}; };
for (const auto& path : testPaths) { for (const auto& path : testPaths) {
bool exists = assetManager_->fileExists(path); bool exists = assetManager_->fileExists(path);
@ -67,25 +65,15 @@ void NpcVoiceManager::shutdown() {
void NpcVoiceManager::loadVoiceSounds() { void NpcVoiceManager::loadVoiceSounds() {
if (!assetManager_) return; if (!assetManager_) return;
// Generic NPC greetings using various emotes (Hello, Yes, Thanks) // Generic NPC greetings (using standard NPC creature sounds in .ogg format)
// These are the actual NPC vendor/innkeeper greetings from Sound/Creature/
std::vector<std::string> genericPaths = { std::vector<std::string> genericPaths = {
"Sound\\Character\\Human\\HumanMaleHello01.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting01.ogg",
"Sound\\Character\\Human\\HumanMaleHello02.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting02.ogg",
"Sound\\Character\\Human\\HumanMaleHello03.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting03.ogg",
"Sound\\Character\\Human\\HumanMaleYes01.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting01.ogg",
"Sound\\Character\\Human\\HumanMaleYes02.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting02.ogg",
"Sound\\Character\\Human\\HumanMaleYes03.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting03.ogg",
"Sound\\Character\\Human\\HumanFemaleHello01.wav",
"Sound\\Character\\Human\\HumanFemaleHello02.wav",
"Sound\\Character\\Human\\HumanFemaleYes01.wav",
"Sound\\Character\\Human\\HumanFemaleYes02.wav",
"Sound\\Character\\Dwarf\\DwarfMaleHello01.wav",
"Sound\\Character\\Dwarf\\DwarfMaleHello02.wav",
"Sound\\Character\\Dwarf\\DwarfMaleYes01.wav",
"Sound\\Character\\NightElf\\NightElfMaleHello01.wav",
"Sound\\Character\\NightElf\\NightElfMaleYes01.wav",
"Sound\\Character\\NightElf\\NightElfFemaleHello01.wav",
"Sound\\Character\\NightElf\\NightElfFemaleYes01.wav",
}; };
auto& genericVoices = voiceLibrary_[VoiceType::GENERIC]; auto& genericVoices = voiceLibrary_[VoiceType::GENERIC];
@ -96,13 +84,11 @@ void NpcVoiceManager::loadVoiceSounds() {
} }
} }
// Human male // Human male NPCs
std::vector<std::string> humanMalePaths = { std::vector<std::string> humanMalePaths = {
"Sound\\Character\\Human\\HumanMaleHello01.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting01.ogg",
"Sound\\Character\\Human\\HumanMaleHello02.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting02.ogg",
"Sound\\Character\\Human\\HumanMaleHello03.wav", "Sound\\Creature\\humanmalestandardnpc\\humanmalestandardnpcgreeting03.ogg",
"Sound\\Character\\Human\\HumanMaleYes01.wav",
"Sound\\Character\\Human\\HumanMaleYes02.wav",
}; };
auto& humanMale = voiceLibrary_[VoiceType::HUMAN_MALE]; auto& humanMale = voiceLibrary_[VoiceType::HUMAN_MALE];
for (const auto& path : humanMalePaths) { for (const auto& path : humanMalePaths) {
@ -112,11 +98,11 @@ void NpcVoiceManager::loadVoiceSounds() {
} }
} }
// Human female // Human female NPCs
std::vector<std::string> humanFemalePaths = { std::vector<std::string> humanFemalePaths = {
"Sound\\Character\\Human\\HumanFemaleHello01.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting01.ogg",
"Sound\\Character\\Human\\HumanFemaleHello02.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting02.ogg",
"Sound\\Character\\Human\\HumanFemaleYes01.wav", "Sound\\Creature\\humanfemalestandardnpc\\humanfemalestandardnpcgreeting03.ogg",
}; };
auto& humanFemale = voiceLibrary_[VoiceType::HUMAN_FEMALE]; auto& humanFemale = voiceLibrary_[VoiceType::HUMAN_FEMALE];
for (const auto& path : humanFemalePaths) { for (const auto& path : humanFemalePaths) {
@ -126,45 +112,8 @@ void NpcVoiceManager::loadVoiceSounds() {
} }
} }
// Dwarf male // TODO: Add other race-specific NPC greetings when needed
std::vector<std::string> dwarfMalePaths = { // For now, all NPCs will use human standard greetings as fallback
"Sound\\Character\\Dwarf\\DwarfMaleHello01.wav",
"Sound\\Character\\Dwarf\\DwarfMaleHello02.wav",
"Sound\\Character\\Dwarf\\DwarfMaleYes01.wav",
};
auto& dwarfMale = voiceLibrary_[VoiceType::DWARF_MALE];
for (const auto& path : dwarfMalePaths) {
VoiceSample sample;
if (loadSound(path, sample)) {
dwarfMale.push_back(std::move(sample));
}
}
// Night elf male
std::vector<std::string> nelfMalePaths = {
"Sound\\Character\\NightElf\\NightElfMaleHello01.wav",
"Sound\\Character\\NightElf\\NightElfMaleYes01.wav",
};
auto& nelfMale = voiceLibrary_[VoiceType::NIGHTELF_MALE];
for (const auto& path : nelfMalePaths) {
VoiceSample sample;
if (loadSound(path, sample)) {
nelfMale.push_back(std::move(sample));
}
}
// Night elf female
std::vector<std::string> nelfFemalePaths = {
"Sound\\Character\\NightElf\\NightElfFemaleHello01.wav",
"Sound\\Character\\NightElf\\NightElfFemaleYes01.wav",
};
auto& nelfFemale = voiceLibrary_[VoiceType::NIGHTELF_FEMALE];
for (const auto& path : nelfFemalePaths) {
VoiceSample sample;
if (loadSound(path, sample)) {
nelfFemale.push_back(std::move(sample));
}
}
// Log loaded voice types // Log loaded voice types
int totalLoaded = 0; int totalLoaded = 0;