]> jfr.im git - irc/gameservirc.git/blame - gameserv/player.cpp
Fixed some bugs
[irc/gameservirc.git] / gameserv / player.cpp
CommitLineData
85ce9d3e 1#include "player.h"
3662210f 2#include "pouch.h"
20d5d721 3#include "extern.h"
ee38284f 4#include "flags.h"
85ce9d3e 5#include <stdlib.h>
6#include <stdio.h>
7
e3c5fe46 8void Player::reset()
85ce9d3e 9{
ce61cdfa 10 memset(name, 0, 256);
11 memset(password, 0, 256);
cbf6551f 12
85ce9d3e 13 exp = 1;
14 gold = 0;
15 bank = 500;
16 hp = 10;
17 maxhp = 10;
18 strength = 0;
19 defense = 0;
20 armor = 1;
21 weapon = 1;
22 level = 1;
20d5d721 23 forest_fights = forestfights;
85ce9d3e 24 player_fights = 3;
25 fight = NULL;
26 master = NULL;
27 battle = NULL;
1af35752 28 flags = 0;
ee38284f 29 setAlive(this);
3662210f 30 inventory.reset();
e3c5fe46 31}
32
33Player::Player(aClient *user)
34{
cdc9a6db 35
36 name = new char[256];
37 password = new char[256];
38
85ce9d3e 39 if (user)
ab4f4ec0 40 {
0a1518fa 41 setData(user->stats);
ab4f4ec0 42 strcpy(name, user->getNick());
43 }
85ce9d3e 44 else
0a1518fa 45 setData(NULL);
46
9f8c2acc 47 #ifdef DEBUGMODE
48 log("New Player: %s", name);
49 #endif
85ce9d3e 50}
0a1518fa 51
85ce9d3e 52Player::Player(char *n)
53{
cdc9a6db 54 name = new char[256];
55 password = new char[256];
56
e3c5fe46 57 reset(); // Set defaults
85ce9d3e 58
85ce9d3e 59 strcpy(name, n);
60
f2072f1a 61 #ifdef DEBUGMODE
62 log("New Player: %s", name);
63 #endif
85ce9d3e 64}
65
66Player::~Player()
9f8c2acc 67{
68 #ifdef DEBUGMODE
69 char *output;
ce61cdfa 70 output = new char[strlen(name) + strlen(password) + 48];
9f8c2acc 71 strcpy(output, "Deleting Player");
72 #endif
73
ce61cdfa 74 if (name != NULL)
cbf6551f 75 {
9f8c2acc 76 #ifdef DEBUGMODE
77 sprintf(output, "%s: %s", output, name);
78 #endif
79
1cf88153 80 delete [] name;
cbf6551f 81 }
ce61cdfa 82
83 if (password != NULL)
cbf6551f 84 {
9f8c2acc 85 #ifdef DEBUGMODE
ce61cdfa 86 sprintf(output, "%s Password: %s", output, password);
9f8c2acc 87 #endif
ce61cdfa 88
1cf88153 89 delete [] password;
cbf6551f 90 }
ce61cdfa 91
9f8c2acc 92 #ifdef DEBUGMODE
93 log ("%s", output);
ce61cdfa 94 delete [] output;
9f8c2acc 95 #endif
e3c5fe46 96}
85ce9d3e 97
98void Player::setData(Player *right)
99{
100 if (right)
101 {
102 strcpy(name, right->name);
0a1518fa 103 strcpy(password, right->password);
85ce9d3e 104 exp = right->exp;
105 gold = right->gold;
106 bank = right->bank;
107 hp = right->hp;
108 maxhp = right->maxhp;
109 strength = right->strength;
110 defense = right->defense;
111 armor = right->armor;
112 weapon = right->weapon;
113 level = right->level;
85ce9d3e 114 forest_fights = right->forest_fights;
115 player_fights = right->player_fights;
1af35752 116 flags = right->flags;
ee38284f 117 inventory.setInventory(&right->inventory);
85ce9d3e 118 }
0a1518fa 119 else
85ce9d3e 120 {
cdc9a6db 121 reset();
122
0a1518fa 123 int num = rand() % 32767;
28f552b8 124 sprintf(name, "Player%d", num);
85ce9d3e 125 }
0a1518fa 126
f2072f1a 127 #ifdef DEBUGMODE
128 log("Setting Player data for %s", name);
129 #endif
85ce9d3e 130}
c8ada07e 131
132monster_::~monster_()
133{
134 delete name;
135 delete weapon;
136 delete death;
137}
138
139monster_::monster_()
140{
9d3b1d42 141 name = new char[64];
142 weapon = new char[64];
143 death = new char[512];
c8ada07e 144
9d3b1d42 145 memset(name, 0, 64);
146 memset(weapon, 0, 64);
147 memset(death, 0, 512);
c8ada07e 148}
149
150monster_::monster_(monster_ *m)
151{
152 name = new char[strlen(m->name) + 1];
153 weapon = new char[strlen(m->weapon) + 1];
154 death = new char[strlen(m->death) + 1];
155
156 strcpy(name, m->name);
157 strcpy(weapon, m->weapon);
158 strcpy(death, m->death);
159
160 strength = m->strength;
161 maxhp = m->maxhp;
e282e9d2 162 hp = m->hp;
c8ada07e 163 gold = m->gold;
164 exp = m->exp;
165}
1af35752 166
167long int Player::setFlags(long int newflags)
168{
169 flags = newflags;
170 return getFlags();
171}
172
173long int Player::addFlag(long int flag)
174{
175 flags |= flag;
176 return getFlags();
177}
178
179long int Player::remFlag(long int flag)
180{
181 flags &= ~flag;
182 return getFlags();
183}
184
3662210f 185Pouch::Pouch(int h, int s, int d)
186{
187 setHealing(h);
188 setStrength(s);
189 setDefense(d);
190}