]> jfr.im git - irc/gameservirc.git/blame - gameserv/player.cpp
completed migrating all lists over to STL list
[irc/gameservirc.git] / gameserv / player.cpp
CommitLineData
26b17386 1#include "item.h"
85ce9d3e 2#include "player.h"
3662210f 3#include "pouch.h"
20d5d721 4#include "extern.h"
ee38284f 5#include "flags.h"
23f22a79 6
5c449fde 7#include <string>
0a0863d1 8#include <stdio.h>
5c449fde 9
23f22a79 10#if defined(HAVE_CRYPT_H)
11
12#include <crypt.h>
13
14#elif defined(HAVE_UNISTD_H)
15
16#include <unistd.h>
17
18#endif
19
5c449fde 20using namespace std;
85ce9d3e 21
e3c5fe46 22void Player::reset()
85ce9d3e 23{
37ed80a9 24 exp = 1;
25 gold = 0;
26 bank = 500;
27 hp = 10;
28 maxhp = 10;
1781f48a 29 strength = 2;
30 defense = 1;
37ed80a9 31 level = 1;
32 forest_fights = forestfights;
33 player_fights = 3;
34 fight = NULL;
35 master = NULL;
36 battle = NULL;
37 flags = 0;
38 lastcommand = 0;
4c2a9f3b 39 lastlogin = time(NULL);
37ed80a9 40 setAlive(this);
4c2a9f3b 41 clearMaster(this);
1781f48a 42 w = NULL;
43 a = NULL;
37ed80a9 44 inventory->clear();
e3c5fe46 45}
40251952 46
85bcf836 47Player::Player()
48{
37ed80a9 49 inventory = new pouch();
50 setData(NULL);
51
52#ifdef DEBUGMODE
53 log("New Player: %s", name.c_str());
54#endif
85bcf836 55}
e3c5fe46 56
85ce9d3e 57Player::Player(char *n)
58{
37ed80a9 59 inventory = new pouch();
60 reset(); // Set defaults
61
62 name = n;
63
64#ifdef DEBUGMODE
65 log("New Player: %s", name.c_str());
66#endif
5c449fde 67}
85ce9d3e 68
5c449fde 69Player::Player(string n)
70{
37ed80a9 71 inventory = new pouch();
72 reset();
73 name = n;
74#ifdef DEBUGMODE
75 log("New Player: %s", name.c_str());
76#endif
85ce9d3e 77}
78
79Player::~Player()
9f8c2acc 80{
37ed80a9 81 delete inventory;
82
83#ifdef DEBUGMODE
84 string *output;
85 output = new string("Deleting Player");
86#endif
87
88#ifdef DEBUGMODE
89 *output += ": " + name;
90#endif
91
92#ifdef DEBUGMODE
93 *output += " Password: " + password;
94 log ("%s", output->c_str());
95 delete output;
96#endif
e3c5fe46 97}
1563e73b 98void Player::setPassword(const char *p)
99{
37ed80a9 100 static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV\
1563e73b 101WXYZ0123456789./";
37ed80a9 102 static char salt[3];
103
104 salt[0] = saltChars[rand() % strlen(saltChars)];
105 salt[1] = saltChars[rand() % strlen(saltChars)];
106 salt[2] = '\0';
107
108 password = crypt(p, salt);
1563e73b 109}
85ce9d3e 110
53d5585b 111void Player::setRawPassword(const char *p)
112{
113 password = p;
114}
115
85ce9d3e 116void Player::setData(Player *right)
117{
37ed80a9 118 if (right)
85ce9d3e 119 {
37ed80a9 120 name = right->name;
121 password = right->password;
122 exp = right->exp;
123 gold = right->gold;
124 bank = right->bank;
125 hp = right->hp;
126 maxhp = right->maxhp;
127 strength = right->strength;
128 defense = right->defense;
37ed80a9 129 level = right->level;
130 forest_fights = right->forest_fights;
131 player_fights = right->player_fights;
132 flags = right->flags;
133 *inventory = *right->inventory;
134 client = right->client;
135 lastcommand = right->lastcommand;
136 lastlogin = right->lastlogin;
1781f48a 137 w = right->w;
138 a = right->a;
85ce9d3e 139 }
37ed80a9 140 else
85ce9d3e 141 {
37ed80a9 142 char *temp;
143 reset();
144 temp = new char[16];
145 client = NULL;
146 int num = rand() % 32767;
147 snprintf(temp, 16, "Player: %d", num);
148 name = temp;
149 delete []temp;
85ce9d3e 150 }
37ed80a9 151
152#ifdef DEBUGMODE
153 log("Setting Player data for %s", name.c_str());
154#endif
85ce9d3e 155}
c8ada07e 156
00e51ca8 157Monster::~Monster()
c8ada07e 158{
c8ada07e 159}
160
00e51ca8 161Monster::Monster()
c8ada07e 162{
37ed80a9 163 name.erase();
164 weapon.erase();
165 death.erase();
166 strength = 0;
167 defense = 0;
168 exp = 0;
169 gold = 0;
170 maxhp = hp = 0;
c8ada07e 171}
172
00e51ca8 173Monster::Monster(Monster *m)
c8ada07e 174{
37ed80a9 175 name = m->name;
176 weapon = m->weapon;
177 death = m->death;
178 strength = m->strength;
179 defense = m->defense;
180 maxhp = m->maxhp;
181 hp = m->hp;
182 gold = m->gold;
183 exp = m->exp;
c8ada07e 184}
1af35752 185
00e51ca8 186Monster::Monster(Monster &m)
bf3a2ff9 187{
37ed80a9 188 name = m.name;
189 weapon = m.weapon;
190 death = m.death;
191 strength = m.strength;
192 defense = m.defense;
193 maxhp = m.maxhp;
194 hp = m.hp;
195 gold = m.gold;
196 exp = m.exp;
bf3a2ff9 197}
198
c10b78ac 199Monster::Monster(const Monster &m)
200{
201 name = m.name;
202 weapon = m.weapon;
203 death = m.death;
204 strength = m.strength;
205 defense = m.defense;
206 maxhp = m.maxhp;
207 hp = m.hp;
208 gold = m.gold;
209 exp = m.exp;
210}
211
1af35752 212long int Player::setFlags(long int newflags)
213{
37ed80a9 214 flags = newflags;
215 return getFlags();
1af35752 216}
217
218long int Player::addFlag(long int flag)
219{
37ed80a9 220 flags |= flag;
221 return getFlags();
1af35752 222}
223
224long int Player::remFlag(long int flag)
225{
37ed80a9 226 flags &= ~flag;
227 return getFlags();
3662210f 228}
1781f48a 229
230void Player::setWeapon(item &weap)
231{
232 w = &weap;
233}
234void Player::setArmor(item &arm)
235{
236 a = &arm;
237}
fbb87959 238
239void Player::setName(string &n)
240{
241 name = n;
242}
243
244void Player::setName(const char *n)
245{
246 name = n;
247}
248
249void Player::setLevel(int l)
250{
251 if (l > 0 && l <= REALLEVELS)
252 {
253 level = l;
254 }
255}
256
257void Player::setExp(long int e)
258{
259 if (e <= 2000000000 && e > 0)
260 {
261 exp = e;
262 }
263}
264
265void Player::setGold(long int g)
266{
267 if (g <= 2000000000 && g >= 0)
268 {
269 gold = g;
270 }
271 else if (g > 2000000000)
272 {
273 gold = 2000000000;
274 }
275}
276
277void Player::setBank(long int b)
278{
279 if (b <= 2000000000 && b >= 0)
280 {
281 bank = b;
282 }
283 else if (b > 2000000000)
284 {
285 bank = 2000000000;
286 }
287}
288
289void Player::setHP(int h)
290{
291 hp = h;
292
293 if (hp < 0)
294 {
295 hp = 0;
296 }
297 else if (hp > maxhp)
298 {
299 hp = maxhp; // You can't go higher than your maxhp
300 }
301}
302
303void Player::setMaxHP(int m)
304{
305 maxhp = m;
306
307 if (maxhp < 0)
308 {
309 maxhp = 10;
310 }
311 else if (maxhp > 32000)
312 {
313 maxhp = 32000;
314 }
315}
316
317void Player::setStrength(int s)
318{
319 strength = s;
320 if (strength < 0)
321 {
322 strength = 1;
323 }
324 else if (strength > 32000)
325 {
326 strength = 32000;
327 }
328}
329
330void Player::setDefense(int d)
331{
332 defense = d;
333
334 if (defense < 0)
335 {
336 defense = 1;
337 }
338 else if (defense > 32000)
339 {
340 defense = 32000;
341 }
342}
343
344void Player::setForestFights(int ff)
345{
346 forest_fights = ff;
347
348 if (forest_fights < 0)
349 {
350 forest_fights = 0;
351 }
352 else if (forest_fights > 32000)
353 {
354 forest_fights = 32000;
355 }
356}
357
358void Player::setPlayerFights(int pf)
359{
360 player_fights = pf;
361
362 if (player_fights < 0)
363 {
364 player_fights = 0;
365 }
366 else if (player_fights > 32000)
367 {
368 player_fights = 32000;
369 }
370}
371
372void Player::setClient(aClient *c)
373{
374 client = c;
375}
376
00e51ca8 377void Player::setMonster(Monster *m)
fbb87959 378{
379 fight = new Monster(m);
380}
381
382void Player::setMyMaster(Monster *m)
383{
384 master = new Monster(m);
385}
386
387void Player::setBattle(aClient *b)
388{
389 battle = b;
390}
391
392void Player::addExp(int e)
393{
394 setExp(getExp() + e);
395}
396
397void Player::addGold(int g)
398{
399 setGold(getGold() + g);
400}
401
402void Player::addBank(int b)
403{
404 setBank(getBank() + b);
405}
406
407void Player::addHP(int h)
408{
409 setHP(getHP() + h);
410}
411
412void Player::addMaxHP(int m)
413{
414 setMaxHP(getMaxHP() + m);
415}
416
417void Player::addStrength(int s)
418{
419 setStrength(getStrength() + s);
420}
421
422void Player::addDefense(int d)
423{
424 setDefense(getDefense() + d);
425}
426
427void Player::addForestFights(int ff)
428{
429 setForestFights(getForestFights() + ff);
430}
431
432void Player::addPlayerFights(int pf)
433{
434 setPlayerFights(getPlayerFights() + pf);
435}
436
437void Player::addLevel(int l)
438{
439 setLevel(getLevel() + l);
440}
441
442void Player::subtractLevel(int l)
443{
444 setLevel(getLevel() - l);
445}
446
447void Player::subtractExp(long int e)
448{
449 setExp(getExp() - e);
450}
451
452void Player::subtractGold(long int g)
453{
454 setGold(getGold() - g);
455}
456
457void Player::subtractBank(long int b)
458{
459 setBank(getBank() - b);
460}
461
462void Player::subtractHP(int h)
463{
464 setHP(getHP() - h);
465}
466
467void Player::subtractMaxHP(int m)
468{
469 setMaxHP(getMaxHP() - m);
470}
471
472void Player::subtractStrength(int s)
473{
474 setStrength(getStrength() - s);
475}
476
477void Player::subtractDefense(int d)
478{
479 setDefense(getDefense() - d);
480}
481
482void Player::subtractForestFights(int ff)
483{
484 setForestFights(getForestFights() - ff);
485}
486
487void Player::subtractPlayerFights(int pf)
488{
489 setPlayerFights(getPlayerFights() - pf);
490}
491
492void Player::delMonster()
493{
494 if (fight)
495 delete fight;
496
497 fight = NULL;
498}
499
500void Player::delMaster()
501{
502 if (master)
503 delete master;
504
505 master = NULL;
506}
507
508void Player::delBattle()
509{
510 // Don't delete the other player's aClient
511 battle = NULL;
512}
513