+#include "item.h"
#include "player.h"
-#include <stdlib.h>
+#include "pouch.h"
+#include "extern.h"
+#include "flags.h"
+
+#include <string>
#include <stdio.h>
-Player::Player(aClient *user)
+#if defined(HAVE_CRYPT_H)
+
+#include <crypt.h>
+
+#elif defined(HAVE_UNISTD_H)
+
+#include <unistd.h>
+
+#endif
+
+using namespace std;
+
+void Player::reset()
{
- name = new char [64];
-
- exp = 1;
- gold = 0;
- bank = 500;
- hp = 10;
- maxhp = 10;
- strength = 0;
- defense = 0;
- armor = 1;
- weapon = 1;
- level = 1;
- alive = 1;
- started = 1; // Possibly deprecated
- forest_fights = 100;
- player_fights = 3;
- fight = NULL;
- master = NULL;
- battle = NULL;
-
- if (user)
- strcpy(name, user->getNick());
- else
- {
- int num = rand() % 32767;
- sprintf(name, "Player%d", num);
- }
- cout << "New Player: " << name << endl << flush;
+ exp = 1;
+ gold = 0;
+ bank = 500;
+ hp = 10;
+ maxhp = 10;
+ strength = 0;
+ defense = 0;
+ arm = 1;
+ wea = 1;
+ level = 1;
+ forest_fights = forestfights;
+ player_fights = 3;
+ fight = NULL;
+ master = NULL;
+ battle = NULL;
+ flags = 0;
+ lastcommand = 0;
+ lastlogin = 0;
+ setAlive(this);
+ inventory->clear();
}
+
+Player::Player()
+{
+ inventory = new pouch();
+ setData(NULL);
+
+#ifdef DEBUGMODE
+ log("New Player: %s", name.c_str());
+#endif
+}
+
Player::Player(char *n)
{
- name = new char [64];
-
- exp = 1;
- gold = 0;
- bank = 500;
- hp = 10;
- maxhp = 10;
- strength = 0;
- defense = 0;
- armor = 1;
- weapon = 1;
- level = 1;
- alive = 1;
- started = 1; // Possibly deprecated
- forest_fights = 100;
- player_fights = 3;
- fight = NULL;
- master = NULL;
- battle = NULL;
- strcpy(name, n);
-
- cout << "New Player: " << name << endl << flush;
+ inventory = new pouch();
+ reset(); // Set defaults
+
+ name = n;
+
+#ifdef DEBUGMODE
+ log("New Player: %s", name.c_str());
+#endif
+}
+
+Player::Player(string n)
+{
+ inventory = new pouch();
+ reset();
+ name = n;
+#ifdef DEBUGMODE
+ log("New Player: %s", name.c_str());
+#endif
}
Player::~Player()
-{ delete name; }
+{
+ delete inventory;
+
+#ifdef DEBUGMODE
+ string *output;
+ output = new string("Deleting Player");
+#endif
+
+#ifdef DEBUGMODE
+ *output += ": " + name;
+#endif
+
+#ifdef DEBUGMODE
+ *output += " Password: " + password;
+ log ("%s", output->c_str());
+ delete output;
+#endif
+}
+void Player::setPassword(const char *p)
+{
+ static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV\
+WXYZ0123456789./";
+ static char salt[3];
+
+ salt[0] = saltChars[rand() % strlen(saltChars)];
+ salt[1] = saltChars[rand() % strlen(saltChars)];
+ salt[2] = '\0';
+
+ password = crypt(p, salt);
+}
void Player::setData(Player *right)
{
- if (right)
+ if (right)
+ {
+ name = right->name;
+ password = right->password;
+ exp = right->exp;
+ gold = right->gold;
+ bank = right->bank;
+ hp = right->hp;
+ maxhp = right->maxhp;
+ strength = right->strength;
+ defense = right->defense;
+ arm = right->arm;
+ wea = right->wea;
+ level = right->level;
+ forest_fights = right->forest_fights;
+ player_fights = right->player_fights;
+ flags = right->flags;
+ *inventory = *right->inventory;
+ client = right->client;
+ lastcommand = right->lastcommand;
+ lastlogin = right->lastlogin;
+ }
+ else
{
- strcpy(name, right->name);
- exp = right->exp;
- gold = right->gold;
- bank = right->bank;
- hp = right->hp;
- maxhp = right->maxhp;
- strength = right->strength;
- defense = right->defense;
- armor = right->armor;
- weapon = right->weapon;
- level = right->level;
- alive = right->alive;
- started = right->started; // Possibly obsoleted
- forest_fights = right->forest_fights;
- player_fights = right->player_fights;
- cout << "Setting Player data for " << right->name << endl;
+ char *temp;
+ reset();
+ temp = new char[16];
+ client = NULL;
+ int num = rand() % 32767;
+ snprintf(temp, 16, "Player: %d", num);
+ name = temp;
+ delete []temp;
}
+
+#ifdef DEBUGMODE
+ log("Setting Player data for %s", name.c_str());
+#endif
}
-const Player &Player::operator=( const Player &right )
+monster_::~monster_()
{
- if (&right != this)
- {
- strcpy(name, right.name);
- exp = right.exp;
- gold = right.gold;
- bank = right.bank;
- hp = right.hp;
- maxhp = right.maxhp;
- strength = right.strength;
- defense = right.defense;
- armor = right.armor;
- weapon = right.weapon;
- level = right.level;
- alive = right.alive;
- started = right.started; // Possibly obsoleted
- forest_fights = right.forest_fights;
- player_fights = right.player_fights;
- }
- return *this; // Enables Cascading ( x = y = z;)
+}
+
+monster_::monster_()
+{
+ name.erase();
+ weapon.erase();
+ death.erase();
+ strength = 0;
+ defense = 0;
+ exp = 0;
+ gold = 0;
+ maxhp = hp = 0;
+}
+
+monster_::monster_(monster_ *m)
+{
+ name = m->name;
+ weapon = m->weapon;
+ death = m->death;
+ strength = m->strength;
+ defense = m->defense;
+ maxhp = m->maxhp;
+ hp = m->hp;
+ gold = m->gold;
+ exp = m->exp;
+}
+
+monster_::monster_(monster_ &m)
+{
+ name = m.name;
+ weapon = m.weapon;
+ death = m.death;
+ strength = m.strength;
+ defense = m.defense;
+ maxhp = m.maxhp;
+ hp = m.hp;
+ gold = m.gold;
+ exp = m.exp;
+}
+
+long int Player::setFlags(long int newflags)
+{
+ flags = newflags;
+ return getFlags();
+}
+
+long int Player::addFlag(long int flag)
+{
+ flags |= flag;
+ return getFlags();
+}
+
+long int Player::remFlag(long int flag)
+{
+ flags &= ~flag;
+ return getFlags();
}