]> jfr.im git - irc/gameservirc.git/blame - gameserv/player.cpp
Merged the Hybrid patch into the main section of code, removed the patch
[irc/gameservirc.git] / gameserv / player.cpp
CommitLineData
85ce9d3e 1#include "player.h"
3662210f 2#include "pouch.h"
20d5d721 3#include "extern.h"
ee38284f 4#include "flags.h"
85ce9d3e 5#include <stdlib.h>
6#include <stdio.h>
7
e3c5fe46 8void Player::reset()
85ce9d3e 9{
cdc9a6db 10 memset(name, 0, 255);
11 memset(password, 0, 255);
cbf6551f 12
85ce9d3e 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;
20d5d721 23 forest_fights = forestfights;
85ce9d3e 24 player_fights = 3;
25 fight = NULL;
26 master = NULL;
27 battle = NULL;
1af35752 28 flags = 0;
ee38284f 29 setAlive(this);
3662210f 30 inventory.reset();
e3c5fe46 31}
32
33Player::Player(aClient *user)
34{
cdc9a6db 35
36 name = new char[256];
37 password = new char[256];
38
85ce9d3e 39 if (user)
ab4f4ec0 40 {
0a1518fa 41 setData(user->stats);
ab4f4ec0 42 strcpy(name, user->getNick());
43 }
85ce9d3e 44 else
0a1518fa 45 setData(NULL);
46
9f8c2acc 47 #ifdef DEBUGMODE
48 log("New Player: %s", name);
49 #endif
85ce9d3e 50}
0a1518fa 51
85ce9d3e 52Player::Player(char *n)
53{
cdc9a6db 54 name = new char[256];
55 password = new char[256];
56
e3c5fe46 57 reset(); // Set defaults
85ce9d3e 58
85ce9d3e 59 strcpy(name, n);
60
9f8c2acc 61 log("New Player: %s", name);
85ce9d3e 62}
63
64Player::~Player()
9f8c2acc 65{
66 #ifdef DEBUGMODE
67 char *output;
68 output = new char[strlen(name) + strlen(password) + 2];
69 strcpy(output, "Deleting Player");
70 #endif
71
e3c5fe46 72 if (name)
cbf6551f 73 {
9f8c2acc 74 #ifdef DEBUGMODE
75 sprintf(output, "%s: %s", output, name);
76 #endif
77
1cf88153 78 delete [] name;
cbf6551f 79 }
e3c5fe46 80 if (password)
cbf6551f 81 {
9f8c2acc 82 #ifdef DEBUGMODE
83 sprintf(output, "%s Password: %s", output, password);
84 #endif
1cf88153 85 delete [] password;
cbf6551f 86 }
9f8c2acc 87 #ifdef DEBUGMODE
88 log ("%s", output);
89 #endif
e3c5fe46 90}
85ce9d3e 91
92void Player::setData(Player *right)
93{
94 if (right)
95 {
96 strcpy(name, right->name);
0a1518fa 97 strcpy(password, right->password);
85ce9d3e 98 exp = right->exp;
99 gold = right->gold;
100 bank = right->bank;
101 hp = right->hp;
102 maxhp = right->maxhp;
103 strength = right->strength;
104 defense = right->defense;
105 armor = right->armor;
106 weapon = right->weapon;
107 level = right->level;
85ce9d3e 108 forest_fights = right->forest_fights;
109 player_fights = right->player_fights;
1af35752 110 flags = right->flags;
ee38284f 111 inventory.setInventory(&right->inventory);
85ce9d3e 112 }
0a1518fa 113 else
85ce9d3e 114 {
cdc9a6db 115 reset();
116
0a1518fa 117 int num = rand() % 32767;
28f552b8 118 sprintf(name, "Player%d", num);
85ce9d3e 119 }
0a1518fa 120
9f8c2acc 121 log("Setting Player data for %s", name);
85ce9d3e 122}
c8ada07e 123
124monster_::~monster_()
125{
126 delete name;
127 delete weapon;
128 delete death;
129}
130
131monster_::monster_()
132{
9d3b1d42 133 name = new char[64];
134 weapon = new char[64];
135 death = new char[512];
c8ada07e 136
9d3b1d42 137 memset(name, 0, 64);
138 memset(weapon, 0, 64);
139 memset(death, 0, 512);
c8ada07e 140}
141
142monster_::monster_(monster_ *m)
143{
144 name = new char[strlen(m->name) + 1];
145 weapon = new char[strlen(m->weapon) + 1];
146 death = new char[strlen(m->death) + 1];
147
148 strcpy(name, m->name);
149 strcpy(weapon, m->weapon);
150 strcpy(death, m->death);
151
152 strength = m->strength;
153 maxhp = m->maxhp;
e282e9d2 154 hp = m->hp;
c8ada07e 155 gold = m->gold;
156 exp = m->exp;
157}
1af35752 158
159long int Player::setFlags(long int newflags)
160{
161 flags = newflags;
162 return getFlags();
163}
164
165long int Player::addFlag(long int flag)
166{
167 flags |= flag;
168 return getFlags();
169}
170
171long int Player::remFlag(long int flag)
172{
173 flags &= ~flag;
174 return getFlags();
175}
176
3662210f 177Pouch::Pouch(int h, int s, int d)
178{
179 setHealing(h);
180 setStrength(s);
181 setDefense(d);
182}