X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/7f56a68bd8f45c357fc0a5e85d9b5585be3a4b5e..c7bceafda9c7c1045b398d8454a0a2ed0fbd9170:/gameserv/item.cpp diff --git a/gameserv/item.cpp b/gameserv/item.cpp index 5532ba3..45827ac 100644 --- a/gameserv/item.cpp +++ b/gameserv/item.cpp @@ -103,44 +103,37 @@ bool weapon::setData(char *datastr) try { char *temp; - // Get the weapon type, but default to WEAPON since this is a weapon - temp = strtok(datastr, "~"); + temp = strtok(datastr, "~"); // Type 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 were successful + // If we got here, we're successful return true; } catch (char *str) { - log("Exception: %s", str); + log("Exception setting weapon data: %s", str); return false; } } @@ -184,49 +177,44 @@ void armor::undo(Player *p) bool armor::setData(char *datastr) { - char *temp; - - // Get the weapon type, but default to WEAPON since this is a weapon - temp = strtok("~", datastr); - if (!temp) - return false; - mytype = ARMOR; - - // Grab the item's id - temp = strtok("~", NULL); - if (!temp) - return false; - id = stringtoint(temp); - - // Grab the item's name - temp = strtok("~", NULL); - if (!temp) - return false; - myname = temp; + try + { + char *temp; + strtok(datastr, "~"); // Type - // Grab the item's price - temp = strtok("~", NULL); - if (!temp) - return false; - myprice = stringtoint(temp); + mytype = ARMOR; - // Grab the item's uses - temp = strtok("~", NULL); - if (!temp) - return false; - myuses = stringtoint(temp); + // Grab the item's id + temp = strtok(NULL, "~"); + id = stringtoint(temp); - // Grab the item's modifiers - for (int x = 0; x < 5; x++) + // 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 were successful + return true; + } + catch(char *str) { - temp = strtok("~", NULL); - if (!temp) - return false; - mymodifiers[x] = stringtoint(temp); + log("Exception setting armor data: %s", str); + return false; } - // If we got here, we were successful - return true; } bool armor::use(Player *p) @@ -248,6 +236,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) @@ -256,14 +248,14 @@ bool potion::use(Player *p) return false; else { - p->strength += mymodifiers[0]; - p->defense += mymodifiers[1]; - p->maxhp += mymodifiers[2]; - p->hp += mymodifiers[3]; - p->forest_fights += mymodifiers[4]; - p->player_fights += mymodifiers[5]; - p->gold += mymodifiers[6]; - p->bank += mymodifiers[7]; + p->strength += myranges[0].random(); + p->defense += myranges[1].random(); + p->maxhp += myranges[2].random(); + p->hp += myranges[3].random(); + p->forest_fights += myranges[4].random(); + p->player_fights += myranges[5].random(); + p->gold += myranges[6].random(); + p->bank += myranges[7].random(); } if (myuses > 0) @@ -280,47 +272,44 @@ void potion::undo(Player *p) bool potion::setData(char *datastr) { - char *temp; - - // Get the weapon type, but default to WEAPON since this is a weapon - temp = strtok("~", datastr); - if (!temp) - return false; - mytype = ARMOR; - - // Grab the item's id - temp = strtok("~", NULL); - if (!temp) - return false; - id = stringtoint(temp); - - // Grab the item's name - temp = strtok("~", NULL); - if (!temp) - return false; - myname = temp; - - // Grab the item's price - temp = strtok("~", NULL); - if (!temp) - return false; - myprice = stringtoint(temp); + try + { + char *temp; - // Grab the item's uses - temp = strtok("~", NULL); - if (!temp) - return false; - myuses = stringtoint(temp); + temp = strtok(datastr, "~"); // Type - // Grab the item's modifiers - for (int x = 0; x < 5; x++) + 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 < 8; x++) + { + temp = strtok(NULL, "~"); + myranges[x].low = stringtoint(temp); + temp = strtok(NULL, "~"); + myranges[x].high = stringtoint(temp); + } + } + catch(char *str) { - temp = strtok("~", NULL); - if (!temp) - return false; - mymodifiers[x] = stringtoint(temp); + log("Exception setting potion data: %s", str); + return false; } - // If we got here, we were successful return true; } @@ -332,8 +321,7 @@ itemContainer::itemContainer() myitem = NULL; } -itemContainer::itemContainer(item *i) -{ +itemContainer::itemContainer(item *i){ myuses = i->uses(); myitem = i; } @@ -403,3 +391,8 @@ bool itemContainer::operator!=(const itemContainer &right) const { return (*myitem == *right.myitem); } + +void itemContainer::setUses(int uses) +{ + myuses = uses; +}