Skip to content

Commit

Permalink
[Commands] Cleanup #heromodel Command. (#2566)
Browse files Browse the repository at this point in the history
- Cleanup messages and logic.
  • Loading branch information
Kinglykrab authored Nov 22, 2022
1 parent 3c361be commit 19e7f0a
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 23 deletions.
2 changes: 1 addition & 1 deletion zone/command.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) ||
Expand Down
53 changes: 31 additions & 22 deletions zone/gm_commands/heromodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<uint8>(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.");
}
}
}
Expand Down

0 comments on commit 19e7f0a

Please sign in to comment.