From 19e7f0a6b1aab54a5df13132e285123125e05366 Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Tue, 22 Nov 2022 09:14:08 -0500 Subject: [PATCH] [Commands] Cleanup #heromodel Command. (#2566) - Cleanup messages and logic. --- zone/command.cpp | 2 +- zone/gm_commands/heromodel.cpp | 53 ++++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/zone/command.cpp b/zone/command.cpp index a18f92ea53..d823a3c17b 100644 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -183,7 +183,7 @@ int command_init(void) command_add("hatelist", "Display hate list for NPC.", AccountStatus::QuestTroupe, command_hatelist) || command_add("heal", "Completely heal your target", AccountStatus::Steward, command_heal) || command_add("help", "[Search Criteria] - List available commands and their description, specify partial command as argument to search", AccountStatus::Player, command_help) || - command_add("heromodel", "[hero model] [slot] - Full set of Hero's Forge Armor appearance. If slot is set, sends exact model just to slot.", AccountStatus::GMMgmt, command_heromodel) || + command_add("heromodel", "[Hero Model] [Slot] - Set your or your target's appearance to a full set of Hero's Forge Armor, if slot is set, sends exact model just to slot.", AccountStatus::GMMgmt, command_heromodel) || command_add("hideme", "[on/off] - Hide yourself from spawn lists.", AccountStatus::QuestTroupe, command_hideme) || command_add("hotfix", "[hotfix_name] - Reloads shared memory into a hotfix, equiv to load_shared_memory followed by apply_shared_memory", AccountStatus::GMImpossible, command_hotfix) || command_add("hp", "Refresh your HP bar from the server.", AccountStatus::Player, command_hp) || diff --git a/zone/gm_commands/heromodel.cpp b/zone/gm_commands/heromodel.cpp index 33ea72c2c3..45b9048c15 100755 --- a/zone/gm_commands/heromodel.cpp +++ b/zone/gm_commands/heromodel.cpp @@ -2,33 +2,42 @@ void command_heromodel(Client *c, const Seperator *sep) { - if (sep->argnum < 1) { - c->Message(Chat::White, "Usage: #heromodel [hero forge model] [ [slot] ] (example: #heromodel 63)"); + auto arguments = sep->argnum; + if (!arguments) { + c->Message(Chat::White, "Usage: #heromodel [Hero Model]"); + c->Message(Chat::White, "Usage: #heromodel [Hero Model] [Slot]"); + c->Message( + Chat::White, + fmt::format( + "Example: {}", + Saylink::Silent("#heromodel 63") + ).c_str() + ); + return; } - else if (c->GetTarget() == nullptr) { - c->Message(Chat::Red, "You must have a target to do a wear change for Hero's Forge Models."); + + Mob* t = c; + if (c->GetTarget()) { + t = c->GetTarget(); } - else { - uint32 hero_forge_model = atoi(sep->arg[1]); - if (sep->argnum > 1) { - uint8 wearslot = (uint8) atoi(sep->arg[2]); - c->GetTarget()->SendTextureWC(wearslot, 0, hero_forge_model, 0, 0, 0); - } - else { - if (hero_forge_model > 0) { - // Conversion to simplify the command arguments - // Hero's Forge model is actually model * 1000 + texture * 100 + wearslot - // Hero's Forge Model slot 7 is actually for Robes, but it still needs to use wearslot 1 in the packet - hero_forge_model *= 100; + auto hero_forge_model = std::stoul(sep->arg[1]); - for (uint8 wearslot = 0; wearslot < 7; wearslot++) { - c->GetTarget()->SendTextureWC(wearslot, 0, (hero_forge_model + wearslot), 0, 0, 0); - } - } - else { - c->Message(Chat::Red, "Hero's Forge Model must be greater than 0."); + if (arguments > 1) { + auto slot = static_cast(std::stoul(sep->arg[2])); + c->GetTarget()->SendTextureWC(slot, 0, hero_forge_model, 0, 0, 0); + } else { + if (hero_forge_model) { + // Conversion to simplify the command arguments + // Hero's Forge model is actually model * 1000 + texture * 100 + wearslot + // Hero's Forge Model slot 7 is actually for Robes, but it still needs to use wearslot 1 in the packet + hero_forge_model *= 100; + + for (uint8 slot = 0; slot < 7; slot++) { + c->GetTarget()->SendTextureWC(slot, 0, (hero_forge_model + slot), 0, 0, 0); } + } else { + c->Message(Chat::White, "Hero's Forge Model must be greater than 0."); } } }