]> jfr.im git - irc/gameservirc.git/blob - gameserv/player.cpp
synced up with my source
[irc/gameservirc.git] / gameserv / player.cpp
1 #include "item.h"
2 #include "player.h"
3 #include "pouch.h"
4 #include "extern.h"
5 #include "flags.h"
6
7 #include <string>
8 #include <stdio.h>
9
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
20 using namespace std;
21
22 void Player::reset()
23 {
24 exp = 1;
25 gold = 0;
26 bank = 500;
27 hp = 10;
28 maxhp = 10;
29 strength = 2;
30 defense = 1;
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;
39 lastlogin = time(NULL);
40 setAlive(this);
41 clearMaster(this);
42 w = NULL;
43 a = NULL;
44 inventory->clear();
45 }
46
47 Player::Player()
48 {
49 inventory = new pouch();
50 setData(NULL);
51
52 #ifdef DEBUGMODE
53 log("New Player: %s", name.c_str());
54 #endif
55 }
56
57 Player::Player(char *n)
58 {
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
67 }
68
69 Player::Player(string n)
70 {
71 inventory = new pouch();
72 reset();
73 name = n;
74 #ifdef DEBUGMODE
75 log("New Player: %s", name.c_str());
76 #endif
77 }
78
79 Player::~Player()
80 {
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
97 }
98 void Player::setPassword(const char *p)
99 {
100 static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV\
101 WXYZ0123456789./";
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);
109 }
110
111 void Player::setRawPassword(const char *p)
112 {
113 password = p;
114 }
115
116 void Player::setData(Player *right)
117 {
118 if (right)
119 {
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;
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;
137 w = right->w;
138 a = right->a;
139 }
140 else
141 {
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;
150 }
151
152 #ifdef DEBUGMODE
153 log("Setting Player data for %s", name.c_str());
154 #endif
155 }
156
157 Monster::~Monster()
158 {
159 }
160
161 Monster::Monster()
162 {
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;
171 }
172
173 Monster::Monster(Monster *m)
174 {
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;
184 }
185
186 Monster::Monster(Monster &m)
187 {
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;
197 }
198
199 Monster::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
212 long int Player::setFlags(long int newflags)
213 {
214 flags = newflags;
215 return getFlags();
216 }
217
218 long int Player::addFlag(long int flag)
219 {
220 flags |= flag;
221 return getFlags();
222 }
223
224 long int Player::remFlag(long int flag)
225 {
226 flags &= ~flag;
227 return getFlags();
228 }
229
230 void Player::setWeapon(item &weap)
231 {
232 w = &weap;
233 }
234 void Player::setArmor(item &arm)
235 {
236 a = &arm;
237 }
238
239 void Player::setName(string &n)
240 {
241 name = n;
242 }
243
244 void Player::setName(const char *n)
245 {
246 name = n;
247 }
248
249 void Player::setLevel(int l)
250 {
251 if (l > 0 && l <= REALLEVELS)
252 {
253 level = l;
254 }
255 }
256
257 void Player::setExp(long int e)
258 {
259 if (e <= 2000000000 && e > 0)
260 {
261 exp = e;
262 }
263 }
264
265 void 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
277 void 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
289 void 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
303 void 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
317 void 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
330 void 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
344 void 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
358 void 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
372 void Player::setClient(aClient *c)
373 {
374 client = c;
375 }
376
377 void Player::setMonster(Monster *m)
378 {
379 fight = new Monster(m);
380 }
381
382 void Player::setMyMaster(Monster *m)
383 {
384 master = new Monster(m);
385 }
386
387 void Player::setBattle(aClient *b)
388 {
389 battle = b;
390 }
391
392 void Player::addExp(int e)
393 {
394 setExp(getExp() + e);
395 }
396
397 void Player::addGold(int g)
398 {
399 setGold(getGold() + g);
400 }
401
402 void Player::addBank(int b)
403 {
404 setBank(getBank() + b);
405 }
406
407 void Player::addHP(int h)
408 {
409 setHP(getHP() + h);
410 }
411
412 void Player::addMaxHP(int m)
413 {
414 setMaxHP(getMaxHP() + m);
415 }
416
417 void Player::addStrength(int s)
418 {
419 setStrength(getStrength() + s);
420 }
421
422 void Player::addDefense(int d)
423 {
424 setDefense(getDefense() + d);
425 }
426
427 void Player::addForestFights(int ff)
428 {
429 setForestFights(getForestFights() + ff);
430 }
431
432 void Player::addPlayerFights(int pf)
433 {
434 setPlayerFights(getPlayerFights() + pf);
435 }
436
437 void Player::addLevel(int l)
438 {
439 setLevel(getLevel() + l);
440 }
441
442 void Player::subtractLevel(int l)
443 {
444 setLevel(getLevel() - l);
445 }
446
447 void Player::subtractExp(long int e)
448 {
449 setExp(getExp() - e);
450 }
451
452 void Player::subtractGold(long int g)
453 {
454 setGold(getGold() - g);
455 }
456
457 void Player::subtractBank(long int b)
458 {
459 setBank(getBank() - b);
460 }
461
462 void Player::subtractHP(int h)
463 {
464 setHP(getHP() - h);
465 }
466
467 void Player::subtractMaxHP(int m)
468 {
469 setMaxHP(getMaxHP() - m);
470 }
471
472 void Player::subtractStrength(int s)
473 {
474 setStrength(getStrength() - s);
475 }
476
477 void Player::subtractDefense(int d)
478 {
479 setDefense(getDefense() - d);
480 }
481
482 void Player::subtractForestFights(int ff)
483 {
484 setForestFights(getForestFights() - ff);
485 }
486
487 void Player::subtractPlayerFights(int pf)
488 {
489 setPlayerFights(getPlayerFights() - pf);
490 }
491
492 void Player::delMonster()
493 {
494 if (fight)
495 delete fight;
496
497 fight = NULL;
498 }
499
500 void Player::delMaster()
501 {
502 if (master)
503 delete master;
504
505 master = NULL;
506 }
507
508 void Player::delBattle()
509 {
510 // Don't delete the other player's aClient
511 battle = NULL;
512 }
513