]> jfr.im git - irc/gameservirc.git/blame_incremental - gameserv/player.cpp
Fixed some bugs
[irc/gameservirc.git] / gameserv / player.cpp
... / ...
CommitLineData
1#include "player.h"
2#include "pouch.h"
3#include "extern.h"
4#include "flags.h"
5#include <stdlib.h>
6#include <stdio.h>
7
8void Player::reset()
9{
10 memset(name, 0, 256);
11 memset(password, 0, 256);
12
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;
23 forest_fights = forestfights;
24 player_fights = 3;
25 fight = NULL;
26 master = NULL;
27 battle = NULL;
28 flags = 0;
29 setAlive(this);
30 inventory.reset();
31}
32
33Player::Player(aClient *user)
34{
35
36 name = new char[256];
37 password = new char[256];
38
39 if (user)
40 {
41 setData(user->stats);
42 strcpy(name, user->getNick());
43 }
44 else
45 setData(NULL);
46
47 #ifdef DEBUGMODE
48 log("New Player: %s", name);
49 #endif
50}
51
52Player::Player(char *n)
53{
54 name = new char[256];
55 password = new char[256];
56
57 reset(); // Set defaults
58
59 strcpy(name, n);
60
61 #ifdef DEBUGMODE
62 log("New Player: %s", name);
63 #endif
64}
65
66Player::~Player()
67{
68 #ifdef DEBUGMODE
69 char *output;
70 output = new char[strlen(name) + strlen(password) + 48];
71 strcpy(output, "Deleting Player");
72 #endif
73
74 if (name != NULL)
75 {
76 #ifdef DEBUGMODE
77 sprintf(output, "%s: %s", output, name);
78 #endif
79
80 delete [] name;
81 }
82
83 if (password != NULL)
84 {
85 #ifdef DEBUGMODE
86 sprintf(output, "%s Password: %s", output, password);
87 #endif
88
89 delete [] password;
90 }
91
92 #ifdef DEBUGMODE
93 log ("%s", output);
94 delete [] output;
95 #endif
96}
97
98void Player::setData(Player *right)
99{
100 if (right)
101 {
102 strcpy(name, right->name);
103 strcpy(password, right->password);
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;
114 forest_fights = right->forest_fights;
115 player_fights = right->player_fights;
116 flags = right->flags;
117 inventory.setInventory(&right->inventory);
118 }
119 else
120 {
121 reset();
122
123 int num = rand() % 32767;
124 sprintf(name, "Player%d", num);
125 }
126
127 #ifdef DEBUGMODE
128 log("Setting Player data for %s", name);
129 #endif
130}
131
132monster_::~monster_()
133{
134 delete name;
135 delete weapon;
136 delete death;
137}
138
139monster_::monster_()
140{
141 name = new char[64];
142 weapon = new char[64];
143 death = new char[512];
144
145 memset(name, 0, 64);
146 memset(weapon, 0, 64);
147 memset(death, 0, 512);
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;
162 hp = m->hp;
163 gold = m->gold;
164 exp = m->exp;
165}
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
185Pouch::Pouch(int h, int s, int d)
186{
187 setHealing(h);
188 setStrength(s);
189 setDefense(d);
190}