]> jfr.im git - irc/gameservirc.git/blob - gameserv/player.cpp
Changed the do_list to list logged in players by default instead of the other way...
[irc/gameservirc.git] / gameserv / player.cpp
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
8 void 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 lastcommand = 0;
30 lastlogin = 0;
31 setAlive(this);
32 inventory.reset();
33 }
34
35 Player::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 }
45
46 Player::Player(aClient *user)
47 {
48
49 name = new char[256];
50 password = new char[256];
51
52 if (user)
53 {
54 setData(user->stats);
55 strcpy(name, user->getNick());
56 }
57 else
58 setData(NULL);
59
60 }
61
62 Player::Player(char *n)
63 {
64 name = new char[256];
65 password = new char[256];
66
67 reset(); // Set defaults
68
69 strcpy(name, n);
70
71 #ifdef DEBUGMODE
72 log("New Player: %s", name);
73 #endif
74 }
75
76 Player::~Player()
77 {
78 #ifdef DEBUGMODE
79 char *output;
80 output = new char[strlen(name) + strlen(password) + 48];
81 strcpy(output, "Deleting Player");
82 #endif
83
84 if (name != NULL)
85 {
86 #ifdef DEBUGMODE
87 sprintf(output, "%s: %s", output, name);
88 #endif
89
90 delete [] name;
91 }
92
93 if (password != NULL)
94 {
95 #ifdef DEBUGMODE
96 sprintf(output, "%s Password: %s", output, password);
97 #endif
98
99 delete [] password;
100 }
101
102 #ifdef DEBUGMODE
103 log ("%s", output);
104 delete [] output;
105 #endif
106 }
107
108 void Player::setData(Player *right)
109 {
110 if (right)
111 {
112 strcpy(name, right->name);
113 strcpy(password, right->password);
114 exp = right->exp;
115 gold = right->gold;
116 bank = right->bank;
117 hp = right->hp;
118 maxhp = right->maxhp;
119 strength = right->strength;
120 defense = right->defense;
121 armor = right->armor;
122 weapon = right->weapon;
123 level = right->level;
124 forest_fights = right->forest_fights;
125 player_fights = right->player_fights;
126 flags = right->flags;
127 inventory.setInventory(&right->inventory);
128 client = right->client;
129 lastcommand = right->lastcommand;
130 lastlogin = right->lastlogin;
131 }
132 else
133 {
134 reset();
135 client = NULL;
136 int num = rand() % 32767;
137 sprintf(name, "Player%d", num);
138 }
139
140 #ifdef DEBUGMODE
141 log("Setting Player data for %s", name);
142 #endif
143 }
144
145 monster_::~monster_()
146 {
147 delete name;
148 delete weapon;
149 delete death;
150 }
151
152 monster_::monster_()
153 {
154 name = new char[64];
155 weapon = new char[64];
156 death = new char[512];
157
158 memset(name, 0, 64);
159 memset(weapon, 0, 64);
160 memset(death, 0, 512);
161 }
162
163 monster_::monster_(monster_ *m)
164 {
165 name = new char[strlen(m->name) + 1];
166 weapon = new char[strlen(m->weapon) + 1];
167 death = new char[strlen(m->death) + 1];
168
169 strcpy(name, m->name);
170 strcpy(weapon, m->weapon);
171 strcpy(death, m->death);
172
173 strength = m->strength;
174 maxhp = m->maxhp;
175 hp = m->hp;
176 gold = m->gold;
177 exp = m->exp;
178 }
179
180 long int Player::setFlags(long int newflags)
181 {
182 flags = newflags;
183 return getFlags();
184 }
185
186 long int Player::addFlag(long int flag)
187 {
188 flags |= flag;
189 return getFlags();
190 }
191
192 long int Player::remFlag(long int flag)
193 {
194 flags &= ~flag;
195 return getFlags();
196 }
197
198 Pouch::Pouch(int h, int s, int d)
199 {
200 setHealing(h);
201 setStrength(s);
202 setDefense(d);
203 }