mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
feat: add /equipset macro command for saved equipment set switching
/equipset <name> equips a saved set by case-insensitive prefix match; /equipset with no argument lists available sets in chat.
This commit is contained in:
parent
1fd3d5fdc8
commit
167e710f92
1 changed files with 47 additions and 1 deletions
|
|
@ -5745,7 +5745,7 @@ void GameScreen::sendChatMessage(game::GameHandler& gameHandler) {
|
|||
" /gleader /groster /ginfo /gcreate /gdisband",
|
||||
"Combat: /startattack /stopattack /stopcasting /cast <spell> /duel /pvp",
|
||||
" /forfeit /follow /stopfollow /assist",
|
||||
"Items: /use <item name> /equip <item name>",
|
||||
"Items: /use <item name> /equip <item name> /equipset [name]",
|
||||
"Target: /target <name> /cleartarget /focus /clearfocus",
|
||||
"Movement: /sit /stand /kneel /dismount",
|
||||
"Misc: /played /time /zone /afk [msg] /dnd [msg] /inspect",
|
||||
|
|
@ -6553,6 +6553,52 @@ void GameScreen::sendChatMessage(game::GameHandler& gameHandler) {
|
|||
return;
|
||||
}
|
||||
|
||||
// /equipset [name] — equip a saved equipment set by name (partial match, case-insensitive)
|
||||
// /equipset — list available sets in chat
|
||||
if (cmdLower == "equipset") {
|
||||
const auto& sets = gameHandler.getEquipmentSets();
|
||||
auto sysSay = [&](const std::string& msg) {
|
||||
game::MessageChatData m;
|
||||
m.type = game::ChatType::SYSTEM;
|
||||
m.language = game::ChatLanguage::UNIVERSAL;
|
||||
m.message = msg;
|
||||
gameHandler.addLocalChatMessage(m);
|
||||
};
|
||||
if (spacePos == std::string::npos) {
|
||||
// No argument: list available sets
|
||||
if (sets.empty()) {
|
||||
sysSay("[System] No equipment sets saved.");
|
||||
} else {
|
||||
sysSay("[System] Equipment sets:");
|
||||
for (const auto& es : sets)
|
||||
sysSay(" " + es.name);
|
||||
}
|
||||
} else {
|
||||
std::string setName = command.substr(spacePos + 1);
|
||||
while (!setName.empty() && setName.front() == ' ') setName.erase(setName.begin());
|
||||
while (!setName.empty() && setName.back() == ' ') setName.pop_back();
|
||||
// Case-insensitive prefix match
|
||||
std::string setLower = setName;
|
||||
std::transform(setLower.begin(), setLower.end(), setLower.begin(), ::tolower);
|
||||
const game::GameHandler::EquipmentSetInfo* found = nullptr;
|
||||
for (const auto& es : sets) {
|
||||
std::string nameLow = es.name;
|
||||
std::transform(nameLow.begin(), nameLow.end(), nameLow.begin(), ::tolower);
|
||||
if (nameLow == setLower || nameLow.find(setLower) == 0) {
|
||||
found = &es;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
gameHandler.useEquipmentSet(found->setId);
|
||||
} else {
|
||||
sysSay("[System] No equipment set matching '" + setName + "'.");
|
||||
}
|
||||
}
|
||||
chatInputBuffer[0] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
// /castsequence [conds] [reset=N/target/combat] Spell1, Spell2, ...
|
||||
// Cycles through the spell list on successive presses; resets per the reset= spec.
|
||||
if (cmdLower == "castsequence" && spacePos != std::string::npos) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue