#include "../client.h"

void command_spawn(Client *c, const Seperator *sep)
{
	const auto arguments = sep->argnum;
	if (!arguments) {
		c->Message(Chat::White, "Usage: #spawn [Name]");
		c->Message(
			Chat::White,
			"Optional Usage: #spawn [Name] [Race] [Level] [Texture] [Health] [Gender] [Class] [Primary Model] [Secondary Model] [Merchant ID] [Body Type]"
		);
		c->Message(
			Chat::White,
			"Name Format: NPCFirstname_NPCLastname - All numbers in a name are stripped and \"_\" characters become a space."
		);
		c->Message(
			Chat::White,
			"Note: Using \"-\" for gender will autoselect the gender for the race. Using \"-\" for HP will use the calculated maximum HP."
		);
		return;
	}

	const auto* m = entity_list.GetClientByName(sep->arg[1]);
	if (m) {
		c->Message(Chat::White, "You cannot spawn a mob with the same name as a character!");
		return;
	}

	const auto* n = NPC::SpawnNPC(sep->argplus[1], c->GetPosition(), c);
	if (!n) {
		c->Message(Chat::White, "Usage: #spawn [Name]");
		c->Message(
			Chat::White,
			"Optional Usage: #spawn [Name] [Race] [Level] [Texture] [Health] [Gender] [Class] [Primary Model] [Secondary Model] [Merchant ID] [Body Type]"
		);
		c->Message(
			Chat::White,
			"Name Format: NPCFirstname_NPCLastname - All numbers in a name are stripped and \"_\" characters become a space."
		);
		c->Message(
			Chat::White,
			"Note: Using \"-\" for gender will autoselect the gender for the race. Using \"-\" for HP will use the calculated maximum HP."
		);
	}
}

