module GranblueEnums extend ActiveSupport::Concern # Define constants for shared enum mappings. RARITIES = { R: 1, SR: 2, SSR: 3 }.freeze ELEMENTS = { Null: 0, Wind: 1, Fire: 2, Water: 3, Earth: 4, Dark: 5, Light: 6 }.freeze GENDERS = { Unknown: 0, Male: 1, Female: 2, "Male/Female": 3 }.freeze # Single proficiency enum mapping used for both proficiency1 and proficiency2. PROFICIENCY = { None: 0, Sabre: 1, Dagger: 2, Axe: 3, Spear: 4, Bow: 5, Staff: 6, Melee: 7, Harp: 8, Gun: 9, Katana: 10 }.freeze # Single race enum mapping used for both race1 and race2. RACES = { Unknown: 0, Human: 1, Erune: 2, Draph: 3, Harvin: 4, Primal: 5, None: 6 }.freeze # Character seasons - display disambiguation for seasonal variants (e.g., "Vane [Halloween]") # If no season, value should be nil (not a default value) CHARACTER_SEASONS = { Valentine: 1, Formal: 2, Summer: 3, Halloween: 4, Holiday: 5 }.freeze # Character series - represents character identity/pool membership (can have multiple) CHARACTER_SERIES = { Standard: 1, Grand: 2, Zodiac: 3, Promo: 4, Collab: 5, Eternal: 6, Evoker: 7, Saint: 8, Fantasy: 9, Summer: 10, Yukata: 11, Valentine: 12, Halloween: 13, Formal: 14, Holiday: 15, Event: 16 }.freeze # Gacha promotions - which pools/banners a weapon or summon appears in PROMOTIONS = { Premium: 1, Classic: 2, ClassicII: 3, Flash: 4, Legend: 5, Valentine: 6, Summer: 7, Halloween: 8, Holiday: 9, Collab: 10, Formal: 11 }.freeze end