]>
jfr.im git - irc/gameservirc.git/blob - gameserv/item.cpp
10 for ( int x
= 0 ; x
< 8 ; x
++)
14 item :: item ( const char * name
, long int p
, int uses
, long int identifier
, int m1
, int m2
, int m3
, int m4
, int m5
, int m6
, int m7
, int m8
)
16 myname
= name
; // string = char*
30 item :: item ( string name
, long int p
, int uses
, long int identifier
, int m1
, int m2
, int m3
, int m4
, int m5
, int m6
, int m7
, int m8
)
32 myname
= name
; // string = char*
48 for ( int x
= 0 ; x
< 8 ; x
++)
58 void item :: setType ( type t
)
63 bool item :: operator <( const item
& right
) const
68 bool item :: operator >( const item
& right
) const
73 bool item :: operator ==( const item
& right
) const
75 return id
== right
. id
;
78 bool item :: operator !=( const item
& right
) const
80 return id
!= right
. id
;
83 item
& item :: operator =( const item
& right
)
85 myname
= right
. myname
;
86 myprice
= right
. myprice
;
87 myuses
= right
. myuses
;
89 mytype
= right
. mytype
;
91 for ( int x
= 0 ; x
< 8 ; x
++)
93 mymodifiers
[ x
] = right
. mymodifiers
[ x
];
95 return * this ; // enables cascading x=y=z;
101 bool weapon :: setData ( char * datastr
)
106 temp
= strtok ( datastr
, "~" ); // Type
109 // Grab the item's id
110 temp
= strtok ( NULL
, "~" );
111 id
= stringtoint ( temp
);
113 // Grab the item's name
114 temp
= strtok ( NULL
, "~" );
117 // Grab the item's price
118 temp
= strtok ( NULL
, "~" );
119 myprice
= stringtoint ( temp
);
121 // Grab the item's uses
122 temp
= strtok ( NULL
, "~" );
123 myuses
= stringtoint ( temp
);
125 // Grab the item's modifiers
126 for ( int x
= 0 ; x
< 4 ; x
++)
128 temp
= strtok ( NULL
, "~" );
129 mymodifiers
[ x
] = stringtoint ( temp
);
131 // If we got here, we're successful
136 log ( "Exception setting weapon data: %s " , str
);
141 bool weapon :: use ( Player
* p
)
143 // weapon(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0)
150 p
-> getWeapon ()-> undo ( p
);
152 p
-> addStrength ( mymodifiers
[ 0 ]);
153 p
-> addDefense ( mymodifiers
[ 1 ]);
154 p
-> addMaxHP ( mymodifiers
[ 2 ]);
161 void weapon :: undo ( Player
* p
)
163 p
-> subtractStrength ( mymodifiers
[ 0 ]);
164 p
-> subtractDefense ( mymodifiers
[ 1 ]);
165 p
-> subtractMaxHP ( mymodifiers
[ 2 ]);
172 void armor :: undo ( Player
* p
)
174 p
-> subtractStrength ( mymodifiers
[ 0 ]);
175 p
-> subtractDefense ( mymodifiers
[ 1 ]);
176 p
-> subtractMaxHP ( mymodifiers
[ 2 ]);
179 bool armor :: setData ( char * datastr
)
184 strtok ( datastr
, "~" ); // Type
188 // Grab the item's id
189 temp
= strtok ( NULL
, "~" );
190 id
= stringtoint ( temp
);
192 // Grab the item's name
193 temp
= strtok ( NULL
, "~" );
196 // Grab the item's price
197 temp
= strtok ( NULL
, "~" );
198 myprice
= stringtoint ( temp
);
200 // Grab the item's uses
201 temp
= strtok ( NULL
, "~" );
202 myuses
= stringtoint ( temp
);
204 // Grab the item's modifiers
205 for ( int x
= 0 ; x
< 4 ; x
++)
207 temp
= strtok ( NULL
, "~" );
208 mymodifiers
[ x
] = stringtoint ( temp
);
210 // If we got here, we were successful
215 log ( "Exception setting armor data: %s " , str
);
221 bool armor :: use ( Player
* p
)
223 // weapon(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0)
230 p
-> getArmor ()-> undo ( p
);
232 p
-> addStrength ( mymodifiers
[ 0 ]);
233 p
-> addDefense ( mymodifiers
[ 1 ]);
234 p
-> addMaxHP ( mymodifiers
[ 2 ]);
245 bool potion :: use ( Player
* p
)
247 // 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)
253 p
-> addStrength ( myranges
[ 0 ]. random ());
254 p
-> addDefense ( myranges
[ 1 ]. random ());
255 p
-> addMaxHP ( myranges
[ 2 ]. random ());
256 p
-> addHP ( myranges
[ 3 ]. random ());
257 p
-> addForestFights ( myranges
[ 4 ]. random ());
258 p
-> addPlayerFights ( myranges
[ 5 ]. random ());
259 p
-> addGold ( myranges
[ 6 ]. random ());
260 p
-> addBank ( myranges
[ 7 ]. random ());
265 void potion :: undo ( Player
* p
)
270 bool potion :: setData ( char * datastr
)
276 temp
= strtok ( datastr
, "~" ); // Type
280 // Grab the item's id
281 temp
= strtok ( NULL
, "~" );
282 id
= stringtoint ( temp
);
284 // Grab the item's name
285 temp
= strtok ( NULL
, "~" );
288 // Grab the item's price
289 temp
= strtok ( NULL
, "~" );
290 myprice
= stringtoint ( temp
);
292 // Grab the item's uses
293 temp
= strtok ( NULL
, "~" );
294 myuses
= stringtoint ( temp
);
296 // Grab the item's modifiers
297 for ( int x
= 0 ; x
< 8 ; x
++)
299 temp
= strtok ( NULL
, "~" );
300 myranges
[ x
]. low
= stringtoint ( temp
);
301 temp
= strtok ( NULL
, "~" );
302 myranges
[ x
]. high
= stringtoint ( temp
);
307 log ( "Exception setting potion data: %s " , str
);
310 // If we got here, we were successful
315 itemContainer :: itemContainer ()
321 itemContainer :: itemContainer ( item
* i
){
325 itemContainer :: itemContainer ( const itemContainer
& right
)
327 myuses
= right
. myuses
;
328 myitem
= right
. myitem
;
330 itemContainer ::~ itemContainer ()
336 void itemContainer :: use ( Player
* p
)
343 itemContainer
& itemContainer :: operator --()
349 itemContainer
itemContainer :: operator --( int )
351 itemContainer oldValue
= * this ;
358 itemContainer
& itemContainer :: operator ++()
365 itemContainer
itemContainer :: operator ++( int )
367 itemContainer oldValue
= * this ;
374 void itemContainer :: setItem ( item
* i
)
379 bool itemContainer :: operator <( const itemContainer
& right
) const
381 return (* myitem
< * right
. myitem
);
384 bool itemContainer :: operator >( const itemContainer
& right
) const
386 return (* myitem
> * right
. myitem
);
389 bool itemContainer :: operator ==( const itemContainer
& right
) const
391 return (* myitem
== * right
. myitem
);
394 bool itemContainer :: operator !=( const itemContainer
& right
) const
396 return (* myitem
!= * right
. myitem
);
399 void itemContainer :: setUses ( int uses
)
404 tavernItem :: tavernItem ()
410 tavernItem :: tavernItem ( item
* i
, int l
)
416 void tavernItem :: setItem ( item
* i
)
421 void tavernItem :: setLevel ( int l
)
426 bool tavernItem :: visible ( Player
* p
)
428 return ( p
!= NULL
&& p
-> getLevel () >= myLevel
);