feat: 프레스티지/업적 데이터, 캐릭터 비주얼, 게임 색상 시스템 추가 (JSA-47)

- src/data/achievements.json: 30개+ 업적 조건/보상 데이터
- src/data/prestige.json: 프레스티지 레벨별 배율 및 타이틀 테이블
- src/data/characterVisual.ts: 원소별 캐릭터 SVG 비주얼 파라미터
- src/styles/gameColors.ts: 게임 전용 색상 토큰 및 유틸 함수

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-01 22:43:48 +09:00
parent 24c67f0c4c
commit eacc91b7da
6 changed files with 1432 additions and 0 deletions

632
src/data/elements.json Normal file
View File

@@ -0,0 +1,632 @@
[
{
"id": "fire",
"name": "불",
"nameEn": "Fire",
"tier": 1,
"emoji": "🔥",
"color": "#FF4500",
"unlockCondition": "initial",
"baseSpawnSpeed": 5.0,
"idleIncomeRate": 1.0,
"evolutionMaxLevel": 5,
"rarity": "common",
"description": "모든 것의 시작, 원초의 불꽃",
"recipes": ["R-01", "R-02", "R-03", "R-28"]
},
{
"id": "water",
"name": "물",
"nameEn": "Water",
"tier": 1,
"emoji": "💧",
"color": "#1E90FF",
"unlockCondition": "initial",
"baseSpawnSpeed": 5.0,
"idleIncomeRate": 1.0,
"evolutionMaxLevel": 5,
"rarity": "common",
"description": "생명의 근원, 흐르는 물",
"recipes": ["R-01", "R-04", "R-05", "R-27"]
},
{
"id": "wind",
"name": "바람",
"nameEn": "Wind",
"tier": 1,
"emoji": "🌪️",
"color": "#87CEEB",
"unlockCondition": "initial",
"baseSpawnSpeed": 5.0,
"idleIncomeRate": 1.0,
"evolutionMaxLevel": 5,
"rarity": "common",
"description": "자유로운 영혼, 쉬지 않는 바람",
"recipes": ["R-02", "R-04", "R-06"]
},
{
"id": "earth",
"name": "흙",
"nameEn": "Earth",
"tier": 1,
"emoji": "🌱",
"color": "#8B4513",
"unlockCondition": "initial",
"baseSpawnSpeed": 5.0,
"idleIncomeRate": 1.0,
"evolutionMaxLevel": 5,
"rarity": "common",
"description": "모든 것을 품는 대지",
"recipes": ["R-03", "R-05", "R-06"]
},
{
"id": "steam",
"name": "수증기",
"nameEn": "Steam",
"tier": 2,
"emoji": "💨",
"color": "#C0C0C0",
"unlockCondition": "recipe:fire+water",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "불과 물이 만나 생긴 뜨거운 증기",
"recipes": ["R-07", "R-08"]
},
{
"id": "firestorm",
"name": "불폭풍",
"nameEn": "Firestorm",
"tier": 2,
"emoji": "🌪️",
"color": "#FF6347",
"unlockCondition": "recipe:fire+wind",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "불꽃과 바람이 뒤엉킨 거대한 화염",
"recipes": ["R-09", "R-10"]
},
{
"id": "lava",
"name": "용암",
"nameEn": "Lava",
"tier": 2,
"emoji": "🌋",
"color": "#FF2200",
"unlockCondition": "recipe:fire+earth",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "땅을 녹여 흐르는 불의 강",
"recipes": ["R-11", "R-12"]
},
{
"id": "storm",
"name": "폭풍",
"nameEn": "Storm",
"tier": 2,
"emoji": "⛈️",
"color": "#4169E1",
"unlockCondition": "recipe:water+wind",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "물과 바람이 격렬히 부딪히는 폭풍",
"recipes": ["R-13", "R-14", "R-36"]
},
{
"id": "mud",
"name": "진흙",
"nameEn": "Mud",
"tier": 2,
"emoji": "🟫",
"color": "#8B6914",
"unlockCondition": "recipe:water+earth",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "물이 땅에 스며들어 만들어진 진흙",
"recipes": ["R-15", "R-16"]
},
{
"id": "desert",
"name": "사막",
"nameEn": "Desert",
"tier": 2,
"emoji": "🏜️",
"color": "#DEB887",
"unlockCondition": "recipe:wind+earth",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "바람이 만들어낸 끝없는 모래밭",
"recipes": ["R-17", "R-18"]
},
{
"id": "ice",
"name": "얼음",
"nameEn": "Ice",
"tier": 2,
"emoji": "❄️",
"color": "#87CEEB",
"unlockCondition": "recipe:water+water",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "물이 극한의 냉기로 굳어진 순수한 결정",
"recipes": []
},
{
"id": "smoke",
"name": "연기",
"nameEn": "Smoke",
"tier": 2,
"emoji": "🌫️",
"color": "#808080",
"unlockCondition": "recipe:fire+fire",
"baseSpawnSpeed": 3.0,
"idleIncomeRate": 2.0,
"evolutionMaxLevel": 5,
"rarity": "uncommon",
"description": "불꽃이 응집되어 피어오르는 짙은 연기",
"recipes": []
},
{
"id": "cloud",
"name": "구름",
"nameEn": "Cloud",
"tier": 3,
"emoji": "☁️",
"color": "#F0F8FF",
"unlockCondition": "recipe:steam+wind",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "하늘 높이 떠오른 물의 결정체",
"recipes": ["R-19", "R-24", "R-29"]
},
{
"id": "fog",
"name": "안개",
"nameEn": "Fog",
"tier": 3,
"emoji": "🌫️",
"color": "#DCDCDC",
"unlockCondition": "recipe:steam+earth",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "땅을 가득 덮은 신비로운 안개",
"recipes": ["R-29", "R-30"]
},
{
"id": "volcano",
"name": "화산",
"nameEn": "Volcano",
"tier": 3,
"emoji": "🌋",
"color": "#CC2200",
"unlockCondition": "recipe:firestorm+earth",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "대지를 가르며 솟구치는 화염의 산",
"recipes": ["R-20", "R-35"]
},
{
"id": "rainbow",
"name": "무지개",
"nameEn": "Rainbow",
"tier": 3,
"emoji": "🌈",
"color": "#FF69B4",
"unlockCondition": "recipe:firestorm+water",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "불과 물이 빛을 만나 피어난 색의 다리",
"recipes": ["R-24", "R-34"]
},
{
"id": "obsidian",
"name": "흑요석",
"nameEn": "Obsidian",
"tier": 3,
"emoji": "⬛",
"color": "#1C1C1C",
"unlockCondition": "recipe:lava+water",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "용암이 냉각되어 만들어진 검은 유리",
"recipes": ["R-21", "R-33", "R-37"]
},
{
"id": "ash",
"name": "화산재",
"nameEn": "Ash",
"tier": 3,
"emoji": "💀",
"color": "#696969",
"unlockCondition": "recipe:lava+wind",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "모든 것을 태운 뒤 남은 재",
"recipes": ["R-31"]
},
{
"id": "lightning",
"name": "번개",
"nameEn": "Lightning",
"tier": 3,
"emoji": "⚡",
"color": "#FFD700",
"unlockCondition": "recipe:storm+earth",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "하늘과 땅을 잇는 강렬한 전류",
"recipes": ["R-19", "R-23", "R-32"]
},
{
"id": "tsunami",
"name": "쓰나미",
"nameEn": "Tsunami",
"tier": 3,
"emoji": "🌊",
"color": "#006994",
"unlockCondition": "recipe:storm+water",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "거대한 물의 장벽",
"recipes": ["R-32", "R-37"]
},
{
"id": "ceramic",
"name": "도자기",
"nameEn": "Ceramic",
"tier": 3,
"emoji": "🏺",
"color": "#D2691E",
"unlockCondition": "recipe:mud+earth",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "흙을 불로 구워낸 인류의 예술",
"recipes": ["R-35", "R-38"]
},
{
"id": "dust",
"name": "먼지",
"nameEn": "Dust",
"tier": 3,
"emoji": "💫",
"color": "#BC8F5F",
"unlockCondition": "recipe:mud+wind",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "바람에 날리는 미세한 흙의 조각",
"recipes": ["R-31", "R-36"]
},
{
"id": "oasis",
"name": "오아시스",
"nameEn": "Oasis",
"tier": 3,
"emoji": "🌴",
"color": "#228B22",
"unlockCondition": "recipe:desert+water",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "사막 한가운데 피어난 생명의 샘",
"recipes": ["R-22", "R-30", "R-38"]
},
{
"id": "glass",
"name": "유리",
"nameEn": "Glass",
"tier": 3,
"emoji": "🔮",
"color": "#E0FFFF",
"unlockCondition": "recipe:desert+earth",
"baseSpawnSpeed": 2.0,
"idleIncomeRate": 5.0,
"evolutionMaxLevel": 5,
"rarity": "rare",
"description": "모래가 열에 녹아 만들어진 투명한 물질",
"recipes": ["R-33", "R-34"]
},
{
"id": "thunderstorm",
"name": "뇌우",
"nameEn": "Thunderstorm",
"tier": 4,
"emoji": "🌩️",
"color": "#191970",
"unlockCondition": "recipe:cloud+lightning",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "하늘을 뒤흔드는 폭풍과 번개의 교향곡",
"recipes": ["R-25"]
},
{
"id": "island",
"name": "섬",
"nameEn": "Island",
"tier": 4,
"emoji": "🏝️",
"color": "#3CB371",
"unlockCondition": "recipe:volcano+water",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "바다 위에 솟아오른 새로운 대지",
"recipes": []
},
{
"id": "crystal",
"name": "수정",
"nameEn": "Crystal",
"tier": 4,
"emoji": "💎",
"color": "#9400D3",
"unlockCondition": "recipe:obsidian+water",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "수백만 년의 시간이 빚어낸 순수한 결정",
"recipes": ["R-26"]
},
{
"id": "life",
"name": "생명",
"nameEn": "Life",
"tier": 4,
"emoji": "🌿",
"color": "#00FF7F",
"unlockCondition": "recipe:oasis+wind",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "물, 바람, 대지가 만들어낸 생명의 탄생",
"recipes": ["R-25", "R-26"]
},
{
"id": "magnet",
"name": "자석",
"nameEn": "Magnet",
"tier": 4,
"emoji": "🧲",
"color": "#A9A9A9",
"unlockCondition": "recipe:lightning+earth",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "번개가 대지에 새긴 자기력의 흔적",
"recipes": []
},
{
"id": "aurora",
"name": "오로라",
"nameEn": "Aurora",
"tier": 4,
"emoji": "🌌",
"color": "#7DF9FF",
"unlockCondition": "recipe:rainbow+cloud",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "하늘을 물들이는 신비로운 빛의 커튼",
"recipes": []
},
{
"id": "glacier",
"name": "빙하",
"nameEn": "Glacier",
"tier": 4,
"emoji": "🏔️",
"color": "#B8D8E8",
"unlockCondition": "recipe:cloud+fog",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "구름과 안개가 수천 년에 걸쳐 쌓인 거대한 얼음 산",
"recipes": []
},
{
"id": "jungle",
"name": "정글",
"nameEn": "Jungle",
"tier": 4,
"emoji": "🌴",
"color": "#1A6B1A",
"unlockCondition": "recipe:fog+oasis",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "안개 속에 숨겨진 울창한 생명의 숲",
"recipes": []
},
{
"id": "wasteland",
"name": "황무지",
"nameEn": "Wasteland",
"tier": 4,
"emoji": "🏜️",
"color": "#8B7355",
"unlockCondition": "recipe:ash+dust",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "재와 먼지만 남은 황폐한 대지",
"recipes": []
},
{
"id": "maelstrom",
"name": "대소용돌이",
"nameEn": "Maelstrom",
"tier": 4,
"emoji": "🌀",
"color": "#1E3A8A",
"unlockCondition": "recipe:lightning+tsunami",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "번개와 해일이 만들어낸 거대한 소용돌이",
"recipes": []
},
{
"id": "gemstone",
"name": "원석",
"nameEn": "Gemstone",
"tier": 4,
"emoji": "💠",
"color": "#6B21A8",
"unlockCondition": "recipe:obsidian+glass",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "흑요석과 유리가 융합된 영롱한 보석 원석",
"recipes": []
},
{
"id": "prism",
"name": "프리즘",
"nameEn": "Prism",
"tier": 4,
"emoji": "🔮",
"color": "#EC4899",
"unlockCondition": "recipe:rainbow+glass",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "무지개빛을 굴절·분산시키는 마법의 수정체",
"recipes": []
},
{
"id": "ruins",
"name": "고대 유적",
"nameEn": "Ruins",
"tier": 4,
"emoji": "🏛️",
"color": "#92400E",
"unlockCondition": "recipe:volcano+ceramic",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "화산재 속에 묻혀 있던 잃어버린 문명의 흔적",
"recipes": []
},
{
"id": "cyclone",
"name": "사이클론",
"nameEn": "Cyclone",
"tier": 4,
"emoji": "🌪️",
"color": "#D97706",
"unlockCondition": "recipe:dust+storm",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "먼지와 폭풍이 뒤엉킨 거대한 모래바람",
"recipes": []
},
{
"id": "deepsea",
"name": "심해",
"nameEn": "Deep Sea",
"tier": 4,
"emoji": "🌊",
"color": "#1E3A5F",
"unlockCondition": "recipe:tsunami+obsidian",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "쓰나미가 흑요석 해저를 뒤덮어 탄생한 어둠의 심연",
"recipes": []
},
{
"id": "prairie",
"name": "초원",
"nameEn": "Prairie",
"tier": 4,
"emoji": "🌾",
"color": "#84CC16",
"unlockCondition": "recipe:oasis+ceramic",
"baseSpawnSpeed": 1.5,
"idleIncomeRate": 15.0,
"evolutionMaxLevel": 5,
"rarity": "epic",
"description": "오아시스의 물기와 도자기 대지가 빚어낸 넓은 초원",
"recipes": []
},
{
"id": "creation",
"name": "창조",
"nameEn": "Creation",
"tier": 5,
"emoji": "✨",
"color": "#FFFFFF",
"unlockCondition": "recipe:thunderstorm+life",
"baseSpawnSpeed": 1.0,
"idleIncomeRate": 50.0,
"evolutionMaxLevel": 5,
"rarity": "legendary",
"description": "모든 원소의 조화, 세계의 창조",
"recipes": []
},
{
"id": "spirit",
"name": "정령",
"nameEn": "Spirit",
"tier": 5,
"emoji": "👻",
"color": "#FFD700",
"unlockCondition": "recipe:crystal+life",
"baseSpawnSpeed": 1.0,
"idleIncomeRate": 50.0,
"evolutionMaxLevel": 5,
"rarity": "legendary",
"description": "물질을 초월한 순수한 에너지의 정수",
"recipes": []
}
]