]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/gameserv.cpp
Fixed a bug adding wrong bonuses for level gains
[irc/gameservirc.git] / gameserv / gameserv.cpp
index 75cb328790835f2ecbc56f06ceccb19ddecd6f04..536afafee64c7cddede659127f2a4457dac83247 100644 (file)
@@ -22,13 +22,6 @@ using std::ios;
 
 #endif
 
-// this will be hash.cpp start
-// thank you wcampbel
-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
-
 
 Monster *monsters[LEVELS][MONSTERS];   // Monsters per level. Total = MONSTERS * LEVELS
 Monster boss;                          // The boss monster
@@ -881,7 +874,8 @@ void do_identify(char *u)
        setPlaying(user); // set the playing flag
 
        temp->setPtr(user);
-       notice(s_GameServ, u, "Password Accepted. Identified.");            
+       notice(s_GameServ, u, "Password Accepted. Identified.");
+       showNews(u, todaysnews);
     }
 }
 
@@ -1650,7 +1644,12 @@ void do_attack(char *u)
     if (hit >= fight->hp)
     {
         if (master_fight(ni))
+       {
             notice(s_GameServ, u, "You have bested %s!", fight->name);
+           addNews(todaysnews, "%s has bested %s and moved "\
+                   "to level %d", ni->stats->name, fight->name,
+                   (ni->stats->level + 1));
+       }
         else
             notice(s_GameServ, u, "You have killed \ 2%s\ 2!", fight->name);
 
@@ -1676,7 +1675,6 @@ void do_attack(char *u)
                      strbonus[ni->stats->level - 1], defbonus[ni->stats->level - 1]);
 
            // Increase your level
-            ni->stats->level++;
 
            // Increase your maximum hit points
             ni->stats->maxhp += hpbonus[ni->stats->level - 1];
@@ -1690,6 +1688,8 @@ void do_attack(char *u)
            // Add to your defensive power
             ni->stats->defense += defbonus[ni->stats->level - 1];
 
+            ni->stats->level++;
+
            // Clear the pointer for your master
             ni->stats->master = NULL;
         }
@@ -1720,6 +1720,8 @@ void do_attack(char *u)
                 notice(s_GameServ, u, "You have been \ 2\1fkilled\1f\ 2 by %s!", fight->name);
                 notice(s_GameServ, u, "You lose all gold on hand and lose 10 percent "\
                         "of your experience!");
+               addNews(todaysnews, "%s has been killed by %s!",
+                       ni->stats->name, fight->name);
                 ni->stats->gold = 0;
                 ni->stats->exp -= (long int)(ni->stats->exp * .10);
                ni->stats->hp = 0;
@@ -1731,6 +1733,8 @@ void do_attack(char *u)
             {
                 notice(s_GameServ, u, "%s has bested you! You will have to wait "\
                         "until tomorrow to try again", ni->stats->master->name);
+               addNews(todaysnews, "%s tried to best %s and failed!",
+                       ni->stats->name, fight->name);
                 ni->stats->fight = NULL;
                 ni->stats->master = NULL;
                return;
@@ -1846,18 +1850,13 @@ void do_attack(char *u)
         notice(s_GameServ, battle->getNick(), "%s has hit you with their %s for "\
                                              "\ 2%d\ 2 damage!", ni->stats->name, 
                                              weapons[ni->stats->weapon], hit);
-       clearYourTurn(ni->stats);
-       setYourTurn(battle->stats);
-        display_players(battle);
     }
     else
     {
         notice(s_GameServ, u, "You miss \1f%s\1f completely!", battle->stats->name);
         notice(s_GameServ, battle->getNick(), "%s misses you completely!", ni->stats->name);
-       clearYourTurn(ni->stats);
-       setYourTurn(battle->stats);
-        display_players(battle);
     }
+
     if (hit >= battle->stats->hp)
     {
         notice(s_GameServ, u, "You have killed \ 2%s\ 2!", battle->stats->name);
@@ -1899,6 +1898,8 @@ void do_attack(char *u)
 
             ni->stats->gold = 2000000000;
         }
+       clearYourTurn(ni->stats);
+       clearYourTurn(battle->stats);
        battle->stats->battle = NULL;
         ni->stats->battle = NULL;
         return;
@@ -1909,9 +1910,9 @@ void do_attack(char *u)
             battle->stats->hp -= hit;
        clearYourTurn(ni->stats);
        setYourTurn(battle->stats);
+        display_players(battle);
         notice(s_GameServ, u, "Please wait while %s decides what to do!", 
                battle->stats->name);
-
         return;
     }
    }
@@ -2454,6 +2455,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");
@@ -2489,14 +2491,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)
     {
@@ -2513,10 +2518,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;
@@ -2524,7 +2533,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!");
@@ -2535,7 +2544,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!");
@@ -2546,7 +2555,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!");
@@ -2557,7 +2566,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!");
@@ -3409,35 +3418,3 @@ bool load_monsters()
     delete [] buf;
 return true;
 }
-
-// this will be hash.cpp start
-// thank you wcampbel
-unsigned long sHASH(const unsigned char *name)
-{
-  unsigned long h = 0, g;
-
-  while (*name)
-  {
-    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 % U_TABLE_SIZE;
-}
-
-// this will be hash.cpp end