From 634bd69244b9adf7d3a1250606a4895b38d89b39 Mon Sep 17 00:00:00 2001 From: nooperation Date: Mon, 19 Sep 2022 01:44:36 -0400 Subject: [PATCH] Added Hoyt filter changes (whitelists, more filtering options for jewels) --- D2Hackit/Modules/filter/ItemFilter.cpp | 52 +++++++++++++++++-- D2Hackit/Modules/filter/ItemFilter.h | 5 ++ D2Hackit/Modules/filter/Resources/filter.ini | 4 ++ .../Modules/filter/Resources/filterAllow.txt | 6 ++- .../filter/Resources/filterSetWhitelist.txt | 3 ++ .../Resources/filterUniqueWhitelist.txt | 27 ++++++++++ D2Hackit/Modules/filter/filter.vcxproj | 4 ++ .../Modules/filter/filter.vcxproj.filters | 8 +++ 8 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 D2Hackit/Modules/filter/Resources/filterSetWhitelist.txt create mode 100644 D2Hackit/Modules/filter/Resources/filterUniqueWhitelist.txt diff --git a/D2Hackit/Modules/filter/ItemFilter.cpp b/D2Hackit/Modules/filter/ItemFilter.cpp index 007d06d..3279a93 100644 --- a/D2Hackit/Modules/filter/ItemFilter.cpp +++ b/D2Hackit/Modules/filter/ItemFilter.cpp @@ -29,7 +29,14 @@ bool ItemFilter::LoadItems() { return false; } - + if(!LoadItemMap(".\\plugin\\filterUniqueWhitelist.txt", allowedItemsUnique)) + { + return false; + } + if(!LoadItemMap(".\\plugin\\filterSetWhitelist.txt", allowedItemsSet)) + { + return false; + } //filterTown = GetPrivateProfileInt("Filter", "FilterTown", 1, FILTER_SETTINGS_PATH); showUnique = GetPrivateProfileInt("WeaponArmor", "Unique", 1, FILTER_SETTINGS_PATH) == TRUE; @@ -50,6 +57,9 @@ bool ItemFilter::LoadItems() showMagicCharms = GetPrivateProfileInt("Charms", "MagicCharms", 1, FILTER_SETTINGS_PATH) == TRUE; showRareCharms = GetPrivateProfileInt("Charms", "RareCharms", 1, FILTER_SETTINGS_PATH) == TRUE; + showMagicJewels = GetPrivateProfileInt("Jewels", "MagicJewels", 1, FILTER_SETTINGS_PATH) == TRUE; + showRareJewels = GetPrivateProfileInt("Jewels", "RareJewels", 1, FILTER_SETTINGS_PATH) == TRUE; + minGoldAmount = GetPrivateProfileInt("Misc", "MinGoldAmount", 0, FILTER_SETTINGS_PATH); return true; } @@ -82,6 +92,12 @@ bool ItemFilter::OnItemFind(ITEM &item) if(IsAllowed(item.szItemCode)) return true; + if(item.iQuality == ITEM_LEVEL_UNIQUE && allowedItemsUnique.find(item.szItemCode) != allowedItemsUnique.end()) + return true; + + if(item.iQuality == ITEM_LEVEL_SET && allowedItemsSet.find(item.szItemCode) != allowedItemsSet.end()) + return true; + if(IsFiltered(item.szItemCode)) return false; @@ -115,6 +131,16 @@ bool ItemFilter::OnItemFind(ITEM &item) return true; } + + if (IsJewel(item.szItemCode)) + { + if (!showMagicJewels && item.iQuality == ITEM_LEVEL_MAGIC) + return false; + if (!showRareJewels && item.iQuality == ITEM_LEVEL_RARE) + return false; + + return true; + } if(server->IsWeapon(item.szItemCode) || server->IsArmor(item.szItemCode)) { @@ -127,7 +153,7 @@ bool ItemFilter::OnItemFind(ITEM &item) if(showEthSoc && item.iEthereal && item.iSocketed) return true; - if(!showUnique && item.iQuality == ITEM_LEVEL_UNIQUE) + if(!showUnique && item.iQuality == ITEM_LEVEL_UNIQUE) return false; if(!showRare && item.iQuality == ITEM_LEVEL_RARE) @@ -217,8 +243,7 @@ bool ItemFilter::IsGoodItemCode(char *itemCode) return true; } - if(strcmp(itemCode, "jew") == 0 || - strcmp(itemCode, "xu0") == 0 || + if(strcmp(itemCode, "xu0") == 0 || strcmp(itemCode, "s51") == 0 || strcmp(itemCode, "s01") == 0 || strcmp(itemCode, "t51") == 0 || @@ -252,6 +277,16 @@ bool ItemFilter::IsCharm(char *itemCode) return false; } +bool ItemFilter::IsJewel(char* itemCode) +{ + if (strcmp(itemCode, "jew") == 0) + { + return true; + } + + return false; +} + bool ItemFilter::IsRareSpecial(char *itemCode) { // Unique boss parts @@ -291,6 +326,15 @@ bool ItemFilter::IsRareSpecial(char *itemCode) return true; } + if(strcmp(itemCode, "sbs") == 0 || + strcmp(itemCode, "srj") == 0 || + strcmp(itemCode, "sbk") == 0 || + strcmp(itemCode, "toa") == 0 || + strcmp(itemCode, "zz0") == 0) + { + return true; + } + return false; } diff --git a/D2Hackit/Modules/filter/ItemFilter.h b/D2Hackit/Modules/filter/ItemFilter.h index f07f442..50c6dd7 100644 --- a/D2Hackit/Modules/filter/ItemFilter.h +++ b/D2Hackit/Modules/filter/ItemFilter.h @@ -14,6 +14,8 @@ class ItemFilter private: std::unordered_map filteredItems; std::unordered_map allowedItems; + std::unordered_map allowedItemsUnique; + std::unordered_map allowedItemsSet; std::unordered_map weaponArmorItems; //bool filterTown; bool showEthSoc; @@ -31,6 +33,8 @@ class ItemFilter bool showRareRingAmulet; bool showMagicCharms; bool showRareCharms; + bool showMagicJewels; + bool showRareJewels; int minGoldAmount; bool OnItemFind(ITEM &item); @@ -41,6 +45,7 @@ class ItemFilter bool IsGoodItemOther(ITEM &item); bool IsGoodItemCode(char *itemCode); bool IsCharm(char *itemCode); + bool IsJewel(char *itemCode); bool IsRareSpecial(char *itemCode); bool IsRuneDecalScroll(char *itemCode); bool IsRingAmulet(char *itemCode); diff --git a/D2Hackit/Modules/filter/Resources/filter.ini b/D2Hackit/Modules/filter/Resources/filter.ini index 689da5c..c5d8543 100644 --- a/D2Hackit/Modules/filter/Resources/filter.ini +++ b/D2Hackit/Modules/filter/Resources/filter.ini @@ -19,5 +19,9 @@ RareRingAmulet = 1 MagicCharms = 1 RareCharms = 1 +[Jewels] +MagicJewels = 1 +RareJewels = 1 + [Misc] MinGoldAmount = 0 diff --git a/D2Hackit/Modules/filter/Resources/filterAllow.txt b/D2Hackit/Modules/filter/Resources/filterAllow.txt index d393994..a1a356d 100644 --- a/D2Hackit/Modules/filter/Resources/filterAllow.txt +++ b/D2Hackit/Modules/filter/Resources/filterAllow.txt @@ -1,3 +1,7 @@ Key Key key Key - +srj Slurp Juice +sbs Radamant's Smol Skill Book +zz0 Radiant Aura Stone +sbk Not Ranamants Skill Book +toa Token of Absolution diff --git a/D2Hackit/Modules/filter/Resources/filterSetWhitelist.txt b/D2Hackit/Modules/filter/Resources/filterSetWhitelist.txt new file mode 100644 index 0000000..7771650 --- /dev/null +++ b/D2Hackit/Modules/filter/Resources/filterSetWhitelist.txt @@ -0,0 +1,3 @@ +yar Cow King's Steel Hide +ybt Cow King's Steel Hoofs +ydw Cow King's Steel Horns diff --git a/D2Hackit/Modules/filter/Resources/filterUniqueWhitelist.txt b/D2Hackit/Modules/filter/Resources/filterUniqueWhitelist.txt new file mode 100644 index 0000000..01466c3 --- /dev/null +++ b/D2Hackit/Modules/filter/Resources/filterUniqueWhitelist.txt @@ -0,0 +1,27 @@ +ytp Archmage Plate +yrb Archmage Robe +0gi Slayer Axe +0ts Whale Hunter +yft Ceremonial Shield +yul Ceremonial Armor +ci3 Diadem +zam Amazonian Pin +sam Sorcerer's Talisman +nam Death's Locket +pam Holy Pendant +bam Totemic Pebble +dam Druidic Necklace +aam Assassin's Choker +3lb Sash +amu Amulet +au9 Amulet +rin Ring +rn9 Ring +jwl Jewel +ore Ore +cx1 Small Charm +cx2 Large Charm +cx3 Grand Charm +cm1 Small Charm +cm2 Large Charm +cm3 Grand Charm diff --git a/D2Hackit/Modules/filter/filter.vcxproj b/D2Hackit/Modules/filter/filter.vcxproj index 9b564bb..bf3e475 100644 --- a/D2Hackit/Modules/filter/filter.vcxproj +++ b/D2Hackit/Modules/filter/filter.vcxproj @@ -127,6 +127,10 @@ xcopy /Y $(TargetPath) $(SolutionDir)\Publish_$(Configuration)\ + + + + diff --git a/D2Hackit/Modules/filter/filter.vcxproj.filters b/D2Hackit/Modules/filter/filter.vcxproj.filters index 3544b35..49adb7c 100644 --- a/D2Hackit/Modules/filter/filter.vcxproj.filters +++ b/D2Hackit/Modules/filter/filter.vcxproj.filters @@ -38,4 +38,12 @@ Resource Files + + + Resource Files + + + Resource Files + + \ No newline at end of file