]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/gameserv.cpp
added myscript.cpp to srcs
[irc/gameservirc.git] / gameserv / gameserv.cpp
index 5d9b56b1b5f7e8c61e91ca57d04cfd3de6695da2..d7a0f3117b507a9562095cbd84ffafc78d0d0584 100644 (file)
@@ -3,6 +3,7 @@
 #include "extern.h"
 #include "flags.h"
 #include "list.h"
+#include "myString.h"
 #include "sockhelp.h"
 
 #include <cctype>
@@ -224,6 +225,16 @@ void gameserv(char *source, char *buf)
        do_tavern(source);
     } else if (stricmp(cmd, "LIST") == 0) {
        do_list(source);
+    #ifdef DEBUGMODE
+    } else if (stricmp(cmd, "PRINT") == 0) {
+       List<myString> news;
+       myString *st;
+       st = new myString("This is a test");
+       cout << news.insertAtBack_RLN(st)->getData() << endl;
+       cout << st << endl;
+       news.print();
+       delete st;
+    #endif
     } else if (stricmp(cmd, "LOGOUT") == 0) {
        do_logout(source);
     } else if (stricmp(cmd, "REGISTER") == 0) {
@@ -404,6 +415,20 @@ void showstats(const char *u, const char *nick)
         space = spaces(strlen(buf), " ");
         notice(s_GameServ, sender->getNick(), "%s%sPlayer Fights: %d", buf, space, ni->stats->player_fights);
         delete [] space;
+       Pouch *inv = &ni->stats->inventory;
+
+       notice(s_GameServ, u, "Potions");
+       sprintf(buf, "Healing: %d", inv->Healing());
+       space = spaces(strlen(buf), " ");
+       notice(s_GameServ, sender->getNick(), "%s%sHP: %d", buf, 
+               space, inv->HP());
+       delete [] space;
+
+       sprintf(buf, "Strength: %d", inv->Strength());
+       space = spaces(strlen(buf), " ");
+       notice(s_GameServ, sender->getNick(), "%s%sDefense: %d", buf, 
+               space, inv->Defense());
+       delete [] space;
     }
     else
     {
@@ -579,6 +604,8 @@ char *strtok(char *str, const char *delim)
 void do_list(char *u)
 {
     aClient *user;
+    char *cmd = strtok(NULL, " ");
+
     if (!(user = find(u)))
     {
        log("Fatal Error: Couldn't find %s in the client list", u);
@@ -594,25 +621,29 @@ void do_list(char *u)
 
     ListNode<aClient> *temp;
     bool header = false;
+
   for (unsigned long x = 0; x < U_TABLE_SIZE; x++)
   {
     temp = players[x].First();
     if (!players[x].isEmpty())
     {
-       if (!header)
-       {
-           notice(s_GameServ, u, "People Playing:");
-           header = true;
-       }
        while(temp)
        {
-           #ifdef P10
-           notice(s_GameServ, u, "IRC: %s     Game: %s", temp->getData()->getRealNick(), 
-                  temp->getData()->stats->name);
-           #else
-           notice(s_GameServ, u, "IRC: %s     Game: %s", temp->getData()->getNick(), 
-                  temp->getData()->stats->name);
-           #endif
+           if (!cmd || is_playing(temp->getData()))
+           {
+               if (!header)
+               {
+                   notice(s_GameServ, u, "Players:");
+                   header = true;
+               }
+               #ifdef P10
+               notice(s_GameServ, u, "IRC: %s     Game: %s", temp->getData()->getRealNick(), 
+                       temp->getData()->stats->name);
+               #else
+               notice(s_GameServ, u, "IRC: %s     Game: %s", temp->getData()->getNick(), 
+                       temp->getData()->stats->name);
+               #endif
+           }
 
            temp = temp->Next();
        }
@@ -918,7 +949,7 @@ void init_masters()
 
     strcpy(masters[0]->name, "Old Bones");
     strcpy(masters[0]->weapon, "Dull Sword Cane");
-    masters[0]->strength = 30;
+    masters[0]->strength = 32;
     masters[0]->gold = 0;
     masters[0]->exp = 0;
     masters[0]->maxhp = 35;
@@ -927,7 +958,7 @@ void init_masters()
 
     strcpy(masters[1]->name, "Master Chang");
     strcpy(masters[1]->weapon, "Nanchaku");
-    masters[1]->strength = 45;
+    masters[1]->strength = 48;
     masters[1]->gold = 0;
     masters[1]->exp = 0;
     masters[1]->maxhp = 51;
@@ -936,7 +967,7 @@ void init_masters()
 
     strcpy(masters[2]->name, "Chuck Norris");
     strcpy(masters[2]->weapon, "Ranger Kick");
-    masters[2]->strength = 83;
+    masters[2]->strength = 88;
     masters[2]->gold = 0;
     masters[2]->exp = 0;
     masters[2]->maxhp = 100;
@@ -946,7 +977,7 @@ void init_masters()
 
     strcpy(masters[3]->name, "Mr. Miagi");
     strcpy(masters[3]->weapon, "Petrified Bonsai");
-    masters[3]->strength = 159;
+    masters[3]->strength = 169;
     masters[3]->gold = 0;
     masters[3]->exp = 0;
     masters[3]->maxhp = 165;
@@ -955,7 +986,7 @@ void init_masters()
 
     strcpy(masters[4]->name, "Jackie Chan");
     strcpy(masters[4]->weapon, "Kung Fu Kick");
-    masters[4]->strength = 260;
+    masters[4]->strength = 275;
     masters[4]->gold = 0;
     masters[4]->exp = 0;
     masters[4]->maxhp = 232;
@@ -964,7 +995,7 @@ void init_masters()
 
     strcpy(masters[5]->name, "Jet Li");
     strcpy(masters[5]->weapon, "Motorcycle");
-    masters[5]->strength = 325;
+    masters[5]->strength = 347;
     masters[5]->gold = 0;
     masters[5]->exp = 0;
     masters[5]->maxhp = 504;
@@ -974,7 +1005,7 @@ void init_masters()
 
     strcpy(masters[6]->name, "Muhammad Ali");
     strcpy(masters[6]->weapon, "Quick Jab");
-    masters[6]->strength = 380;
+    masters[6]->strength = 515;
     masters[6]->gold = 0;
     masters[6]->exp = 0;
     masters[6]->maxhp = 1078;
@@ -983,7 +1014,7 @@ void init_masters()
 
     strcpy(masters[7]->name, "Li Mu Bai");
     strcpy(masters[7]->weapon, "Green Destiny");
-    masters[7]->strength = 462;
+    masters[7]->strength = 655;
     masters[7]->gold = 0;
     masters[7]->exp = 0;
     masters[7]->maxhp = 2207;
@@ -993,7 +1024,7 @@ void init_masters()
 
     strcpy(masters[8]->name, "Jimmy Wang Yu");
     strcpy(masters[8]->weapon, "Flying Guillotine");
-    masters[8]->strength = 511;
+    masters[8]->strength = 819;
     masters[8]->gold = 0;
     masters[8]->exp = 0;
     masters[8]->maxhp = 2780;
@@ -1002,7 +1033,7 @@ void init_masters()
 
     strcpy(masters[9]->name, "Wong Fei Hung");
     strcpy(masters[9]->weapon, "Drunken Boxing");
-    masters[9]->strength = 618;
+    masters[9]->strength = 1014;
     masters[9]->gold = 0;
     masters[9]->exp = 0;
     masters[9]->maxhp = 3046;
@@ -1011,7 +1042,7 @@ void init_masters()
 
     strcpy(masters[10]->name, "Bruce Lee");
     strcpy(masters[10]->weapon, "Fists of fury");
-    masters[10]->strength = 725;
+    masters[10]->strength = 1286;
     masters[10]->gold = 0;
     masters[10]->exp = 0;
     masters[10]->maxhp = 3988;
@@ -1331,19 +1362,24 @@ void do_use(char *u)
 
     p = &user->stats->inventory;
 
-    if (stricmp(item, "HEALTH") == 0)
+    if (stricmp(item, "HEALING") == 0)
     {
        if (p->Healing() <= 0)
        {
-           notice(s_GameServ, u, "You are out of Health Potions!");
+           notice(s_GameServ, u, "You are out of Healing Potions!");
            return;
        }
-       int oldhealth = user->stats->hp;
+       int oldhealing = user->stats->hp;
        notice(s_GameServ, u, "You hastiliy gulp down the flask of cool life-giving waters.");
        notice(s_GameServ, u, "Rejuvination spreads throughout your body.");
        user->stats->hp += (10 * user->stats->level) + (rand() % 10) * user->stats->level;
-       notice(s_GameServ, u, "You gain %d HP!", user->stats->hp - oldhealth);
+       notice(s_GameServ, u, "You gain %d HP!", user->stats->hp - oldhealing);
        p->decHealing();
+       if (player_fight(user))
+       {
+           notice(s_GameServ, user->stats->battle->getNick(),
+               "%s has used a healing potion!");
+       }
     }
     else if (stricmp(item, "STRENGTH") == 0)
     {
@@ -1358,6 +1394,11 @@ void do_use(char *u)
        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();
+       if (player_fight(user))
+       {
+           notice(s_GameServ, user->stats->battle->getNick(),
+               "%s has used a strength potion!");
+       }
     }
     else if (stricmp(item, "DEFENSE") == 0)
     {
@@ -1372,6 +1413,11 @@ void do_use(char *u)
        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();
+       if (player_fight(user))
+       {
+           notice(s_GameServ, user->stats->battle->getNick(),
+               "%s has used a defense potion!");
+       }
     }
     else if (stricmp(item, "HP") == 0)
     {
@@ -1387,10 +1433,15 @@ void do_use(char *u)
 
        notice(s_GameServ, u, "You gain %d Maximum hit points!", user->stats->maxhp - oldHP);
        p->decHP();
+       if (player_fight(user))
+       {
+           notice(s_GameServ, user->stats->battle->getNick(),
+               "%s has used a HP potion!");
+       }
     }
     else
     {
-       notice(s_GameServ, u, "SYNTAX: /msg %S USE {HEALTH | STRENGTH | DEFENSE}");
+       notice(s_GameServ, u, "SYNTAX: /msg %S USE {HEALING | STRENGTH | DEFENSE | HP}");
        return;
     }
 
@@ -2414,6 +2465,7 @@ void do_tavern(char *u)
 
     aClient *user;
     Player *p;
+
     if (!(user = find(u)))
     {
        notice(s_GameServ, u, "Fatal Error. See a %S admin for help");
@@ -2449,14 +2501,17 @@ void do_tavern(char *u)
     }
     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", 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, "Here is a list of what we have to offer:");
+           notice(s_GameServ, u, "1. Healing Potions for %ld Gold", 
+                                       1000 * p->level * 4);
+           notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 
+                                       2500 * p->level * 4);
+           notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 
+                                       3000 * p->level * 4);
+           notice(s_GameServ, u, "4. HP Potions for %ld Gold", 
+                                       2000 * p->level * 4);
+           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!");
     }
     else if (stricmp(cmd, "BUY") == 0)
     {
@@ -2473,10 +2528,14 @@ void do_tavern(char *u)
        {
            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", 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, "1. Healing Potions for %ld Gold", 
+                                       1000 * p->level * 4);
+           notice(s_GameServ, u, "2. Strength Potions for %ld Gold", 
+                                       2500 * p->level * 4);
+           notice(s_GameServ, u, "3. Defense Potions for %ld Gold", 
+                                       3000 * p->level * 4);
+           notice(s_GameServ, u, "4. HP Potions for %ld Gold", 
+                                       2000 * p->level * 4);
            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;
@@ -2484,7 +2543,7 @@ void do_tavern(char *u)
        switch(num)
        {
            case 1:
-               price = (100 * p->level) + (p->exp / 10);
+               price = (1000 * p->level * 4);
                if (p->gold >= price)
                {
                    notice(s_GameServ, u, "One healing potion coming right up!");
@@ -2495,7 +2554,7 @@ void do_tavern(char *u)
                    notice(s_GameServ, u, "You don't have enough gold!");
                break;
            case 2:
-               price = (205 * p->level) + (p->exp / 10);
+               price = 2500 * p->level * 4;
                if (p->gold >= price)
                {
                    notice(s_GameServ, u, "One strength boost coming right up!");
@@ -2506,7 +2565,7 @@ void do_tavern(char *u)
                    notice(s_GameServ, u, "You don't have enough gold!");
                break;
            case 3:
-               price = (200 * p->level) + (p->exp / 10);
+               price = 3000 * p->level * 4;
                if (p->gold >= price)
                {
                    notice(s_GameServ, u, "One defense boost coming right up!");
@@ -2517,7 +2576,7 @@ void do_tavern(char *u)
                    notice(s_GameServ, u, "You don't have enough gold!");
                break;
            case 4:
-               price = (230 * p->level) + (p->exp / 10);
+               price = 3000 * p->level * 4;
                if (p->gold >= price)
                {
                    notice(s_GameServ, u, "One HP Potion coming right up!");
@@ -2733,17 +2792,17 @@ void do_dragon(char *u)
        notice(s_GameServ, u, "You're dead. Wait until tomorrow to see your master!");
        return;
     }
-    else if (user->stats->level < 12)
+    else if (user->stats->level < REALLEVELS)
     {
        notice(s_GameServ, u, "You fool! Only those strong enough "\
                "to vanquish any foe should DARE fight the dragon!");
        notice(s_GameServ, u, "To put it in terms you can understand: "\
-               "You are too weak. You must be Level 12!");
+               "You are too weak. You must be Level %d!", REALLEVELS);
+       return;
     }
 
     updateTS(user->stats);
 
-    char *cmd = strtok(NULL, " ");
     Player *p = user->stats;
     p->fight = new Monster(boss);
     notice(s_GameServ, u, "You approach the dragon's lair cautiously.");
@@ -2751,7 +2810,7 @@ void do_dragon(char *u)
        "deep, red fog rolls in. The air is filled with the "\
        "heated mist of deadly fire from beyond the cave "\
        "entrance.");
-    notice(s_GameServ, u, "You adjust your %s, tighten your grip on "\ 
+    notice(s_GameServ, u, "You adjust your %s, tighten your grip on "\
        "your %s, and venture into the hot, dark cave. "\
        "You are surprised at the angle of descent as you climb "\
        "lower and lower, deeper into the dragon's den.");
@@ -2762,7 +2821,7 @@ void do_dragon(char *u)
     notice(s_GameServ, u, "Just then you notice the eye begin to "\
        "glare orange! The tooth is moving... but it is still too "\
        "dark for you to make out.... THE DRAGON! You see it!");
-    display_monsters(u);
+    display_monster(u);
 }
 
 void do_master(char *u)
@@ -2847,9 +2906,10 @@ void do_master(char *u)
            case 11:
                need = 20000000;
                break;
-           case 12:
+
+           case REALLEVELS:
                need = p->exp + 1;
-               notice(s_GameServ, u, "You are at level 12. You are the master. What's left? The DRAGON!");
+               notice(s_GameServ, u, "You are at level %d. You are the master. What's left? The DRAGON!", REALLEVELS);
                return;
                break;
            default: