diff --git a/data/fates.js b/data/fates.js index f5e5cc6..13002d2 100644 --- a/data/fates.js +++ b/data/fates.js @@ -1,63 +1,653 @@ // 命格資料配置 +// 機率設定:SSR(1%), SR(9%), R(20%), N(30%), C(40%) + +export const FATE_TIERS = { + SSR: { name: '傳說', probability: 0.01, color: '#ff6b6b' }, + SR: { name: '史詩', probability: 0.09, color: '#9b59b6' }, + R: { name: '稀有', probability: 0.20, color: '#3498db' }, + N: { name: '普通', probability: 0.30, color: '#2ecc71' }, + C: { name: '常見', probability: 0.40, color: '#95a5a6' } +} + export const FATES = [ + // ==================== SSR 級 (傳說) - 5種 ==================== + // 🏮 宮廟靈獸與神祇 { - id: 'lonestar', - name: '天煞孤星', - description: '孤獨的強者,攻擊力極高但容易抑鬱', + id: 'mazu_blessing', + name: '媽祖庇佑', + tier: 'SSR', + description: '海上女神降福,逢凶化吉,四海皆平安', buffs: { - attack: 0.25, - happinessRecovery: -0.2, - sicknessReduction: 0.1 + luck: 35, + badEventReduction: 0.6, + sicknessReduction: 0.7, + happinessRecovery: 0.4, + resourceGain: 0.3, + dropRate: 0.35 } }, { - id: 'lucky_star', - name: '天乙貴人', - description: '吉星高照,處處逢凶化吉', + id: 'white_tiger_soul', + name: '白虎魂', + tier: 'SSR', + description: '西方神獸降臨,攻守兼備,天下無敵', buffs: { - luck: 20, - badEventReduction: 0.3, - dropRate: 0.15 + attack: 0.5, + defense: 0.5, + speed: 0.4, + strGain: 0.5, + healthRegen: 0.4 } }, { - id: 'martial_god', - name: '武曲星', - description: '天生神力,適合戰鬥', + id: 'guan_gong_spirit', + name: '關公顯靈', + tier: 'SSR', + description: '武聖在世,忠義雙全,戰無不勝', buffs: { + attack: 0.6, + strGain: 0.5, + defense: 0.4, + luck: 28, + badEventReduction: 0.5 + } + }, + { + id: 'jade_emperor', + name: '玉皇大天尊', + tier: 'SSR', + description: '天界之主加持,萬靈朝拜,福壽綿長', + buffs: { + intGain: 0.6, + healthRegen: 0.6, + luck: 30, + resourceGain: 0.4, + gameSuccessRate: 0.5 + } + }, + { + id: 'dragon_king', + name: '青龍王', + tier: 'SSR', + description: '東方神龍,呼風喚雨,財源滾滾', + buffs: { + resourceGain: 0.6, + dropRate: 0.5, + luck: 32, + speed: 0.4, + miniGameBonus: 0.5 + } + }, + + // ==================== SR 級 (史詩) - 10種 ==================== + // 🎭 民俗神將與靈體 + { + id: 'bajiajiang', + name: '八家將', + tier: 'SR', + description: '神將護體,驅邪避凶,威震四方', + buffs: { + attack: 0.4, + defense: 0.35, + badEventReduction: 0.5, + speed: 0.3, + luck: 20 + } + }, + { + id: 'seventh_eighth_lords', + name: '七爺八爺', + tier: 'SR', + description: '黑白無常護佑,轉運奇效,不受病痛', + buffs: { + luck: 28, + sicknessReduction: 0.6, + healthRegen: 0.4, + badEventReduction: 0.4, + happinessRecovery: 0.3 + } + }, + { + id: 'tudi_gong', + name: '土地公保庇', + tier: 'SR', + description: '地方守護神,錢財廣進,日日有餘', + buffs: { + resourceGain: 0.5, + dropRate: 0.4, + luck: 25, + happinessRecovery: 0.3, + gameSuccessRate: 0.25 + } + }, + { + id: 'palanquin_deity', + name: '神轎真身', + tier: 'SR', + description: '乘神轎而行,力大無窮,氣勢如虹', + buffs: { + strGain: 0.45, + attack: 0.4, + speed: 0.35, + defense: 0.3, + healthRegen: 0.3 + } + }, + { + id: 'lion_dance', + name: '瑞獅之靈', + tier: 'SR', + description: '舞獅獻瑞,驅邪納福,喜氣洋洋', + buffs: { + happinessRecovery: 0.45, + luck: 22, + badEventReduction: 0.4, strGain: 0.3, - defense: 0.15, - speed: 0.1 + resourceGain: 0.25 } }, { - id: 'scholar', - name: '文曲星', - description: '聰明絕頂,學習能力強', + id: 'incense_master', + name: '香火鼎盛', + tier: 'SR', + description: '供奉不斷,神明眷顧,萬事如意', buffs: { - intGain: 0.4, - miniGameBonus: 0.2, - gameSuccessRate: 0.15 + luck: 26, + happinessRecovery: 0.4, + sicknessReduction: 0.4, + resourceGain: 0.3, + intGain: 0.3 } }, { - id: 'peach_blossom', - name: '紅鸞星', - description: '人見人愛,容易獲得好感', + id: 'temple_guardian', + name: '石獅守護', + tier: 'SR', + description: '廟口石獅加護,固若金湯,百邪不侵', + buffs: { + defense: 0.5, + healthRegen: 0.4, + sicknessReduction: 0.45, + badEventReduction: 0.35, + strGain: 0.3 + } + }, + { + id: 'firecracker_spirit', + name: '炮仔聲', + tier: 'SR', + description: '鞭炮震天,邪煞退散,運勢亨通', + buffs: { + badEventReduction: 0.5, + luck: 24, + speed: 0.4, + attack: 0.3, + happinessRecovery: 0.25 + } + }, + { + id: 'temple_fair', + name: '廟會之子', + tier: 'SR', + description: '廟會熱鬧,人氣旺盛,好事不斷', + buffs: { + happinessRecovery: 0.4, + breedingSuccess: 0.5, + resourceGain: 0.3, + luck: 20, + miniGameBonus: 0.3 + } + }, + { + id: 'moon_blocks', + name: '聖筊連發', + tier: 'SR', + description: '擲筊必中,神明應允,事事順遂', + buffs: { + gameSuccessRate: 0.45, + luck: 27, + miniGameBonus: 0.4, + resourceGain: 0.25, + intGain: 0.35 + } + }, + + // ==================== R 級 (稀有) - 15種 ==================== + // 🏮 夜市與靈獸 + { + id: 'night_market_king', + name: '夜市王', + tier: 'R', + description: '夜市裡的霸主,吃喝玩樂樣樣通', + buffs: { + happinessRecovery: 0.3, + resourceGain: 0.28, + luck: 15, + hungerDecay: -0.25 + } + }, + { + id: 'stinky_tofu_master', + name: '臭豆腐達人', + tier: 'R', + description: '聞香下馬,回味無窮,胃口極佳', + buffs: { + hungerDecay: -0.3, + healthRegen: 0.25, + happinessRecovery: 0.25, + resourceGain: 0.15 + } + }, + { + id: 'fortune_teller', + name: '鐵口直斷', + tier: 'R', + description: '算命仙指點迷津,先知先覺', + buffs: { + intGain: 0.35, + gameSuccessRate: 0.3, + miniGameBonus: 0.28, + luck: 16 + } + }, + { + id: 'stone_lion', + name: '廟口石獅', + tier: 'R', + description: '鎮守要地,穩如泰山,守護家園', + buffs: { + defense: 0.35, + healthRegen: 0.28, + sicknessReduction: 0.25, + strGain: 0.2 + } + }, + { + id: 'fishball_soup', + name: '魚丸湯世家', + tier: 'R', + description: '古早味傳承,溫暖人心,療癒滿分', + buffs: { + healthRegen: 0.3, + happinessRecovery: 0.28, + sicknessReduction: 0.22, + hungerDecay: -0.2 + } + }, + { + id: 'temple_turtle', + name: '廟龜仙', + tier: 'R', + description: '神龜長壽,步調穩健,健康長命', + buffs: { + healthRegen: 0.32, + defense: 0.28, + sicknessReduction: 0.3, + luck: 12 + } + }, + { + id: 'betel_nut_beauty', + name: '檳榔西施', + tier: 'R', + description: '魅力四射,人氣爆表,生意興隆', + buffs: { + happinessRecovery: 0.3, + breedingSuccess: 0.35, + resourceGain: 0.22, + luck: 14 + } + }, + { + id: 'bubble_tea', + name: '珍奶之王', + tier: 'R', + description: '台灣之光,甜蜜滋味,快樂滿點', + buffs: { + happinessRecovery: 0.32, + hungerDecay: -0.22, + luck: 13, + resourceGain: 0.18 + } + }, + { + id: 'taxi_driver', + name: '計程車司機', + tier: 'R', + description: '走遍大街小巷,見多識廣,速度一流', + buffs: { + speed: 0.4, + intGain: 0.25, + resourceGain: 0.2, + luck: 11 + } + }, + { + id: 'temple_incense', + name: '三柱清香', + tier: 'R', + description: '誠心祈福,香火延綿,神明保佑', + buffs: { + luck: 18, + badEventReduction: 0.28, + happinessRecovery: 0.22, + sicknessReduction: 0.2 + } + }, + { + id: 'lottery_winner', + name: '大家樂', + tier: 'R', + description: '偏財運極佳,常有意外之財', + buffs: { + dropRate: 0.3, + resourceGain: 0.28, + luck: 17, + gameSuccessRate: 0.2 + } + }, + { + id: 'koi_spirit', + name: '錦鯉附身', + tier: 'R', + description: '如同錦鯉般幸運,好事連連', + buffs: { + luck: 19, + dropRate: 0.25, + badEventReduction: 0.25, + happinessRecovery: 0.2 + } + }, + { + id: 'temple_drum', + name: '鼓聲震天', + tier: 'R', + description: '鼓響神威,氣勢磅礡,力量驚人', + buffs: { + attack: 0.28, + strGain: 0.28, + speed: 0.22, + badEventReduction: 0.18 + } + }, + { + id: 'red_envelope', + name: '紅包滿滿', + tier: 'R', + description: '過年發財,紅包收不完,財運亨通', + buffs: { + resourceGain: 0.3, + dropRate: 0.22, + luck: 16, + happinessRecovery: 0.18 + } + }, + { + id: 'phoenix_tail', + name: '鳳凰木下', + tier: 'R', + description: '火紅鳳凰花,青春活力,朝氣蓬勃', + buffs: { + speed: 0.32, + happinessRecovery: 0.25, + strGain: 0.22, + healthRegen: 0.2 + } + }, + + // ==================== N 級 (普通) - 15種 ==================== + // 🏠 庶民生活 + { + id: 'breakfast_shop', + name: '早餐店仔', + tier: 'N', + description: '清晨的活力來源,勤勞踏實', + buffs: { + strGain: 0.2, + healthRegen: 0.18, + resourceGain: 0.15 + } + }, + { + id: 'scooter_rider', + name: '機車族', + tier: 'N', + description: '穿梭自如,速度就是一切', + buffs: { + speed: 0.28, + luck: 8, + resourceGain: 0.12 + } + }, + { + id: 'convenience_store', + name: '便利商店店員', + tier: 'N', + description: '24小時全年無休,服務至上', + buffs: { + resourceGain: 0.2, + happinessRecovery: 0.15, + intGain: 0.15 + } + }, + { + id: 'fruit_vendor', + name: '水果攤販', + tier: 'N', + description: '新鮮水果,健康滿分', + buffs: { + healthRegen: 0.22, + sicknessReduction: 0.2, + hungerDecay: -0.15 + } + }, + { + id: 'tea_ceremony', + name: '泡茶聊天', + tier: 'N', + description: '悠閒品茗,修身養性', + buffs: { + happinessRecovery: 0.22, + intGain: 0.18, + badEventReduction: 0.15 + } + }, + { + id: 'tv_shopping', + name: '電視購物達人', + tier: 'N', + description: '看電視買東西,資訊靈通', + buffs: { + resourceGain: 0.18, + intGain: 0.15, + luck: 9 + } + }, + { + id: 'lottery_booth', + name: '刮刮樂', + tier: 'N', + description: '試試手氣,說不定有驚喜', + buffs: { + luck: 10, + dropRate: 0.15, + happinessRecovery: 0.12 + } + }, + { + id: 'karaoke_king', + name: 'KTV歌王', + tier: 'N', + description: '歌聲嘹亮,歡樂無限', buffs: { happinessRecovery: 0.2, - breedingSuccess: 0.3, - resourceGain: 0.1 + breedingSuccess: 0.18, + luck: 7 } }, { - id: 'broken_army', - name: '破軍星', - description: '衝鋒陷陣,速度極快但防禦較低', + id: 'dumpling_maker', + name: '水餃店師傅', + tier: 'N', + description: '手工水餃,真材實料', buffs: { - speed: 0.3, + strGain: 0.18, + hungerDecay: -0.18, + healthRegen: 0.15 + } + }, + { + id: 'morning_exercise', + name: '公園運動咖', + tier: 'N', + description: '每天運動,身體健康', + buffs: { + healthRegen: 0.2, + strGain: 0.18, + sicknessReduction: 0.15 + } + }, + { + id: 'mahjong_player', + name: '麻將高手', + tier: 'N', + description: '打麻將練腦力,手氣不錯', + buffs: { + intGain: 0.2, + gameSuccessRate: 0.18, + luck: 11 + } + }, + { + id: 'temple_volunteer', + name: '廟會志工', + tier: 'N', + description: '樂於助人,福報滿滿', + buffs: { + happinessRecovery: 0.18, + badEventReduction: 0.18, + luck: 9 + } + }, + { + id: 'street_cat', + name: '巷口貓', + tier: 'N', + description: '自由自在,靈活敏捷', + buffs: { + speed: 0.22, + luck: 8, + defense: 0.12 + } + }, + { + id: 'recycling_granny', + name: '資源回收阿婆', + tier: 'N', + description: '勤儉持家,不浪費資源', + buffs: { + resourceGain: 0.2, + strGain: 0.15, + healthRegen: 0.12 + } + }, + { + id: 'street_performer', + name: '街頭藝人', + tier: 'N', + description: '才藝出眾,博得掌聲', + buffs: { + happinessRecovery: 0.18, + miniGameBonus: 0.2, + breedingSuccess: 0.15 + } + }, + + // ==================== C 級 (常見) - 5種 ==================== + // 🌾 平凡命格 + { + id: 'ordinary_life', + name: '平凡人生', + tier: 'C', + description: '平平淡淡才是真,簡單就是福', + buffs: { + luck: 5, + happinessRecovery: 0.1 + } + }, + { + id: 'unlucky_star', + name: '歹運連連', + tier: 'C', + description: '運氣不好但吃都吃不飽,體質還不錯', + buffs: { + luck: -5, + hungerDecay: -0.2, + healthRegen: 0.15 + } + }, + { + id: 'lazy_homebody', + name: '宅在家', + tier: 'C', + description: '能躺就不坐,成長緩慢但快樂', + buffs: { + strGain: -0.12, + happinessRecovery: 0.18, + hungerDecay: -0.15 + } + }, + { + id: 'glass_heart', + name: '玻璃心', + tier: 'C', + description: '情緒敏感,容易受傷但也容易開心', + buffs: { + happinessRecovery: 0.2, + defense: -0.15, + sicknessReduction: -0.1 + } + }, + { + id: 'rush_warrior', + name: '無頭蒼蠅', + tier: 'C', + description: '行動力強但容易出錯,有勇無謀', + buffs: { + speed: 0.25, attack: 0.15, - defense: -0.1 + gameSuccessRate: -0.15 } } ] + +// 根據機率隨機抽取命格 +export function getRandomFate() { + const rand = Math.random() + let cumulativeProbability = 0 + + // 按照稀有度排序抽取 + const tiers = ['SSR', 'SR', 'R', 'N', 'C'] + + for (const tier of tiers) { + cumulativeProbability += FATE_TIERS[tier].probability + if (rand < cumulativeProbability) { + // 從該等級中隨機選一個 + const fatesInTier = FATES.filter(f => f.tier === tier) + return fatesInTier[Math.floor(Math.random() * fatesInTier.length)] + } + } + + // 兜底返回普通命格 + return FATES.find(f => f.id === 'ordinary') +} + +// 獲取命格顏色 +export function getFateColor(tier) { + return FATE_TIERS[tier]?.color || '#95a5a6' +} + +// 獲取指定等級的所有命格 +export function getFatesByTier(tier) { + return FATES.filter(f => f.tier === tier) +}