Cleaned up item drop logic.

* Replaced bad exception logic with C-style error returns in ItemManager
* Removed unnecessary instances of objects being passed by value
* Fixed whitespace problems
* Added new config options to the default config.ini
* Updated tabledata reference
This commit is contained in:
2020-10-18 01:19:05 +02:00
parent 7f716c7278
commit 3ce8cf2129
8 changed files with 167 additions and 145 deletions

View File

@@ -29,11 +29,11 @@ namespace ItemManager {
extern std::map<std::pair<int32_t, int32_t>, Item> ItemData; // <id, type> -> data
extern std::map<int32_t, std::vector<VendorListing>> VendorTables;
extern std::map<int32_t, CrocPotEntry> CrocPotTable; // level gap -> entry
extern std::map<int32_t, std::vector<int>> RarityRatios;
extern std::map<int32_t, std::vector<int>> RarityRatios;
extern std::map<int32_t, Crate> Crates;
// pair <Itemset, Rarity> -> vector of pointers (map iterators) to records in ItemData (it looks a lot scarier than it is)
extern std::map<std::pair<int32_t, int32_t>,
std::vector<std::map<std::pair<int32_t, int32_t>, Item>::iterator>> CrateItems;
extern std::map<std::pair<int32_t, int32_t>,
std::vector<std::map<std::pair<int32_t, int32_t>, Item>::iterator>> CrateItems;
void init();
@@ -56,12 +56,9 @@ namespace ItemManager {
void chestOpenHandler(CNSocket* sock, CNPacketData* data);
// crate opening logic with all helper functions
sItemBase openCrate(int crateId, int playerGender);
Crate getCrate(int crateId);
int getItemSetId(Crate crate, int crateId);
int getRarity(Crate crate, int itemSetId);
sItemBase getCrateItem(int itemSetId, int rarity, int playerGender);
void throwError(int ignore);
int getItemSetId(Crate& crate, int crateId);
int getRarity(Crate& crate, int itemSetId);
int getCrateItem(sItemBase& reward, int itemSetId, int rarity, int playerGender);
int findFreeSlot(Player *plr);
Item* getItemData(int32_t id, int32_t type);