From 1c36276865edfac554817b46adb9f9f3feadeae0 Mon Sep 17 00:00:00 2001 From: Emi Matchu Date: Sat, 31 Aug 2024 13:42:25 -0700 Subject: [PATCH] Remove unused `special_color` logic from Item We used to use this to determine what color to show by default on the item page preview for, like, Maraquan-specific items. Now, we infer it from our actual customization data, rather than these heuristics! There's still a database field for `Item#manual_special_color_id`. We can still read and write this from the support UI, and Impress 2020 still slightly uses it from the homepage, so I'm not removing from the database right now. --- app/models/item.rb | 51 ---------------------------------------------- 1 file changed, 51 deletions(-) diff --git a/app/models/item.rb b/app/models/item.rb index e246be6f..e1b74953 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -25,8 +25,6 @@ class Item < ApplicationRecord NCRarities = [0, 500] PAINTBRUSH_SET_DESCRIPTION = 'This item is part of a deluxe paint brush set!' - SPECIAL_COLOR_DESCRIPTION_REGEX = - /This item is only wearable by [a-zA-Z]+ painted ([a-zA-Z]+)\.|WARNING: This [a-zA-Z]+ can be worn by ([a-zA-Z]+) [a-zA-Z]+ ONLY!|If your Neopet is not painted ([a-zA-Z]+), it will not be able to wear this item\./ scope :newest, -> { order(arel_table[:created_at].desc) if arel_table[:created_at] @@ -306,55 +304,6 @@ class Item < ApplicationRecord restricted_zones + occupied_zones end - def special_color - @special_color ||= determine_special_color - end - - def special_color_id - special_color.try(:id) - end - - protected - def determine_special_color - I18n.with_locale(I18n.default_locale) do - # Rather than go find the special description in all locales, let's just - # run this logic in English. - if description.include?(PAINTBRUSH_SET_DESCRIPTION) - name_words = name.downcase.split - Color.nonstandard.each do |color| - return color if name_words.include?(color.name) - end - end - - match = description.match(SPECIAL_COLOR_DESCRIPTION_REGEX) - if match - # Since there are multiple formats in the one regex, there are multiple - # possible color name captures. So, take the first non-nil capture. - color = match.captures.detect(&:present?) - return Color.find_by_name(color.downcase) - end - - # HACK: this should probably be a flag on the record instead of - # being hardcoded :P - if [71893, 76192, 76202, 77367, 77368, 77369, 77370].include?(id) - return Color.find_by_name('baby') - end - - if [76198].include?(id) - return Color.find_by_name('mutant') - end - - if [75372].include?(id) - return Color.find_by_name('maraquan') - end - - if manual_special_color_id? - return Color.find(manual_special_color_id) - end - end - end - public - def species_support_ids @species_support_ids_array ||= read_attribute('species_support_ids').split(',').map(&:to_i) rescue nil end