]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/c_forest.cpp
Fixed indents in c_forest.cpp
[irc/gameservirc.git] / gameserv / c_forest.cpp
index e2f76dce055ecd36b65b6d9a3cc298de1689677e..87badae48cb696ea6da4fdf7bc55458788983c17 100644 (file)
@@ -1,9 +1,10 @@
-#include "sockhelp.h"
 #include "aClient.h"
-#include "list.h"
+#include <cctype>
 #include "extern.h"
 #include "flags.h"
-#include <cctype>
+#include "item.h"
+#include "pouch.h"
+#include "sockhelp.h"
 
 void do_forest(char *u);
 Monster *getNewMonster(Monster *m);
@@ -21,185 +22,162 @@ void forest(char *source, char *buf)
        if (stricmp(cmd, "SEARCH") == 0)
        {
            do_forest(source);
-       } else if (stricmp(cmd, "ATTACK") == 0) {
+       } 
+   else if (stricmp(cmd, "ATTACK") == 0) 
+   {
            do_attack(source);
-        } else if (stricmp(cmd, "RUN") == 0) {
+   } 
+   else if (stricmp(cmd, "RUN") == 0) 
+   {
            do_run(source);
-       } else if (stricmp(cmd, "HEAL") == 0) {
+       }
+   else if (stricmp(cmd, "HEAL") == 0) 
+   {
            do_heal(source);
        }
 
