]>
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
-> strength
+= mymodifiers
[ 0 ];
153 p
-> defense
+= mymodifiers
[ 1 ];
154 p
-> maxhp
+= mymodifiers
[ 2 ];
161 void weapon :: undo ( Player
* p
)
163 p
-> strength
-= mymodifiers
[ 0 ];
164 p
-> defense
-= mymodifiers
[ 1 ];
165 p
-> maxhp
-= mymodifiers
[ 2 ];
172 void armor :: undo ( Player
* p
)
174 p
-> strength
-= mymodifiers
[ 0 ];
175 p
-> defense
-= mymodifiers
[ 1 ];
176 p
-> maxhp
-= 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
-> strength
+= mymodifiers
[ 0 ];
233 p
-> defense
+= mymodifiers
[ 1 ];
234 p
-> maxhp
+= 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)
254 p
-> strength
+= myranges
[ 0 ]. random ();
255 if ( p
-> strength
> 32000 || p
-> strength
< 0 )
260 p
-> defense
+= myranges
[ 1 ]. random ();
261 if ( p
-> defense
> 32000 || p
-> defense
< 0 )
266 p
-> maxhp
+= myranges
[ 2 ]. random ();
267 if ( p
-> maxhp
> 32000 || p
-> maxhp
< 0 )
272 p
-> hp
+= myranges
[ 3 ]. random ();
273 if ( p
-> hp
> p
-> maxhp
|| p
-> hp
< 0 ) // You can no longer go higher than your maxhp
276 p
-> forest_fights
+= myranges
[ 4 ]. random ();
277 if ( p
-> forest_fights
> 32000 || p
-> forest_fights
< 0 )
279 p
-> forest_fights
= 32000 ;
282 p
-> player_fights
+= myranges
[ 5 ]. random ();
283 if ( p
-> player_fights
> 32000 || p
-> player_fights
< 0 )
285 p
-> player_fights
= 32000 ;
289 p
-> gold
+= myranges
[ 6 ]. random ();
290 if ( p
-> gold
> 2000000000 || p
-> gold
< 0 )
292 p
-> gold
= 2000000000 ;
295 p
-> bank
+= myranges
[ 7 ]. random ();
296 if ( p
-> bank
> 2000000000 || p
-> bank
< 0 )
298 p
-> bank
= 2000000000 ;
304 void potion :: undo ( Player
* p
)
309 bool potion :: setData ( char * datastr
)
315 temp
= strtok ( datastr
, "~" ); // Type
319 // Grab the item's id
320 temp
= strtok ( NULL
, "~" );
321 id
= stringtoint ( temp
);
323 // Grab the item's name
324 temp
= strtok ( NULL
, "~" );
327 // Grab the item's price
328 temp
= strtok ( NULL
, "~" );
329 myprice
= stringtoint ( temp
);
331 // Grab the item's uses
332 temp
= strtok ( NULL
, "~" );
333 myuses
= stringtoint ( temp
);
335 // Grab the item's modifiers
336 for ( int x
= 0 ; x
< 8 ; x
++)
338 temp
= strtok ( NULL
, "~" );
339 myranges
[ x
]. low
= stringtoint ( temp
);
340 temp
= strtok ( NULL
, "~" );
341 myranges
[ x
]. high
= stringtoint ( temp
);
346 log ( "Exception setting potion data: %s " , str
);
349 // If we got here, we were successful
354 itemContainer :: itemContainer ()
360 itemContainer :: itemContainer ( item
* i
){
364 itemContainer :: itemContainer ( const itemContainer
& right
)
366 myuses
= right
. myuses
;
367 myitem
= right
. myitem
;
369 itemContainer ::~ itemContainer ()
375 void itemContainer :: use ( Player
* p
)
381 itemContainer
& itemContainer :: operator --()
387 itemContainer
itemContainer :: operator --( int )
389 itemContainer oldValue
= * this ;
396 itemContainer
& itemContainer :: operator ++()
403 itemContainer
itemContainer :: operator ++( int )
405 itemContainer oldValue
= * this ;
412 void itemContainer :: setItem ( item
* i
)
417 bool itemContainer :: operator <( const itemContainer
& right
) const
419 return (* myitem
< * right
. myitem
);
422 bool itemContainer :: operator >( const itemContainer
& right
) const
424 return (* myitem
> * right
. myitem
);
427 bool itemContainer :: operator ==( const itemContainer
& right
) const
429 return (* myitem
== * right
. myitem
);
432 bool itemContainer :: operator !=( const itemContainer
& right
) const
434 return (* myitem
!= * right
. myitem
);
437 void itemContainer :: setUses ( int uses
)
442 tavernItem :: tavernItem ()
448 tavernItem :: tavernItem ( item
* i
, int l
)
454 void tavernItem :: setItem ( item
* i
)
459 void tavernItem :: setLevel ( int l
)
464 bool tavernItem :: visible ( Player
* p
)
466 return ( p
!= NULL
&& p
-> level
>= myLevel
);