From 742305fa93bf3794dfaa981cb10d0e535277076a Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 26 Sep 2026 21:04:43 -0300 Subject: [PATCH] feat(Scripts/Commands): Show boss name in instance setbossstate (#27818) --- .../rev_1790464941313148300.sql | 5 +++ src/server/scripts/Commands/cs_instance.cpp | 44 ++++++++++++------- 2 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1790464941313148300.sql diff --git a/data/sql/updates/pending_db_world/rev_1790464941313148300.sql b/data/sql/updates/pending_db_world/rev_1790464941313148300.sql new file mode 100644 index 0000000000..627ce7a642 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1790464941313148300.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `acore_string` WHERE `entry` IN (5057, 5058); +INSERT INTO `acore_string` (`entry`, `content_default`, `locale_koKR`, `locale_frFR`, `locale_deDE`, `locale_zhCN`, `locale_zhTW`, `locale_esES`, `locale_esMX`, `locale_ruRU`) VALUES +(5057,'Boss id {} ({}) state is now set to {} ({}).',NULL,NULL,'Boss-ID {} ({}) Status wurde auf {} ({}) gesetzt.',NULL,NULL,'Estado del jefe {} ({}) establecido a {} ({}).','Estado del jefe {} ({}) establecido a {} ({}).',NULL), +(5058,'Boss id {} ({}) state is {} ({}).',NULL,NULL,'Boss-ID {} ({}) Status ist {} ({}).',NULL,NULL,'Estado del jefe {} ({}) es {} ({}).','Estado del jefe {} ({}) es {} ({}).',NULL); diff --git a/src/server/scripts/Commands/cs_instance.cpp b/src/server/scripts/Commands/cs_instance.cpp index 009624f792..495852fbce 100644 --- a/src/server/scripts/Commands/cs_instance.cpp +++ b/src/server/scripts/Commands/cs_instance.cpp @@ -198,7 +198,8 @@ public: map->GetInstanceScript()->SetBossState(encounterId, EncounterState(state)); std::string stateName = InstanceScript::GetBossStateName(state); - handler->PSendSysMessage(LANG_COMMAND_INST_SET_BOSS_STATE, encounterId, state, stateName); + std::string bossName = GetBossName(GetEncounterNames(map), encounterId); + handler->PSendSysMessage(LANG_COMMAND_INST_SET_BOSS_STATE, encounterId, bossName, state, stateName); return true; } @@ -233,7 +234,26 @@ public: return false; } - // Build a map of encounterIndex -> encounterName from DBC data + std::unordered_map encounterNames = GetEncounterNames(map); + + for (uint8 i = 0; i < map->GetInstanceScript()->GetEncounterCount(); ++i) + { + uint32 state = map->GetInstanceScript()->GetBossState(i); + std::string stateName = InstanceScript::GetBossStateName(state); + std::string bossName = GetBossName(encounterNames, i); + + handler->PSendSysMessage( + LANG_COMMAND_INST_GET_BOSS_STATE, + i, bossName, state, stateName); + } + + return true; + } + +private: + // Maps encounterIndex -> encounterName from DBC data + static std::unordered_map GetEncounterNames(InstanceMap const* map) + { std::unordered_map encounterNames; Difficulty difficulty = map->GetDifficulty(); @@ -266,21 +286,13 @@ public: = encounter->dbcEntry->encounterName[0]; } - for (uint8 i = 0; i < map->GetInstanceScript()->GetEncounterCount(); ++i) - { - uint32 state = map->GetInstanceScript()->GetBossState(i); - std::string stateName = InstanceScript::GetBossStateName(state); + return encounterNames; + } - auto it = encounterNames.find(i); - std::string bossName = (it != encounterNames.end() - && it->second) ? it->second : "Unknown"; - - handler->PSendSysMessage( - LANG_COMMAND_INST_GET_BOSS_STATE, - i, bossName, state, stateName); - } - - return true; + static std::string GetBossName(std::unordered_map const& encounterNames, uint32 encounterId) + { + auto it = encounterNames.find(encounterId); + return (it != encounterNames.end() && it->second) ? it->second : "Unknown"; } };