X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/cdc9a6db137c768ed564fe0853d6800fcaf27043..6f727d4c9eb5c886f14598577f40da583577444e:/gameserv/player.cpp diff --git a/gameserv/player.cpp b/gameserv/player.cpp index 03d18ea..75ab302 100644 --- a/gameserv/player.cpp +++ b/gameserv/player.cpp @@ -1,13 +1,14 @@ #include "player.h" +#include "pouch.h" +#include "extern.h" +#include "flags.h" #include #include void Player::reset() { - memset(name, 0, 255); - memset(password, 0, 255); - - cout << "Got Here" << endl; + memset(name, 0, 256); + memset(password, 0, 256); exp = 1; gold = 0; @@ -19,13 +20,26 @@ void Player::reset() armor = 1; weapon = 1; level = 1; - alive = 1; - started = 1; // Possibly deprecated - forest_fights = 100; + forest_fights = forestfights; player_fights = 3; fight = NULL; master = NULL; battle = NULL; + flags = 0; + lastcommand = 0; + setAlive(this); + inventory.reset(); +} + +Player::Player() +{ + name = new char[256]; + password = new char[256]; + setData(NULL); + + #ifdef DEBUGMODE + log("New Player: %s", name); + #endif } Player::Player(aClient *user) @@ -35,11 +49,13 @@ Player::Player(aClient *user) password = new char[256]; if (user) + { setData(user->stats); + strcpy(name, user->getNick()); + } else setData(NULL); - cout << "New Player: " << name << endl << flush; } Player::Player(char *n) @@ -51,24 +67,41 @@ Player::Player(char *n) strcpy(name, n); - cout << "New Player: " << name << endl << flush; + #ifdef DEBUGMODE + log("New Player: %s", name); + #endif } Player::~Player() -{ - cout << "Deleting player"; - - if (name) +{ + #ifdef DEBUGMODE + char *output; + output = new char[strlen(name) + strlen(password) + 48]; + strcpy(output, "Deleting Player"); + #endif + + if (name != NULL) { - cout << ": " << name; + #ifdef DEBUGMODE + sprintf(output, "%s: %s", output, name); + #endif + delete [] name; } - if (password) + + if (password != NULL) { - cout << " Password: " << password; + #ifdef DEBUGMODE + sprintf(output, "%s Password: %s", output, password); + #endif + delete [] password; } - cout << endl << "Player Deleted"; + + #ifdef DEBUGMODE + log ("%s", output); + delete [] output; + #endif } void Player::setData(Player *right) @@ -87,18 +120,82 @@ void Player::setData(Player *right) 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; + flags = right->flags; + inventory.setInventory(&right->inventory); + client = right->client; + lastcommand = right->lastcommand; } else { reset(); - + client = NULL; int num = rand() % 32767; - sprintf(name, "Player%d\0", num); + sprintf(name, "Player%d", num); } - cout << "Setting Player data for " << name << endl; + #ifdef DEBUGMODE + log("Setting Player data for %s", name); + #endif +} + +monster_::~monster_() +{ + delete name; + delete weapon; + delete death; +} + +monster_::monster_() +{ + name = new char[64]; + weapon = new char[64]; + death = new char[512]; + + memset(name, 0, 64); + memset(weapon, 0, 64); + memset(death, 0, 512); +} + +monster_::monster_(monster_ *m) +{ + name = new char[strlen(m->name) + 1]; + weapon = new char[strlen(m->weapon) + 1]; + death = new char[strlen(m->death) + 1]; + + strcpy(name, m->name); + strcpy(weapon, m->weapon); + strcpy(death, m->death); + + strength = m->strength; + 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(); +} + +Pouch::Pouch(int h, int s, int d) +{ + setHealing(h); + setStrength(s); + setDefense(d); }