void do_run(char *u);
void do_stats(char *u);
void do_store(char *u);
+void do_tavern(char *u);
void see_master(char *u);
void showstats(const char *u, const char *nick);
do_admin(source);
} else if (stricmp(cmd, "REFRESH") == 0) {
do_refresh(source);
+ } else if (stricmp(cmd, "TAVERN") == 0) {
+ do_tavern(source);
} else if (stricmp(cmd, "PRINT") == 0) {
cout << "Printing Clients List: " << endl;
clients.print();
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)
+ notice(s_GameServ, u, "Fatal error. Cannot find aClient. Buf: %s", strtok(NULL, ""));
else if (!(p = findplayer(name)) || !p->stats)
notice(s_GameServ, u, "Player %s not found", name);
- else if (!check_password(name, password))
+ else if (!check_password(name, password) && !isAdmin(user))
{
notice(s_GameServ, u, "Password incorrect");
}
- else if ((user = find(u)))
+ else
{
+ if (p->stats->user && !isAdmin(user))
+ {
+ notice(s_GameServ, u, "That player has already identified.");
+ return;
+ }
if (!user->stats)
{
ListNode<aClient> *temp;
}
}
+void do_tavern(char *u)
+{
+ char *cmd = strtok(NULL, " ");
+ long int price;
+
+ aClient *user;
+ Player *p;
+ if (!(user = find(u)))
+ {
+ notice(s_GameServ, u, "Fatal Error. See a %S admin for help");
+ return;
+ }
+ else if (!is_playing(user))
+ {
+ notice(s_GameServ, u, "You must be playing to go to the Tavern");
+ return;
+ }
+ p = user->stats;
+ if (!cmd)
+ {
+ notice(s_GameServ, u, "Welcome to Boot Liquors Mystic Apothecary");
+ notice(s_GameServ, u, "Your commands:");
+ notice(s_GameServ, u, "/msg %S TAVERN {LIST | BUY} [NUMBER]");
+ notice(s_GameServ, u, "What'll it be?");
+ }
+ 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, "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!");
+ }
+ else if (stricmp(cmd, "BUY") == 0)
+ {
+ char *chnum = strtok(NULL, " ");
+ int num = stringtoint(chnum);
+
+ if (!chnum)
+ {
+ notice(s_GameServ, u, "SYNTAX: TAVERN BUY #");
+ notice(s_GameServ, u, "Example: /msg %S TAVERN BUY 1");
+ return;
+ }
+ if (num < 1 || num > 3)
+ {
+ 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, "To buy a potion, type /msg %S TAVERN BUY #");
+ notice(s_GameServ, u, "Example: /msg %S TAVERN BUY 1 buys a healing potion!");
+ }
+ switch(num)
+ {
+ case 1:
+ price = (1000 * p->level) + (p->exp / 10);
+ if (p->gold >= price)
+ {
+ notice(s_GameServ, u, "One healing potion coming right up!");
+ p->inventory.incHealing();
+ }
+ else
+ notice(s_GameServ, u, "You don't have enough gold!");
+ break;
+ case 2:
+ price = (2050 * p->level) + (p->exp / 10);
+ if (p->gold >= price)
+ {
+ notice(s_GameServ, u, "One strength boost coming right up!");
+ p->inventory.incStrength();
+ }
+ else
+ notice(s_GameServ, u, "You don't have enough gold!");
+ break;
+ case 3:
+ price = (2000 * p->level) + (p->exp / 10);
+ if (p->gold >= price)
+ {
+ notice(s_GameServ, u, "One defense boost coming right up!");
+ p->inventory.incDefense();
+ }
+ else
+ notice(s_GameServ, u, "You don't have enough gold!");
+ break;
+ default:
+ notice(s_GameServ, u, "Logical Error. See a %S admin for help!");
+ break;
+ }
+ }
+}
+
void do_bank(char *u)
{
char *cmd = strtok(NULL, " ");
return;
p->hp = p->maxhp;
- p->forest_fights = 100;
+ p->forest_fights = forestfights;
p->player_fights = 3;
p->alive = true;
clearMaster(p);