]> jfr.im git - irc/gameservirc.git/blame - gameserv/player.cpp
Made finding potions in the forest more even... seemed we were finding only hp and...
[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;
40251952 29 lastcommand = 0;
14e24ba1 30 lastlogin = 0;
ee38284f 31 setAlive(this);
3662210f 32 inventory.reset();
e3c5fe46 33}
40251952 34
85bcf836 35Player::Player()
36{
37 name = new char[256];
38 password = new char[256];
39 setData(NULL);
40
41 #ifdef DEBUGMODE
42 log("New Player: %s", name);
43 #endif
44}
e3c5fe46 45
46Player::Player(aClient *user)
47{
cdc9a6db 48
49 name = new char[256];
50 password = new char[256];
51
85ce9d3e 52 if (user)
ab4f4ec0 53 {
0a1518fa 54 setData(user->stats);
ab4f4ec0 55 strcpy(name, user->getNick());
56 }
85ce9d3e 57 else
0a1518fa 58 setData(NULL);
85ce9d3e 59}
0a1518fa 60
85ce9d3e 61Player::Player(char *n)
62{
cdc9a6db 63 name = new char[256];
64 password = new char[256];
65
e3c5fe46 66 reset(); // Set defaults
85ce9d3e 67
85ce9d3e 68 strcpy(name, n);
69
f2072f1a 70 #ifdef DEBUGMODE
71 log("New Player: %s", name);
72 #endif
85ce9d3e 73}
74
75Player::~Player()
9f8c2acc 76{
77 #ifdef DEBUGMODE
78 char *output;
ce61cdfa 79 output = new char[strlen(name) + strlen(password) + 48];
9f8c2acc 80 strcpy(output, "Deleting Player");
81 #endif
82
ce61cdfa 83 if (name != NULL)
cbf6551f 84 {
9f8c2acc 85 #ifdef DEBUGMODE
86 sprintf(output, "%s: %s", output, name);
87 #endif
88
1cf88153 89 delete [] name;
cbf6551f 90 }
ce61cdfa 91
92 if (password != NULL)
cbf6551f 93 {
9f8c2acc 94 #ifdef DEBUGMODE
ce61cdfa 95 sprintf(output, "%s Password: %s", output, password);
9f8c2acc 96 #endif
ce61cdfa 97
1cf88153 98 delete [] password;
cbf6551f 99 }
ce61cdfa 100
9f8c2acc 101 #ifdef DEBUGMODE
102 log ("%s", output);
ce61cdfa 103 delete [] output;
9f8c2acc 104 #endif
e3c5fe46 105}
85ce9d3e 106
107void Player::setData(Player *right)
108{
109 if (right)
110 {
111 strcpy(name, right->name);
0a1518fa 112 strcpy(password, right->password);
85ce9d3e 113 exp = right->exp;
114 gold = right->gold;
115 bank = right->bank;
116 hp = right->hp;
117 maxhp = right->maxhp;
118 strength = right->strength;
119 defense = right->defense;
120 armor = right->armor;
121 weapon = right->weapon;
122 level = right->level;
85ce9d3e 123 forest_fights = right->forest_fights;
124 player_fights = right->player_fights;
1af35752 125 flags = right->flags;
ee38284f 126 inventory.setInventory(&right->inventory);
85bcf836 127 client = right->client;
40251952 128 lastcommand = right->lastcommand;
14e24ba1 129 lastlogin = right->lastlogin;
85ce9d3e 130 }
0a1518fa 131 else
85ce9d3e 132 {
cdc9a6db 133 reset();
85bcf836 134 client = NULL;
0a1518fa 135 int num = rand() % 32767;
28f552b8 136 sprintf(name, "Player%d", num);
85ce9d3e 137 }
0a1518fa 138
f2072f1a 139 #ifdef DEBUGMODE
140 log("Setting Player data for %s", name);
141 #endif
85ce9d3e 142}
c8ada07e 143
144monster_::~monster_()
145{
f97dea8f 146 delete []name;
147 delete []weapon;
148 delete []death;
c8ada07e 149}
150
151monster_::monster_()
152{
9d3b1d42 153 name = new char[64];
154 weapon = new char[64];
155 death = new char[512];
c8ada07e 156
9d3b1d42 157 memset(name, 0, 64);
158 memset(weapon, 0, 64);
159 memset(death, 0, 512);
f97dea8f 160 strength = 0;
161 exp = 0;
162 gold = 0;
163 maxhp = hp = 0;
c8ada07e 164}
165
166monster_::monster_(monster_ *m)
167{
168 name = new char[strlen(m->name) + 1];
169 weapon = new char[strlen(m->weapon) + 1];
170 death = new char[strlen(m->death) + 1];
171
172 strcpy(name, m->name);
173 strcpy(weapon, m->weapon);
174 strcpy(death, m->death);
175
176 strength = m->strength;
177 maxhp = m->maxhp;
e282e9d2 178 hp = m->hp;
c8ada07e 179 gold = m->gold;
180 exp = m->exp;
181}
1af35752 182
bf3a2ff9 183monster_::monster_(monster_ &m)
184{
185 name = new char[strlen(m.name) + 1];
186 weapon = new char[strlen(m.weapon) + 1];
187 death = new char[strlen(m.death) + 1];
188
189 strcpy(name, m.name);
190 strcpy(weapon, m.weapon);
191 strcpy(death, m.death);
192
193 strength = m.strength;
194 maxhp = m.maxhp;
195 hp = m.hp;
196 gold = m.gold;
197 exp = m.exp;
198}
199
1af35752 200long int Player::setFlags(long int newflags)
201{
202 flags = newflags;
203 return getFlags();
204}
205
206long int Player::addFlag(long int flag)
207{
208 flags |= flag;
209 return getFlags();
210}
211
212long int Player::remFlag(long int flag)
213{
214 flags &= ~flag;
215 return getFlags();
216}
217
3662210f 218Pouch::Pouch(int h, int s, int d)
219{
220 setHealing(h);
221 setStrength(s);
222 setDefense(d);
223}