remove Standard series, shift IDs down
This commit is contained in:
parent
93e3526d1e
commit
244e3f51eb
4 changed files with 50 additions and 55 deletions
|
|
@ -99,20 +99,20 @@ class Character < ApplicationRecord
|
||||||
|
|
||||||
# Mapping from legacy integer values to slugs
|
# Mapping from legacy integer values to slugs
|
||||||
LEGACY_SERIES_TO_SLUG = {
|
LEGACY_SERIES_TO_SLUG = {
|
||||||
1 => 'standard',
|
1 => 'grand',
|
||||||
2 => 'grand',
|
2 => 'zodiac',
|
||||||
3 => 'zodiac',
|
3 => 'promo',
|
||||||
4 => 'promo',
|
4 => 'collab',
|
||||||
5 => 'collab',
|
5 => 'eternal',
|
||||||
6 => 'eternal',
|
6 => 'evoker',
|
||||||
7 => 'evoker',
|
7 => 'saint',
|
||||||
8 => 'saint',
|
8 => 'fantasy',
|
||||||
9 => 'fantasy',
|
9 => 'summer',
|
||||||
10 => 'summer',
|
10 => 'yukata',
|
||||||
11 => 'yukata',
|
11 => 'valentine',
|
||||||
12 => 'valentine',
|
12 => 'halloween',
|
||||||
13 => 'halloween',
|
13 => 'formal',
|
||||||
14 => 'formal',
|
14 => 'holiday',
|
||||||
15 => 'event'
|
15 => 'event'
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ class CharacterSeries < ApplicationRecord
|
||||||
scope :ordered, -> { order(:order) }
|
scope :ordered, -> { order(:order) }
|
||||||
|
|
||||||
# Slug constants for commonly referenced series
|
# Slug constants for commonly referenced series
|
||||||
STANDARD = 'standard'
|
|
||||||
GRAND = 'grand'
|
GRAND = 'grand'
|
||||||
ZODIAC = 'zodiac'
|
ZODIAC = 'zodiac'
|
||||||
ETERNAL = 'eternal'
|
ETERNAL = 'eternal'
|
||||||
|
|
|
||||||
|
|
@ -248,58 +248,55 @@ module Granblue
|
||||||
|
|
||||||
# Additional series indicators from |obtain= field
|
# Additional series indicators from |obtain= field
|
||||||
obtain = hash['obtain'].to_s.downcase
|
obtain = hash['obtain'].to_s.downcase
|
||||||
series << 2 if obtain.include?('grand') && !series.include?(2) # Grand
|
series << 1 if obtain.include?('grand') && !series.include?(1) # Grand
|
||||||
series << 3 if obtain.include?('zodiac') && !series.include?(3) # Zodiac
|
series << 2 if obtain.include?('zodiac') && !series.include?(2) # Zodiac
|
||||||
|
|
||||||
# Seasonal series based on page name or obtain field
|
# Seasonal series based on page name or obtain field
|
||||||
page_name = @character.wiki_en.to_s.downcase
|
page_name = @character.wiki_en.to_s.downcase
|
||||||
if page_name.include?('summer') || page_name.include?('(swimsuit)')
|
if page_name.include?('summer') || page_name.include?('(swimsuit)')
|
||||||
series << 10 unless series.include?(10) # Summer
|
series << 9 unless series.include?(9) # Summer
|
||||||
end
|
end
|
||||||
if page_name.include?('yukata')
|
if page_name.include?('yukata')
|
||||||
series << 11 unless series.include?(11) # Yukata
|
series << 10 unless series.include?(10) # Yukata
|
||||||
end
|
end
|
||||||
if page_name.include?('valentine')
|
if page_name.include?('valentine')
|
||||||
series << 12 unless series.include?(12) # Valentine
|
series << 11 unless series.include?(11) # Valentine
|
||||||
end
|
end
|
||||||
if page_name.include?('halloween')
|
if page_name.include?('halloween')
|
||||||
series << 13 unless series.include?(13) # Halloween
|
series << 12 unless series.include?(12) # Halloween
|
||||||
end
|
end
|
||||||
if page_name.include?('(formal)') || page_name.include?('formal ')
|
if page_name.include?('(formal)') || page_name.include?('formal ')
|
||||||
series << 14 unless series.include?(14) # Formal
|
series << 13 unless series.include?(13) # Formal
|
||||||
end
|
end
|
||||||
if page_name.include?('holiday') || page_name.include?('(holiday)')
|
if page_name.include?('holiday') || page_name.include?('(holiday)')
|
||||||
series << 1 unless series.include?(1) # Standard for now, Holiday chars usually just standard series
|
series << 14 unless series.include?(14) # Holiday
|
||||||
end
|
end
|
||||||
|
|
||||||
# Default to Standard if no series found and character is gacha-available
|
|
||||||
series << 1 if series.empty? && gacha_available_from_hash(hash)
|
|
||||||
|
|
||||||
series.uniq.sort
|
series.uniq.sort
|
||||||
end
|
end
|
||||||
|
|
||||||
# Extracts season (gacha availability window) from wiki hash
|
# Extracts season (gacha availability window) from wiki hash
|
||||||
# Returns a single season ID based on seasonal indicators
|
# Returns a single season ID based on seasonal indicators, or nil for non-seasonal
|
||||||
def season_from_hash(hash)
|
def season_from_hash(hash)
|
||||||
page_name = @character.wiki_en.to_s.downcase
|
page_name = @character.wiki_en.to_s.downcase
|
||||||
obtain = hash['obtain'].to_s.downcase
|
obtain = hash['obtain'].to_s.downcase
|
||||||
|
|
||||||
# Check page name for seasonal indicators
|
# Check page name for seasonal indicators
|
||||||
return 2 if page_name.include?('valentine')
|
return 1 if page_name.include?('valentine')
|
||||||
return 3 if page_name.include?('(formal)') || page_name.include?('formal ')
|
return 2 if page_name.include?('(formal)') || page_name.include?('formal ')
|
||||||
return 4 if page_name.include?('summer') || page_name.include?('yukata') || page_name.include?('(swimsuit)')
|
return 3 if page_name.include?('summer') || page_name.include?('yukata') || page_name.include?('(swimsuit)')
|
||||||
return 5 if page_name.include?('halloween')
|
return 4 if page_name.include?('halloween')
|
||||||
return 6 if page_name.include?('holiday') || page_name.include?('(holiday)')
|
return 5 if page_name.include?('holiday') || page_name.include?('(holiday)')
|
||||||
|
|
||||||
# Check obtain field for seasonal banners
|
# Check obtain field for seasonal banners
|
||||||
return 2 if obtain.include?('valentine')
|
return 1 if obtain.include?('valentine')
|
||||||
return 3 if obtain.include?('formal')
|
return 2 if obtain.include?('formal')
|
||||||
return 4 if obtain.include?('summer')
|
return 3 if obtain.include?('summer')
|
||||||
return 5 if obtain.include?('halloween')
|
return 4 if obtain.include?('halloween')
|
||||||
return 6 if obtain.include?('holiday')
|
return 5 if obtain.include?('holiday')
|
||||||
|
|
||||||
# Default to Standard for gacha-available characters
|
# Non-seasonal characters have nil season
|
||||||
1 if gacha_available_from_hash(hash)
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
# Determines if character can be pulled from gacha based on obtain field and series
|
# Determines if character can be pulled from gacha based on obtain field and series
|
||||||
|
|
|
||||||
|
|
@ -79,22 +79,21 @@ module Granblue
|
||||||
# Maps wiki |series= values to CHARACTER_SERIES enum values
|
# Maps wiki |series= values to CHARACTER_SERIES enum values
|
||||||
# Wiki uses lowercase, single values like "grand", "zodiac", etc.
|
# Wiki uses lowercase, single values like "grand", "zodiac", etc.
|
||||||
self.character_series = {
|
self.character_series = {
|
||||||
'normal' => 1, # Standard
|
'grand' => 1, # Grand
|
||||||
'grand' => 2, # Grand
|
'zodiac' => 2, # Zodiac
|
||||||
'zodiac' => 3, # Zodiac
|
'promo' => 3, # Promo
|
||||||
'promo' => 4, # Promo
|
'collab' => 4, # Collab
|
||||||
'collab' => 5, # Collab
|
'eternal' => 5, # Eternal
|
||||||
'eternal' => 6, # Eternal
|
'evoker' => 6, # Evoker
|
||||||
'evoker' => 7, # Evoker
|
'archangel' => 7, # Saint (Archangels)
|
||||||
'archangel' => 8, # Saint (Archangels)
|
'fantasy' => 8, # Fantasy
|
||||||
'fantasy' => 9, # Fantasy
|
'summer' => 9, # Summer
|
||||||
'summer' => 10, # Summer
|
'yukata' => 10, # Yukata
|
||||||
'yukata' => 11, # Yukata
|
'valentine' => 11, # Valentine
|
||||||
'valentine' => 12, # Valentine
|
'halloween' => 12, # Halloween
|
||||||
'halloween' => 13, # Halloween
|
'formal' => 13, # Formal
|
||||||
'formal' => 14, # Formal
|
'holiday' => 14, # Holiday
|
||||||
'holiday' => 15, # Holiday
|
'event' => 15 # Event
|
||||||
'event' => 16 # Event
|
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
# Maps wiki seasonal indicators to CHARACTER_SEASONS enum values
|
# Maps wiki seasonal indicators to CHARACTER_SEASONS enum values
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue