X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/20d5d7219d871c31dd7b20e2001df9f52fe117cd..9cda831cf07982221052583e94e073bda5d3ef4b:/gameserv/gameserv.cpp diff --git a/gameserv/gameserv.cpp b/gameserv/gameserv.cpp index a476397..2ac1695 100644 --- a/gameserv/gameserv.cpp +++ b/gameserv/gameserv.cpp @@ -90,6 +90,7 @@ void do_fight(char *u); void do_heal(char *u); void do_help(char *u); void do_identify(char *u); +void do_inventory(char *u); void do_refresh(char *u); void do_register(char *u); void do_list(char *u); @@ -100,9 +101,11 @@ void do_reset(char *u); 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); +void showinventory(aClient *from, aClient *to = NULL); void showBankBalance(const char *u); #define WNA 16 @@ -166,6 +169,8 @@ void gameserv(char *source, char *buf) do_run(source); } else if (stricmp(cmd, "HEAL") == 0) { do_heal(source); + } else if (stricmp(cmd, "INVENTORY") == 0) { + do_inventory(source); } else if (stricmp(cmd, "MASTER") == 0) { do_master(source); } else if (stricmp(cmd, "STORE") == 0) { @@ -176,6 +181,8 @@ void gameserv(char *source, char *buf) 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(); @@ -2875,6 +2882,141 @@ void do_store(char *u) } } } +void do_inventory(char *u) +{ + aClient *user; + + if (!(user = find(u))) + { + notice(s_GameServ, u, "Fatal Error. Contact a %S admin!"); + return; + } + else if (!is_playing(user)) + { + notice(s_GameServ, u, "You must be playing to check your inventory!"); + return; + } + showinventory(user, user); +} +void showinventory(aClient *from, aClient *to) +{ + char *nick = to->getNick(); + + if (!to) + to = from; + if (is_playing(from)) + { + Pouch *p = &from->stats->inventory; + notice(s_GameServ, nick, "Inventory for %s:", from->getNick()); + notice(s_GameServ, nick, " Healing Potions: %d", p->Healing()); + notice(s_GameServ, nick, "Strength Potions: %d", p->Strength()); + notice(s_GameServ, nick, " Defense Potions: %d", p->Defense()); + } +} +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; + } + else if (is_fighting(user)) + { + notice(s_GameServ, u, "You cannot go to the Tavern during a fight!"); + 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; + } + } + else + { + notice(s_GameServ, u, "Improper Syntax."); + notice(s_GameServ, u, "Type /msg %S HELP TAVERN for help"); + } +} void do_bank(char *u) {