// story.js — 消息数据(玩家驱动,无时间依赖) // // 选择方向的情感含义(全局一致): // 单击 → 简单回应("嗯") // 双击 → 不回复 / 跳过 // 右滑 → 温暖 / 接受 / 开放 // 左滑 → 冷淡 / 拒绝 / 疏远 // 上滑 → 好奇 / 主动 / 追问 // 下滑 → 沉默 / 退缩 const A = '../audio/mp3'; const TDIR = `${A}/tts`; const MUS = `${A}/music`; const SFX = `${A}/sfx`; const AMB = `${A}/ambience`; const MESSAGES = [ // ── 01 · 妈妈 · 电话 ── { id: 1, type: 'call', sender: 'mom', senderName: '妈妈', ringtone: `${MUS}/lv11_ring_mom_v1.mp3`, audio: [`${TDIR}/lv11_2103_mom_call_01_wav_v1.mp3`], stateOnAnswer: { MOM_LINK: true }, profileOnMiss: { avoidance: 2 }, profileOnAnswer: { engagement: 1 }, }, // ── 02 · 小美 · 微信语音×3 ── { id: 2, type: 'wechat_voice', sender: 'xiaomei', senderName: '小美', audio: [ `${TDIR}/lv11_2115_xiaomei_voice_01_wav_v1.mp3`, `${TDIR}/lv11_2115_xiaomei_voice_02_wav_v1.mp3`, `${TDIR}/lv11_2115_xiaomei_voice_03_wav_v1.mp3`, ], choices: { tap: { label: '好啊。', profile: { engagement: 1 } }, right: { label: '好啊,明天不见不散。', profile: { engagement: 2 } }, up: { label: '我不太想出门……', profile: { nostalgia: 1 } }, left: { label: '你先去,我再说。', profile: { avoidance: 1 } }, down: { label: '(沉默)', isSilence: true, profile: { avoidance: 2 } }, }, }, // ── 03 · 外卖小哥 · 电话 ── { id: 3, type: 'call', sender: 'delivery', senderName: '外卖小哥', ringtone: `${MUS}/lv11_ring_delivery_v1.mp3`, audio: [`${TDIR}/lv11_2120_delivery_call_01_wav_v1.mp3`], profileOnMiss: { avoidance: 1 }, profileOnAnswer: { engagement: 1 }, }, // ── 04 · 阿哲 · 微信语音 ── { id: 4, type: 'wechat_voice', sender: 'azhe', senderName: '阿哲', audio: [`${TDIR}/lv11_2130_azhe_voice_01_wav_v1.mp3`], choices: { tap: { label: '好,明天寄。', state: { HE_BACK: false }, profile: { engagement: 1 } }, right: { label: '你那边……都好吗。', profile: { engagement: 2 } }, up: { label: '你怎么不自己来拿。', profile: { engagement: 2 } }, left: { label: '(不想理)', profile: { avoidance: 1 } }, down: { label: '(什么都不说)', isSilence: true, state: { HE_BACK: null }, profile: { avoidance: 2 } }, }, }, // ── 05 · HR王姐 · 微信语音 ── { id: 5, type: 'wechat_voice', sender: 'hr', senderName: 'HR王姐', audio: [`${TDIR}/lv11_2145_hr_voice_01_wav_v1.mp3`], choices: { tap: { label: '好的,我知道了。', profile: { engagement: 1 } }, right: { label: '谢谢王姐。', profile: { engagement: 1 } }, up: { label: '王姐,有什么建议吗?', profile: { engagement: 2 } }, left: { label: '……谢谢你。', profile: { nostalgia: 1 } }, down: { label: '(不回复)', isSilence: true, profile: { avoidance: 1 } }, }, }, // ── 06 · 安安 · 微信语音 ── { id: 6, type: 'wechat_voice', sender: 'anan', senderName: '安安', audio: [`${TDIR}/lv11_2200_anan_voice_01_wav_v1.mp3`], choices: { tap: { label: '不了,你们玩好~', profile: {} }, right: { label: '在哪儿啊?我……看看吧。', profile: { engagement: 1 } }, up: { label: '你喝了多少了哈哈。', profile: { engagement: 1 } }, left: { label: '我今晚不方便。', profile: { avoidance: 1 } }, down: { label: '(不回复)', isSilence: true, profile: { avoidance: 2 } }, }, }, // ── 07 · 大学寝室群 · 5条语音 ── { id: 7, type: 'wechat_voice', sender: 'dorm', senderName: '寝室群', audio: [ `${TDIR}/lv11_2215_dorm_a_voice_01_wav_v1.mp3`, `${TDIR}/lv11_2215_dorm_a_voice_02_wav_v1.mp3`, `${TDIR}/lv11_2215_dorm_b_voice_01_wav_v1.mp3`, `${TDIR}/lv11_2215_dorm_b_voice_02_wav_v1.mp3`, `${TDIR}/lv11_2215_dorm_c_voice_01_wav_v1.mp3`, ], choices: { tap: { label: '恭喜!', state: { GROUP_REPLY: true }, profile: { engagement: 1 } }, right: { label: '哇,快讲讲!', state: { GROUP_REPLY: true }, profile: { engagement: 2 } }, up: { label: '最近有点忙,你们聊~', profile: { avoidance: 1 } }, left: { label: '(不想参与)', profile: { avoidance: 1 } }, down: { label: '(沉默)', isSilence: true, profile: { avoidance: 2 } }, }, }, // ── 08 · 未知号码 · 电话(悬疑)── { id: 8, type: 'call', sender: 'unknown', senderName: '未知号码', ringtone: `${MUS}/lv11_ring_unknown_v1.mp3`, audio: [`${SFX}/sfx_breathing_unknown_v1.mp3`], autoHangup: true, sfxAfter: `${SFX}/sfx_heartbeat_fast_v1.mp3`, profileOnMiss: { avoidance: 1 }, profileOnAnswer: { nostalgia: 1 }, }, // ── 09 · 小美(醉)· 4段语音 ── { id: 9, type: 'wechat_voice', sender: 'xiaomei', senderName: '小美', audio: [ `${TDIR}/lv11_2245_xiaomei_voice_01_seg1_wav_v1.mp3`, `${TDIR}/lv11_2245_xiaomei_voice_01_seg2_wav_v1.mp3`, `${TDIR}/lv11_2245_xiaomei_voice_01_seg3_wav_v1.mp3`, `${TDIR}/lv11_2245_xiaomei_voice_01_seg4_wav_v1.mp3`, ], bgm: `${MUS}/lv11_bgm_m2_suspense_v1.mp3`, choices: { tap: { label: '我知道了。', profile: { avoidance: 1 } }, right: { label: '小美,你还好吗。', profile: { engagement: 2 } }, up: { label: '你……为什么现在才说。', profile: { engagement: 2 } }, left: { label: '(不想理她)', profile: { avoidance: 1 } }, down: { label: '(什么都不说)', isSilence: true, profile: { avoidance: 2, nostalgia: 1 } }, }, }, // ── 10 · 妈妈 · 文字消息 ── { id: 10, type: 'wechat_text', sender: 'mom', senderName: '妈妈', text: '睡了吗?', choices: { tap: { label: '嗯。', state: { MOM_LINK: true } }, right: { label: '没有,怎么了。', state: { MOM_LINK: true }, profile: { engagement: 1 } }, up: { label: '妈,我想打电话。', state: { MOM_LINK: true }, profile: { engagement: 2 } }, left: { label: '嗯,要睡了。', state: { MOM_LINK: true }, profile: { avoidance: 1 } }, down: { label: '(不回复)', isSilence: true, profile: { avoidance: 2 } }, }, }, // ── 11 · 阿哲 · 电话(关键分支)── { id: 11, type: 'call', sender: 'azhe', senderName: '阿哲', ringtone: `${MUS}/lv11_ring_azhe_v1.mp3`, audio: [`${TDIR}/lv11_2315_azhe_call_01_wav_v1.mp3`], profileOnMiss: { avoidance: 2 }, profileOnAnswer: { engagement: 1 }, choices: { tap: { label: '不方便,明天吧。', state: { HE_BACK: false } }, right: { label: '可以,但只有5分钟。', state: { HE_BACK: true } }, left: { label: '(挂断)', state: { HE_BACK: false } }, down: { label: '(沉默挂断)', isSilence: true, state: { HE_BACK: false } }, }, }, // ── 12 · 周南 · 微信语音 ── { id: 12, type: 'wechat_voice', sender: 'zhounan', senderName: '周南', audio: [`${TDIR}/lv11_2330_zhounan_voice_01_wav_v1.mp3`], choices: { tap: { label: '嗯……你好。', state: { ZHOUNAN_DEPTH: 1 }, profile: { nostalgia: 1 } }, right: { label: '周南!你还记得我啊!', state: { ZHOUNAN_DEPTH: 1 }, profile: { engagement: 2, nostalgia: 1 } }, up: { label: '你是……初三那个……?', state: { ZHOUNAN_DEPTH: 1 }, profile: { nostalgia: 2 } }, left: { label: '(冷淡)', profile: { avoidance: 1 } }, down: { label: '(不回复)', isSilence: true }, }, }, // ── 13 · 周南 · 4条长语音 ── { id: 13, type: 'wechat_voice', sender: 'zhounan', senderName: '周南', audio: [ `${TDIR}/lv11_2345_zhounan_voice_01_wav_v1.mp3`, `${TDIR}/lv11_2345_zhounan_voice_02_wav_v1.mp3`, `${TDIR}/lv11_2345_zhounan_voice_03_wav_v1.mp3`, `${TDIR}/lv11_2345_zhounan_voice_04_wav_v1.mp3`, ], bgm: `${MUS}/lv11_bgm_m3_zhounan_v1.mp3`, choices: { tap: { label: '谢谢你告诉我。', state: { ZHOUNAN_DEPTH_ADD: 1 } }, right: { label: '你在北京还好吗?', state: { ZHOUNAN_DEPTH_ADD: 1 }, profile: { engagement: 2 } }, up: { label: '……生日快乐。', state: { ZHOUNAN_DEPTH_ADD: 1, ZHOUNAN_SHARE: true }, profile: { nostalgia: 2, engagement: 1 } }, left: { label: '你讲了好多。', state: { ZHOUNAN_DEPTH_ADD: 1 }, profile: { engagement: 2, nostalgia: 1 } }, down: { label: '(沉默)', isSilence: true, profile: { nostalgia: 1, avoidance: 1 } }, }, }, // ── 14 · 妈妈 · 第二次电话 ── { id: 14, type: 'call', sender: 'mom', senderName: '妈妈', ringtone: `${MUS}/lv11_ring_mom_v1.mp3`, audio: [`${TDIR}/lv11_0015_mom_call_01_wav_v1.mp3`], stateOnAnswer: { MOM_LINK: true }, profileOnMiss: { avoidance: 2 }, profileOnAnswer: { engagement: 2 }, }, // ── 15 · 时光胶囊 · 系统通知 ── { id: 15, type: 'system_notification', sender: 'self', senderName: '时光胶囊', systemAudio: `${TDIR}/lv11_sys_memo_01_wav_v1.mp3`, audioByProfile: { avoidance: `${TDIR}/lv11_0030_self3y_voice_02_wav_v1.mp3`, engagement: `${TDIR}/lv11_0030_self3y_voice_01_wav_v1.mp3`, nostalgia: `${TDIR}/lv11_0030_self3y_voice_03_wav_v1.mp3`, }, stateOnPlay: { SELF_RECORD: true }, profileOnPlay: { nostalgia: 2 }, profileOnSkip: { avoidance: 2 }, }, // ── 16 · 妈妈 · 长语音(结局前奏)── { id: 16, type: 'wechat_voice', sender: 'mom', senderName: '妈妈', audio: [ `${TDIR}/lv11_0200_mom_voice_01_seg1_wav_v1.mp3`, `${TDIR}/lv11_0200_mom_voice_01_seg2_wav_v1.mp3`, `${TDIR}/lv11_0200_mom_voice_01_seg3_wav_v1.mp3`, `${TDIR}/lv11_0200_mom_voice_01_seg4_wav_v1.mp3`, `${TDIR}/lv11_0200_mom_voice_01_seg5_wav_v1.mp3`, `${TDIR}/lv11_0200_mom_voice_01_seg6_wav_v1.mp3`, `${TDIR}/lv11_0200_mom_voice_01_seg7_wav_v1.mp3`, `${TDIR}/lv11_0200_mom_voice_01_seg8_wav_v1.mp3`, ], bgm: `${MUS}/lv11_bgm_m4_ending_v1.mp3`, isEnding: true, requiresMomLink: true, }, ]; // 角色信息 const SENDERS = { mom: { name: '妈妈' }, azhe: { name: '阿哲' }, xiaomei: { name: '小美' }, delivery: { name: '外卖小哥' }, hr: { name: 'HR王姐' }, anan: { name: '安安' }, dorm: { name: '寝室群' }, unknown: { name: '未知号码' }, zhounan: { name: '周南' }, self: { name: '时光胶囊' }, }; const AMBIENCE_DEFAULT = `${AMB}/amb_apartment_night_01_v1.mp3`;