#include "clients.h"
#include <LogStream.h>
extern LogStream mudlog;
/** could make this work more like the translations strings,
* but for now this looks pretty good to me.
* there might be some trouble adding new clients(due to
* NUM_TAGS, obviously you can increase, but that might
* waste memory), it may be neccesary to setup the tags arrays
* separatly then set client_tags[x] to point
* to the right array, for now, it'll do perfectly.
*/
// Don't worry about memory!! Unless you are talking 500k+, it will
// be lost in the noise! --Ben
/** yet another neat idea from the brain of the bouncing one:
* why don't we simply make pc.client point to the right array,
* and then we can go further and have a local array store the
* color data(same way it is now i suppose), but make it setup
* like the client tags array, the we can just do pc.client[CTAG]
* and not worry about having to make client checks.
*/
/* things converted thus far: battle.cc commands.cc, plus the marked ones below*/
const char* client_tags[NUM_CLIENTS][NUM_TAGS] = {
/** no client, this isn't really needed right now, but may
* be needed later., change this to default colors if above idea works out
*/
// NOTE: (BUG) (TODO): If you pass these NULL strings into places that expect
// the HEGEMON strings with arguments (%i...), then it will definately screw
// up the server, probably crashing it. Either add all of the %? things here
// (the rest can be empty), or take out the option to have this 'client'.
// For now, I'm going to dis-allow this client. --Ben
{
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0",
"\0"
},
//hegemon
{
"<ENGAGE_HEGEMON>\n", //converted
"<PROMPT %i %i %i %i %i %i> ",
"<BEEP>", //converted
"<BATTLE>", //converted
"</BATTLE>", //converted
//channels
"<SAY>",
"</SAY>",
"<TELL>",
"</TELL>",
"<YELL>", /* 10, 9_th index */
"</YELL>",
"<GOSSIP>",
"</GOSSIP>",
"<AUCTION>",
"</AUCTION>",
//descriptions and such
"<RM_SHORT_DESC %i>",
"</RM_SHORT_DESC>",
"<RM_DESC>",
"</RM_DESC>",
"<KEYWORD_DESC>",
"</KEYWORD_DESC>",
"<EXITS >",
"<MOB_LIST>",
"</MOB_LIST>",
"<ITEM_LIST>",
"</ITEM_LIST>",
"<DOOR_LIST>",
"</DOOR_LIST>",
//stat_script stuff
"<SCRIPT_DATA>",
"</SCRIPT_DATA>",
"<MOB_SCRIPT %S %i %i %i %i %i>",
"<ROOM_SCRIPT %S %i %i %i %i %i>",
"<OBJ_SCRIPT %S %i %i %i %i %i>",
"<DISCRIM %S>",
//not too sure what these are... i'm guessing LD is link ead though
"<STAT>",
"</STAT>",
"<STAT_SD>",
"<STAT_ND>",
"<STAT_LD>",
"<NAMES %S>",
"\0",//value_list should go here, but...
"<VALUE_ITEM %i %i %i %i> ",
"<VALUE_INAME %i %S> ",
"<BUG_ENTRY %i %s \"%S\" %S %i %S %s>",
"</BUG_ENTRY>"
"<BUG_TITLE>",
"</BUG_TITLE>",
"<OSTAT %i>",
"<MSTAT %i>",
//not too sure what these are...
"<PSTAT %i %i>",
"<PATH_DIR %i %S> ",
"<PATH_IS_DEST %i> "
}
};
const char* getClientTag(int client_num, int client_tag_num) {
if (client_num != HEGEMON) {
if (mudlog.ofLevel(DBG)) {
mudlog << "ERROR: Cannot support clients other than HEGEMON right now, was: "
<< client_num << "\n";
}
client_num = HEGEMON;
}
if ((client_tag_num < 0) || (client_tag_num >= NUM_TAGS)) {
if (mudlog.ofLevel(ERROR)) {
mudlog << "ERROR: Client tag: " << client_tag_num << " is out of range!!\n";
}
return ""; //This could still crash us, if the tag should have had a %? in it!!
}
// good to go
return client_tags[client_num][client_tag_num];
}