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