X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/e696687e6f4f194216965eefba1dd59b044beffe..42c1eadd0d3859a47061d1d714ee5ff5827b2fb3:/gameserv/item.cpp diff --git a/gameserv/item.cpp b/gameserv/item.cpp index cf86c76..a645cf3 100644 --- a/gameserv/item.cpp +++ b/gameserv/item.cpp @@ -1,5 +1,6 @@ #include "item.h" #include "player.h" +#include "extern.h" item::item() { @@ -79,10 +80,63 @@ bool item::operator!=(const item &right) const return myname != right.myname; } +item &item::operator=(const item &right) +{ + myname = right.myname; + myprice = right.myprice; + myuses = right.myuses; + id = right.id; + mytype = right.mytype; + + for (int x = 0; x < 8; x++) + { + mymodifiers[x] = right.mymodifiers[x]; + } + return *this; // enables cascading x=y=z; +} weapon::~weapon() { } +bool weapon::setData(char *datastr) +{ + try + { + char *temp; + + mytype = WEAPON; + // Grab the item's id + temp = strtok(NULL, "~"); + id = stringtoint(temp); + + // Grab the item's name + temp = strtok(NULL, "~"); + myname = temp; + + // Grab the item's price + temp = strtok(NULL, "~"); + myprice = stringtoint(temp); + + // Grab the item's uses + temp = strtok(NULL, "~"); + myuses = stringtoint(temp); + + // Grab the item's modifiers + for (int x = 0; x < 4; x++) + { + temp = strtok(NULL, "~"); + mymodifiers[x] = stringtoint(temp); + } + // If we got here, we're successful + return true; + } + catch (char *str) + { + log("Exception setting weapon data: %s", str); + return false; + } +} + bool weapon::use(Player *p) { // weapon(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0) @@ -109,12 +163,6 @@ void weapon::undo(Player *p) p->maxhp -= mymodifiers[2]; } -bool weapon::setData(const char *dataStr) -{ - - return true; -} - armor::~armor() { } @@ -126,9 +174,49 @@ void armor::undo(Player *p) p->maxhp -= mymodifiers[2]; } -bool armor::setData(const char *dataStr) +bool armor::setData(char *datastr) { - return true; + try + { + char *temp; + mytype = ARMOR; + + // Grab the item's id + temp = strtok(NULL, "~"); + id = stringtoint(temp); + log("id = %ld", id); + + // Grab the item's name + temp = strtok(NULL, "~"); + myname = temp; + log("name = %s", myname.c_str()); + + // Grab the item's price + temp = strtok(NULL, "~"); + myprice = stringtoint(temp); + log("price = %ld", myprice); + + // Grab the item's uses + temp = strtok(NULL, "~"); + myuses = stringtoint(temp); + log("uses = %d", myuses); + + // Grab the item's modifiers + for (int x = 0; x < 4; x++) + { + temp = strtok(NULL, "~"); + mymodifiers[x] = stringtoint(temp); + log("modifier %d = %ld", x, mymodifiers[x]); + } + // If we got here, we were successful + return true; + } + catch(char *str) + { + log("Exception setting armor data: %s", str); + return false; + } + } bool armor::use(Player *p) @@ -150,6 +238,10 @@ bool armor::use(Player *p) return true; } +potion::~potion() +{ +} + bool potion::use(Player *p) { // 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) @@ -180,9 +272,43 @@ void potion::undo(Player *p) return; } -bool potion::setData(const char *dataStr) +bool potion::setData(char *datastr) { - + try + { + char *temp; + + mytype = ARMOR; + + // Grab the item's id + temp = strtok(NULL, "~"); + id = stringtoint(temp); + + // Grab the item's name + temp = strtok(NULL, "~"); + myname = temp; + + // Grab the item's price + temp = strtok(NULL, "~"); + myprice = stringtoint(temp); + + // Grab the item's uses + temp = strtok(NULL, "~"); + myuses = stringtoint(temp); + + // Grab the item's modifiers + for (int x = 0; x < 5; x++) + { + temp = strtok(NULL, "~"); + mymodifiers[x] = stringtoint(temp); + } + } + catch(char *str) + { + log("Exception setting potion data: %s", str); + return false; + } + // If we got here, we were successful return true; } @@ -193,8 +319,7 @@ itemContainer::itemContainer() myitem = NULL; } -itemContainer::itemContainer(item *i) -{ +itemContainer::itemContainer(item *i){ myuses = i->uses(); myitem = i; }