// this will be hash.cpp start
// thank you wcampbel
-unsigned long HASH(const unsigned char *name, int size_of_table);
+unsigned long sHASH(const unsigned char *name);
+unsigned long iHASH(const unsigned char *name);
List<aClient> players[U_TABLE_SIZE];
// this will be hash.cpp end
"Chain Saw", "Poison Sword", "Flame Sword", "Earth Hammer",
"Light Saber", "Masamune", "Mystical Sword"};
-char *armors[WNA] = { "Nothing", "Clothes", "Leather Vest", "Chain Mail", "Plate Armor",
+char *armors[WNA] = { "Birthday Suit", "Clothes", "Leather Vest", "Chain Mail", "Plate Armor",
"Full Body Armor", "Magic Mail", "Graphite Suit", "Steel Suit",
"Force Field", "Armor of Light", "Mythril Vest", "DemiGod Armor",
"Hades' Cloak", "Dragon Scales", "Adamantium"};
int prices[WNA - 1] = {200, 1000, 3000, 10000, 30000, 100000, 150000, 200000, 400000,
1000000, 4000000, 10000000, 40000000, 100000000, 400000000};
-int webonus[WNA] = {1, 10, 15, 25, 35, 45, 65, 85, 125, 185, 255, 355, 505, 805, 1205, 1805};
-int arbonus[WNA] = {1, 2, 4, 10, 15, 25, 35, 50, 75, 100, 150, 225, 300, 400, 600, 1000};
+int webonus[WNA] = {2, 10, 15, 25, 35, 45, 65, 85, 125, 185, 255, 355, 505, 805, 1205, 1805};
+int arbonus[WNA] = {2, 3, 5, 10, 15, 25, 35, 50, 75, 100, 150, 225, 300, 400, 600, 1000};
int hpbonus[11] = {10, 15, 20, 30, 50, 75, 125, 185, 250, 350, 550};
int strbonus[11] = {5, 7, 10, 12, 20, 35, 50, 75, 110, 150, 200};
void gameserv(char *source, char *buf)
{
- char *cmd;
+ char *cmd, z;
cmd = strtok(buf, " ");
#ifndef P10
source++; // Get rid of that : at the beginning of a :Nick privmsg Gameserv :text
#endif
- if (cmd[0] == ':')
+ z = cmd[0];
+ if (z == ':')
cmd++; // Get rid of that : at the beginning of the :text (command)
#ifdef DEBUGMODE
}
#endif
} else {
- notice(s_GameServ, source, "Unknown command \002%s\002. Type /msg %S \002HELP\002 to get a list of commands.", cmd);
+ aClient *user;
+ if ((user = find(source)))
+ {
+ if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ }
+ else
+ {
+ notice(s_GameServ, source, "Unknown command \002%s\002. Type /msg %S \002HELP\002 to get a list of commands.", cmd);
+ }
+ }
}
- source--; // Bring the ':' back so we don't leak memory
- cmd--; // Same thing :)
+ #ifndef P10
+ source--; // Bring the ':' back so we don't leak memory
+ #endif
+ if (z == ':')
+ cmd--; // Same thing :)
}
int stricmp(const char *s1, const char *s2)
if (fmt[0] == '\0')
return;
+ char *commanduse;
+ commanduse = new char[16];
+
+ #ifdef P10
+ if (isUsePrivmsg())
+ strcpy(commanduse, "P");
+ else
+ strcpy(commanduse, "N");
+ #else
+
+ if (isUsePrivmsg())
+ strcpy(commanduse, "PRIVMSG");
+ else
+ strcpy(commanduse, "NOTICE");
+ #endif
+
va_list args;
char *input;
const char *t = fmt;
dest++;
#if !defined(P10)
- sprintf(input, ":%s NOTICE %s :", source, dest);
+ sprintf(input, ":%s %s %s :", source, commanduse, dest);
#else
- sprintf(input, "%s O %s :", gsnum, dest);
+ sprintf(input, "%s %s %s :", gsnum, commanduse, dest);
#endif
dest--;
else
{
#if !defined(P10)
- sprintf(input, ":%s NOTICE %s :", source, dest);
+ sprintf(input, ":%s %s %s :", source, commanduse, dest);
#else
- sprintf(input, "%s O %s :", gsnum, dest);
+ sprintf(input, "%s %s %s :", gsnum, commanduse, dest);
#endif
}
#endif
sprintf(input, "%s%s", input, "\r\n");
sock_puts(sock, input);
+ delete [] commanduse;
delete [] input;
va_end(args);
}
void do_list(char *u)
{
+ aClient *user;
+ if (!(user = find(u)))
+ {
+ log("Fatal Error: Couldn't find %s in the client list", u);
+ return;
+ }
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s. Command LIST", user->getNick());
+ #endif
+ return;
+ }
+
ListNode<aClient> *temp;
bool header = false;
for (unsigned long x = 0; x < U_TABLE_SIZE; x++)
void do_logout(char *u)
{
aClient *user;
+ char *name = strtok(NULL, " ");
+
if (!(user = find(u)))
{
notice(s_GameServ, u, "Fatal error. Cannot find aClient. "\
"Buf: %s LOGOUT", u);
log("Could not find aClient Buf: %s LOGOUT",
u);
+ return;
}
- else if (!is_playing(user))
+ else if (isIgnore(user))
{
- notice(s_GameServ, u, "You're not logged in!");
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
}
- else if (is_fighting(user))
+
+ if (name)
{
- notice(s_GameServ, u, "You can't logout while fighting!");
+ if (!isAdmin(user))
+ {
+ notice(s_GameServ, u, "You must be a %S admin to use this command!");
+ }
+ else if (!(user = findplayer(name)))
+ {
+ notice(s_GameServ, u, "Couldn't find a player named %s", name);
+ }
+ else
+ {
+ notice(s_GameServ, u, "Logging out %s", user->stats->name);
+ logout(user);
+ }
}
- else
+ else if (!name)
{
- notice(s_GameServ, u, "You have left the fields. You have lived to kill another day!");
- logout(user);
+ if (!is_playing(user))
+ {
+ notice(s_GameServ, u, "You're not logged in!");
+ }
+ else if (is_fighting(user))
+ {
+ notice(s_GameServ, u, "You can't logout while fighting!");
+ }
+ else
+ {
+ notice(s_GameServ, u, "You have left the fields. You have lived to kill another day!");
+ logout(user);
+ }
}
}
+
void logout(aClient *user)
{
if (is_playing(user))
{
ListNode<aClient> *it;
aClient *temp;
- unsigned long hv = HASH((unsigned char *) user->stats->name,
- U_TABLE_SIZE);
+ unsigned long hv = iHASH((unsigned char *) user->stats->name);
it = players[hv].Find(user);
+
if (!it)
{
notice(s_GameServ, user->getNick(), "Fatal error. Contact "\
user->stats = NULL;
temp->stats->client = NULL;
#ifdef P10
- temp->setRealNick("!NULL!");
+ temp->setRealNick("Not Playing");
#endif
- temp->setNick("!NULL!");
+ temp->setNick("Not Playing");
it->setNewPtr(temp);
#ifdef DEBUGMODE
);
#endif
}
+ clearPlaying(user);
}
+
void do_register(char *u)
{
char *password, *name;
notice(s_GameServ, u, "%s is already registered!", name);
notice(s_GameServ, u, "Choose another name!");
}
- else if ((user = find(u)))
+ else if (!(user = find(u)))
+ {
+ log("Fatal Error: Couldn't find %s in the clients list", u);
+ }
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
+ else
{
- if (!user->stats)
+ if (!is_playing(user))
{
+ ListNode<aClient> *temp;
user->stats = new Player(user);
user->stats->client = user; // Set the backwards pointer
- strcpy(user->stats->password, crypt(password, salt));
- strcpy(user->stats->name, name);
- unsigned long hv = HASH((unsigned char *) name, U_TABLE_SIZE);
+ user->stats->reset(); // set the user up
+ strncpy(user->stats->password, crypt(password, salt), 255);
+ strncpy(user->stats->name, name, 255);
+ unsigned long hv = iHASH((unsigned char *) name);
updateTS(user->stats);
- players[hv].insertAtBack(user);
+ temp = players[hv].insertAtBack_RLN(user);
+ temp->setPtr(user); // This is an extra step, but necessary for now
+
notice(s_GameServ, u, "Player %s registered with password %s.", user->stats->name, password);
notice(s_GameServ, u, "Write this password down. If you lose it, there is no way to retrieve it!");
log("Nickname %s registered player %s.", u, user->stats->name);
+ setPlaying(user); // set the playing flag
}
else
{
aClient *user, *p;
name = strtok(NULL, " ");
password = strtok(NULL, " ");
- user = find(u);
if (!password || !name)
{
notice(s_GameServ, u, "SYNTAX: /msg %S IDENTIFY NAME PASSWORD");
}
- else if (!user)
+ else if (!(user = find(u)))
{
notice(s_GameServ, u, "Fatal error. Cannot find aClient. Buf: %s", strtok(NULL, ""));
log("Error: aClient not found: %s", u);
}
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
else if (!(p = findplayer(name)) || !p->stats)
notice(s_GameServ, u, "Player %s not found", name);
else if (is_playing(user))
}
else {
ListNode<aClient> *temp;
- unsigned long hv = HASH((unsigned char *) p->stats->name,
- U_TABLE_SIZE);
+ unsigned long hv = iHASH((unsigned char *) p->stats->name);
temp = players[hv].Find(p);
if (!temp)
{
log("Setting data for identified");
#endif
user->stats->setData(p->stats);
+ user->stats->client = user;
updateTS(user->stats);
#ifdef DEBUGMODE
- log("Player Identified");
+ log("Player %s IRC: %s Identified", user->stats->name,
+ user->getNick());
#endif
+ setPlaying(user); // set the playing flag
+
temp->setPtr(user);
notice(s_GameServ, u, "Password Accepted. Identified.");
}
nick = strtok(NULL, " ");
- if (!nick)
+ if (!(user = find(u)))
{
- if (!(user = find(u)))
- {
- notice(s_GameServ, u, "Fatal Error in do_stats(). Contact a %S admin for help!");
- log("Error: aClient not found: %s", u);
- return;
- }
- else if (!is_playing(user))
+ log("Fatal Error: %s not found in client list", u);
+ return;
+ }
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
+ else if (!nick)
+ {
+ if (!is_playing(user))
{
notice(s_GameServ, u, "You're not playing, so you have no stats!");
return;
else
showstats(u, nick);
}
+
void init_masters()
{
#ifdef DEBUGMODE
strcpy(masters[0]->name, "Old Bones");
strcpy(masters[0]->weapon, "Dull Sword Cane");
- masters[0]->strength = 25;
+ masters[0]->strength = 30;
masters[0]->gold = 0;
masters[0]->exp = 0;
- masters[0]->maxhp = 30;
- masters[0]->hp = 30;
+ masters[0]->maxhp = 35;
+ masters[0]->hp = 35;
strcpy(masters[0]->death, "You have done well my student, but the road is long. Use your new strength with humility and honor as you progress in levels!");
strcpy(masters[1]->name, "Master Chang");
strcpy(masters[1]->weapon, "Nanchaku");
- masters[1]->strength = 35;
+ masters[1]->strength = 45;
masters[1]->gold = 0;
masters[1]->exp = 0;
- masters[1]->maxhp = 40;
- masters[1]->hp = 40;
+ masters[1]->maxhp = 51;
+ masters[1]->hp = 51;
strcpy(masters[1]->death, "You try to make out what Master Chang is saying, but the only thing you catch is something about a grasshopper.");
strcpy(masters[2]->name, "Chuck Norris");
strcpy(masters[2]->weapon, "Ranger Kick");
- masters[2]->strength = 95;
+ masters[2]->strength = 83;
masters[2]->gold = 0;
masters[2]->exp = 0;
- masters[2]->maxhp = 70;
- masters[2]->hp = 70;
+ masters[2]->maxhp = 100;
+ masters[2]->hp = 100;
strcpy(masters[2]->death, "Be strong, and keep your goals in site. Drink milk, and don't do drugs. One day you may be fighting next to me as a Texas Ranger YEEHAW!");
strcpy(masters[3]->name, "Mr. Miagi");
strcpy(masters[3]->weapon, "Petrified Bonsai");
- masters[3]->strength = 130;
+ masters[3]->strength = 159;
masters[3]->gold = 0;
masters[3]->exp = 0;
- masters[3]->maxhp = 120;
- masters[3]->hp = 120;
+ masters[3]->maxhp = 165;
+ masters[3]->hp = 165;
strcpy(masters[3]->death, "Skill comes from repeating the correct but seemingly mundane actions. Wax ON, wax OFF!");
strcpy(masters[4]->name, "Jackie Chan");
strcpy(masters[4]->weapon, "Kung Fu Kick");
- masters[4]->strength = 145;
+ masters[4]->strength = 260;
masters[4]->gold = 0;
masters[4]->exp = 0;
- masters[4]->maxhp = 200;
- masters[4]->hp = 200;
+ masters[4]->maxhp = 232;
+ masters[4]->hp = 232;
strcpy(masters[4]->death, "I like to let people talk who like to talk... it's easier to find out how full of it they really are!");
strcpy(masters[5]->name, "Jet Li");
strcpy(masters[5]->weapon, "Motorcycle");
- masters[5]->strength = 170;
+ masters[5]->strength = 325;
masters[5]->gold = 0;
masters[5]->exp = 0;
- masters[5]->maxhp = 400;
- masters[5]->hp = 400;
+ masters[5]->maxhp = 504;
+ masters[5]->hp = 504;
strcpy(masters[5]->death, "Failure is a fuel for excuses. It's the doing the do, that makes the making.");
strcpy(masters[6]->name, "Muhammad Ali");
strcpy(masters[6]->weapon, "Quick Jab");
- masters[6]->strength = 195;
+ masters[6]->strength = 380;
masters[6]->gold = 0;
masters[6]->exp = 0;
- masters[6]->maxhp = 600;
- masters[6]->hp = 600;
+ masters[6]->maxhp = 1078;
+ masters[6]->hp = 1078;
strcpy(masters[6]->death, "It's just a job. Grass grows, birds fly, waves pound the sand. I beat people up.");
strcpy(masters[7]->name, "Li Mu Bai");
strcpy(masters[7]->weapon, "Green Destiny");
- masters[7]->strength = 220;
+ masters[7]->strength = 462;
masters[7]->gold = 0;
masters[7]->exp = 0;
- masters[7]->maxhp = 800;
- masters[7]->hp = 800;
+ masters[7]->maxhp = 2207;
+ masters[7]->hp = 2207;
strcpy(masters[7]->death, "No growth without resistance. No action without reaction. No desire without restraint.");
strcpy(masters[8]->name, "Jimmy Wang Yu");
strcpy(masters[8]->weapon, "Flying Guillotine");
- masters[8]->strength = 285;
+ masters[8]->strength = 511;
masters[8]->gold = 0;
masters[8]->exp = 0;
- masters[8]->maxhp = 1200;
- masters[8]->hp = 1200;
+ masters[8]->maxhp = 2780;
+ masters[8]->hp = 2780;
strcpy(masters[8]->death, "You have beaten the one armed boxer. Proceed with caution!");
strcpy(masters[9]->name, "Wong Fei Hung");
strcpy(masters[9]->weapon, "Drunken Boxing");
- masters[9]->strength = 375;
+ masters[9]->strength = 618;
masters[9]->gold = 0;
masters[9]->exp = 0;
- masters[9]->maxhp = 1800;
- masters[9]->hp = 1800;
+ masters[9]->maxhp = 3046;
+ masters[9]->hp = 3046;
strcpy(masters[9]->death, "Hiccup! Monkey drinks master's wine!");
strcpy(masters[10]->name, "Bruce Lee");
strcpy(masters[10]->weapon, "Fists of fury");
- masters[10]->strength = 590;
+ masters[10]->strength = 725;
masters[10]->gold = 0;
masters[10]->exp = 0;
- masters[10]->maxhp = 2500;
- masters[10]->hp = 2500;
+ masters[10]->maxhp = 3988;
+ masters[10]->hp = 3988;
strcpy(masters[10]->death, "You must learn to concentrate. It is like a finger pointing away to the moon... DONT concentrate on the finger, or you will miss all the heavenly glory.");
}
bool is_playing(aClient *user)
{
if (user->stats == NULL)
+ {
return false;
+ }
else if (user->stats->client == NULL)
+ {
return false;
+ }
+ else if (!FL_is_playing(user))
+ {
+ return false;
+ }
else
return true;
}
if (!is_playing(user))
return false;
else
- return (user->stats->fight != NULL || user->stats->battle != NULL || user->stats->master != NULL);
+ return player_fight(user) || master_fight(user) || user->stats->fight != NULL;
}
bool player_fight(char *u)
else
return player_fight(user);
}
+
bool player_fight(aClient *user)
{
- if (!is_fighting(user))
+ if (!is_playing(user))
return false;
else
return user->stats->battle != NULL;
notice(s_GameServ, u, "Fatal error. Contact a(n) %S admin. buf: %s", strtok(NULL, ""));
return;
}
+ else if (isIgnore(ni))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", ni->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(ni))
{
notice(s_GameServ, u, "You are not playing!");
{
notice(s_GameServ, u, "Player %s not found!", nick);
}
+ else if (!isAlive(ni->stats))
+ {
+ notice(s_GameServ, u, "You are dead. Wait until tomorrow to fight others!");
+ }
else if (!is_playing(battle))
{
notice(s_GameServ, u, "You can't attack %s while they aren't playing!", nick);
* display_players(u);
* }
*/
- else if (!isAlive(ni->stats))
- {
- notice(s_GameServ, u, "You are dead. Wait until tomorrow to fight others!");
- }
else if (stricmp(ni->stats->name, battle->stats->name) == 0)
{
notice(s_GameServ, u, "Are you trying to commit suicide!?");
{
notice(s_GameServ, u, "%s is fighting %s already!", battle->stats->name, battle->stats->battle->stats->name);
}
+ else if (master_fight(battle))
+ {
+ notice(s_GameServ, u, "%s is fighting their master!", battle->stats->name);
+ }
else if (is_fighting(battle))
{
notice(s_GameServ, u, "%s is fighting %s already!", battle->stats->name, battle->stats->fight->name);
// You can't fight someone below you by more than X level(s)
// level 12 can fight level (12 - X) but not < (12 - X)
notice(s_GameServ, u, "You may not fight %s. You're too strong!",
- battle->stats->level);
+ battle->stats->name);
}
else if (battle->stats->level - ni->stats->level > maxafightdistance)
{
ni->stats->battle = battle;
// Set the other player's battle pointer to you
- battle->stats->battle = ni;
+ ni->stats->battle->stats->battle = ni;
// The initiator gets the first move (perhaps this should be 50/50)
setYourTurn(ni->stats);
notice(s_GameServ, u, "Fatal Error in do_use. Contact a(n) %S Admin");
return;
}
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(user))
{
notice(s_GameServ, u, "You must be playing to use items!");
int oldstrength = user->stats->strength;
notice(s_GameServ, u, "As you grip the flask containing pure power, you feel adrenaline coarse through your veins!");
notice(s_GameServ, u, "In one swallow you drink the potion and feel your muscle fibers bulging andgrowing!");
- user->stats->strength += 3 + rand() % 8; // 3-10 Strength Added
+ user->stats->strength += 1 + (rand() % 10 >= 8 ? 1 : 0); // 1-2
notice(s_GameServ, u, "You gain %d Strength points!", user->stats->strength - oldstrength);
p->decStrength();
}
int olddefense = user->stats->defense;
notice(s_GameServ, u, "You drink the foul tasting viscous liquid while pinching your nose in disgust.");
notice(s_GameServ, u, "It tasted bad, but you feel like you are unbeatable!");
- user->stats->defense += 3 + rand() % 8; // 3 - 10 Defense Added
+ user->stats->defense += 1 + (rand() % 10 >= 8 ? 1 : 0); // 1-2
notice(s_GameServ, u, "You gain %d Defense points!", user->stats->defense - olddefense);
p->decDefense();
}
}
int oldHP = user->stats->maxhp;
notice(s_GameServ, u, "You feel your life growing longer as you drink the green glowing liquid.");
- user->stats->maxhp += 5 + rand() % 6; // 5-10 Maxhp
+ user->stats->maxhp += 2 +
+ (rand() % 100 > 70 ? (rand() % 7) : (rand() % 2) );
+
notice(s_GameServ, u, "You gain %d Maximum hit points!", user->stats->maxhp - oldHP);
p->decHP();
}
notice(s_GameServ, u, "Couldn't find you. Error. Contact a %S admin");
return;
}
-
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(user))
{
notice(s_GameServ, u, "You must be playing to run!");
notice(s_GameServ, u, "Fatal error in do_attack. Contact a(n) %S admin for help.");
return;
}
+ else if (isIgnore(ni))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", ni->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(ni))
{
notice(s_GameServ, u, "You're not playing!");
notice(s_GameServ, u, "Fatal error. Contact a(n) %S admin. buf: %s", strtok(NULL, ""));
return;
}
+ else if (isIgnore(ni))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", ni->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(ni))
{
notice(s_GameServ, u, "You aren't playing!");
while(ptr)
{
it = ptr->getData()->stats;
+ clearYourTurn(it);
outfile << it->name << ' ' << it->level << ' ' << it->exp << ' ' << it->gold << ' ' << it->bank << ' '
<< it->hp << ' ' << it->maxhp << ' ' << it->strength << ' ' << it->defense << ' '
<< it->armor << ' ' << it->weapon << ' '
password = strtok(NULL, " ");
strcpy(p->password, password);
- temp->setNick("!NULL!");
+ temp->setNick("Not Playing");
#ifdef P10
- temp->setRealNick("!NULL!");
+ temp->setRealNick("Not Playing");
#endif
p->inventory.reset(); // Set inventory to all 0s
tempname = strtok(NULL, " ");
if (tempname)
p->inventory.setHP(stringtoint(tempname));
- unsigned long hv = HASH((unsigned char *) temp->stats->name, U_TABLE_SIZE);
+ unsigned long hv = iHASH((unsigned char *) temp->stats->name);
temp->stats->client = NULL;
players[hv].insertAtBack(temp);
notice(s_GameServ, u, " \ 2STORE BUY {ARMOR | WEAPON} \1fNUMBER\1f\ 2");
return;
}
- else if (!(user = find(u)) || !is_playing(user))
+ else if (!(user = find(u)))
+ {
+ log("Fatal Error: could not find %s in client list", u);
+ return;
+ }
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
+ else if (!is_playing(user))
{
notice(s_GameServ, u, "You must be playing to use the store!");
return;
notice(s_GameServ, u, " \ 2STORE BUY {ARMOR | WEAPON} \1fNUMBER\1f\ 2");
}
}
+ else
+ {
+ notice(s_GameServ, u, "SYNTAX: STORE LIST {ARMOR | WEAPONS}");
+ notice(s_GameServ, u, " \ 2STORE SELL {ARMOR | WEAPON}\ 2");
+ notice(s_GameServ, u, " \ 2STORE BUY {ARMOR | WEAPON} \1fNUMBER\1f\ 2");
+ return;
+ }
}
void do_inventory(char *u)
{
notice(s_GameServ, u, "Fatal Error. Contact a %S admin!");
return;
}
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(user))
{
notice(s_GameServ, u, "You must be playing to check your inventory!");
notice(s_GameServ, u, "Fatal Error. See a %S admin for help");
return;
}
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(user))
{
notice(s_GameServ, u, "You must be playing to go to the Tavern");
else if (stricmp(cmd, "LIST") == 0)
{
notice(s_GameServ, u, "Here is a list of what we have to offer:");
- notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 1000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 2050 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 2000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "4. HP Potions for %ld Gold", 2300 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 100 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 205 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 200 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "4. HP Potions for %ld Gold", 230 * p->level + (p->exp / 10));
notice(s_GameServ, u, "To buy a potion, type /msg %S TAVERN BUY #");
notice(s_GameServ, u, "Example: /msg %S TAVERN BUY 1 buys a healing potion!");
notice(s_GameServ, u, "By something will ya!");
{
notice(s_GameServ, u, "Invalid Choice!");
notice(s_GameServ, u, "Here is a list of what we have to offer:");
- notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 1000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 2050 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 2000 * p->level + (p->exp / 10));
- notice(s_GameServ, u, "4. HP Potions for %ld Gold", 2300 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 100 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 205 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 200 * p->level + (p->exp / 10));
+ notice(s_GameServ, u, "4. HP Potions for %ld Gold", 230 * p->level + (p->exp / 10));
notice(s_GameServ, u, "To buy a potion, type /msg %S TAVERN BUY #");
notice(s_GameServ, u, "Example: /msg %S TAVERN BUY 1 buys a healing potion!");
return;
switch(num)
{
case 1:
- price = (1000 * p->level) + (p->exp / 10);
+ price = (100 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One healing potion coming right up!");
notice(s_GameServ, u, "You don't have enough gold!");
break;
case 2:
- price = (2050 * p->level) + (p->exp / 10);
+ price = (205 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One strength boost coming right up!");
notice(s_GameServ, u, "You don't have enough gold!");
break;
case 3:
- price = (2000 * p->level) + (p->exp / 10);
+ price = (200 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One defense boost coming right up!");
notice(s_GameServ, u, "You don't have enough gold!");
break;
case 4:
- price = (2300 * p->level) + (p->exp / 10);
+ price = (230 * p->level) + (p->exp / 10);
if (p->gold >= price)
{
notice(s_GameServ, u, "One HP Potion coming right up!");
log("Fatal Error. Couldn't find %s while executing do_bank()", u);
return;
}
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
else if (!is_playing(user))
{
notice(s_GameServ, u, "You must be playing to use the bank!");
return;
}
-
+ else if (is_fighting(user))
+ {
+ notice(s_GameServ, u, "You can't go to the bank during a fight!");
+ return;
+ }
updateTS(user->stats);
if (stricmp(cmd, "BALANCE") == 0)
{
void do_master(char *u)
{
aClient *user;
- user = find(u);
- if (!user)
+
+ if (!(user = find(u)))
{
notice(s_GameServ, u, "Fatal error. Contact a(n) %S admin. buf: %s", strtok(NULL, ""));
return;
}
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
+ else if (!is_playing(user))
+ {
+ notice(s_GameServ, u, "You must be playing to see your master!");
+ return;
+ }
else if (is_fighting(user))
{
notice(s_GameServ, u, "You're in the middle of a fight! Pay attention!");
notice(s_GameServ, u, "You're dead. Wait until tomorrow to see your master!");
return;
}
- else if (!is_playing(user))
- {
- notice(s_GameServ, u, "You must be playing to see your master!");
- return;
- }
updateTS(user->stats);
+
char *cmd = strtok(NULL, " ");
Player *p = user->stats;
long int need = 0;
log("Error: aClient not found: %s", u);
return;
}
+ else if (isIgnore(user))
+ {
+ #ifdef DEBUGMODE
+ log("Ignoring %s.", user->getNick());
+ #endif
+ return;
+ }
else if (!isAdmin(user))
{
notice(s_GameServ, u, "You must be a %S admin to use this command!");
notice(s_GameServ, u, "Refreshing everyone's stats!");
refreshall();
}
- else if ((user = findbyrealnick(nick)))
+ else if ((user = findplayer(nick)))
{
if (is_playing(user))
{
{
aClient *user = findplayer(p->name);
- if (!user) // then they're not playing
+ if (!user || !p->client) // then they're not playing
return;
char *nick = user->getNick();
}
else if (!player_fight(user))
{
+ if (isAlive(user->stats) && user->stats->gold > 0)
+ {
// Place fun stuff here :)
int randnum = 1 + rand() % 100; // 1-100
+ #define GSN(s) notice(s_GameServ, nick, s)
+ #define GSN2(s, f) notice(s_GameServ, nick, s, f)
if (randnum < 50)
{
- #define GSN(s) notice(s_GameServ, nick, s)
- #define GSN2(s, f) notice(s_GameServ, nick, s, f)
- int stolen = ((35 + rand() % 66)/100) * user->stats->gold;
-
+ // 35-100% of your gold goes pffft - kain
+ int stolen = (35 + (rand() % 66)) * user->stats->gold / 100;
+
GSN("You stop for a moment to rest on the "\
"street corner. All of a sudden, you "\
"are ambushed from all sides by a hoarde "\
"and steal %d gold from you!", stolen);
user->stats->gold -= stolen;
}
-
+ else if (randnum >= 50 && randnum < 75)
+ {
+ // 25-65% of your gold goes pffft - kain
+ int stolen = (25 + (rand() % 41)) * user->stats->gold / 100;
+ GSN("While dilly dallying around, you lose "\
+ "your sense of time. Little did you know, "\
+ "but thieves lifted your gold while you "\
+ "weren't watching.");
+ GSN2("Better luck next time... you lose %d gold", stolen);
+ user->stats->gold -= stolen;
+ }
+ else if (randnum >= 75)
+ {
+ // 25-75% of your gold goes pffft - kain
+ int stolen = (25 + (rand() % 51)) * user->stats->gold / 100;
+ GSN("Good grief! A gaggle of gooey green ghostlike "\
+ "goblins grabbed your gold!");
+ GSN2("They stole %d gold from you!", stolen);
+ user->stats->gold -= stolen;
+ }
+ }
// Always log out the user
logout(user);
notice(s_GameServ, u, "You must be a %S admin to use this command!");
return;
}
+
if (!nick)
{
notice(s_GameServ, u, "SYNTAX: RESET {ALL | NICK}");
notice(s_GameServ, u, "Error: aClient not found. Contact %S admin.");
return;
}
+
if (!pass)
{
notice(s_GameServ, u, "SYNTAX: \ 2ADMIN\ 2 \ 2\1fpassword\1f\ 2");
// this will be hash.cpp start
// thank you wcampbel
-unsigned long HASH(const unsigned char *name, int size_of_table)
+unsigned long sHASH(const unsigned char *name)
{
unsigned long h = 0, g;
while (*name)
{
- #ifdef P10
- h = (h << 4) + (*name++); // Case sensitive for numerics
- #else
- h = (h << 4) + tolower(*name++);
- #endif
+ h = (h << 4) + (*name++); // Case sensitive for numerics
+ if ((g = (h & 0xF0000000)))
+ h ^= g >> 24;
+ h &= ~g;
+ }
+ return h % U_TABLE_SIZE;
+}
+
+unsigned long iHASH(const unsigned char *name)
+{
+ unsigned long h = 0, g;
+
+ while (*name)
+ {
+ h = (h << 4) + tolower(*name++);
if ((g = (h & 0xF0000000)))
h ^= g >> 24;
h &= ~g;
}
- return h % size_of_table;
+ return h % U_TABLE_SIZE;
}
// this will be hash.cpp end