]> jfr.im git - irc/gameservirc.git/blob - gameserv/player.cpp
Bugfix relating to player fights (in Changes file) and fixed the run script.
[irc/gameservirc.git] / gameserv / player.cpp
1 #include "player.h"
2 #include "pouch.h"
3 #include "extern.h"
4 #include <stdlib.h>
5 #include <stdio.h>
6
7 void Player::reset()
8 {
9 memset(name, 0, 255);
10 memset(password, 0, 255);
11
12 exp = 1;
13 gold = 0;
14 bank = 500;
15 hp = 10;
16 maxhp = 10;
17 strength = 0;
18 defense = 0;
19 armor = 1;
20 weapon = 1;
21 level = 1;
22 alive = 1;
23 forest_fights = forestfights;
24 player_fights = 3;
25 fight = NULL;
26 master = NULL;
27 battle = NULL;
28 flags = 0;
29 inventory.reset();
30 }
31
32 Player::Player(aClient *user)
33 {
34
35 name = new char[256];
36 password = new char[256];
37
38 if (user)
39 {
40 setData(user->stats);
41 strcpy(name, user->getNick());
42 }
43 else
44 setData(NULL);
45
46 cout << "New Player: " << name << endl << flush;
47 }
48
49 Player::Player(char *n)
50 {
51 name = new char[256];
52 password = new char[256];
53
54 reset(); // Set defaults
55
56 strcpy(name, n);
57
58 cout << "New Player: " << name << endl << flush;
59 }
60
61 Player::~Player()
62 {
63 cout << "Deleting player";
64
65 if (name)
66 {
67 cout << ": " << name;
68 delete [] name;
69 }
70 if (password)
71 {
72 cout << " Password: " << password;
73 delete [] password;
74 }
75 cout << endl << "Player Deleted";
76 }
77
78 void Player::setData(Player *right)
79 {
80 if (right)
81 {
82 strcpy(name, right->name);
83 strcpy(password, right->password);
84 exp = right->exp;
85 gold = right->gold;
86 bank = right->bank;
87 hp = right->hp;
88 maxhp = right->maxhp;
89 strength = right->strength;
90 defense = right->defense;
91 armor = right->armor;
92 weapon = right->weapon;
93 level = right->level;
94 alive = right->alive;
95 forest_fights = right->forest_fights;
96 player_fights = right->player_fights;
97 flags = right->flags;
98 }
99 else
100 {
101 reset();
102
103 int num = rand() % 32767;
104 sprintf(name, "Player%d", num);
105 }
106
107 cout << "Setting Player data for " << name << endl;
108 }
109
110 monster_::~monster_()
111 {
112 delete name;
113 delete weapon;
114 delete death;
115 }
116
117 monster_::monster_()
118 {
119 name = new char[32];
120 weapon = new char[32];
121 death = new char[256];
122
123 memset(name, 0, 32);
124 memset(weapon, 0, 32);
125 memset(death, 0, 256);
126 }
127
128 monster_::monster_(monster_ *m)
129 {
130 name = new char[strlen(m->name) + 1];
131 weapon = new char[strlen(m->weapon) + 1];
132 death = new char[strlen(m->death) + 1];
133
134 strcpy(name, m->name);
135 strcpy(weapon, m->weapon);
136 strcpy(death, m->death);
137
138 strength = m->strength;
139 maxhp = m->maxhp;
140 hp = m->hp;
141 gold = m->gold;
142 exp = m->exp;
143 }
144
145 long int Player::setFlags(long int newflags)
146 {
147 flags = newflags;
148 return getFlags();
149 }
150
151 long int Player::addFlag(long int flag)
152 {
153 flags |= flag;
154 return getFlags();
155 }
156
157 long int Player::remFlag(long int flag)
158 {
159 flags &= ~flag;
160 return getFlags();
161 }
162
163 Pouch::Pouch(int h, int s, int d)
164 {
165 setHealing(h);
166 setStrength(s);
167 setDefense(d);
168 }