]> jfr.im git - irc/gameservirc.git/blob - gameserv/player.cpp
implemented equipping weapons and armor and saving what is equipped
[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 = 0;
40 setAlive(this);
41 w = NULL;
42 a = NULL;
43 inventory->clear();
44 }
45
46 Player::Player()
47 {
48 inventory = new pouch();
49 setData(NULL);
50
51 #ifdef DEBUGMODE
52 log("New Player: %s", name.c_str());
53 #endif
54 }
55
56 Player::Player(char *n)
57 {
58 inventory = new pouch();
59 reset(); // Set defaults
60
61 name = n;
62
63 #ifdef DEBUGMODE
64 log("New Player: %s", name.c_str());
65 #endif
66 }
67
68 Player::Player(string n)
69 {
70 inventory = new pouch();
71 reset();
72 name = n;
73 #ifdef DEBUGMODE
74 log("New Player: %s", name.c_str());
75 #endif
76 }
77
78 Player::~Player()
79 {
80 delete inventory;
81
82 #ifdef DEBUGMODE
83 string *output;
84 output = new string("Deleting Player");
85 #endif
86
87 #ifdef DEBUGMODE
88 *output += ": " + name;
89 #endif
90
91 #ifdef DEBUGMODE
92 *output += " Password: " + password;
93 log ("%s", output->c_str());
94 delete output;
95 #endif
96 }
97 void Player::setPassword(const char *p)
98 {
99 static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV\
100 WXYZ0123456789./";
101 static char salt[3];
102
103 salt[0] = saltChars[rand() % strlen(saltChars)];
104 salt[1] = saltChars[rand() % strlen(saltChars)];
105 salt[2] = '\0';
106
107 password = crypt(p, salt);
108 }
109
110 void Player::setData(Player *right)
111 {
112 if (right)
113 {
114 name = right->name;
115 password = right->password;
116 exp = right->exp;
117 gold = right->gold;
118 bank = right->bank;
119 hp = right->hp;
120 maxhp = right->maxhp;
121 strength = right->strength;
122 defense = right->defense;
123 level = right->level;
124 forest_fights = right->forest_fights;
125 player_fights = right->player_fights;
126 flags = right->flags;
127 *inventory = *right->inventory;
128 client = right->client;
129 lastcommand = right->lastcommand;
130 lastlogin = right->lastlogin;
131 w = right->w;
132 a = right->a;
133 }
134 else
135 {
136 char *temp;
137 reset();
138 temp = new char[16];
139 client = NULL;
140 int num = rand() % 32767;
141 snprintf(temp, 16, "Player: %d", num);
142 name = temp;
143 delete []temp;
144 }
145
146 #ifdef DEBUGMODE
147 log("Setting Player data for %s", name.c_str());
148 #endif
149 }
150
151 monster_::~monster_()
152 {
153 }
154
155 monster_::monster_()
156 {
157 name.erase();
158 weapon.erase();
159 death.erase();
160 strength = 0;
161 defense = 0;
162 exp = 0;
163 gold = 0;
164 maxhp = hp = 0;
165 }
166
167 monster_::monster_(monster_ *m)
168 {
169 name = m->name;
170 weapon = m->weapon;
171 death = m->death;
172 strength = m->strength;
173 defense = m->defense;
174 maxhp = m->maxhp;
175 hp = m->hp;
176 gold = m->gold;
177 exp = m->exp;
178 }
179
180 monster_::monster_(monster_ &m)
181 {
182 name = m.name;
183 weapon = m.weapon;
184 death = m.death;
185 strength = m.strength;
186 defense = m.defense;
187 maxhp = m.maxhp;
188 hp = m.hp;
189 gold = m.gold;
190 exp = m.exp;
191 }
192
193 long int Player::setFlags(long int newflags)
194 {
195 flags = newflags;
196 return getFlags();
197 }
198
199 long int Player::addFlag(long int flag)
200 {
201 flags |= flag;
202 return getFlags();
203 }
204
205 long int Player::remFlag(long int flag)
206 {
207 flags &= ~flag;
208 return getFlags();
209 }
210
211 void Player::setWeapon(item &weap)
212 {
213 w = &weap;
214 }
215 void Player::setArmor(item &arm)
216 {
217 a = &arm;
218 }