-source--;
+   source--;
 }
 
 void do_forest(char *u)
 {
-    aClient *source;
-
-    int num = rand() % 12;
-
-
-    if (!(source = find(u)))
-    {
-       notice(s_GameServ, u, "Fatal Error in do_forest. Contact a %S admin for help.");
-       return;
-    }
-    else if (!is_playing(source))
-    {
-        notice(s_GameServ, u, "You must be playing the game to search the forest!");
-       return;
-    }
-    Player *p = source->stats;
-
-    if (!isAlive(p))
-    {
-       notice(s_GameServ, u, "You are dead. Wait until tomorrow to search the forest some more.");
-       return;
-    }
-    else 
-    {
-       updateTS(source->stats);
-        if (p->forest_fights <= 0)
-        {
-            notice(s_GameServ, u, "You are out of forest fights for the day. Wait "\
-                "till tomorrow!");
-            return;
+  aClient *source;
+  
+   if (!(source = find(u)))
+   {
+      notice(s_GameServ, u, "Fatal Error in do_forest. Contact a <S admin for help.");
+      return;
+   }
+   else if (!is_playing(source))
+   {
+      notice(s_GameServ, u, "You must be playing the game to search the forest!");
+      return;
+   }
+   Player *p = source->stats;
+  
+   if (!isAlive(p))
+   {
+      notice(s_GameServ, u, "You are dead. Wait until tomorrow to search the forest some more.");
+      return;
+   }
+   else 
+   {
+      updateTS(source->stats);
+      if (p->getForestFights() <= 0)
+      {
+         notice(s_GameServ, u, "You are out of forest fights for the day. Wait "\
+                                 "till tomorrow!");
+         return;
+      }
+      else if (!is_fighting(source))
+      {
+         int eventnum = rand() % 100;
+         p->subtractForestFights(1);
+                 
+         notice(s_GameServ, u, "You search the forest for something to kill...");
+                 
+         // 90% of forest searching turns up a monster
+         if (eventnum >= 10)
+                       {
+            p->setMonster(levels[p->getLevel() - 1].randomMonster());
+
+            notice(s_GameServ, u, "You have found \ 2%s\ 2!", 
+                   p->getMonster()->name.c_str());
+            if (p->getMonster()->hp < p->getMonster()->maxhp)
+            p->getMonster()->hp = p->getMonster()->maxhp;
+
+            p->delBattle(); // Just to make sure
+            p->delMaster(); // Just to make sure
+            display_monster(u);
+                       }
+         else if (eventnum < 10 && eventnum >= 9) // 1% for finding potions
+         {
+            list<tavernItem>::iterator temp_tavernitem;
+
+            notice(s_GameServ, u, "Fortune smiles upon thee!");
+
+            eventnum = rand() % tavern.size();
+            temp_tavernitem = tavern.begin();
+            for (int x = 0;x < eventnum;x++)
+            {
+               temp_tavernitem++;
+            }
+            notice(s_GameServ, u, "You have found a %s", (*temp_tavernitem).getItem()->getName().c_str());
+            p->inventory->addItem((*temp_tavernitem).getItem());
+         }
+         else if (eventnum < 9 && eventnum >= 4) // 5% for the fountain
+         {
+            if (p->getHP() < p->getMaxHP())
+            {
+               notice(s_GameServ, u, "In your path lies a beautiful fountain from which flows the crystal waters of life.");
+               notice(s_GameServ, u, "You wet your lips on the cool blue waters and feel rejuvenated");
+               p->healall();
+            }
+            else
+            {
+               notice(s_GameServ, u, "In your path lies a beautiful fountain from which flows the crystal waters of life.");
+               notice(s_GameServ, u, "You are not thirsty, though, and you don't need healing. Best to leave this for the next warrior");
+               p->addForestFights(1);
+            }
+         }
+         else if (eventnum < 4) // 4 % for the wishing well
+         {
+            notice(s_GameServ, u, "You come upon a pure green emerald studded magic wishing well.");
+            if (p->getGold() == 0)
+            {
+               notice(s_GameServ, u, "Too bad you're broke. Guess you won't be having any wishes answered today.");
+               p->addForestFights(1);
+               return;
+            }
+            long newstats;
+            notice(s_GameServ, u, "You throw one of your gold pieces into the well and it vanishes into a puff of white smoke.");
+            notice(s_GameServ, u, "In an instant, the puff of smoke materializes into a gnome.");
+            notice(s_GameServ, u, "The gnome is holding something in his hand motioning for you to come closer.");
+            notice(s_GameServ, u, "It is a wand! The gnome is waving it through the air towards you!");
+            // 2% for each wishing well chance except for forest fights
+            if (eventnum < 1) // forest fights
+            {
+               newstats = (rand() % 11) + 5;
+               notice(s_GameServ, u, "%ld EXTRA FOREST FIGHTS!!", 
+                        newstats);
+               p->addForestFights(newstats);
+            }
+            else if (eventnum < 3)
+            {
+               newstats = levels[p->getLevel() - 1].getGold().random();
+               notice(s_GameServ, u, "A SACK WITH %ld GOLD!", newstats);
+               p->addGold(newstats);
+            }
+            else
+            {
+               newstats = levels[p->getLevel() - 1].getExp().random();
+               notice(s_GameServ, u, "Time seems to stand still for a moment.");
+               notice(s_GameServ, u, " %ld EXTRA EXPERIENCE POINTS", newstats);
+               p->addExp(newstats);
+            }
         }
-        else if (!is_fighting(source))
-        {
-           int eventnum = rand() % 100;
-           p->forest_fights--;
-
-           notice(s_GameServ, u, "You search the forest for something to kill...");
-
-           // 88% of forest searching turns up a monster
-           if (eventnum >= 12)
-           {
-               p->fight = new Monster(monsters[p->level - 1][num]);
-               notice(s_GameServ, u, "You have found \ 2%s\ 2!", p->fight->name);
-               if (p->fight->hp < p->fight->maxhp)
-                   p->fight->hp = p->fight->maxhp;
-
-               p->battle = NULL; // Just to make sure
-               p->master = NULL; // Just to make sure
-               display_monster(u);
-           }
-           else if (eventnum < 12 && eventnum >= 10) // 2% for finding potions
-           {
-               notice(s_GameServ, u, "Fortune smiles upon thee!");
-
-               eventnum = 1 + rand() % 4;
-               switch(eventnum)
-               {
-                   case 1:
-                       notice(s_GameServ, u,
-                       "You have found an HP Potion!");
-                       p->inventory.incHP();
-                       break;
-                   case 2:
-                       notice(s_GameServ, u,
-                       "You have found a Strength Potion!");
-                       p->inventory.incStrength();
-                       break;
-                   case 3:
-                       notice(s_GameServ, u,
-                       "You have found a Defense Potion!");
-                       p->inventory.incDefense();
-                       break;
-                   case 4:
-                       notice(s_GameServ, u,
-                       "You have found a Healing Potion!");
-                       p->inventory.incHealing();
-                       break;
-               }
-           }
-           else if (eventnum < 10 && eventnum >= 5) // 5% for the fountain
-           {
-               if (p->hp < p->maxhp)
-               {
-                   notice(s_GameServ, u, "In your path lies a beautiful fountain from which flows the crystal waters of life.");
-                   notice(s_GameServ, u, "You wet your lips on the cool blue waters and feel rejuvenated");
-                   p->hp = p->maxhp;
-               }
-               else
-               {
-                   notice(s_GameServ, u, "In your path lies a beautiful fountain from which flows the crystal waters of life.");
-                   notice(s_GameServ, u, "You are not thirsty, though, and you don't need healing. Best to leave this for the next warrior");
-                   p->forest_fights++;
-               }
-           }
-           else if (eventnum < 5) // 5 % for the wishing well
-           {
-               notice(s_GameServ, u, "You come upon a pure green emerald studded magic wishing well.");
-               if (p->gold == 0)
-               {
-                   notice(s_GameServ, u, "Too bad you're broke. Guess you won't be having any wishes answered today.");
-                   return;
-               }
-               long newstats;
-               notice(s_GameServ, u, "You throw one of your gold pieces into the well and it vanishes into a puff of white smoke.");
-               notice(s_GameServ, u, "In an instant, the puff of smoke materializes into a gnome.");
-               notice(s_GameServ, u, "The gnome is holding something in his hand motioning for you to come closer.");
-               notice(s_GameServ, u, "It is a wand! The gnome is waving it through the air towards you!");
-               // 2% for each wishing well chance except for forest fights
-               if (eventnum < 1) // forest fights
-               {
-                   newstats = (rand() % 11) + 5;
-                   notice(s_GameServ, u, "%ld EXTRA FOREST FIGHTS!!", 
-                               newstats);
-                   p->forest_fights += newstats;
-               }
-               else if (eventnum < 3)
-               {
-                   newstats = (rand() % 1000) * (p->level + (rand() % 10));
-                   notice(s_GameServ, u, "A SACK WITH %ld GOLD!", newstats);
-                   p->gold += newstats;
-               }
-               else
-               {
-                   newstats = (rand() % 100) * (p->level + rand() % 10);
-                   notice(s_GameServ, u, "Time seems to stand still for a moment.");
-                   notice(s_GameServ, u, " %ld EXTRA EXPERIENCE POINTS", newstats);
-                   p->exp += newstats;
-               }
-           }
-        }
-        else if (is_fighting(u))
-        {
-            notice(s_GameServ, u, "You want to fight two monsters at once?");
-        }
-    }
-
+      }
+      else if (is_fighting(u))
+      {
+         notice(s_GameServ, u, "You want to fight two monsters at once?");
+      }
+   }  
 }
 
 Monster *getNewMonster(Monster *m)
 {
-    if (!m)
-       return NULL;
-
-    Monster *newguy;
-    newguy = new Monster;
-
-    if (m->name)
-    {
-       newguy->name = new char[strlen(m->name)];
-       strcpy(newguy->name, m->name);
-    }
-    if (m->weapon)
-    {
-       newguy->weapon = new char[strlen(m->weapon)];
-       strcpy(newguy->weapon, m->weapon);
-    }
-    if (m->death)
-    {
-       newguy->death = new char[strlen(m->death)];
-       strcpy(newguy->death, m->death);
-    }
-
-    newguy->strength = m->strength;
-    newguy->gold = m->gold;
-    newguy->exp = m->exp;
-    newguy->hp = m->hp;
-    newguy->maxhp = m->maxhp;
-    return newguy;
+   if (!m)
+      return NULL;
+
+   Monster *newguy;
+   newguy = new Monster;
+   newguy->name = m->name;
+   newguy->weapon = m->weapon;
+   newguy->death = m->death;
+   newguy->strength = m->strength;
+   newguy->gold = m->gold;
+   newguy->exp = m->exp;
+   newguy->hp = m->hp;
+   newguy->maxhp = m->maxhp;
+   return newguy;
 }