diff --git a/doc/user/actual_filter_quirks.md b/doc/user/actual_filter_quirks.md index 09f9e5d9..7e4a31df 100644 --- a/doc/user/actual_filter_quirks.md +++ b/doc/user/actual_filter_quirks.md @@ -26,12 +26,12 @@ Given that: These are not bugs, but may be viewed as such if understood incorrectly. - Resonators fall into `"Delve Stackable Socketable Currency"`, `"Stackable Socketable Currency"`, `"Socketable Currency"` and `"Currency"` class conditions but not into `"Stackable Currency"`. This may seem inconsistent with how other supersets of item classes are handled - other supersets either do work (`"Axes"` vs `"Two Hand Axes"`) or error when loading (`"Two Axes"`). This is because some strings may be substrings of another class name - if unsure about class name validity use `==` and the game client will error if it is not a proper full class name. -- There is no `"Currency"` class. All semingly such items are classified exactly as `"Stackable Currency"`, even if they do not stack in game (eg Prophecies). Note that `Class "Currency"` works because it uses substring-based matching by default - `Class == "Currency"` will fail. +- There is no `"Currency"` class. All semingly such items are classified exactly as `"Stackable Currency"`, even if they do not stack in game (e.g. now removed Prophecies). Note that `Class "Currency"` works because it uses substring-based matching by default - `Class == "Currency"` will fail. Other: - Quest items must be filtered with an explicit item class (`Class "Quest Items"`). This is intended, not a bug. -- Disabled Prophecies cannot drop and cannot be filtered. Also intended. +- Disabled Prophecies cannot drop and cannot be filtered. Also intended. As of 3.17 (Siege of the Atlas) prophecy content has been removed. ## bugs diff --git a/doc/user/filter_spirit_tutorial.md b/doc/user/filter_spirit_tutorial.md index 62fe5211..d1fdf778 100644 --- a/doc/user/filter_spirit_tutorial.md +++ b/doc/user/filter_spirit_tutorial.md @@ -719,7 +719,6 @@ Price [CMP] Integer ``` Class [EQ] (None | String)+ BaseType [EQ] (None | String)+ -Prophecy [EQ] (None | String)+ EnchantmentPassiveNode [EQ] (None | String)+ HasExplicitMod [==] | CMPInteger (None | String)+ @@ -740,7 +739,7 @@ SetAlertSound (String | Integer | ShaperVoiceLine) [Integer] One of the core fancy features of FS. -Write a block just as you would normally write it, but add an `Autogen ` condition. Autogeneration will place strings into `BaseType ==` (`Prophecy ==` in case of prophecies) condition, based on data provided by websites such as poe.ninja or poe.watch. +Write a block just as you would normally write it, but add an `Autogen ` condition. Autogeneration will place strings into `BaseType ==` condition, based on data provided by websites such as poe.ninja or poe.watch. - You need to select a specific league when downloading the prices. If you play on multiple leagues, generate a filter for each. - The `Class` condition must either not exist or match autogenerated item class. Some autogenerations will also check for other conditions that would conflict with autogenerated items (such as `GemLevel` for `currency`). @@ -755,7 +754,6 @@ Available queries: - `fragments` - `delirium_orbs` - `cards` -- `prophecies` - `essences` - `fossils` - `resonators` @@ -805,7 +803,6 @@ Some implementation notes: - `gems` do not report alternate quality gems, for these reasons: - prices are unstable, often with low confidence - filters do not recognize alternate quality gems by the name (`BaseType == "Divergent Berserk"` is not accepted); instead they use `GemQualityType` condition -- `prophecies` do not report certain drop-disabled prophecies, even if they are valuable - for some reason game rejects filters with such names Examples: @@ -1143,4 +1140,4 @@ $leveling_caster = $leveling $caster # both statements semantically equivalent ShowDiscard $leveling $caster ShowDiscard $leveling_caster -``` \ No newline at end of file +``` diff --git a/doc/user/how_filters_work.md b/doc/user/how_filters_work.md index 7b6ceb95..e08b13c7 100644 --- a/doc/user/how_filters_work.md +++ b/doc/user/how_filters_work.md @@ -103,7 +103,6 @@ BaseWard [CMP] Integer+ Class [EQ] String+ BaseType [EQ] String+ -Prophecy [EQ] String+ EnchantmentPassiveNode [EQ] String+ HasInfluence [EQ] None | Influence+ diff --git a/doc/user/loot_properties.md b/doc/user/loot_properties.md index 49984661..675cbbc8 100644 --- a/doc/user/loot_properties.md +++ b/doc/user/loot_properties.md @@ -70,7 +70,7 @@ This includes: - Harvest currency (`Facetor's Lens`, `Infused Engineer's Orb`) - Ritual currency (`Ritual Splinter`, `Ritual Vessel`) but not `Blood-filled Vessel` - Heist currency (`Prime Regrading Lens`, `Secondary Regrading Lens`, `Tempering Orb`, `Tailoring Orb`, `Rogue's Marker`) -- itemised prophecies +- ~~itemised prophecies~~ (removed in 3.17) - `Stacked Deck` Notes: @@ -78,9 +78,8 @@ Notes: - High `DropLevel` does not strictly correlate with currency value. Some low-value currencies require high drop levels (`Simple Sextant` - `68`) and some high-value currencies require low drop levels (`Exalted Orb` - `35`). - In Harvest league it was possible to obtain specific currency (`Gemcutter's Prism`) in stack size of `0`. Item filters correctly detect this. - Anything that can stack (outside special stash tabs) is `"Stackable Currency"`. -- Some items can not stack (`Facetor's Lens`, prophecies) but still are classified as such. This is intentional (see point below). -- There is no `"Currency"` class. All are `"Stackable Currency"`. `Class "Currency"` works because without `==` it requires only a substring match, not a 1:1 match. -- Prophecies can be caught by `Prophecy` condition which works for them the same way as `BaseType`. +- Some items can not stack (e.g. `Facetor's Lens`) but still are classified as such. This is intentional (see point below). +- There is no `"Currency"` class. All are `"Stackable Currency"`. `Class "Currency"` works because without `==` it requires only a substring match, not an exact match. ``` DropLevel >= 1 # many are 1 but also many start at very high levels diff --git a/src/gui/fs/gui/windows/filter/debug_state.cpp b/src/gui/fs/gui/windows/filter/debug_state.cpp index ef4fd23a..bf7caf0d 100644 --- a/src/gui/fs/gui/windows/filter/debug_state.cpp +++ b/src/gui/fs/gui/windows/filter/debug_state.cpp @@ -284,7 +284,6 @@ void debug_state::recompute(const parser::parse_metadata& metadata) color_line_by_condition_result(cs.socket_group, metadata, _line_colors); color_line_by_condition_result(cs.has_explicit_mod, metadata, _line_colors); color_line_by_condition_result(cs.has_enchantment, metadata, _line_colors); - color_line_by_condition_result(cs.prophecy, metadata, _line_colors); color_line_by_condition_result(cs.enchantment_passive_node, metadata, _line_colors); color_line_by_condition_result(cs.enchantment_passive_num, metadata, _line_colors); color_line_by_condition_result(cs.has_influence, metadata, _line_colors); diff --git a/src/gui/fs/gui/windows/filter/item_tooltip.cpp b/src/gui/fs/gui/windows/filter/item_tooltip.cpp index 65709a43..da9d795a 100644 --- a/src/gui/fs/gui/windows/filter/item_tooltip.cpp +++ b/src/gui/fs/gui/windows/filter/item_tooltip.cpp @@ -67,7 +67,6 @@ void draw_item_tooltip_first_column() ImGui::Text("%s:", kw::enchantment_passive_node); ImGui::TextDisabled("HasAnnointment:"); - ImGui::Text("%s:", kw::prophecy); ImGui::Text("%s:", kw::identified); ImGui::Text("%s:", kw::corrupted); ImGui::Text("%s:", kw::mirrored); @@ -146,15 +145,6 @@ void draw_item_tooltip_second_column(const lang::item& itm) ImGui::TextDisabled(str_not_implemented); ImGui::TextDisabled(str_not_implemented); - if (itm.is_prophecy) { - // string here because filters expect this string - // for unknown reason, Prophecy is not a boolean condition - ImGui::TextUnformatted(itm.base_type.c_str()); - } - else { - ImGui::TextUnformatted("-"); - } - const auto output_boolean = [](bool value) { namespace kw = lang::keywords::rf; diff --git a/src/lib/fs/compiler/compiler.cpp b/src/lib/fs/compiler/compiler.cpp index f1482d0f..d9592da7 100644 --- a/src/lib/fs/compiler/compiler.cpp +++ b/src/lib/fs/compiler/compiler.cpp @@ -374,8 +374,6 @@ verify_autogen( return verify_autogen_singular(autogen.origin, conditions, cn::essences, diagnostics); case cat_t::cards: return verify_autogen_singular(autogen.origin, conditions, cn::divination_card, diagnostics); - case cat_t::prophecies: - return verify_autogen_singular(autogen.origin, conditions, cn::prophecies, diagnostics); case cat_t::vials: return verify_autogen_singular(autogen.origin, conditions, cn::vials, diagnostics); diff --git a/src/lib/fs/compiler/detail/conditions.cpp b/src/lib/fs/compiler/detail/conditions.cpp index 8c68e11d..bd97dbda 100644 --- a/src/lib/fs/compiler/detail/conditions.cpp +++ b/src/lib/fs/compiler/detail/conditions.cpp @@ -226,12 +226,6 @@ add_string_array_condition( set.base_type, diagnostics); } - case lang::string_array_condition_property::prophecy: { - return add_non_range_condition( - lang::strings_condition{std::move(strings), is_exact_match, condition_origin}, - set.prophecy, - diagnostics); - } case lang::string_array_condition_property::enchantment_passive_node: { return add_non_range_condition( lang::strings_condition{std::move(strings), is_exact_match, condition_origin}, diff --git a/src/lib/fs/generator/make_item_filter.cpp b/src/lib/fs/generator/make_item_filter.cpp index ccb645d1..4788dc5b 100644 --- a/src/lib/fs/generator/make_item_filter.cpp +++ b/src/lib/fs/generator/make_item_filter.cpp @@ -302,10 +302,6 @@ make_filter_block( result_block.conditions.base_type = make_condition_base_type_basic(item_price_data.divination_cards); result_block.conditions.class_ = make_condition_class(cn::divination_card); break; - case lang::item_category::prophecies: - result_block.conditions.prophecy = make_condition_base_type_basic(item_price_data.prophecies); - result_block.conditions.class_ = make_condition_class(cn::prophecies); - break; case lang::item_category::essences: result_block.conditions.base_type = make_condition_base_type_basic(item_price_data.essences); result_block.conditions.class_ = make_condition_class(cn::essences); diff --git a/src/lib/fs/lang/condition_properties.hpp b/src/lib/fs/lang/condition_properties.hpp index e73bd5e8..298cb876 100644 --- a/src/lib/fs/lang/condition_properties.hpp +++ b/src/lib/fs/lang/condition_properties.hpp @@ -42,7 +42,6 @@ enum class string_array_condition_property { class_, base_type, - prophecy, enchantment_passive_node }; diff --git a/src/lib/fs/lang/condition_set.cpp b/src/lib/fs/lang/condition_set.cpp index fe8c4373..186e4601 100644 --- a/src/lib/fs/lang/condition_set.cpp +++ b/src/lib/fs/lang/condition_set.cpp @@ -354,7 +354,6 @@ void condition_set::generate(std::ostream& output_stream) const output_strings_condition(class_, kw::class_, output_stream); output_strings_condition(base_type, kw::base_type, output_stream); - output_strings_condition(prophecy, kw::prophecy, output_stream); output_strings_condition(enchantment_passive_node, kw::enchantment_passive_node, output_stream); output_ranged_strings_condition(has_explicit_mod, kw::has_explicit_mod, output_stream); @@ -387,7 +386,6 @@ bool condition_set::is_valid() const return is_valid_strings_condition(class_) && is_valid_strings_condition(base_type) - && is_valid_strings_condition(prophecy) && is_valid_strings_condition(enchantment_passive_node) && is_valid_ranged_strings_condition(has_explicit_mod) && is_valid_ranged_strings_condition(has_enchantment); diff --git a/src/lib/fs/lang/condition_set.hpp b/src/lib/fs/lang/condition_set.hpp index 48ae2ecd..4a5495c2 100644 --- a/src/lib/fs/lang/condition_set.hpp +++ b/src/lib/fs/lang/condition_set.hpp @@ -233,7 +233,6 @@ struct condition_set integer_range_condition width; std::optional has_explicit_mod; std::optional has_enchantment; - std::optional prophecy; std::optional enchantment_passive_node; std::optional has_influence; std::optional gem_quality_type; @@ -358,7 +357,6 @@ struct condition_set_match_result && is_not_failure(socket_group) && is_not_failure(has_explicit_mod) && is_not_failure(has_enchantment) - && is_not_failure(prophecy) && is_not_failure(enchantment_passive_node) && is_not_failure(has_influence) && is_not_failure(gem_quality_type) @@ -403,7 +401,6 @@ struct condition_set_match_result std::optional socket_group; std::optional has_explicit_mod; std::optional has_enchantment; - std::optional prophecy; std::optional enchantment_passive_node; std::optional has_influence; std::optional gem_quality_type; diff --git a/src/lib/fs/lang/item.hpp b/src/lib/fs/lang/item.hpp index e81fd327..f1cc9b19 100644 --- a/src/lib/fs/lang/item.hpp +++ b/src/lib/fs/lang/item.hpp @@ -24,7 +24,6 @@ namespace item_class_names { constexpr auto scrolls_generic = currency_stackable; constexpr auto scrolls_harbinger = currency_stackable; constexpr auto remnant_of_corruption = currency_stackable; - constexpr auto prophecies = currency_stackable; constexpr auto essences = currency_stackable; constexpr auto fossils = currency_stackable; constexpr auto oils = currency_stackable; @@ -506,7 +505,6 @@ struct item // these 2 should be overwritten whenever an item is created - size 0x0 makes no sense int height = 0; int width = 0; - bool is_prophecy = false; // if true, base type has an additional meaning (Prophecy condition) /* * "seemingly optional" fields diff --git a/src/lib/fs/lang/item_filter.cpp b/src/lib/fs/lang/item_filter.cpp index 7474535c..c80565ce 100644 --- a/src/lib/fs/lang/item_filter.cpp +++ b/src/lib/fs/lang/item_filter.cpp @@ -129,27 +129,6 @@ test_ranged_strings_condition( } } -[[nodiscard]] std::optional -test_prophecy_condition( - const std::optional& opt_condition, - const item& itm) -{ - if (!opt_condition) - return std::nullopt; - /* - * Prophecy condition is a bit different. It is not a boolean condition nor does it check - * for "Prophecy" class. Instead it treats the item base type name as the prophecy name. - * If the item is an itemised prophecy, then the base type is compared (as if in BaseType - * condition), otherwise condition fails. - */ - const strings_condition& condition = *opt_condition; - - if (!itm.is_prophecy) - return condition_match_result::failure(condition.origin); - - return test_strings_condition_impl(condition, itm.base_type); -} - [[nodiscard]] std::optional test_influences_condition( const std::optional& opt_condition, @@ -469,8 +448,6 @@ item_style default_item_style(const item& itm) result.text_color = color_action{color{integer{ 14}, integer{186}, integer{255}, integer{255}}, {}}; else if (itm.class_ == item_class_names::gems_active || itm.class_ == item_class_names::gems_support) result.text_color = color_action{color{integer{ 27}, integer{162}, integer{155}, integer{255}}, {}}; - else if (itm.is_prophecy) - result.text_color = color_action{color{integer{181}, integer{ 75}, integer{255}, integer{255}}, {}}; else if (itm.class_ == item_class_names::quest_items) result.text_color = color_action{color{integer{ 74}, integer{230}, integer{ 58}, integer{255}}, {}}; // maps are both in these class names and in rarities - border color is the same as text color @@ -587,8 +564,6 @@ item_filtering_result pass_item_through_filter(const item& itm, const item_filte cs_result.has_explicit_mod = test_ranged_strings_condition(cs.has_explicit_mod, itm.explicit_mods); cs_result.has_enchantment = test_ranged_strings_condition(cs.has_enchantment, itm.enchantments_labyrinth); - cs_result.prophecy = test_prophecy_condition(cs.prophecy, itm); - cs_result.has_influence = test_influences_condition(cs.has_influence, itm.influence); cs_result.is_identified = test_boolean_condition(cs.is_identified, itm.is_identified); diff --git a/src/lib/fs/lang/keywords.hpp b/src/lib/fs/lang/keywords.hpp index 8f42629b..89556f4a 100644 --- a/src/lib/fs/lang/keywords.hpp +++ b/src/lib/fs/lang/keywords.hpp @@ -36,7 +36,6 @@ namespace rf constexpr auto width = "Width"; constexpr auto has_explicit_mod = "HasExplicitMod"; constexpr auto has_enchantment = "HasEnchantment"; - constexpr auto prophecy = "Prophecy"; constexpr auto has_influence = "HasInfluence"; constexpr auto stack_size = "StackSize"; constexpr auto gem_level = "GemLevel"; @@ -178,7 +177,6 @@ namespace sf constexpr auto bases = "bases"; constexpr auto cards = "cards"; // 2.0 - The Awakening (Warbands + Tempest) // constexpr auto enchants_helmet = "enchants_helmet"; // 2.2 - Perandus league (also Ascendancy) - constexpr auto prophecies = "prophecies"; // 2.3 - Prophecy league constexpr auto essences = "essences"; // 2.4 - Essence league (also Atlas of Worlds) constexpr auto leaguestones = "leaguestones"; // 2.6 - Legacy league // constexpr auto pieces = "pieces"; // 3.0 - Harbinger league (also Fall of Oriath) (merged into uniques) diff --git a/src/lib/fs/lang/loot/item_database.cpp b/src/lib/fs/lang/loot/item_database.cpp index 77a58ba5..827beedd 100644 --- a/src/lib/fs/lang/loot/item_database.cpp +++ b/src/lib/fs/lang/loot/item_database.cpp @@ -724,6 +724,7 @@ bool item_database::parse(std::string_view items_metadata_json, log::logger& log utility::starts_with(filename, "BreachFragment") /* skip old Breachstones */ || utility::ends_with(filename, "Complete") /* skip complete sets */ || utility::starts_with(filename, "ProphecyFragment") /* skip old prophecy keys */ + || utility::starts_with(filename, "CurrencyProphecyFragment") /* skip - prophecy content was removed in 3.17 */ || utility::starts_with(filename, "ShaperFragment") /* skip old Shaper fragments */ || utility::starts_with(filename, "VaalFragment") /* skip old Atziri and Ubr Atziri fragments */ || filename == "FragmentPantheonFlask" /* skip old Divine Vessel */) @@ -757,9 +758,6 @@ bool item_database::parse(std::string_view items_metadata_json, log::logger& log else if (utility::starts_with(filename, "CurrencyUberElderFragment")) { map_fragments.uber_elder_fragments.push_back(std::move(*elem_item)); } - else if (utility::starts_with(filename, "CurrencyProphecyFragment")) { - map_fragments.prophecy_fragments.push_back(std::move(*elem_item)); - } else if (utility::starts_with(filename, "CurrencyLegionFragment")) { map_fragments.legion_fragments.push_back(std::move(*elem_item)); } @@ -932,7 +930,6 @@ log::message_stream& operator<<(log::message_stream& stream, const item_database "uber elder fragments: " << db.map_fragments.uber_elder_fragments.size() << "\n" "atziri fragments: " << db.map_fragments.atziri_fragments.size() << "\n" "uber atziri fragments: " << db.map_fragments.uber_atziri_fragments.size() << "\n" - "prophecy fragments: " << db.map_fragments.prophecy_fragments.size() << "\n" "legion fragments: " << db.map_fragments.legion_fragments.size() << "\n" "breachstones: " << db.map_fragments.breachstones.size() << "\n" "simulacrum: " << log_opt(db.map_fragments.simulacrum) << "\n" diff --git a/src/lib/fs/lang/loot/item_database.hpp b/src/lib/fs/lang/loot/item_database.hpp index f622f9c9..50604f48 100644 --- a/src/lib/fs/lang/loot/item_database.hpp +++ b/src/lib/fs/lang/loot/item_database.hpp @@ -148,7 +148,6 @@ struct map_fragments_database std::vector uber_elder_fragments; std::vector atziri_fragments; std::vector uber_atziri_fragments; - std::vector prophecy_fragments; // aka Pale Court keys std::vector legion_fragments; // aka Emblems std::vector breachstones; diff --git a/src/lib/fs/lang/market/item_price_data.cpp b/src/lib/fs/lang/market/item_price_data.cpp index 4ef9213c..48af4a04 100644 --- a/src/lib/fs/lang/market/item_price_data.cpp +++ b/src/lib/fs/lang/market/item_price_data.cpp @@ -44,63 +44,44 @@ auto make_undroppable_uniques() "The Vinktar Square", // fated uniques (Prophecy upgrade only) - "Amplification Rod", - "Asenath's Chant", - "Atziri's Reflection", - "Cameria's Avarice", - "Chaber Cairn", + // as of 3.17, prophecy content no longer exists + // some items were brought to core drop pool, some become legacy + + // list of legacy items "Corona Solaris", - "Cragfall", "Crystal Vault", - "Death's Opus", "Deidbellow", - "Doedre's Malevolence", - "Doomfletch's Prism", - "Dreadbeak", "Dreadsurge", - "Duskblight", "Ezomyte Hold", "Fox's Fortune", - "Frostferno", - "Geofri's Devotion", - "Geofri's Legacy", "Greedtrap", - "Hrimburn", "Hrimnor's Dirge", - "Hyrri's Demise", "Kaltensoul", - "Kaom's Way", "Karui Charge", - "Malachai's Awakening", "Martyr's Crown", "Mirebough", "Ngamahu Tiki", "Panquetzaliztli", - "Queen's Escape", "Realm Ender", "Sanguine Gambol", "Shavronne's Gambit", "Silverbough", "Sunspite", - "The Cauteriser", - "The Dancing Duo", "The Effigon", "The Gryphon", - "The Iron Fortress", - "The Nomad", "The Oak", - "The Signal Fire", - "The Stormwall", - "The Tactician", - "The Tempest", - "Thirst for Horrors", - "Timetwist", "Voidheart", "Wall of Brambles", - "Whakatutuki o Matua", - "Wildwrap", - "Windshriek", - "Winterweave", + + // other prophecy-related changes + "Bloodboil", // renamed to Winterweave + "Thirst for Horrors", + "Cragfall", + "Geofri's Legacy", + "Iron Heart", + "The Dancing Duo", + "Timetwist", + "Atziri's Mirror", // fated version made Uber Atziri drop in 3.17 // blessed uniques (Breach Blessing upgrade only) "Xoph's Nurture", @@ -248,7 +229,6 @@ void compare_item_price_data( run_compare_elementary(lhs.incubators, rhs.incubators, "incubators"); run_compare_elementary(lhs.essences, rhs.essences, "essences"); run_compare_elementary(lhs.fossils, rhs.fossils, "fossils"); - run_compare_elementary(lhs.prophecies, rhs.prophecies, "prophecies"); run_compare_elementary(lhs.resonators, rhs.resonators, "resonators"); run_compare_elementary(lhs.scarabs, rhs.scarabs, "scarabs"); @@ -270,37 +250,6 @@ bool is_undroppable_unique(std::string_view name) noexcept return std::binary_search(undroppable_uniques.begin(), undroppable_uniques.end(), name); } -bool is_drop_disabled_prophecy(std::string_view name) noexcept -{ - const auto disabled_prophecies = { - "Ancient Rivalries", - "A Gracious Master", - "The Aesthete's Spirit", - "Brothers in Arms", - "Echoes of Mutation", - "Echoes of Lost Love", - "The Emperor's Trove", - "The Blacksmith" - }; - - /* - * String-contains (instead of operator== is used) because: - * - APIs may report prophecies with extra string content (A Master Seeks Help - * is a prime example - some tools add a master name in parenthesis) - * - Some prophecies are a part of a chain (e.g. Ancient Rivalries I, II, III, IV) - * - Filters detect prophecies in a weird way which makes me wonder what - * extra information BaseType carries in its string - * - Class == "Stackable Currency" - * - BaseType "Prophecy" - * - Prophecy == - */ - for (auto prophecy : disabled_prophecies) - if (utility::contains(name, prophecy)) - return true; - - return false; -} - bool item_price_data::load_and_parse( const item_price_metadata& metadata, const std::filesystem::path& directory_path, @@ -378,7 +327,6 @@ log::message_stream& operator<<(log::message_stream& stream, const item_price_da "\tincubators : " << ipd.incubators.size() << "\n" "\tessences : " << ipd.essences.size() << "\n" "\tfossils : " << ipd.fossils.size() << "\n" - "\tprophecies : " << ipd.prophecies.size() << "\n" "\tresonators : " << ipd.resonators.size() << "\n" "\tscarabs : " << ipd.scarabs.size() << "\n" // not supported (yet) @@ -424,7 +372,6 @@ void item_price_data::sort() std::sort(incubators.begin(), incubators.end(), compare_by_name_asc); std::sort(essences.begin(), essences.end(), compare_by_name_asc); std::sort(fossils.begin(), fossils.end(), compare_by_name_asc); - std::sort(prophecies.begin(), prophecies.end(), compare_by_name_asc); std::sort(resonators.begin(), resonators.end(), compare_by_name_asc); std::sort(scarabs.begin(), scarabs.end(), compare_by_name_asc); std::sort(helmet_enchants.begin(), helmet_enchants.end(), compare_by_name_asc); diff --git a/src/lib/fs/lang/market/item_price_data.hpp b/src/lib/fs/lang/market/item_price_data.hpp index 8685ef56..72527e0b 100644 --- a/src/lib/fs/lang/market/item_price_data.hpp +++ b/src/lib/fs/lang/market/item_price_data.hpp @@ -67,7 +67,6 @@ struct base : elementary_item }; bool is_undroppable_unique(std::string_view name) noexcept; -bool is_drop_disabled_prophecy(std::string_view name) noexcept; // unlinked uniques struct unique_item_price_data @@ -114,7 +113,6 @@ struct item_price_data std::vector incubators; std::vector essences; std::vector fossils; - std::vector prophecies; std::vector resonators; std::vector scarabs; std::vector helmet_enchants; diff --git a/src/lib/fs/lang/queries.hpp b/src/lib/fs/lang/queries.hpp index c3f22d83..bf31dca4 100644 --- a/src/lib/fs/lang/queries.hpp +++ b/src/lib/fs/lang/queries.hpp @@ -8,7 +8,6 @@ namespace fs::lang fragments, delirium_orbs, cards, - prophecies, essences, fossils, resonators, diff --git a/src/lib/fs/network/poe_ninja/api_data.cpp b/src/lib/fs/network/poe_ninja/api_data.cpp index b2661c6b..eaf2aa2d 100644 --- a/src/lib/fs/network/poe_ninja/api_data.cpp +++ b/src/lib/fs/network/poe_ninja/api_data.cpp @@ -17,7 +17,6 @@ constexpr auto filename_fossil = "Fossil.json"; constexpr auto filename_resonator = "Resonator.json"; constexpr auto filename_essence = "Essence.json"; constexpr auto filename_divination_card = "DivinationCard.json"; -constexpr auto filename_prophecy = "Prophecy.json"; constexpr auto filename_skill_gem = "SkillGem.json"; constexpr auto filename_base_type = "BaseType.json"; constexpr auto filename_helmet_enchant = "HelmetEnchant.json"; @@ -46,7 +45,6 @@ namespace fs::network::poe_ninja MACRO(resonator, filename_resonator) \ MACRO(essence, filename_essence) \ MACRO(divination_card, filename_divination_card) \ - MACRO(prophecy, filename_prophecy) \ MACRO(skill_gem, filename_skill_gem) \ MACRO(base_type, filename_base_type) \ MACRO(helmet_enchant, filename_helmet_enchant) \ diff --git a/src/lib/fs/network/poe_ninja/api_data.hpp b/src/lib/fs/network/poe_ninja/api_data.hpp index 990b7477..413016ca 100644 --- a/src/lib/fs/network/poe_ninja/api_data.hpp +++ b/src/lib/fs/network/poe_ninja/api_data.hpp @@ -28,7 +28,6 @@ struct api_item_price_data std::string resonator; std::string essence; std::string divination_card; - std::string prophecy; std::string skill_gem; std::string base_type; std::string helmet_enchant; diff --git a/src/lib/fs/network/poe_ninja/download_data.cpp b/src/lib/fs/network/poe_ninja/download_data.cpp index 73c8c51e..029923c4 100644 --- a/src/lib/fs/network/poe_ninja/download_data.cpp +++ b/src/lib/fs/network/poe_ninja/download_data.cpp @@ -41,7 +41,6 @@ download_item_price_data( ITEM_OVERVIEW_LINK(Resonator) + league_encoded, ITEM_OVERVIEW_LINK(Essence) + league_encoded, ITEM_OVERVIEW_LINK(DivinationCard) + league_encoded, - ITEM_OVERVIEW_LINK(Prophecy) + league_encoded, ITEM_OVERVIEW_LINK(SkillGem) + league_encoded, ITEM_OVERVIEW_LINK(BaseType) + league_encoded, ITEM_OVERVIEW_LINK(HelmetEnchant) + league_encoded, @@ -64,7 +63,7 @@ download_item_price_data( // d (data) is not needed, we ignore it #define MOVE_RESULT_N(z, n, d) std::move(result.results[n].data), return api_item_price_data { - BOOST_PP_REPEAT(22, MOVE_RESULT_N,) + BOOST_PP_REPEAT(21, MOVE_RESULT_N,) }; #undef MOVE_RESULT_N } diff --git a/src/lib/fs/network/poe_ninja/parse_data.cpp b/src/lib/fs/network/poe_ninja/parse_data.cpp index 8d60c526..6a11bd71 100644 --- a/src/lib/fs/network/poe_ninja/parse_data.cpp +++ b/src/lib/fs/network/poe_ninja/parse_data.cpp @@ -195,22 +195,6 @@ parse_elementary_items(std::string_view json_str, log::logger& logger) return result; } -[[nodiscard]] std::vector -parse_prophecies(std::string_view json_str, log::logger& logger) -{ - std::vector result; - - for_each_item(json_str, logger, [&](const auto& item) { - // Skip drop-disabled prophecies. Game rejects filters with them. - if (lang::market::is_drop_disabled_prophecy(get_item_property_name(item))) - return; - - result.push_back(get_elementary_item_data(item)); - }); - - return result; -} - [[nodiscard]] std::vector parse_divination_cards(std::string_view json_str, log::logger& logger) { @@ -338,7 +322,6 @@ lang::market::item_price_data parse_item_price_data(const api_item_price_data& j result.fossils = parse_elementary_items(jsons.fossil, logger); result.resonators = parse_elementary_items(jsons.resonator, logger); result.essences = parse_elementary_items(jsons.essence, logger); - result.prophecies = parse_prophecies (jsons.prophecy, logger); result.vials = parse_elementary_items(jsons.vial, logger); result.helmet_enchants = parse_elementary_items(jsons.helmet_enchant, logger); diff --git a/src/lib/fs/network/poe_watch/parse_data.cpp b/src/lib/fs/network/poe_watch/parse_data.cpp index 0f7f3344..11ede74d 100644 --- a/src/lib/fs/network/poe_watch/parse_data.cpp +++ b/src/lib/fs/network/poe_watch/parse_data.cpp @@ -32,7 +32,7 @@ BETTER_ENUM(frame_type, int, currency, divination_card, quest_item, - prophecy, + prophecy, // prophecy content was removed but keeping identifier for order relic, // should be last unknown) @@ -103,8 +103,6 @@ namespace categories // avoids name conflicts with types in lang namespace std::optional tier; }; - struct prophecy {}; - BETTER_ENUM(weapon_type, int, bow, claw, @@ -184,7 +182,6 @@ using item_category_variant = std::variant< categories::gem, categories::jewel, categories::map, - categories::prophecy, categories::weapon, categories::base, categories::beast>; @@ -245,7 +242,6 @@ log::message_stream& operator<<(log::message_stream& stream, const item& item) log_optional("\ttier : ", map.tier); log_optional("\tseries: ", map.series); }, - [&](categories::prophecy) { stream << "prophecy\n"; }, [&](categories::weapon) { stream << "weapon\n"; }, [&](categories::base base) { stream << "base:\n" @@ -434,9 +430,6 @@ item_category_variant parse_item_category(const nlohmann::json& entry) return categories::map{json_to_enum(group), series, tier}; } - if (category_str == "prophecy") { - return categories::prophecy{}; - } if (category_str == "weapon") { return categories::weapon{json_to_enum(group)}; } @@ -715,10 +708,6 @@ parse_item_price_data( itm.max_stack_size.value_or(1)}); continue; } - else if (std::holds_alternative(itm.category)) { - result.prophecies.push_back(elementary_item{price_data, std::move(itm.name)}); - continue; - } else if (std::holds_alternative(itm.category)) { const auto& map = std::get(itm.category); diff --git a/src/lib/fs/parser/detail/symbols.hpp b/src/lib/fs/parser/detail/symbols.hpp index b0208655..e0810997 100644 --- a/src/lib/fs/parser/detail/symbols.hpp +++ b/src/lib/fs/parser/detail/symbols.hpp @@ -173,7 +173,6 @@ namespace rf add (lang::keywords::rf::class_, lang::string_array_condition_property::class_) (lang::keywords::rf::base_type, lang::string_array_condition_property::base_type) - (lang::keywords::rf::prophecy, lang::string_array_condition_property::prophecy) (lang::keywords::rf::enchantment_passive_node, lang::string_array_condition_property::enchantment_passive_node) ; } @@ -332,7 +331,6 @@ namespace sf (lang::keywords::sf::fragments, fs::lang::item_category::fragments) (lang::keywords::sf::delirium_orbs, fs::lang::item_category::delirium_orbs) (lang::keywords::sf::cards, fs::lang::item_category::cards) - (lang::keywords::sf::prophecies, fs::lang::item_category::prophecies) (lang::keywords::sf::essences, fs::lang::item_category::essences) (lang::keywords::sf::fossils, fs::lang::item_category::fossils) (lang::keywords::sf::resonators, fs::lang::item_category::resonators)