]> jfr.im git - irc/gameservirc.git/blame - gameserv/item.cpp
Shrunk the dependencies immensely with forward declarations in all H files instead...
[irc/gameservirc.git] / gameserv / item.cpp
CommitLineData
8ad9f659 1#include "item.h"
37ed80a9 2#include "player.h"
8ad9f659 3
37ed80a9 4item::item()
5{
6 myname = "New Item";
7 myprice = 0;
8 myuses = 0;
9 for (int x = 0; x < 8; x++)
10 mymodifiers[x] = 0;
11}
12
13item::item(const char *name, long int p, int uses, int m1, int m2, int m3, int m4, int m5, int m6, int m7, int m8)
8ad9f659 14{
15 myname = name; // string = char*
16 myprice = p;
17 myuses = uses;
18 mymodifiers[0] = m1;
19 mymodifiers[1] = m2;
20 mymodifiers[2] = m3;
21 mymodifiers[3] = m4;
22 mymodifiers[4] = m5;
23 mymodifiers[5] = m6;
24 mymodifiers[6] = m7;
25 mymodifiers[7] = m8;
26}
27
37ed80a9 28item::item(string name, long int p, int uses, int m1, int m2, int m3, int m4, int m5, int m6, int m7, int m8)
8ad9f659 29{
30 myname = name; // string = char*
31 myprice = p;
32 myuses = uses;
33 mymodifiers[0] = m1;
34 mymodifiers[1] = m2;
35 mymodifiers[2] = m3;
36 mymodifiers[3] = m4;
37 mymodifiers[4] = m5;
38 mymodifiers[5] = m6;
39 mymodifiers[6] = m7;
40 mymodifiers[7] = m8;
41}
42
43item::~item()
44{
45}
46
26b17386 47bool item::operator<(const item &right) const
48{
49 return myname < right.myname;
50}
51
52bool item::operator>(const item &right) const
53{
54 return myname > right.myname;
55}
56
57bool item::operator==(const item &right) const
58{
59 return myname == right.myname;
60}
61
62bool item::operator!=(const item &right) const
63{
64 return myname != right.myname;
65}
66
8ad9f659 67bool weapon::use(Player *p)
68{
69 // weapon(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0)
70 if (myuses == 0)
71 return false;
72 else
73 {
74 p->strength += mymodifiers[0];
75 p->defense += mymodifiers[1];
76 p->maxhp += mymodifiers[2];
77 }
78
79 if (myuses > 0)
80 {
81 myuses--;
82 }
83 return true;
84}
85
86void weapon::undo(Player *p)
87{
88 p->strength -= mymodifiers[0];
89 p->defense -= mymodifiers[1];
90 p->maxhp -= mymodifiers[2];
91}
92
37ed80a9 93void armor::undo(Player *p)
94{
95 p->strength -= mymodifiers[0];
96 p->defense -= mymodifiers[1];
97 p->maxhp -= mymodifiers[2];
98}
99
100bool armor::use(Player *p)
101{
102 // weapon(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0)
103 if (myuses == 0)
104 return false;
105 else
106 {
107 p->strength += mymodifiers[0];
108 p->defense += mymodifiers[1];
109 p->maxhp += mymodifiers[2];
110 }
111
112 if (myuses > 0)
113 {
114 myuses--;
115 }
116 return true;
117}
118
8ad9f659 119bool potion::use(Player *p)
120{
121 // potion(char *name, int p=0, int uses = 1, int strength=0, int defense=0, int maxhp=0, int hp=0, int forest_fights=0, int player_fights=0, int gold=0, int bank=0)
122
123 if (myuses == 0)
124 return false;
125 else
126 {
127 p->strength += mymodifiers[0];
128 p->defense += mymodifiers[1];
129 p->maxhp += mymodifiers[2];
130 p->hp += mymodifiers[3];
131 p->forest_fights += mymodifiers[4];
132 p->player_fights += mymodifiers[5];
133 p->gold += mymodifiers[6];
134 p->bank += mymodifiers[7];
135 }
136
137 if (myuses > 0)
138 {
139 myuses--;
140 }
141 return true;
142}
37ed80a9 143
144void potion::undo(Player *p)
145{
146 return;
147}