JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
<div id="type-text"> 嗨嗨早安🌞 你終於來了~ 歡迎來到1920年代的臺灣🤗 <br><br> 在開始這段旅程前,請告訴我們你的名字(,,・ω・,,) </div> <div id="interactive-row" style="display: flex; align-items: center; gap: 10px; margin-top: 15px;"> <div id="input-area" style="flex-grow: 1; max-width: 300px;"> <<textbox "$playerName" "" autofocus>> </div> <div id="action-area"> <<button "✨ 開啟旅程">> /* 1. 名字防呆處理 */ <<if $playerName === "" or $playerName.trim() === "">> <<set $playerName to "無名氏">> <</if>> /* 2. 背景音樂真正開始播放 */ <<audio "TaishoRoman_Theme" play>> /* 3. 把輸入的名字即時塞進社長台詞裡 */ <<run $('#dynamic-name').text(State.variables.playerName)>> /* 4. 動畫特效:隱藏整行輸入區域與提示,不留突兀空白 */ <<run $('#interactive-row, #type-text').hide()>> /* 5. 讓社長對話框優雅浮現 */ <<run $('#president-box').css('display', 'flex').hide().fadeIn(800)>> /* 6. 綁定全域點擊事件,點擊任意畫面就前進 */ <<script>> setTimeout(function () { var $passage = $('#passages'); // 監聽畫面的點擊 $passage.on('click.introGo', function (e) { // 解除點擊監聽,釋放記憶體 $passage.off('click.introGo'); // 跳轉至下一個 Passage Engine.play('First_Report_Start'); }); }, 100); <</script>> <</button>> </div> </div> <div id="president-box" class="dialogue-box" style="display: none; background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; align-items: flex-start; gap: 20px;"> <div class="npc-avatar" style="flex-shrink: 0;"> <img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"> </div> <div class="dialogue-text" style="flex-grow: 1; text-align: left;"> <strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong> <p style="color: #f8fafc; margin: 0; line-height: 1.8;"> 好的,<span id="dynamic-name" style="color: #ffcc00; font-weight: bold;"></span> 君,很高興看到你想成為這裡的記者,不過我們需要請你通過一些報導的考驗,才可以評估你是不是適合當一位合格的記者。<br> 請你擔任「見習記者」,向我們證明你的意見值得被聽見吧! </p> <p style="color: #888888; font-size: 0.85em; font-style: italic; margin-top: 15px; margin-bottom: 0; border-top: 1px dashed #333; padding-top: 10px;"> (溫馨提示:本遊戲採點擊畫面的方式,進入及推進遊戲) </p> </div> </div>
<<script>> $(document).off('keydown.gameUtils').on('keydown.gameUtils', function(e) { // 如果玩家正在輸入框(input、textarea)裡打字,就不觸發快捷鍵,避免干擾輸入名字 if ($(e.target).is('input, textarea')) return; // 按下 S 鍵或 L 鍵跳出存讀檔面板 if (e.key === 's' || e.key === 'S' || e.key === 'l' || e.key === 'L') { UI.saves(); } }); <</script>> /* 核心修正:將音訊代號簡化,直接對齊你後續幾百個 Passage 的呼叫 */ <<cacheaudio "TaishoRoman_Theme" "music/TaishoRoman_Theme.mp3">> <<audio "TaishoRoman_Theme" volume 0.2 loop fadein>> <<set $correctCount to 0>> <<set $negotiation_score to 0>> /* 第一大關:5小關的累計分數 */ <<set $chapter2_round1 to "none">> /* 第一大關最終結果:"win"(過3關以上) 或 "lose" */ <<set $chapter2_round2 to "none">> /* 第二大關最終結果:"win" 或 "lose" */ <<set $chapter2_round3 to "none">> /* 第三大關最終結果:"win" 或 "lose" */
<span style="color: #ffcc00; font-weight: bold;">【第一章:民報的考驗:進入精英眼中的新世界(一)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="ziyou.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-container"></div> <<script>> $(document).one(':passageend', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 定義對話陣列 var steps = [ '<p style="margin-top: 15px;">仔細觀察你的四周圍,你會發現大家都在提倡自由戀愛論💙❤️</p>', '<p style="margin-top: 15px;">大家都說,過去的戀愛只是為了滿足自身的肉慾而已,現在的戀愛則是注重形式上的戀愛,而將來的戀愛會是「精神上的戀愛」 。</p>', '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianji.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;"><strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">' + pName + ' 君,有一位來自早稻田大學的教授最近歸國,正巧要舉辦一場關於『自由戀愛』的公開演講。這可是最前線的思潮,就由你代表本社去現場採訪聽講吧!</p></div>' + '</div>', '<p style="color: #cbd5e1; font-style: italic; margin: 15px 0;">(文化協會的講演會場內掌聲如雷,臺上的教授激昂地揮舞著雙手……)</p>', '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="professor.webp" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;"><strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">早稻田大學教授:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8; font-style: italic;">真正的自由戀愛,必須建立在男女精神平等與人格尊重之上,是一股推動人格擴張與社會向上進化的神聖力量\\(。A。)/!!!</p></div>' + '</div>', '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianji.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;"><strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">辛苦了!現場的氣氛果然很熱烈對吧。接下來,就請你針對這次的題目,幫我撰寫一篇相關的社論吧</p></div>' + '</div>' ]; var currentStep = 0; var $container = $('#dialogue-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 核心推進對話與轉場邏輯 function advanceDialogue() { // 情況 A:對話還沒放完,繼續放下一段 if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; // 自動平滑捲動到畫面底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 情況 B:對話全部放完了,玩家點最後一下,帥氣跳轉下一章 else { $passage.off('click.advancing'); // 移除監聽,防止重複跳轉 Engine.play('First_Report_Editorial'); // 🚀 轉場至下一關 } } // 初始進入關卡時,自動秀出第一條對話 advanceDialogue(); // 監聽整個 Passage 區域的點擊事件(純手動點擊推進) $passage.on('click.advancing', function (e) { // 安全防護:點擊特定 UI 控制列時不觸發劇情前進 if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button').length > 0) { return; } // 觸發前進 advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第一章:民報的考驗:進入精英眼中的新世界(三)】</span> <div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px;"> <div class="npc-avatar" style="flex-shrink: 0;"> <img src="bianji.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"> </div> <div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;"> <strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯長:</strong>你的意見是? </div> </div> <div class="options-left" style="display: flex; gap: 20px; margin-top: 25px; line-height: 1.8; align-items: flex-start;"> <div style="flex: 1; text-align: center;"> <<link "✍️ 自由戀愛的代價">> <<set $loveArticle to "conservative">> /* 紀錄錯誤結局變數 */ <<goto "First_Report_End">> <</link>> <img src="love1.png" style="width: 100%; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.6);"> </div> <div style="flex: 1; text-align: center;"> <<link "✍️ 勇敢追求自由戀愛吧">> <<set $loveArticle to "progressive">> <<set $correctCount to $correctCount + 1>> /* 👈 正確答案加一分! */ <<goto "First_Report_End">> <</link>> <img src="love2.png" style="width: 100%; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.6);"> </div> </div>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(二)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="dai.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-container"></div> <<script>> $(document).one(':passageend', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 定義第二關的對話陣列 var steps = [ /* 第一段:編輯長發放任務 */ '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianji.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;"><strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">今年臺北霞海城隍廟的祭典要到了,請代表《民報》去現場採訪吧!</p></div>' + '</div>', /* 第二段:現場轉場旁白提示 */ '<p style="color: #cbd5e1; font-style: italic; margin: 15px 0;">(大稻埕鑼鼓喧天、人潮擁擠,你在陣頭與神轎之間擠進前線,卻聽到了不同的聲音……)</p>', /* 第三段:現場民眾的抱怨 */ '<div class="dialogue-box" style="background-color: #111111; border: 1px dashed #ff3333; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="angry.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;">' + '<strong style="color: #ff3333; font-size: 1.1em; display: block; margin-bottom: 8px;">現場民眾:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">「現場環境太吵了,打擾到我的日常生活,而且繞境環節途中也發生了衝突,看起來非常嚴重,這種活動應該要改善啦(#`Д´)ノ」</p></div>' + '</div>' ]; var currentStep = 0; var $container = $('#dialogue-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 核心推進對話與跳轉邏輯 function advanceDialogue() { // 情況 A:對話還沒放完,繼續放下一段 if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; // 自動平滑捲動到畫面底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 情況 B:對話全部放完了,玩家再次點擊畫面,立刻執行換頁 else { $passage.off('click.advancing'); // 拔掉監聽防衝撞 Engine.play('Second_Report_Editorial'); // 🚀 轉場至下一關 } } // 初始顯示第一條對話 advanceDialogue(); // 監聽整個 Passage 區域的點擊事件(純手動點擊推進) $passage.on('click.advancing', function (e) { // 安全防護:點擊特定 UI 控制列時不觸發劇情前進 if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button').length > 0) { return; } advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第一篇報導完成】</span> <img src="taibei.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> <<if $loveArticle === "progressive">> <p style="color: #00ff00; margin-top: 15px; line-height: 1.6; text-align: left;"> ※ 恭喜你選對了(。◕∀◕。)<br> 《民報》的想法融合了社會進化觀與對抗命運的觀點,並結合了情場失意者的控訴,把「談戀愛」視為一場打破舊禮教、推動社會進步的戰鬥。<br> 另外一個答案則是親日保守派士紳的論述,他們不一定完全反對自由戀愛,但他們用「臺灣人程度還不夠」為理由,去批評《民報》的文章在煽動年輕人家庭革命,反過來警告青年,不聽老人言,吃虧在眼前。 <<timed 4s>> <span style="display: inline-block; width: 100%; text-align: center; margin-top: 15px;"> [[【 前往第二篇報導調查 】|Second_Report_Start]] </span> <</timed>> </p> <<else>> <p style="color: #ff3333; margin-top: 15px; line-height: 1.6; text-align: left;"> ※ 很遺憾你選錯了(〒︿〒)<br> 《《民報》的想法融合了社會進化觀與對抗命運的觀點,並結合了情場失意者的控訴,把「談戀愛」視為一場打破舊禮教、推動社會進步的戰鬥。<br> 另外一個答案則是親日保守派士紳的論述,他們不一定完全反對自由戀愛,但他們用「臺灣人程度還不夠」為理由,去批評《民報》的文章在煽動年輕人家庭革命,反過來警告青年,不聽老人言,吃虧在眼前。 <<timed 4s>> <span style="display: inline-block; width: 100%; text-align: center; margin-top: 15px;"> [[【 前往第二篇報導調查 】|Second_Report_Start]] </span> <</timed>> </p> <</if>>
<span style="color: #ffcc00; font-weight: bold;">【第一章:民報的考驗:進入精英眼中的新世界】</span> <div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px;"> <div class="npc-avatar" style="flex-shrink: 0;"> <img src="bianji.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"> </div> <div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;"> <strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯長:</strong>「你的意見是?」 </div> </div> <div class="options-left" style="display: flex; gap: 20px; margin-top: 25px; line-height: 1.8; align-items: flex-start;"> <div style="display: flex; gap: 20px; justify-content: space-between; flex-wrap: wrap;"> <div style="flex: 1; text-align: center; min-width: 250px;"> <<link "✍️ 打破迷信">> <<set $loveArticle to "progressive">> <<set $correctCount to $correctCount + 1>> /* 👈 正確答案加一分! */ <<goto "Second_Report_End">> <</link>> <img src="she1.png" style="width: 100%; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.6);"> </div> <div style="flex: 1; text-align: center; min-width: 250px;"> <<link "✍️ 祭典的意義">> <<set $loveArticle to "conservative">> /* 紀錄錯誤/保守變數 */ <<goto "Second_Report_End">> <</link>> <img src="she2.png" style="width: 100%; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.6);"> </div> </div>
<span style="color: #ffcc00; font-weight: bold;">【第二篇報導完成】</span> <img src="xia.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> <<if $loveArticle === "progressive">> <p style="color: #00ff00; margin-top: 15px; line-height: 1.6; text-align: left;"> ※ 你朝記者夢又邁進了一步(。◕∀◕。) <br>《民報》的想法融合了其痛批官方獎勵神轎藝閣的激進立場,把「破除迷信」視為臺灣走向現代化與科學救國的死命令。<br><br> 另外一個答案則是廟方士紳的論述,他們反擊《民報》說「拜神浪費錢、不如辦教育」的觀點,強調廟會其實是一場大型的經濟活動,能賺錢、能聯絡感情,留學生和讀書人脫離群眾、不懂人間煙火。 <<timed 4s>> <span style="display: inline-block; width: 100%; text-align: center; margin-top: 15px;"> [[【 前往第三篇報導調查 】|Third_Report_Start]] </span> <</timed>> </p> <<else>> <p style="color: #ff3333; margin-top: 15px; line-height: 1.6; text-align: left;"> ※ 《民報》記者不會這樣寫喔(〒︿〒)<br>《民報》的想法融合了其痛批官方獎勵神轎藝閣的激進立場,把「破除迷信」視為臺灣走向現代化與科學救國的死命令。<br> 另外一個答案則是廟方士紳的論述,他們反擊《民報》說「拜神浪費錢、不如辦教育」的觀點,強調廟會其實是一場大型的經濟活動,能賺錢、能聯絡感情,留學生和讀書人脫離群眾、不懂人間煙火。 <<timed 4s>> <span style="display: inline-block; width: 100%; text-align: center; margin-top: 15px;"> [[【 前往第三篇報導調查 】|Third_Report_Start]] </span> <</timed>> </p> <</if>>
<!-- 快捷鍵安全防護:打字時不觸發 S/L 面板 --> <<script>> $(document).off('keydown.gameUtils').on('keydown.gameUtils', function(e) { if ($(e.target).is('input, textarea')) return; if (e.key === 's' || e.key === 'S' || e.key === 'l' || e.key === 'L') { UI.saves(); } }); <</script>> <!-- 徹底去外框的純按鈕群組:會自動黏在劇情框右上角 --> <div class="story-btn-group"> <<link "➕ 放大">> <<script>> var currentSize = parseFloat($('#passages').css('font-size')); if (currentSize < 28) { $('#passages').css('font-size', (currentSize + 2) + 'px'); } <</script>> <</link>> <<link "➖ 縮小">> <<script>> var currentSize = parseFloat($('#passages').css('font-size')); if (currentSize > 14) { $('#passages').css('font-size', (currentSize - 2) + 'px'); } <</script>> <</link>> <<link "📜 存檔">><<run UI.saves()>><</link>> <<link "📖 讀檔">><<run UI.saves()>><</link>> </div>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(三)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="yi.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-container"></div> <<script>> $(document).one(':passageend', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 定義第三關的對話陣列 var steps = [ '<p style="margin-top: 15px;">1921年起,知識分子年年組織請願團,赴日向帝國議會爭取設置由臺灣人組成的議會。</p>', '<p style="margin-top: 15px;">議會請願運動如同一場盛大的嘉年華,不僅受到東京留學生的熱烈歡迎,1923年飛行家謝文達更駕駛著「臺北號」在東京上空撒下宣傳單!</p>', '<p style="margin-top: 15px;">不過此時總督府早已磨刀霍霍,以違反「治安警察法」為由在1923年末清晨發動大逮捕…</p>', // 🚀 修正:將 object-fit 改為 contain,頭像絕對完整露出;補齊漏字「消息傳給了」 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianji.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">總督府刻意選在清晨發動逮捕,就是不希望消息曝光,幸好有人趁著夜晚把消息傳給了各大媒體。</p>' + '<p style="color: #f8fafc; margin: 10px 0 0 0; line-height: 1.8;">我們才不會讓總督府稱心如意!接下來的法院審判必須讓民眾檢視,' + pName + ' 君,請你到現場旁聽紀錄。</p>' + '</div>' + '</div>' ]; var currentStep = 0; var $container = $('#dialogue-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 核心推進對話與跳轉函式(純點擊控制) var advanceDialogue = function () { // 情況 A:對話還沒放完,點擊放下一段 if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; // 自動平滑捲動到畫面底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 情況 B:對話全部放完了,玩家點最後一下,切換 Passage else { $passage.off('click.advancing'); // 解除點擊監聽,防止重複跳轉 Engine.play('Third_Report_Editorial1'); // 🚀 轉場至下一關 } }; // 初始進入關卡時,自動秀出第一條對話 advanceDialogue(); // 監聽整個 Passage 區域的點擊事件(純手動點擊推進) $passage.on('click.advancing', function (e) { // 安全防護:點擊特定 UI 工具列或按鈕時不觸發劇情前進 if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button').length > 0) { return; } // 觸發前進 advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(三)】</span> <div id="dialogue-container"></div> <<script>> $(document).one(':passageend', function () { var steps = [ '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="yiyuan1.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;"><strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">臺灣議會期成同盟會員:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">我們繞過臺灣總督府的刁難,直接到日本東京依法成立臺灣議會期成同盟。</p></div>' + '</div>', '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="yiyuan2.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;"><strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">臺灣議會期成同盟會員:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">這在帝國首都完全是合法的結社!總督府現在跨海抓人,根本是濫用治警法、越權擴大解釋!</p></div>' + '</div>', '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="yiyuan3.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1;"><strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">臺灣議會期成同盟會員:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">即使我們被強行判決入獄,也絕對關不住臺灣人追求憲政與議會的覺醒精神!(´;ω;`)</p></div>' + '</div>' ]; var currentStep = 0; var $container = $('#dialogue-container'); var $passage = $('#passages'); // 如果還是找不到,在主控台印出錯誤以便除錯 if ($container.length === 0) { console.error("【除錯錯誤】依舊找不到 #dialogue-container 節點。"); return; } function advanceDialogue() { if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } else { $passage.off('click.advancing'); Engine.play('Third_Report_Editorial2'); } } // 啟動第一條對話 advanceDialogue(); // 監聽點擊 $passage.on('click.advancing', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a').length > 0) { return; } advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(三)】</span> <div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px;"> <div class="npc-avatar" style="flex-shrink: 0;"> <img src="bianji.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"> </div> <div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;"> <strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯長:</strong>請撰寫一篇社論。 </div> </div> <div class="options-left" style="display: flex; gap: 20px; margin-top: 25px; line-height: 1.8; align-items: flex-start;"> <div style="flex: 1; text-align: center;"> <<link "✍️破壞體制的「自治熱」">> <<set $loveArticle to "conservative">> /* 紀錄錯誤結局變數 */ <<goto "Third_Report_End">> <</link>> <img src="zhi1.png" style="width: 100%; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.6);"> </div> <div style="flex: 1; text-align: center;"> <<link "✍️ 被打壓的「自治夢」">> <<set $loveArticle to "progressive">> <<set $correctCount to $correctCount + 1>> /* 👈 正確答案加一分! */ <<goto "Third_Report_End">> <</link>> <img src="zhi2.png" style="width: 100%; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.6);"> </div> </div>
<span style="color: #ffcc00; font-weight: bold;">【第三篇報導完成】</span> <<if $loveArticle === "progressive">> <p style="color: #00ff00; margin-top: 15px; line-height: 1.6; text-align: left;"> ※ 你朝記者夢又邁進了一步(。◕∀◕。)<br>《民報》之所以能理直氣壯,是因為當時運動者採取「繞過臺灣總督府審查,直接赴東京組織臺灣議會期成同盟」的策略,而在日本內地,政治結社本就是憲法保障的合法權利。因此《民報》呼籲運用帝國體制內的「行政裁判法」來救濟總督府的越權濫捕,痛批總督府的粗暴行為是「對國家真意的無理解」,成功將這股「自治熱」導向爭取制度性保障與確信議會的實現。<br><br> 另外一個答案則是親日保守派士紳的論述 ,批判運動者刻意繞過本島審查制度的行為是「投機與挑釁」。他們批評《民報》轉載日本內地支持臺灣的言論是斷章取義,並警告這種企圖利用中央法規對抗總督府的政治狂熱,只會破壞臺日一體化,徹底毀掉臺灣的經濟。 <<timed 4s>> <span style="display: inline-block; width: 100%; text-align: center; margin-top: 15px;"> [[【 前往第四篇報導調查 】|fourth_Report_Start]] </span> <</timed>> </p> <<else>> <p style="color: #ff3333; margin-top: 15px; line-height: 1.6; text-align: left;"> ※ 《民報》記者不會這樣寫喔(〒︿〒)<br>《民報》之所以能理直氣壯,是因為當時運動者採取「繞過臺灣總督府審查,直接赴東京組織臺灣議會期成同盟」的策略,而在日本內地,政治結社本就是憲法保障的合法權利。因此《民報》呼籲運用帝國體制內的「行政裁判法」來救濟總督府的越權濫捕,痛批總督府的粗暴行為是「對國家真意的無理解」,成功將這股「自治熱」導向爭取制度性保障與確信議會的實現。<br><br> 另外一個答案則是親日保守派士紳的論述訊,批判運動者刻意繞過本島審查制度的行為是「投機與挑釁」。他們批評《民報》轉載日本內地支持臺灣的言論是斷章取義,並警告這種企圖利用中央法規對抗總督府的政治狂熱,只會破壞臺日一體化,徹底毀掉臺灣的經濟。 <<timed 4s>> <span style="display: inline-block; width: 100%; text-align: center; margin-top: 15px;"> [[【 前往第四篇報導調查 】|fourth_Report_Start]] </span> <</timed>> </p> <</if>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(四)】</span> <div id="intro-area"> <p>你已經跑很多採訪了,稍微偷懶一下( ´д`ll)來看看電報有什麼投稿和友人消息吧...</p> </div> <div id="dialogue-container"></div> <<script>> $(document).one(':passagedisplay', function () { var $container = $('#dialogue-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 🚀 核心安全修復 1:一進房間,立刻強制解綁可能殘留的舊點擊監聽 $passage.off('click.fourthReport'); // 定義此劇情的階段陣列(100% 你的原汁原味內容) var steps = [ // 階段 0:引導文字 '<p style="margin-top: 15px; color:#FFFFFF; font-weight: bold; text-align: left;">這裡有三張投稿信,請你從這三封信當中,哪一個主題最能夠幫助你伸張理念,或最適合讀者閱讀呢?</p>', // 階段 1:所有的選項與圖片 '<div id="options-area" style="margin-top: 25px; display: block !important; text-align: left; width: 100%; padding-left: 0; margin-left: 0;">' + // 選項 1 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[1)投稿一: 友人的妹妹電報來函|Fourth_Report_Choice1]]</span>' + '<img src="1.png" style="width: 100%; max-width: 400px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + // 選項 2 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[2)投稿二: 讀者投稿|Fourth_Report_Choice2]]</span>' + '<img src="2.png" style="width: 100%; max-width: 400px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + // 選項 3 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[3)投稿三: 讀者投稿|Fourth_Report_Choice3]]</span>' + '<img src="3.png" style="width: 100%; max-width: 400px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + '</div>' ]; // 🚀 核心安全修復 2:記憶機制分流。如果是二次進入,直爽地大放送所有內容,且絕不綁定點擊事件 if (State.variables.fourth_intro_done === true) { var allContent = steps.join(''); new Wikifier($container[0], allContent); return; } // --- 以下是第一次進入時的標準逐句點擊播放邏輯 --- var currentStep = 0; function advanceDialogue() { if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 當最後一個階段(選項)也跑完了 if (currentStep >= steps.length) { $passage.off('click.fourthReport'); // 解除點擊推進監聽 State.variables.fourth_intro_done = true; // 🚀 蓋下第四關「已讀」章! } } // 初始進入房間時自動播放第一步(引導文字) advanceDialogue(); // 監聽整個網頁 Passage 區域的點擊 $passage.on('click.fourthReport', function (e) { // 關鍵安全防護:如果玩家點到選項區域,不觸發進度 if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, #options-area').length > 0) { return; } advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(四)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="1.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="choice-container"></div> <<script>> $(document).one(':passageend', function () { // 定義點擊出現的下一段文字與選項 var steps = [ // 階段 0:出現你的意見與選項們 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">你的意見是:「陳氏投書,指其前夫林某於離婚未旬日即另結新歡,厚顏再婚。陳氏悲訴林某薄情寡義,棄多年糟糠之情於不顧,欲藉本報公諸社會,令世人知其真面目。」</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + // 選項 1:直接返回 '<div style="margin-bottom: 15px;">' + '[[1)再想想吧|fourth_Report_Start]]' + '</div>' + // 選項 2:確認送出 '<div>' + '<a id="submit-choice" class="link-internal macro-link" style="cursor: pointer;">2)確認送出</a>' + '</div>' + '</div>', // 階段 1:由選項 2 觸發出現編輯生氣的對話框 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;">' + '<img src="angryman.jpg" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;">' + '</div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯部:</strong>「報社應刊登具啟蒙性質的文章(╯‵□′)╯︵┻━┻」' + '</div>' + '</div>' ]; var currentStep = 0; var $container = $('#choice-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 核心綁定按鈕與推進函數 function setupChoicePage() { if (currentStep === 0) { new Wikifier($container[0], steps[0]); currentStep = 1; // 進入等待玩家點擊選項的狀態 // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 🚀 【注入錯誤紀錄變數】不加分,但記錄玩家選了此八卦主題 State.variables.fourthChoiceType = "gossip"; // 渲染編輯生氣的對話 new Wikifier($container[0], steps[1]); currentStep = 2; // 進度推進至對話結束,等待點擊畫面轉場 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); } } // 初始自動載入 setupChoicePage(); // 監聽畫面的點擊事件(用於編輯生氣完後返回主線) $passage.on('click.choicePage', function (e) { // 安全防護:點到選項按鈕時不觸發 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 編輯部罵完人後,點擊畫面任何地方直接轉場進入下一關 if (currentStep === 2) { $passage.off('click.choicePage'); Engine.play('fifth_Report_Start'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(四)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="2.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="choice-container"></div> <<script>> $(document).one(':passageend', function () { // 定義點擊出現的下一段文字與選項 var steps = [ // 階段 0:出現你的意見與選項們 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">你的意見是:「臺籍教員莊榮福控訴,巡查江尻趁其傷寒住院期間,誘使莊妻葉氏通姦。江尻仗恃警察權威,逼迫莊氏離婚。正式警察權力萬能下的家庭悲劇。」</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + // 選項 1:直接返回 '<div style="margin-bottom: 15px;">' + '[[1)再想想吧|fourth_Report_Start]]' + '</div>' + // 選項 2:確認送出 '<div>' + '<a id="submit-choice" class="link-internal macro-link" style="cursor: pointer;">2)確認送出</a>' + '</div>' + '</div>', // 階段 1:由選項 2 觸發出現編輯的對話框 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;">' + '<img src="happynan.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;">' + '</div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯部:</strong>「揭露臺日不平等是報社的責任!寫得很好,下班喝一杯吧(~ ̄▽ ̄)~ 🍻」' + '</div>' + '</div>' ]; var currentStep = 0; var $container = $('#choice-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 核心綁定按鈕與推進函數 function setupChoicePage() { if (currentStep === 0) { new Wikifier($container[0], steps[0]); currentStep = 1; // 進入等待玩家點擊選項的狀態 // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 🚀 【注入正確變數】玩家答對,分數加一分! if (typeof State.variables.correctCount === 'undefined') { State.variables.correctCount = 0; } State.variables.correctCount++; // 顯示編輯部開心的稱讚對話 new Wikifier($container[0], steps[1]); currentStep = 2; // 進度推進至對話結束,等待點擊畫面轉場 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); } } // 初始進入畫面時,自動載入意見與按鈕(不用多點一下空白處) setupChoicePage(); // 監聽畫面的點擊事件(用於編輯稱讚完後返回主線) $passage.on('click.choicePage', function (e) { // 安全防護:點到選項按鈕時不觸發 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 編輯部誇完人後,點擊畫面任何地方直接轉場進入下一關 if (currentStep === 2) { $passage.off('click.choicePage'); Engine.play('fifth_Report_Start'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(四)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="3.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="choice-container"></div> <<script>> $(document).one(':passageend', function () { // 定義點擊出現的下一段文字與選項 var steps = [ // 階段 0:出現你的意見與選項們 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">你的意見是:「臺中支局接獲投訴,烏日庄派出所巡查干涉保正選舉。警察竟因候選人廖某參與農民組合,威脅選民僅能投給指定之資產家人選,嚴重戕害選舉自由。」</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + // 選項 1:直接返回 '<div style="margin-bottom: 15px;">' + '[[1)再想想吧|fourth_Report_Start]]' + '</div>' + // 選項 2:確認送出 '<div>' + '<a id="submit-choice" class="link-internal macro-link" style="cursor: pointer;">2)確認送出</a>' + '</div>' + '</div>', // 階段 1:由選項 2 觸發出現編輯部的稱讚對話框 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;">' + '<img src="happynan.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;">' + '</div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯部:</strong>「揭露臺日不平等是報社的責任!寫得很好,下班喝一杯吧(~ ̄▽ ̄)~ 🍻」' + '</div>' + '</div>' ]; var currentStep = 0; var $container = $('#choice-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 核心定義:綁定按鈕與設置畫面函數 function setupChoicePage() { if (currentStep === 0) { new Wikifier($container[0], steps[0]); currentStep = 1; // 進入等待點擊選項狀態 // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 🚀 正確答案加分變數注入 if (typeof State.variables.correctCount === 'undefined') { State.variables.correctCount = 0; } State.variables.correctCount++; // 顯示編輯部稱讚對話 new Wikifier($container[0], steps[1]); currentStep = 2; // 推進至可跳轉狀態 // 自動平滑捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); } } // 初始進入畫面時,自動執行(讓意見與選項直接出現) setupChoicePage(); // 監聽畫面的點擊事件(編輯稱讚完後,點擊畫面任何非按鈕地方轉場) $passage.on('click.choicePage', function (e) { // 安全防護:點到選項按鈕時不重複觸發 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 編輯部誇完人後,點擊畫面轉場進入下一關 if (currentStep === 2) { $passage.off('click.choicePage'); Engine.play('fifth_Report_Start'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="sugarcane.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $container = $('#dialogue-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 所有台詞與選項陣列(100% 你的原汁原味內容) var steps = [ '<p style="margin-top: 15px;">日本從荷蘭殖民臺灣開始就是臺灣砂糖的主要出口地,沒想到這個任性的買家竟然乾脆佔領了臺灣,為了自己的味蕾不遺餘力的進行改革(☄◣ω◢)☄</p>', '<p style="margin-top: 15px;">雖然蔗糖產量年年攀升,蔗農們卻紛紛感嘆利潤遭到會社剝削,終於在1925按捺不住怒火,與強行採收甘蔗的會社、警察爆發衝突(#`皿´)/ (゚皿゚メ)</p>', '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianjinv.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">事情的真相到底是甚麼? 各大媒體都已著手調查,請你擔任民報的特派員到二林一探究竟。</p>' + '</div>' + '</div>', '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianjinan.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">記住,眼見不一定為憑,好好思考要相信哪一位受訪者吧!(ゝ∀・)</p>' + '</div>' + '</div>', '<p style="margin-top: 15px; color:#FFFFFF; font-weight: bold; text-align: left;">以下有三位不同的受訪者,請聽一聽他們在說什麼吧。</p>', '<div id="options-area" style="margin-top: 25px; display: block !important; text-align: left; width: 100%; padding-left: 0; margin-left: 0;">' + '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[1)匿名蔗農|fifth_Report_Choice1]]</span>' + '<img src="nongfu.png" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[2)林本源製糖會社社員|fifth_Report_Choice2]]</span>' + '<img src="huisheyuan.png" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[3)二林蔗農組合幹部|fifth_Report_Choice3]]</span>' + '<img src="farmfamily.jpg" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[4)調查結束|fifth_Report_Choice4]]</span>' + '<img src="diaocha4.png" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + '</div>' ]; // 記憶機制:如果看過了解說,直接一次把選項全開 if (State.variables.sugar_intro_done === true) { var allContent = steps.join(''); new Wikifier($container[0], allContent); return; } var currentStep = 0; function advanceDialogue() { if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } if (currentStep >= steps.length) { $passage.off('click.sugarReport'); State.variables.sugar_intro_done = true; // 記住狀態 } } // 初始秀出第一句 advanceDialogue(); // 監聽點擊推進 $passage.on('click.sugarReport', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, #options-area').length > 0) { return; } advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="sugarcane2.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 對話方塊的外殼容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 1. 先建立外層的黑色對話框結構(包含頭像與名字) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="nongfu.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="dialogue-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">蔗農:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染對話框外殼 $('#dialogue-outer-container').html(dialogueBoxHTML); // 2. 定義接下來一句一句跑出來的台詞與最後的選項 var steps = [ // 點擊前(初始顯示) '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">你來評評理,政府規定我們只能把甘蔗賣給指定的會社,結果所有會社裡開價最低的就是林本源,你說衰不衰!(-`ェ´-╬)</p>', // 點擊第 1 下出現 '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">而且會社使用的磅秤絕對有問題!上次我受不了了,自己站到磅秤上,體重只有30公斤啊! 難道我減肥成功了嗎?!</p>', // 點擊第 2 下出現 '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">年輕人們最近成立組合,請我們暫時不要同意會社採收,讓他們有時間幫忙協調價格。很感謝他們幫忙啦,但要是會社生氣,我們就只能啃甘蔗度日了。</p>', // 點擊第 3 下出現 '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">誒誒誒,記得別寫出我的名字啊!</p>', // 點擊第 4 下出現:最後的報社連結(會放入 options-container) '[[✍️ 回到報社|fifth_Report_Start]]' ]; var currentStep = 0; var $textTarget = $('#dialogue-text-target'); var $optionsTarget = $('#options-container'); var $passage = $('#passages'); // 初始先塞入第一句台詞 new Wikifier($textTarget, steps[currentStep]); currentStep++; // 監聽整個頁面的點擊事件 $passage.on('click.fifthReport', function (e) { // 安全防護:如果點到轉場連結按鈕,交給 Twine 轉場,不觸發文字 if ($(e.target).closest('#options-container, a').length > 0) { return; } if (currentStep < steps.length) { // 如果還沒到最後一個(選項),就繼續在對話框內往下貼文字 if (currentStep < steps.length - 1) { new Wikifier($textTarget, steps[currentStep]); } // 如果到了最後一項,就把連結渲染到對話框下方 else { new Wikifier($optionsTarget, steps[currentStep]); } currentStep++; // 自動平滑捲動到最底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 當所有步驟(台詞與選項)都出來後,解除點擊監聽,釋放記憶體 if (currentStep >= steps.length) { $passage.off('click.fifthReport'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="linbenyuan.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 對話方塊的外殼容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 1. 先建立外層的黑色對話框結構(包含頭像與名字) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="huisheyuan.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="dialogue-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社員:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染對話框外殼 $('#dialogue-outer-container').html(dialogueBoxHTML); // 2. 定義接下來一句一句跑出來的台詞與最後的選項 var steps = [ // 點擊前(初始顯示) '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">組合才不能代表蔗農跟我們討論!他們根本不知道製糖的成本有多高,煽動蔗農暴動拒絕採收,我們只好請警察來幫忙(メ ゚皿゚)メ</p>', // 點擊第 1 下出現 '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">二林的土地貧瘠,本來產量就不高,採收之後還要再用鐵路趕進運送到溪州工廠以免糖分流失,樣樣都是錢啊!</p>', // 點擊第 4 下出現:最後的報社連結(會放入 options-container) '[[✍️ 回到報社|fifth_Report_Start]]' ]; var currentStep = 0; var $textTarget = $('#dialogue-text-target'); var $optionsTarget = $('#options-container'); var $passage = $('#passages'); // 初始先塞入第一句台詞 new Wikifier($textTarget, steps[currentStep]); currentStep++; // 監聽整個頁面的點擊事件 $passage.on('click.fifthReport', function (e) { // 安全防護:如果點到轉場連結按鈕,交給 Twine 轉場,不觸發文字 if ($(e.target).closest('#options-container, a').length > 0) { return; } if (currentStep < steps.length) { // 如果還沒到最後一個(選項),就繼續在對話框內往下貼文字 if (currentStep < steps.length - 1) { new Wikifier($textTarget, steps[currentStep]); } // 如果到了最後一項,就把連結渲染到對話框下方 else { new Wikifier($optionsTarget, steps[currentStep]); } currentStep++; // 自動平滑捲動到最底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 當所有步驟(台詞與選項)都出來後,解除點擊監聽,釋放記憶體 if (currentStep >= steps.length) { $passage.off('click.fifthReport'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="linbenyuan.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 對話方塊的外殼容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 1. 先建立外層的黑色對話框結構(包含頭像與名字) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="farmfamily.jpg" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="dialogue-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">組合幹部:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染對話框外殼 $('#dialogue-outer-container').html(dialogueBoxHTML); // 2. 定義接下來一句一句跑出來的台詞與最後的選項 var steps = [ // 點擊前(初始顯示) '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">最近剛好是採收期,我們正在和會社交涉收購價格,但會社卻故意說我們不能代表蔗農,不和我們溝通!😡 </p>', // 點擊第 1 下出現 '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">警察也站在會社那邊,衝突發生後不僅旁觀的人被抓,我們組合成員不在現場,也以煽動的罪名起訴。</p>', // 點擊第 2 下出現 '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">但我們已經請了日本律師來幫忙,上法院走著瞧!(#`Д´)ノ</p>', // 點擊第 4 下出現:最後的報社連結(會放入 options-container) '[[✍️ 回到報社|fifth_Report_Start]]' ]; var currentStep = 0; var $textTarget = $('#dialogue-text-target'); var $optionsTarget = $('#options-container'); var $passage = $('#passages'); // 初始先塞入第一句台詞 new Wikifier($textTarget, steps[currentStep]); currentStep++; // 監聽整個頁面的點擊事件 $passage.on('click.fifthReport', function (e) { // 安全防護:如果點到轉場連結按鈕,交給 Twine 轉場,不觸發文字 if ($(e.target).closest('#options-container, a').length > 0) { return; } if (currentStep < steps.length) { // 如果還沒到最後一個(選項),就繼續在對話框內往下貼文字 if (currentStep < steps.length - 1) { new Wikifier($textTarget, steps[currentStep]); } // 如果到了最後一項,就把連結渲染到對話框下方 else { new Wikifier($optionsTarget, steps[currentStep]); } currentStep++; // 自動平滑捲動到最底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 當所有步驟(台詞與選項)都出來後,解除點擊監聽,釋放記憶體 if (currentStep >= steps.length) { $passage.off('click.fifthReport'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> </div> <div id="dialogue-container"></div> <<script>> $(document).one(':passageend', function () { var $container = $('#dialogue-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 🚀 核心安全修復 1:一進房間,立刻強制解綁可能殘留的舊點擊監聽 $passage.off('click.fourthReport'); // 定義此劇情的階段陣列(100% 你的原汁原味內容) var steps = [ // 階段 0:提示文字與編輯長對話框(🚀 優化:頭像改為 contain 確保絕對不切全臉) '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">收購價格究竟是否合理?誰該為衝突負起責任?眼看截稿期限將近,你必須趕緊完成報導🫡</p>' + '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;">' + '<img src="bianji.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;">' + '</div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯長:</strong>「你的意見是?」' + '</div>' + '</div>', // 階段 1:出現選項們 '<div id="options-area" style="margin-top: 25px; display: block !important; text-align: left; width: 100%; padding-left: 0; margin-left: 0;">' + // 選項 1 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[1)〈盲目暴動的蔗農組合〉|fifth_Report_Choice1.1]]</span>' + '<img src="mang.png" style="width: 100%; max-width: 400px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + // 選項 2 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[2)〈二林事件的真相〉|fifth_Report_Choice2.2]]</span>' + '<img src="er.png" style="width: 100%; max-width: 400px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + // 選項 3 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[3)〈蔗農的心聲〉|fifth_Report_Choice3.3]]</span>' + '<img src="zhexin.png" style="width: 100%; max-width: 400px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + '</div>' ]; // 🚀 核心安全修復 2:記憶機制分流。如果玩家是換選項第二次回頭,直接大放送全部選項 if (State.variables.sugar_final_done === true) { var allContent = steps.join(''); new Wikifier($container[0], allContent); return; } // --- 以下是第一次進入時的標準逐句點擊播放邏輯 --- var currentStep = 0; var advanceDialogue = function () { if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 當所有階段(三個大新聞標題選項)都彈出來了 if (currentStep >= steps.length) { $passage.off('click.fourthReport'); // 徹底解除點擊監聽 State.variables.sugar_final_done = true; // 🚀 蓋下二林最終章「已看過」印記! } }; // 初始進入關卡時,自動播放第一步 advanceDialogue(); // 監聽手動點擊推進 $passage.on('click.fourthReport', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, #options-area').length > 0) { return; } advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="mang.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 對話容器 --> <div id="dialogue-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 定義點擊出現的下一段文字與選項 var steps = [ // 階層 0:出現選項們 '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + // 選項 1:直接返回 '<div style="margin-bottom: 15px;">' + '[[1)再想想吧|fifth_Report_Choice4]]' + '</div>' + // 選項 2:觸發確認送出事件 '<div>' + '<a id="submit-choice" class="link-internal macro-link" style="cursor: pointer;">2)確認送出</a>' + '</div>' + '</div>', // 階層 1:由選項 2 觸發出現編輯部的批判對話框 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;">' + '<img src="angryman.jpg" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;">' + '</div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯部:</strong>你的口吻跟官方媒體好像,難道是抄來的?🤔' + '</div>' + '</div>', // 階層 2(錯誤答案結局解說):顯示紅字解說 '<p style="color: #ff3333; margin-top: 15px; text-align: left; line-height: 1.8;">※ 《民報》記者不會這樣寫喔(〒︿〒)<br>《民報》展現了知識分子的正義,不僅長期關注糖業爭議並倡議成立蔗農組合,更在二林事件爆發、主流官媒齊聲譴責蔗農暴動時,透過「深度報導」與公判號還原衝突脈絡。<br>然而,製糖會社(如監察人許丙)則抗辯會社早已發放補助金,反指控蔗農組合從中阻撓、破壞協議,會社最終也因該事件的打擊而被併購。作家賴和的小說則道出了夾在中間的基層蔗農心聲:他們既害怕遭到會社取消獎勵金報復,又在面臨大逮捕的恐懼下,憤怒地將生計受創的責任歸咎於蔗農組合,揭示了民報等「局外知識分子」難以體會的基層妥協心態。</p>' ]; var currentStep = 0; var $container = $('#dialogue-container'); var $passage = $('#passages'); // 監聽畫面的點擊事件(用於第 1 下點擊出現意見/選項) $passage.on('click.choicePage', function (e) { // 安全防護:點到選項時不觸發網頁前進 if ($(e.target).closest('#choice-options, a').length > 0) { return; } if (currentStep === 0) { // 初始渲染:顯示選項 new Wikifier($container, steps[0]); currentStep++; // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 【已移除系統統計】因為被編輯部責罵,此處拔除了全域計分累加邏輯 State.variables.loveArticle = "conservative"; // 標記為錯誤或保守選擇 // 渲染編輯部的反應 new Wikifier($container, steps[1]); currentStep = 2; // 進度推至可點擊出現解說狀態 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); } // 編輯部講完話後,玩家第一次點擊畫面,顯示對應的歷史解說 else if (currentStep === 2) { // 渲染紅字解說文字 new Wikifier($container, steps[2]); currentStep = 3; // 進度推至可點擊判定结局狀態 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 看完歷史解說後,再次點擊畫面,進行最終大結局判定 else if (currentStep === 3) { $passage.off('click.choicePage'); // 取得先前的累積答對分數(本關因爲答錯故不加分) var score = State.variables.correctCount || 0; // 依據歷史累積的分數進行大結局分流 if (score >= 3) { Engine.play('Chapter1_HappyEnd'); } else { Engine.play('Chapter1_BadEnd'); } } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="zhexin.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 對話容器 --> <div id="dialogue-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 定義點擊出現的下一段文字與選項 var steps = [ // 階層 0:出現選項們 [0] '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + // 選項 1:直接返回 '<div style="margin-bottom: 15px;">' + '[[1)再想想吧|fifth_Report_Choice4]]' + '</div>' + // 選項 2:觸發確認送出事件 '<div>' + '<a id="submit-choice" class="link-internal macro-link" style="cursor: pointer;">2)確認送出</a>' + '</div>' + '</div>', // 階層 1:由選項 2 觸發出現編輯部的對話框 [1] '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;">' + '<img src="bianjinan.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;">' + '</div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯部:</strong>寫得好,日後的法院審判也交給你報導!🫡' + '</div>' + '</div>', // 階層 2:當玩家點擊畫面,在下方延伸長出的綠字正確解說 [2] '<p style="color: #00ff00; margin-top: 15px; text-align: left; line-height: 1.8;">※ 你朝記者夢又邁進了一步(。◕∀◕。) <br>《民報》展現了知識分子的正義,不僅長期關注糖業爭議並倡議成立蔗農組合,更在二林事件爆發、主流官媒齊聲譴責蔗農暴動時,透過「深度報導」與公判號還原衝突脈絡。<br>然而,製糖會社(如監察人許丙)則抗辯會社早已發放補助金,反指控蔗農組合從中阻撓、破壞協議,會社最終也因該事件的打擊而被併購。作家賴和的小說則道出了夾在中間的基層蔗農心聲:他們既害怕遭到會社取消獎勵金報復,又在面臨大逮捕的恐懼下,憤怒地將生計受創的責任歸咎於蔗農組合,揭示了民報等「局外知識分子」難以體會的基層妥協心態。</p>' ]; var currentStep = 0; var $container = $('#dialogue-container'); var $passage = $('#passages'); // 監聽畫面的點擊事件(用於第 1 下點擊出現意見/選項) $passage.on('click.choicePage', function (e) { // 安全防護:點到選項時不觸發網頁前進 if ($(e.target).closest('#choice-options, a').length > 0) { return; } if (currentStep === 0) { // 初始渲染:顯示選項 new Wikifier($container, steps[0]); currentStep++; // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 【關鍵加分】玩家選擇正確答案,將 SugarCube 的全域變數 correctCount 加 1 State.variables.correctCount = (State.variables.correctCount || 0) + 1; // 渲染編輯部認可的對話(保留選項外觀) new Wikifier($container, steps[1]); currentStep = 2; // 進度推進至可點擊出現解說狀態 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); } // 編輯部講完話後(currentStep === 2),點擊畫面任何非連結地方,顯示綠字正確解說 else if (currentStep === 2) { // 渲染綠字歷史結局解說 new Wikifier($container, steps[2]); currentStep = 3; // 進度推進至可點擊進行大結局結算狀態 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 看完歷史解說後(currentStep === 3),再次點擊畫面任何地方,進行最終大結局判定 else if (currentStep === 3) { $passage.off('click.choicePage'); // 取得包含剛剛那一分在內的所有答對關卡數 var score = State.variables.correctCount || 0; // 最終分數判定分流 if (score >= 3) { // 答對 3 關或以上,進入第一章 Happy End Engine.play('Chapter1_HappyEnd'); } else { // 答對 2 關或以下,進入 Bad End Engine.play('Chapter1_BadEnd'); } } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【民報的考驗:進入精英眼中的新世界(五)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="zhexin.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 對話容器 --> <div id="dialogue-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 定義點擊出現的下一段文字與選項 var steps = [ // 階層 0:出現選項們 [0] '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + // 選項 1:直接返回 '<div style="margin-bottom: 15px;">' + '[[1)再想想吧|fifth_Report_Choice4]]' + '</div>' + // 選項 2:觸發確認送出事件 '<div>' + '<a id="submit-choice" class="link-internal macro-link" style="cursor: pointer;">2)確認送出</a>' + '</div>' + '</div>', // 階層 1:由選項 2 觸發出現編輯部的對話框 [1] '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: center; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;">' + '<img src="angryman.jpg" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;">' + '</div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; margin-right: 8px;">編輯部:</strong>你的個性太保守了,不合理的事情就應該反對! (#`Д´)ノ' + '</div>' + '</div>', // 🛠️ 修正點:將原本錯誤斷開的 ]; 改為逗號,保持陣列連續 // 階層 2(錯誤答案結局解說):顯示紅字解說 [2] '<p style="color: #ff3333; margin-top: 15px; text-align: left; line-height: 1.8;">※ 《民報》記者不會這樣寫喔(〒︿〒)<br>《民報》展現了知識分子的正義,不僅長期關注糖業爭議並倡議成立蔗農組合,更在二林事件爆發、主流官媒齊聲譴責蔗農暴動時,透過「深度報導」與公判號還原衝突脈絡。<br>然而,製糖會社(如監察人許丙)則抗辯會社早已發放補助金,反指控蔗農組合從中阻撓、破壞協議,會社最終也因該事件的打擊而被併購。作家賴和的小說則道出了夾在中間的基層蔗農心聲:他們既害怕遭到會社取消獎勵金報復,又在面臨大逮捕的恐懼下,憤怒地將生計受創的責任歸咎於蔗農組合,揭示了民報等「局外知識分子」難以體會的基層妥協心態。</p>' ]; var currentStep = 0; var $container = $('#dialogue-container'); var $passage = $('#passages'); // 監聽畫面的點擊事件(用於第 1 下點擊出現意見/選項) $passage.on('click.choicePage', function (e) { // 安全防護:點到選項時不觸發網頁前進 if ($(e.target).closest('#choice-options, a').length > 0) { return; } if (currentStep === 0) { // 初始渲染:顯示選項 new Wikifier($container, steps[0]); currentStep++; // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 【已移除系統統計】此處維持不計分 State.variables.loveArticle = "conservative"; // 渲染編輯部的反應 new Wikifier($container, steps[1]); currentStep = 2; // 進度推至可點擊出現解說狀態 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); } // 編輯部講完話後,玩家第一次點擊畫面,顯示對應的歷史解說 else if (currentStep === 2) { // 渲染紅字解說文字 new Wikifier($container, steps[2]); currentStep = 3; // 進度推至可點擊判定结局狀態 // 自動捲動到底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 看完歷史解說後,再次點擊畫面,進行最終大結局判定 else if (currentStep === 3) { $passage.off('click.choicePage'); // 取得先前的累積答對分數 var score = State.variables.correctCount || 0; // 依據歷史累積的分數進行大結局分流 if (score >= 3) { Engine.play('Chapter1_HappyEnd'); } else { Engine.play('Chapter1_BadEnd'); } } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【成為民報社畜】</span> <!-- 對話方塊的外殼容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 1. 先建立外層的黑色對話框結構(包含頭像與名字) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="dialogue-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染對話框外殼 $('#dialogue-outer-container').html(dialogueBoxHTML); // 2. 定義接下來一句一句跑出來的台詞與最後的選項 var steps = [ // 點擊前(初始顯示) '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">這是給你的獎金,這一路來辛苦你了!在一次次的報導中,你勇於批評傳統、針砭時政的精神,同仁們都看在眼裡,所以…</p>', // 點擊第 1 下出現 '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">' + pName + '我決定任命你為《民報》的正式記者,一起努力讓社會聽見我們的聲音吧。</p>', // 點擊第 2 下出現:兩張並排圖片 + 最後的報社連結(已整合至同一動態步驟) '<div style="margin: 25px 0 20px 0; display: flex; gap: 15px; justify-content: flex-start; align-items: center; text-align: left; width: 100%;">' + '<img src="shechu1.png" style="width: calc(50% - 8px); max-width: 250px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5); margin-left: 0;">' + '<img src="shechu2.png" style="width: calc(50% - 8px); max-width: 250px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5); margin-left: 0;">' + '</div>' + '<div style="margin-top: 15px;">' + '[[✍️ 開啟記者生涯|chapter2_round1.1]]' + '</div>' ]; var currentStep = 0; var $textTarget = $('#dialogue-text-target'); var $optionsTarget = $('#options-container'); var $passage = $('#passages'); // 初始先塞入第一句台詞 new Wikifier($textTarget, steps[currentStep]); currentStep++; // 監聽整個頁面的點擊事件 $passage.on('click.chapterFinish', function (e) { // 安全防護:如果點到轉場連結按鈕,交給 Twine 轉場,不重複觸發文字 if ($(e.target).closest('#options-container, a').length > 0) { return; } if (currentStep < steps.length) { // 如果還沒到最後一個(選項),就繼續在對話框內往下貼文字 if (currentStep < steps.length - 1) { new Wikifier($textTarget, steps[currentStep]); } // 如果到了最後一項,就把包含圖片與連結的 HTML 渲染到對話框下方 else { new Wikifier($optionsTarget, steps[currentStep]); } currentStep++; // 自動平滑捲動到最底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 當所有步驟都出來後,解除點擊監聽 if (currentStep >= steps.length) { $passage.off('click.chapterFinish'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【敗犬實習生】</span> <!-- 修正點:移除重複的容器,只保留一個 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passagedisplay', function () { // 取得玩家名稱 var pName = State.variables.playerName; // 1. 先建立外層的黑色對話框結構(包含頭像與名字) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="dialogue-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染對話框外殼 $('#dialogue-outer-container').html(dialogueBoxHTML); // 2. 定義接下來一句一句跑出來的台詞與最後的選項 var steps = [ // 點擊前(初始顯示) '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">' + pName + ',我們看到你寫的報導跟社論了,我們覺得你寫得很好,在文筆上都有一定的深度與專業性...</p>', // 點擊第 1 下出現(修正點:將被斷行的文字接回同一行,避免程式出錯) '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">但我們覺得你的文筆仍然不符合《民報》的理念,綜合考慮我們認為你不適合《民報》,恐怕我們的旅程只能到這裡就結束了...</p>', // 點擊第 2 下出現:兩張並排的敗犬圖片 + 結束遊戲連結(修正點:打包在同一個步驟,並移出對話框外) '<div style="margin: 25px 0 20px 0; display: flex; gap: 15px; justify-content: flex-start; align-items: center; text-align: left; width: 100%;">' + '<img src="lose1.png" style="width: calc(50% - 8px); max-width: 250px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5); margin-left: 0;">' + '<img src="lose2.png" style="width: calc(50% - 8px); max-width: 250px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5); margin-left: 0;">' + '</div>' + '<div style="margin-top: 15px;">' + '[[結束遊戲|入口]]' + '</div>' ]; var currentStep = 0; var $textTarget = $('#dialogue-text-target'); var $optionsTarget = $('#options-container'); var $passage = $('#passages'); // 初始先塞入第一句台詞 new Wikifier($textTarget, steps[currentStep]); currentStep++; // 監聽整個頁面的點擊事件 $passage.on('click.chapterFinish', function (e) { // 安全防護:如果點到轉場連結按鈕,交給 Twine 轉場,不重複觸發文字 if ($(e.target).closest('#options-container, a').length > 0) { return; } if (currentStep < steps.length) { // 如果還沒到最後一個(選項),就繼續在對話框內往下貼文字 if (currentStep < steps.length - 1) { new Wikifier($textTarget, steps[currentStep]); } // 如果到了最後一項,就把包含圖片與連結的 HTML 渲染到對話框下方 else { new Wikifier($optionsTarget, steps[currentStep]); } currentStep++; // 自動平滑捲動到最底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 當所有步驟都出來後,解除點擊監聽 if (currentStep >= steps.length) { $passage.off('click.chapterFinish'); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(一)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="67.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-main-container"></div> <<script>> $(document).one(':passageend', function () { var pName = variables().playerName || "你"; if (variables().negotiation_score === undefined) { variables().negotiation_score = 0; } var $mainContainer = $('#dialogue-main-container'); var $passage = $('#passages'); // 1. 定義社長與課長的外殼 HTML 結構 var shezhangShell = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="shezhang-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + '</div>' + '</div>'; var kezhangShell = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="police.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="kezhang-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">警務局保安課長:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; var currentStep = 0; // 🌟 核心優化函式:當玩家點擊任一選項時,立刻將所有按鈕鎖死並塗成灰色 function disableAndGrayButtons() { $('#choice-options button').prop('disabled', true).css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'opacity': '0.6' }); } // 2. 核心劇情控制 function advanceStory() { switch (currentStep) { case 0: // 初始:出現旁白 1 $mainContainer.append('<p style="margin-top: 15px; text-align: left; line-height: 1.8;">時間過得真快,在你與同仁的努力下民報每期的發行量超過一萬份,直追各大日刊媒體,可喜可樂(ノ>ω<)ノ</p>'); break; case 1: // 點擊 1:出現旁白 2 $mainContainer.append('<p style="margin-top: 15px; text-align: left; line-height: 1.8;">你滿懷理想,活躍在許多重大社會事件的前線,但同時你也開始懷疑自己的報導是不是能夠還原真相(´;ω;`)</p>'); break; case 2: // 點擊 2:出現旁白 3 $mainContainer.append('<p style="margin-top: 15px; text-align: left; line-height: 1.8;">就在此時,《民報》迎來創社以來最大的組織變革...</p>'); break; case 3: // 點擊 3:蹦出新圖片 chuban.png $mainContainer.append('<div style="margin: 20px 0; text-align: left;"><img src="chuban.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>'); break; case 4: // 點擊 4:渲染社長外殼,並塞入社長第一段話 $mainContainer.append(shezhangShell); new Wikifier($('#shezhang-text-target')[0], '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">' + pName + ',聽好了!自總督府公佈了《臺灣新聞紙條例》後,明面上聲稱為了避免報社彼此的競爭,實則是在嚴格管控新聞的發行。過往民報為了躲避總督府的審查,不得不採取在臺灣支局撰寫新聞稿,再送交東京支局印刷,接著再運回臺灣支局分發至各地據點的迂迴模式。</p>'); break; case 5: // 點擊 5:在同一個社長框內追加第二段話 new Wikifier($('#shezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">但此舉讓報社的營運成本大大增加,截止目前為止(1926),報社每月虧損將近三四百元。若維持過往的運作模式,報社隨時面臨倒閉的風險 :-(,加之本社亦期望提高發刊的頻率,打破以往輿論被日刊媒體壟斷的情況。</p>'); break; case 6: // 點擊 6:在同一個社長框內追加第三段話 new Wikifier($('#shezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">回顧往昔,本社從過去每半月發刊一次的半月刊模式,到去年(1925)開始的每星期發行的週刊,如今也該向發行日刊行進!:-)</p>'); break; case 7: // 點擊 7:在同一個社長框內追加第四段話(結束社長發言) new Wikifier($('#shezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">而最近總督府的審查力度雖稍微放寬,但不知暗地裡是否盤算著趁機插手報社的經營。相信你在見習階段的時期也通過報導的新聞了解民報的立場。莫忘初衷,為報社爭取最有利的條件吧!</p>'); break; case 8: // 點擊 8:渲染警察課長外殼,出現第一句 $mainContainer.append(kezhangShell); new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">我們來談談將民報移回臺灣發行的可能性。</p>'); break; case 9: // 點擊 9:在同一個課長框內追加第二句 new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">本局相當認可貴報長期以來對社會的貢獻,為了讓貴報未來的經營更加順遂,本局基於指導立場,有一些親切的建議想協助你們運作。</p>'); break; case 10: // 點擊 10:在同一個課長框內追加第三句與議會請願圖片 new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">貴社每年都會刊登『臺灣議會請願運動』的消息,但以現今的局勢來看不甚妥當。</p>' + '<img src="yihui.png" style="width: 100%; max-width: 400px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin: 12px 0; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6);">' ); break; case 11: // 點擊 11:在同一個課長框內追加最後一句警告 new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">須知臺灣現在可是(日本)帝國版圖的一部分,報社應秉持中立,切莫再為議會請願運動做宣傳!」</p>'); break; case 12: // 點擊 12:在課長框正下方安全蹦出選項按鈕 $passage.off('click.chapter2_1'); // 徹底解除空白處點擊推進 var btnHTML = '<div id="choice-options" style="margin-top: 15px;">' + '<div style="margin-bottom: 15px;"><button id="btn-refuse" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #ff3333; border-radius: 4px;">1)我不同意,啟盟社會是我們不能改變的理念。</button></div>' + '<div><button id="btn-accept" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #00ffcc; border-radius: 4px;">2)我接受,議會請願運動還是有其他的宣傳管道。</button></div>' + '</div>' + '<div id="waiting-feedback" style="margin-top: 15px; text-align: left;"></div>'; new Wikifier($('#options-container')[0], btnHTML); // 按鈕一:我拒絕(不加分) $('#btn-refuse').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_1'); // 保險防刷 // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); new Wikifier($('#waiting-feedback')[0], '<p style="color: #ff3333; font-weight: bold; margin: 0;">(課長看起來好生氣😡 )</p><p style="color: #888888; font-size: 0.9em; margin-top: 5px; font-style: italic;">⏱️ 正在記錄交涉結果,請稍候 3 秒...</p>'); window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); setTimeout(function () { Engine.play('chapter2_round1.2'); }, 3000); }); // 按鈕二:我接受(交涉成功,加一分) $('#btn-accept').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_1'); // 保險防刷 variables().negotiation_score++; // 確實執行加分 // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); new Wikifier($('#waiting-feedback')[0], '<p style="color: #00ffcc; font-weight: bold; margin: 0;">(課長露出了滿意的微笑,點了點頭😊 )</p><p style="color: #888888; font-size: 0.9em; margin-top: 5px; font-style: italic;">⏱️ 正在記錄交涉結果,請稍候 3 秒...</p>'); window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); setTimeout(function () { Engine.play('chapter2_round1.2'); }, 3000); }); return; } currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 初始先自動顯示第 0 步 advanceStory(); // 監聽手動點擊推進主線 $passage.on('click.chapter2_1', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button, #choice-options').length > 0) { return; } advanceStory(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(一)】</span> <div id="top-image-container" style="margin: 20px 0; text-align: left;"> <img src="chuangkan.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-main-container"></div> <<script>> $(document).one(':passageend', function () { if (variables().negotiation_score === undefined) { variables().negotiation_score = 0; } var $mainContainer = $('#dialogue-main-container'); var $passage = $('#passages'); // 定義課長外殼 HTML 結構(🚀 修正:頭像改為 contain 確保局長臉型帽子絕對完整) var kezhangShell = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="police.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="kezhang-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">警務局保安課長:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; var currentStep = 0; // 🌟 核心優化函式:當玩家點擊任一選項時,立刻將所有按鈕鎖死並塗成灰色 function disableAndGrayButtons() { $('#choice-options button').prop('disabled', true).css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'opacity': '0.6' }); } function advanceStory() { switch (currentStep) { case 0: // 初始:渲染外殼與第一句台詞 $mainContainer.append(kezhangShell); new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">「帝國的臣民理當使用日文,然而現今報紙卻僅有漢文版本。若是未來能增設日文版,想必會更加完善。(,,・ω・,,)」</p>'); break; case 1: // 渲染按鈕與等待回饋容器 $passage.off('click.chapter2_2'); // 徹底解除空白處點擊推進 var btnHTML = '<div id="choice-options" style="margin-top: 15px;">' + '<div style="margin-bottom: 15px;"><button id="btn-refuse" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #ff3333; border-radius: 4px;">1)我拒絕!語言是族群的文化根源!</button></div>' + '<div><button id="btn-accept" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #00ffcc; border-radius: 4px;">2)我接受!學習日文其實是吸收新知的好方法。</button></div>' + '</div>' + '<div id="waiting-feedback" style="margin-top: 15px; text-align: left;"></div>'; new Wikifier($('#options-container')[0], btnHTML); // 按鈕一:我拒絕(不累點) $('#btn-refuse').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_2'); // 防刷防穿透 // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); new Wikifier($('#waiting-feedback')[0], '<p style="color: #ff3333; font-weight: bold; margin: 0;">(課長看起來好生氣😡 )</p><p style="color: #888888; font-size: 0.9em; margin-top: 5px; font-style: italic;">⏱️ 正在記錄交涉結果,請稍候 3 秒...</p>'); window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); setTimeout(function () { Engine.play('chapter2_round1.3'); // 3 秒後自動跳轉下一關 }, 3000); }); // 按鈕二:我接受(交涉成功,加一分) $('#btn-accept').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_2'); // 防刷防穿透 variables().negotiation_score++; // 🚀 確實執行加分 // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); new Wikifier($('#waiting-feedback')[0], '<p style="color: #00ffcc; font-weight: bold; margin: 0;">(課長露出了滿意的微笑,點了點頭😊 )</p><p style="color: #888888; font-size: 0.9em; margin-top: 5px; font-style: italic;">⏱️ 正在記錄交涉結果,請稍候 3 秒...</p>'); window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); setTimeout(function () { Engine.play('chapter2_round1.3'); // 3 秒後自動跳轉下一關 }, 3000); }); return; // 🚀 阻止 currentStep++ } currentStep++; // 推進文字時的自動滾動 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 初始進入畫面自動跑出第 0 步 advanceStory(); // 監聽全局點擊推進 $passage.on('click.chapter2_2', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button, #choice-options').length > 0) { return; } advanceStory(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(一)】</span> <div id="top-image-container" style="margin: 20px 0; text-align: left;"> <img src="shencha.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-main-container"></div> <<script>> $(document).one(':passageend', function () { if (variables().negotiation_score === undefined) { variables().negotiation_score = 0; } var $mainContainer = $('#dialogue-main-container'); var $passage = $('#passages'); // 定義課長外殼 HTML 結構 var kezhangShell = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="police.png" style="width: 110px; height: 110px; object-fit: cover; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="kezhang-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">警務局保安課長:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; var currentStep = 0; function advanceStory() { switch (currentStep) { case 0: // 初始:渲染外殼與第一句台詞 $mainContainer.append(kezhangShell); new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">過去《民報》在東京發行、於臺灣販售時,需同時接受東京與臺灣兩地的審查。然而,即使某些報導在臺灣被禁止刊登,只要未遭東京方面查禁,讀者仍有機會透過東京版閱讀相關內容。</p>'); break; case 1: // 點擊 1:在同一個框內純追加第二句 new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">因此,《民報》遷回臺灣發行後,審查權必須統一由臺灣當局掌控,以防有人利用兩地審查標準的差異規避管制。</p>'); break; case 2: // 點擊 2:在對話框正下方跳出選項按鈕 $passage.off('click.chapter2_3'); // 徹底解除空白處點擊推進 var btnHTML = '<div id="choice-options" style="margin-top: 15px;">' + '<div style="margin-bottom: 15px;"><button id="btn-refuse" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #ff3333; border-radius: 4px;">1)我拒絕!言論自由本來就是人民的權利。</button></div>' + '<div><button id="btn-accept" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #00ffcc; border-radius: 4px;">2)我接受!檢閱制度實施已久,不必冒險反對。</button></div>' + '</div>'; new Wikifier($('#options-container')[0], btnHTML); // 按鈕一:我拒絕(🚀 改為:交涉成功,加一分!) $('#btn-refuse').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_3'); // 防刷防穿透 variables().negotiation_score++; // 🚀 確實執行加分 new Wikifier($('#options-container')[0], '<p style="color: #ff3333; font-weight: bold; margin-top: 15px; text-align: left;">(課長看起來好生氣😡 )</p>'); currentStep = 3; window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); setTimeout(function () { Engine.play('chapter2_round1.4'); // 3 秒後自動跳轉下一關 }, 3000); }); // 按鈕二:我接受(🚀 改為:妥協不加分) $('#btn-accept').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_3'); // 防刷防穿透 new Wikifier($('#options-container')[0], '<p style="color: #00ffcc; font-weight: bold; margin-top: 15px; text-align: left;">(課長露出了滿意的微笑,點了點頭😊 )</p>'); currentStep = 3; window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); setTimeout(function () { Engine.play('chapter2_round1.4'); // 3 秒後自動跳轉下一關 }, 3000); }); return; // 🚀 阻止代碼繼續往下執行 currentStep++ } // 確實閉合 switch currentStep++; // 推進文字時的自動滾動 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } // 初始進入畫面自動跑出第 0 步 advanceStory(); // 監聽全局點擊推進 $passage.on('click.chapter2_3', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button, #choice-options').length > 0) { return; } advanceStory(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(一)】</span> <div id="top-image-container" style="margin: 20px 0; text-align: left;"> <img src="jieru.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-main-container"></div> <<script>> $(document).one(':passageend', function () { if (variables().negotiation_score === undefined) { variables().negotiation_score = 0; } var $mainContainer = $('#dialogue-main-container'); var $passage = $('#passages'); // 定義課長外殼 HTML 結構(🚀 修正:頭像改為 contain 確保絕對不切到全臉) var kezhangShell = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="police.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="kezhang-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">警務局保安課長:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; var currentStep = 0; // 🌟 核心優化函式:當玩家點擊任一選項時,立刻將所有按鈕鎖死並塗成灰色 function disableAndGrayButtons() { $('#choice-options button').prop('disabled', true).css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'opacity': '0.6' }); } function advanceStory() { switch (currentStep) { case 0: $mainContainer.append(kezhangShell); new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">接下來談談你們申請發行日刊一事。你們過去經常刊載批評政府的言論,甚至多次挑戰當局政策,因此我們對你們是否能恪守相關規範抱持保留態度,實在難以輕易給予信任。</p>'); break; case 1: new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">如果你們開放日本人投資,並且在董事、記者等這些職位都加入日本人的話,我就允許你們發行日刊!</p>'); break; case 2: $passage.off('click.chapter2_4'); var btnHTML = '<div id="choice-options" style="margin-top: 15px;">' + '<div style="margin-bottom: 15px;"><button id="btn-refuse" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #ff3333; border-radius: 4px;">1)我拒絕!條件太嚴苛了我無法決定。</button></div>' + '<div><button id="btn-accept" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #00ffcc; border-radius: 4px;">2)我接受!不能讓談判功虧一簣。</button></div>' + '</div>' + '<div id="waiting-feedback" style="margin-top: 15px; text-align: left;"></div>'; new Wikifier($('#options-container')[0], btnHTML); // 按鈕一:我拒絕(選項一累點!) $('#btn-refuse').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_4'); // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); variables().negotiation_score++; // 確實執行加分 // 🚀 修正:社長頭像也改為 contain 確保絕對不切全臉 var refuseFeedback = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">會社的經營方式不容總督府干涉!我會親自前往日本遊說熟識的中央官員,請他們讓步。</p>' + '</div>' + '</div>' + '<p style="color: #888888; font-size: 0.9em; margin-top: 10px; font-style: italic;">⏱️ 正在記錄交涉結果,請稍候 3 秒...</p>'; new Wikifier($('#waiting-feedback')[0], refuseFeedback); currentStep = 3; window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); // 3 秒後自動去第五關 1.5 setTimeout(function () { Engine.play('chapter2_round1.5'); }, 3000); }); // 按鈕二:我接受(選項二不累點) $('#btn-accept').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_4'); // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); var acceptFeedback = '<p style="color: #ff3333; font-weight: bold; margin: 0; text-align: left;">(回到報社後被社長罵了一頓😡 )</p>' + '<p style="color: #888888; font-size: 0.9em; margin-top: 5px; font-style: italic;">⏱️ 正在記錄交涉結果,請稍候 3 秒...</p>'; new Wikifier($('#waiting-feedback')[0], acceptFeedback); currentStep = 3; window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); // 3 秒後自動去第五關 1.5 setTimeout(function () { Engine.play('chapter2_round1.5'); }, 3000); }); return; } currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } advanceStory(); $passage.on('click.chapter2_4', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button, #choice-options').length > 0) return; advanceStory(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(一)】</span> <div id="top-image-container" style="margin: 20px 0; text-align: left;"> <img src="jieru.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-main-container"></div> <<script>> $(document).one(':passageend', function () { if (variables().negotiation_score === undefined) { variables().negotiation_score = 0; } var $mainContainer = $('#dialogue-main-container'); var $passage = $('#passages'); // 定義局長外殼 HTML 結構(🚀 修正:頭像改為 contain 確保警帽與表情完全露出) var kezhangShell = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="police.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="kezhang-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">警務局局長:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; var currentStep = 0; // 🌟 核心優化函式:當玩家點擊任一選項時,立刻將所有按鈕鎖死並塗成灰色 function disableAndGrayButtons() { $('#choice-options button').prop('disabled', true).css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'opacity': '0.6' }); } function advanceStory() { switch (currentStep) { case 0: // 初始:渲染外殼與第一句台詞 $mainContainer.append(kezhangShell); new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">聽說二林事件的報導正是在你們編輯的主導下刊載的。更令人擔憂的是,此人近來又參與臺灣民眾黨及臺灣工友總聯盟的創立活動,四處煽動工人罷工。對於這樣的人物,我們實在難以相信其行動沒有特定的政治意圖。</p>'); break; case 1: // 點擊 1:純追加第二句 new Wikifier($('#kezhang-text-target')[0], '<p style="color: #f8fafc; margin: 12px 0 0 0; line-height: 1.8;">我們已經在人事上作讓步了,也請你們的社長好好思考一下,讓這種人留在報社真的好嗎?(#`Д´)ノ</p>'); break; case 2: // 點擊 2:跳出選項按鈕 $passage.off('click.chapter2_5'); // 徹底解除空白處點擊推進 var btnHTML = '<div id="choice-options" style="margin-top: 15px;">' + '<div style="margin-bottom: 15px;"><button id="btn-refuse" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #ff3333; border-radius: 4px;">1)我們是不會對人事權妥協的!</button></div>' + '<div><button id="btn-accept" style="cursor: pointer; padding: 8px 16px; background: #222; color: #fff; border: 1px solid #00ffcc; border-radius: 4px;">2)再跟社長討論一下吧...</button></div>' + '</div>' + '<div id="waiting-feedback" style="margin-top: 15px; text-align: left;"></div>'; new Wikifier($('#options-container')[0], btnHTML); // 按鈕一:拒絕(🚀 累點加分!) $('#btn-refuse').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_5'); // 防刷鎖定 // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); variables().negotiation_score++; // 確實執行累點 var refuseFeedback = '<p style="color: #ff3333; font-weight: bold; margin: 0; text-align: left;">(局長看起來好生氣😡 )</p>' + '<p style="color: #888888; font-size: 0.9em; margin-top: 5px; font-style: italic;">⏱️ 正在結算談判成果,請稍候 3 秒...</p>'; new Wikifier($('#waiting-feedback')[0], refuseFeedback); currentStep = 3; window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); // 🚀 核心大結局算分判定 if (variables().negotiation_score >= 3) { variables().chapter2_round1 = "win"; } else { variables().chapter2_round1 = "lose"; } // 3 秒後自動導向大結局章節頁面 setTimeout(function () { Engine.play('chapter2_round1_end'); }, 3000); }); // 按鈕二:接受(🚀 不累點,跳出社長原話對白) $('#btn-accept').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); $passage.off('click.chapter2_5'); // 防刷鎖定 // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); // 🚀 修正:社長頭像也改為 contain 確保絕對不切全臉 var acceptFeedback = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">編輯的立場其實對報社有點困擾…最近他對政治運動空間感到失望,想要到中國發展。或許讓他離開對彼此來說都比較好吧!</p>' + '</div>' + '</div>' + '<p style="color: #888888; font-size: 0.9em; margin-top: 10px; font-style: italic;">⏱️ 正在結算談判成果,請稍候 3 秒...</p>'; new Wikifier($('#waiting-feedback')[0], acceptFeedback); currentStep = 3; window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); // 🚀 核心大結局算分判定 if (variables().negotiation_score >= 3) { variables().chapter2_round1 = "win"; } else { variables().chapter2_round1 = "lose"; } // 3 秒後自動導向大結局章節頁面 setTimeout(function () { Engine.play('chapter2_round1_end'); }, 3000); }); return; // 攔截下漏 } currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } advanceStory(); // 監聽全局點擊(命名空間修正為 .chapter2_5) $passage.on('click.chapter2_5', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, button, #choice-options').length > 0) { return; } advanceStory(); }); }); <</script>>
<<if $chapter2_round1 === "win">> <<set $negotiation_score = 1>> <span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(一)】</span> <div id="top-image-container" style="margin: 20px 0; text-align: left;"> <img src="xinminbao.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <p style="color: #00ffcc; font-weight: bold; margin-top: 15px; text-align: left;">你相當清楚民報的處境,交涉成功了(。◕∀◕。)</p> <<else>> <<set $negotiation_score = 0>> <span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(五)】</span> <div id="top-image-container" style="margin: 20px 0; text-align: left;"> <img src="xinminbao.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <p style="color: #ff3333; font-weight: bold; margin-top: 15px; text-align: left;">你勇於堅持理想,可惜的是交涉失敗了(〒︿〒)</p> <</if>> <p style="margin-top: 20px; line-height: 1.8; text-align: left;">1927年臺灣文化協會面臨左、右派的分裂,讓總督府開始構思分化政治運動的策略,剛好此時《民報》面臨連年虧損,必須移回臺灣發行降低成本,促成了這次的談判。</p> <p style="margin-top: 12px; line-height: 1.8; text-align: left;">最終在1927《民報》成功從東京移回臺灣發行,1930年與新民報社合併,改發行《臺灣新民報》,並在1932年由週刊改為日刊,實現了創刊以來的理想。不過報社也付出了相應的代價,坊間盛傳編輯被迫離開臺灣,民報也被政府收買,不再是當初的人民喉舌! </p> <br> <div style="text-align: left; margin-top: 20px;"> [[進入第二篇報導|Chapter2_Round2_Start]] </div>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(二)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="tielu.png" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-container"></div> <<script>> $(document).one(':passageend', function () { // 取得玩家名稱 var pName = State.variables.playerName; var $container = $('#dialogue-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 🚀 核心安全修復 1:一進房間,立刻強制解綁可能殘留的舊點擊監聽 $passage.off('click.sugarReport'); // 所有台詞與選項陣列(100% 你的原汁原味內容) var steps = [ // 階段 0:背景介紹 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">1930.11.1晚上🌙 臺中州能高郡霧社發生「蕃人」叛變後,報社社長利用人脈關係,安排你與石川警務局長搭乘同一班前往埔里的列車,希望藉此取得採訪機會,掌握事件的第一手資訊。</p>', // 階段 1:玩家發言 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="yiwen.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">' + pName + ':</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">石川局長,外頭傳聞不少,不知道實際情況是否真如大家所說的那麼嚴重?</p>' + '</div>' + '</div>', // 階段 2:石川局長回話 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="juzhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">石川警務局長:</strong>' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">目前消息還不完整。不過據說情況有些棘手,花蓮和臺南方面似乎都增派了人力,至於軍隊是否出動……外頭倒是有這樣的說法。</p>' + '</div>' + '</div>', // 階段 3:心之聲旁白 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">聽起來是個重大的事件,你悄悄地又燃起了記者魂(ง •̀_•)ง</p>', // 階段 4:引導提示文字 '<p style="margin-top: 15px; color:#FFFFFF; font-weight: bold; text-align: left; line-height: 1.8;">歷經十餘小時的車程後,你終於抵達埔里。走出車站,只見街道上擠滿了通信兵、山砲隊士兵,以及載運軍警的車輛,緊張的氣氛瀰漫全鎮。石川警務局長、當地居民紛紛向你談起霧社事件的情況。然而報紙版面有限,你決定優先記錄哪一方面的內容?</p>', // 階段 5:跳出受訪者圖片與超連結選項 '<div id="options-area" style="margin-top: 25px; display: block !important; text-align: left; width: 100%; padding-left: 0; margin-left: 0;">' + // 選項 1 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[軍隊士兵|Chapter2_Round2_2.1]]</span>' + '<img src="soldier.png" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + // 選項 2 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[埔里老婦|Chapter2_Round2_2.2]]</span>' + '<img src="laofu.jpg" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + // 選項 3 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[霧社「蕃人」|Chapter2_Round2_2.3]]</span>' + '<img src="saideke.png" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + // 選項 4 '<div style="margin-bottom: 25px; text-align: left; width: 100%; display: block;">' + '<span style="display: block; text-align: left; margin-left: 0;">[[埔里街民|Chapter2_Round2_2.4]]</span>' + '<img src="judge.jpg" style="width: 100%; max-width: 220px; height: auto; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; margin-top: 12px; display: block; box-shadow: 0 4px 12px rgba(0,0,0,0.6); margin-left: 0;">' + '</div>' + '</div>' ]; // 🚀 記憶機制分流 if (State.variables.wushe_intro_done === true) { var allContent = steps.join(''); new Wikifier($container[0], allContent); return; } var currentStep = 0; function advanceDialogue() { if (currentStep < steps.length) { new Wikifier($container[0], steps[currentStep]); currentStep++; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } if (currentStep >= steps.length) { $passage.off('click.sugarReport'); State.variables.wushe_intro_done = true; } } advanceDialogue(); $passage.on('click.sugarReport', function (e) { if ($(e.target).closest('.story-btn-group, .top-utils-bar, a, #options-area').length > 0) { return; } advanceDialogue(); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(二)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="weifangfan.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 建立外層的黑色對話框結構(頭像改為 contain 確保露臉) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="laofu.jpg" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="dialogue-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">埔里老婦:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染初始對話框外殼 $mainContainer.html(dialogueBoxHTML); // 定義分段推進的腳本內容(100% 你的原話台詞) var steps = [ // 階段 0:一進頁面老婦說的話 '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">「冤枉啊😭 你幫我跟警察說說,我兩個兒子都突然被抓去,家裡沒人幫忙店都快經營不下去了!他們沒做壞事...இдஇ」</p>', // 階段 1:出現大圖 2.2.png 能順利在第一次單擊時清晰秀出 '<p style="margin-top: 15px; color:#FFFFFF; font-weight: bold; text-align: left;">你決定將老婦人寫進報導</p>' + '<div style="margin: 20px 0; text-align: left;"><img src="2.2.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + '<div style="margin-bottom: 15px;">[[1)再想想吧…|Chapter2_Round2_Start]]</div>' + '<div><a id="submit-choice" class="link-internal macro-link" style="cursor: pointer; padding: 8px 16px; background: #222; color: #00ffcc; border: 1px solid #00ffcc; border-radius: 4px; text-decoration: none;">2)確認送出!</a></div>' + '</div>', // 階段 2:點擊「確認送出」後,追加在底部的女編輯對話與 2.2.2.png 大圖 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianjinv.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>總督府要求報刊於正式發行前,必須先送審,以維護「安寧秩序」與「風俗」為名,透過「發賣禁止」或「下刷檢閱(部分打叉或空白)」審核。<br><br>當時日本軍隊為了補充後勤,會向當地居民「徵調人夫」,人們就算有自己的工作要做,也可能突然需要配合軍隊。<br><br>但當局不准許如此細節的批判,部分內容被空白(´A`。)<br><br>編輯希望你產出一篇更完整的報導。' + '</div>' + '</div>' + '<div style="margin: 20px 0; text-align: left;"><img src="2.2.2.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>' ]; var currentStep = 0; // 初始自動執行:顯示老婦的第一段哀求 new Wikifier($('#dialogue-text-target')[0], steps[0]); currentStep = 1; // 目前狀態:等玩家第一次點擊畫面 // 監聽畫面的推進點擊 $passage.on('click.choicePage', function (e) { // 安全隔離:點到按鈕或超連結時不觸發 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 第一次單擊畫面:出現大圖 2.2.png 與選項 if (currentStep === 1) { new Wikifier($('#options-container')[0], steps[1]); currentStep = 2; // 進度變更為:等待點選按鈕 // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 按鈕留存,直接在下方追加蹦出女編輯對話框與 2.2.2.png 清晰大圖 new Wikifier($mainContainer[0], steps[2]); currentStep = 3; // 進度變更為:對話結束,等待點擊畫面轉場 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 最後單擊畫面:直接前往下一關 if (currentStep === 3) { $passage.off('click.choicePage'); // 徹底解綁 Engine.play('Chapter2_Round3_Start'); // 前往下一關 } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(二)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="dubian.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 動態主容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 建立外層的黑色對話框結構(頭像改為 contain 確保露臉) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="soldier.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" id="dialogue-text-target" style="flex-grow: 1; text-align: left;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">軍隊士兵:</strong>' + '</div>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染初始對話框外殼 $mainContainer.html(dialogueBoxHTML); // 定義分段推進的腳本內容 var steps = [ // 階段 0 : 一進頁面士兵說的話 '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">「唼、這群蕃仔真頑強,第一次看到部隊派出飛機和化學毒氣(´;ω;`)」</p>', // 階段 1:將 2.1.png 大圖的 max-width 放大,高度拉高到 450px,字體絕對清晰! '<div style="margin: 20px 0; text-align: left;"><img src="2.1.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + '<div style="margin-bottom: 15px;">[[1)再想想吧…|Chapter2_Round2_Start]]</div>' + '<div><a id="submit-choice" class="link-internal macro-link" style="cursor: pointer; padding: 8px 16px; background: #222; color: #00ffcc; border: 1px solid #00ffcc; border-radius: 4px; text-decoration: none;">2)確認送出!</a></div>' + '</div>', // 階段 2:🚀 核心修復:點擊「確認送出」後,選項留存,下方除了蹦出編輯對話框,並完美補上放大清晰版的 2.1.1.png 圖檔! '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianjinan.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯部:</strong>總督府要求報刊於正式發行前,必須先送審,以維護「安寧秩序」與「風俗」為名,透過「發賣禁止」或「下刷檢閱(部分打叉或空白)」審核。<br><br>日軍使用化學武器鎮壓原住民,在國際社會和日本議會中都有譴責聲浪,所以「瓦斯毒氣彈」是當局的敏感詞彙,被打上叉叉了(´A`)。<br><br>編輯希望你產出一篇更完整的報導。' + '</div>' + '</div>' + '<div style="margin: 20px 0; text-align: left;"><img src="2.1.2.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>' ]; var currentStep = 0; // 初始自動執行:只讓士兵說第一句話 new Wikifier($('#dialogue-text-target')[0], steps[0]); currentStep = 1; // 目前進度:等玩家第一次單擊畫面 // 監聽畫面的推進點擊 $passage.on('click.choicePage', function (e) { if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 第一次單擊畫面:出現清晰大圖 2.1.png 和 選項 if (currentStep === 1) { new Wikifier($('#options-container')[0], steps[1]); currentStep = 2; // 進度變更為:等待點選按鈕 // 綁定「確認送出」按鈕 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); State.variables.fourthChoiceType = "gossip"; // 不累點 // 選項留存,直接在下方追加蹦出編輯對話框與 2.1.1.png 大圖 new Wikifier($mainContainer[0], steps[2]); currentStep = 3; // 進度變更為:對話結束,等待點擊畫面轉場 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 最後單擊畫面(編輯部與新圖出來後):前往下一關 if (currentStep === 3) { $passage.off('click.choicePage'); // 徹底解綁 Engine.play('Chapter2_Round3_Start'); // 前往下一關 } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(二)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="yuanzhumin.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 唯一的動態主容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 建立初始外殼(內心好奇旁白) var dialogueBoxHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; text-align: left;">' + '<p style="color: #f8fafc; margin: 0; line-height: 1.8;">比起這些混亂的場面,你心裡更好奇為什麼同化政策對「蕃人」失效?為甚麼明知實力懸殊,他們卻有臺灣人沒有的勇氣呢?</p>' + '</div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; // 渲染初始外殼 $mainContainer.html(dialogueBoxHTML); // 定義分段推進腳本內容(100% 你的原話台詞) var steps = [ // 階段 0:第一次單擊畫面後,立刻蹦出放大版 zhengjie.png 大圖與選項!(🚀 修正:高度放寬到 450px 確保清晰好讀) '<div style="margin: 20px 0; text-align: left;"><img src="zhengjie.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>' + '<p style="margin-top: 15px; color:#FFFFFF; font-weight: bold; text-align: left;">你決定將「蕃人」寫進報導</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + '<div style="margin-bottom: 15px;">[[1)再想想吧…|Chapter2_Round2_Start]]</div>' + '<div><a id="submit-choice" class="link-internal macro-link" style="cursor: pointer; padding: 8px 16px; background: #222; color: #00ffcc; border: 1px solid #00ffcc; border-radius: 4px; text-decoration: none;">2)確認送出!</a></div>' + '</div>', // 階段 1:點擊「確認送出」後,選項留存,下方追加男編輯對話框(🚀 修正:頭像改為 contain 確保露臉) '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianjinan.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯部:</strong>總督府要求報刊於正式發行前,必須先送審,以維護「安寧秩序」與「風俗」為名,透過「發賣禁止」或「下刷檢閱(部分打叉或空白)」審核。<br><br>但你的反思並沒有違反當局的審查,恭喜你順利發出完整的文章!!(ノ>ω<)ノ' + '</div>' + '</div>' ]; var currentStep = 1; // 初始狀態:等玩家第一次點擊畫面 // 監聽畫面的推進點擊 $passage.on('click.choicePage', function (e) { // 安全隔離:點到選項按鈕時不觸發 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 第一次單擊畫面:出現清晰大圖 zhengjie.png、引導句與選項 if (currentStep === 1) { new Wikifier($('#options-container')[0], steps[0]); currentStep = 2; // 狀態變更:等待點選按鈕 // 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 正解:累計加分一點! variables().negotiation_score++; // 選項留存,直接在下方追加男編輯對話框 new Wikifier($mainContainer[0], steps[1]); currentStep = 3; // 狀態變更:對話結束,等待最後點擊轉場 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 最後單擊畫面:直接前往下一關(沒有任何提示字打擾) if (currentStep === 3) { $passage.off('click.choicePage'); // 徹底解綁 Engine.play('Chapter2_Round3_Start'); // 前往下一關 } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(二)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="huaijingcha.jpg" style="max-width: 100%; max-height: 250px; object-fit: cover; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 定義分段推進腳本內容(100% 你的原話台詞與結構) var steps = [ // 階段 0:一進網頁,埔里街民爆料(🚀 修正:頭像改為 contain,確保絕對露出全臉) '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="judge.jpg" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">埔里街民:</strong>「聽說日本警察很多非禮蕃社婦女啊,還有娶了又拋棄,也難怪...」' + '</div>' + '</div>' + '<div id="dynamic-append-zone-1"></div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>', // 階段 1:單擊一下,石川警長震怒(🚀 修正:頭像改為 contain,警長帽子下巴絕對不砍半) '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="juzhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">石川警長:</strong>「誰准你亂說!我們已經調查清楚是勞役和薪水的糾紛,你們少插話了(-`ェ´-╬」' + '</div>' + '</div>', // 階段 2:再單擊一下,出現大圖 6.png 與選項(🚀 修正:將 6.png 大圖 max-height 放大到 450px,object-fit 改為 contain,字體超清晰!) '<div style="margin: 20px 0; text-align: left;"><img src="6.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>' + '<p style="margin-top: 15px; color:#FFFFFF; font-weight: bold; text-align: left;">你決定將非禮之事寫進報導</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + '<div style="margin-bottom: 15px;">[[1)再想想吧…|Chapter2_Round2_Start]]</div>' + '<div><a id="submit-choice" class="link-internal macro-link" style="cursor: pointer; padding: 8px 16px; background: #222; color: #00ffcc; border: 1px solid #00ffcc; border-radius: 4px; text-decoration: none;">2)確認送出!</a></div>' + '</div>', // 階段 3:點擊選項二後,追加在底部的女編輯對話與 7.png(🚀 修正:編輯頭像改 contain,7.png 的 max-height 同步放大到 450px 呈現高質感大圖) '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianjinv.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯:</strong>總督府要求報刊於正式發行前,必須先送審,以維護「安寧秩序」與「風俗」為名,透過「發賣禁止」或「下刷檢閱(部分打叉或空白)」審核。但男女之事涉及警察正直形象,可惜內容無法傳達(´A`。)<br><br>編輯希望你產出一篇更完整的報導。' + '</div>' + '</div>' + '<div style="margin: 20px 0; text-align: left;"><img src="7.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>' ]; var currentStep = 0; // 初始直接渲染街民對白 $mainContainer.html(steps[0]); currentStep = 1; // 狀態:等第一次畫面單擊 // 監聽全局手動推進點擊 $passage.on('click.choicePage', function (e) { if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 🚀 第一次單擊:追加蹦出石川警長對白 if (currentStep === 1) { new Wikifier($('#dynamic-append-zone-1')[0], steps[1]); currentStep = 2; // 狀態變更:等第二次畫面單擊 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第二次單擊:出現大圖 6.png 與選項 if (currentStep === 2) { new Wikifier($('#options-container')[0], steps[2]); currentStep = 3; // 狀態變更:等待點選按鈕 // 綁定選項二點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 規則:選項二確認送出不累點,僅原地追加內容 new Wikifier($mainContainer[0], steps[3]); currentStep = 4; // 狀態變更:所有對話結束,等最後一下轉場 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); }); setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 最後一次單擊(編輯講完話後):直接進入下一關頁面 if (currentStep === 4) { $passage.off('click.choicePage'); // 徹底解除綁定 Engine.play('Chapter2_Round3_Start'); // 順暢換頁 } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(三)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="baodao1.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 🚀 核心安全修復 1:一進房間,立刻強制解綁可能殘留的舊點擊監聽,防止記憶體汙染 $passage.off('click.choicePage'); // 定義分段推進腳本內容(100% 你的原話台詞與結構) var steps = [ // 階段 0:一進網頁顯示的背景介紹 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">你看了發電報的人名,你捏了一把冷汗,原來是報社的合夥人之一!他希望你幫忙宣傳他的組織「自治聯盟」。</p>' + '<div id="dynamic-append-zone-1"></div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>', // 階段 1:單擊一下畫面,蹦出主角的內心糾結對話框 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="fannv.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">' + pName + ':</strong>「我也很贊成地方自治這個活動...但我們報社做宣傳嗎......而且前陣子離開報社的黃兄不喜歡自治聯盟只敢講選舉,黃兄還一直說要更關注農民,這也是有道理,但是...」' + '</div>' + '</div>', // 階段 2:再單擊一下畫面,跳出決策引導與各自開向全新 Passage 的選項 '<p style="margin-top: 15px; color:#FFFFFF; font-weight: bold; text-align: left; line-height: 1.8;">此時的你要怎麼處理這封要求宣傳的電報呢?🤔</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left;">' + '<div style="margin-bottom: 15px;">[[1)決定幫忙|Chapter2_Round3_Choice1]]</div>' + '<div>[[2)拒絕幫忙|Chapter2_Round3_Choice2]]</div>' + '</div>' ]; // 🚀 核心安全修復 2:記憶機制分流。如果不是第一次來(已經看過解說了) if (State.variables.ch2_r3_done === true) { // 直接一次性把所有對話、旁白、引導、超連結選項全部載入,並阻斷後續點擊監聽 $mainContainer.html(steps[0]); new Wikifier($('#dynamic-append-zone-1')[0], steps[1]); new Wikifier($('#options-container')[0], steps[2]); return; } // --- 以下是第一次進入時的標準逐步點擊播放邏輯 --- var currentStep = 0; // 初始直接渲染背景介紹 $mainContainer.html(steps[0]); currentStep = 1; // 狀態:等第一次畫面單擊 // 監聽全局手動推進點擊 $passage.on('click.choicePage', function (e) { // 安全隔離:點到選項或超連結時不觸發主線推進 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 🚀 第一次單擊:追加蹦出主角的糾結對話框 if (currentStep === 1) { new Wikifier($('#dynamic-append-zone-1')[0], steps[1]); currentStep = 2; // 狀態變更:等第二次畫面單擊 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第二次單擊:蹦出最終決策與分流超連結,並自動解除點擊監聽,同時記住狀態 if (currentStep === 2) { new Wikifier($('#options-container')[0], steps[2]); $passage.off('click.choicePage'); // 徹底解綁 State.variables.ch2_r3_done = true; // 🚀 蓋下本關「已看過」印記! setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(三)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="baodao1.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 1. 定義分段推進腳本內容 var steps = [ // 階段 0:一進網頁顯示的背景思維 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">自治聯盟較被總督府接受,應該好好為大佬的組織宣傳。</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left; display: flex; flex-direction: column; gap: 15px;">' + '<div><<link "1)再想想吧" "Chapter2_Round3_Start" >><</link>></div>' + '<div><button id="submit-choice" style="cursor: pointer; padding: 8px 16px; background: #222; color: #00ffcc; border: 1px solid #00ffcc; border-radius: 4px; display: inline-block;">2)確認送出</button></div>' + '</div>' + '' + '<div id="waiting-feedback" style="margin-top: 15px; text-align: left;"></div>' ]; // 初始直接渲染思維與選項 new Wikifier($mainContainer[0], steps[0]); // 樣式微調(第一個連結按鈕) $('#choice-options a').first().css({ 'padding': '8px 16px', 'background': '#222', 'color': '#ffcc00', 'border': '1px solid #ffcc00', 'border-radius': '4px', 'text-decoration': 'none', 'display': 'inline-block' }); // 🌟 核心優化函式:立刻將所有按鈕鎖死並塗成灰色 function disableAndGrayButtons() { // 同時鎖死 1)再想想 的 a 標籤與 2)確認送出 的 button 標籤 $('#choice-options a').first().css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'pointer-events': 'none', // 徹底拔除 a 標籤的點擊能力 'opacity': '0.6' }); $('#submit-choice').prop('disabled', true).css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'opacity': '0.6' }); } // 2. 綁定「確認送出」按鈕的點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); // 依照你的原有劇本邏輯:累計加分一點! variables().negotiation_score++; // 原地蹦出恭喜字樣,並同步加上 3 秒倒數計時大結局提示語! var feedbackHTML = '<p style="margin-top: 20px; color: #00ffcc; font-weight: bold; text-align: left; line-height: 1.8;">恭喜你順利刊登~*✲゚*。✧٩(・ิᴗ・ิ)۶٩(・ิᴗ・ิ)۶✧。*゚✲*~</p>' + '<p style="color: #888888; font-size: 0.9em; margin-top: 10px; font-style: italic;">⏱️ 正在結算第二章章節成果,請稍候 3 秒...</p>'; new Wikifier($('#waiting-feedback')[0], feedbackHTML); // 平滑捲動到最底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); // 🚀 核心自動轉場:不需要手動點畫面,3 秒後鐵面無私自動大結算分流! setTimeout(function () { // 📊 判斷總分:三關對一關(得分 >= 1)進入成功結局,否則進入失敗結局 if (variables().negotiation_score >= 1) { Engine.play('Chapter2_Success_End'); } else { Engine.play('Chapter2_Fail_End'); } }, 3000); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(三)】</span> <div style="margin: 20px 0; text-align: left;"> <img src="baodao2.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 定義分段推進腳本內容 var steps = [ // 階段 0:一進網頁顯示的背景思維與選項 '<p style="margin-top: 15px; text-align: left; line-height: 1.8;">把報社當作特定團體的宣傳工具?!應該撰文公開譴責亂象</p>' + '<div id="choice-options" style="margin-top: 25px; text-align: left; display: flex; flex-direction: column; gap: 15px;">' + '<div><<link "1)再想想吧" "Chapter2_Round3_Start">><</link>></div>' + '<div><button id="submit-choice" style="cursor: pointer; padding: 8px 16px; background: #222; color: #00ffcc; border: 1px solid #00ffcc; border-radius: 4px; display: inline-block;">2)確認送出</button></div>' + '</div>' + '' + '<div id="waiting-feedback" style="margin-top: 15px; text-align: left;"></div>' ]; // 初始直接渲染背景思維與選項 new Wikifier($mainContainer[0], steps[0]); // 樣式微調(第一個連結按鈕) $('#choice-options a').first().css({ 'padding': '8px 16px', 'background': '#222', 'color': '#ffcc00', 'border': '1px solid #ffcc00', 'border-radius': '4px', 'text-decoration': 'none', 'display': 'inline-block' }); // 🌟 核心優化函式:立刻將所有按鈕鎖死並塗成灰色 function disableAndGrayButtons() { $('#choice-options a').first().css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'pointer-events': 'none', // 徹底拔除 a 標籤的點擊能力 'opacity': '0.6' }); $('#submit-choice').prop('disabled', true).css({ 'background': '#444444', 'color': '#888888', 'border': '1px solid #666666', 'cursor': 'not-allowed', 'opacity': '0.6' }); } // 2. 綁定「確認送出」按鈕點擊事件 $('#submit-choice').one('click', function (ev) { ev.preventDefault(); ev.stopPropagation(); // 🚀 核心優化:變灰鎖死所有按鈕 disableAndGrayButtons(); // 這是譴責董事的分支(不加分/扣分),分數維持原樣不變 // 原地蹦出主編砸桌對話框,並同步加上 3 秒結算倒數備註提示! var feedbackHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="bianjinan.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">編輯部:</strong>「他是報社董事,你不知道他投資了多少錢嗎?!這種言論過於激進!(╯‵□′)╯︵┻━┻」' + '</div>' + '</div>' + '<p style="color: #888888; font-size: 0.9em; margin-top: 10px; font-style: italic;">⏱️ 正在結算第二章章節成果,請稍候 3 秒...</p>'; new Wikifier($('#waiting-feedback')[0], feedbackHTML); // 平滑捲動到最底部 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); // 🚀 核心自動轉場:不需要手動點畫面,3 秒後鐵面無私自動大結算分流! setTimeout(function () { // 📊 總分判斷:三關對一關(得分 >= 1)進入成功結局,否則進入失敗結局 if (variables().negotiation_score >= 1) { Engine.play('Chapter2_Success_End'); } else { Engine.play('Chapter2_Fail_End'); } }, 3000); }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(完)】</span> <p style="margin-top: 15px; text-align: left; line-height: 1.8; color: #FFFFFF; font-weight: bold;">這一天,社長鄭重地將你叫到辦公室。</p> <!-- 唯一的動態主容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 階段 0:一進網頁,立刻渲染社長的第一個獨立對話框(宣告發獎金) var initHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + pName + ',很感謝你這幾年對於報社的貢獻,這是給你的獎金!' + '</div>' + '</div>' + '<div id="dynamic-money-image-zone"></div>' + '<div id="dynamic-main-dialogue-zone"></div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; $mainContainer.html(initHTML); // 定義後續分段塞入的劇本腳本 var steps = [ // 階段 1:單擊一下畫面,跳出 money.png 圖片 '<div style="margin: 20px 0; text-align: left;"><img src="money.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>', // 階段 2:再單擊一下畫面,生出第二個對話框,並吐出社長回顧的第一段話 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + '<div id="shezhang-speech-box">你剛進報社時就毫不畏懼的挑戰傳統、針砭時事。先是大膽地討論自由戀愛與廟會活動,又在治警事件、二林蔗農事件等重大政治事件時即時為大眾帶回最新資訊,讓我和編輯都不得不認可你的拚勁。</div>' + '</div>' + '</div>', // 階段 3:🚀 核心修改:點擊後不在外部開新框,而是直接在同一個對話框內部「換行追加」文字! '<br><br>我和編輯爭論了很久,最後認為你在逆境中仍沒有忘記初衷,很適合作為我們的新任編輯', // 階段 4:🚀 核心修改:再度在同一個對話框內部「換行追加」詢問意願文字 '<br><br>當然,如果你有其他人生規劃也沒有問題,請問你是否願意繼續跟我們合作呢?(,,・ω・,,)', // 階段 5:最後跳出終極三個開新房間的按鈕選項 '<div id="choice-options" style="margin-top: 25px; text-align: left; display: flex; flex-direction: column; gap: 15px;">' + '<div><<link "1)繼續待著,有彈性的妥協也是一種反抗策略(ง๑ •̀_•́)ง" "Chapter2_End_Stay">><</link>></div>' + '<div><<link "2)文學有時比報導更有力量,我要加入文學組織!" "Chapter2_End_Literature">><</link>></div>' + '<div><<link "3)新民報已經太過溫和,我要加入更有批判力道的左派媒體!" "Chapter2_End_Left">><</link>></div>' + '</div>' ]; var currentStep = 1; // 狀態:等第一次點擊 // 監聽全局手動推進點擊 $passage.on('click.successEnd', function (e) { // 安全隔離:點到按鈕不觸發 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 🚀 1. 單擊畫面:秀出獎金圖 if (currentStep === 1) { new Wikifier($('#dynamic-money-image-zone')[0], steps[0]); currentStep = 2; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 2. 再單擊畫面:渲染核心對話框與第一段回顧 if (currentStep === 2) { new Wikifier($('#dynamic-main-dialogue-zone')[0], steps[1]); currentStep = 3; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 3. 再單擊畫面:在同一個演講框內部追加「升任編輯」 if (currentStep === 3) { var $speechBox = $('#shezhang-speech-box'); if ($speechBox.length > 0) { new Wikifier($speechBox[0], steps[2]); } currentStep = 4; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 4. 再單擊畫面:在同一個演講框內部追加「詢問意願」 if (currentStep === 4) { var $speechBox = $('#shezhang-speech-box'); if ($speechBox.length > 0) { new Wikifier($speechBox[0], steps[3]); } currentStep = 5; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 5. 最後單擊畫面:順暢跑出三個按鈕,並解綁點擊監聽 if (currentStep === 5) { new Wikifier($('#options-container')[0], steps[4]); $passage.off('click.successEnd'); // 徹底解綁 // 統一美化這三個選項按鈕 $('#choice-options a').css({ 'padding': '10px 18px', 'background': '#222', 'color': '#ffcc00', 'border': '1px solid #ffcc00', 'border-radius': '4px', 'text-decoration': 'none', 'display': 'inline-block', 'line-height': '1.5' }); // 為第三個激進左派媒體按鈕增加辨識度青綠色邊框 $('#choice-options a').last().css({ 'color': '#00ffcc', 'border-color': '#00ffcc' }); setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章:檢閱未了:報社內外的記者生存之戰(完)】</span> <p style="margin-top: 15px; text-align: left; line-height: 1.8; color: #FFFFFF; font-weight: bold;">這一天,社長鄭重地將你叫到辦公室。</p> <!-- 唯一的動態主容器 --> <div id="dialogue-outer-container"></div> <<script>> $(document).one(':passageend', function () { var pName = State.variables.playerName; var $mainContainer = $('#dialogue-outer-container'); var $passage = $('#passages'); if ($mainContainer.length === 0) return; // 階段 0:一進網頁,立刻渲染社長的第一個獨立對話框(宣告發獎金) var initHTML = '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>「' + pName + ',很感謝你這幾年對於報社的貢獻,這是給你的獎金!」' + '</div>' + '</div>' + '<div id="dynamic-money-image-zone"></div>' + '<div id="dynamic-main-dialogue-zone"></div>' + '<div id="options-container" style="margin-top: 20px; text-align: left;"></div>'; $mainContainer.html(initHTML); // 定義後續分段塞入的劇本腳本 var steps = [ // 階段 1:單擊一下畫面,跳出 money.png 圖片 '<div style="margin: 20px 0; text-align: left;"><img src="money.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"></div>', // 階段 2:再單擊一下畫面,生出第二個對話框,並吐出社長回顧的第一段話 '<div class="dialogue-box" style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 20px; margin: 20px 0; display: flex; align-items: flex-start; gap: 20px; text-align: left;">' + '<div class="npc-avatar" style="flex-shrink: 0;"><img src="shezhang.png" style="width: 110px; height: 110px; object-fit: contain; border: 2px solid #ffcc00; border-radius: 4px; background-color: #222;"></div>' + '<div class="dialogue-text" style="flex-grow: 1; color: #f8fafc; line-height: 1.8;">' + '<strong style="color: #ffcc00; font-size: 1.1em; display: block; margin-bottom: 8px;">社長:</strong>' + '<div id="shezhang-speech-box">「你剛進報社時就毫不畏懼的挑戰傳統、針砭時事。先是大膽地討論自由戀愛與廟會活動,又在治警事件、二林蔗農事件等重大政治事件時即時為大眾帶回最新資訊,讓我和編輯都不得不認可你的拚勁。」</div>' + '</div>' + '</div>', // 階段 3:🚀 核心修改:點擊後不在外部開新框,而是直接在同一個對話框內部「換行追加」文字! '<br><br>「很遺憾的是,你應該也逐漸察覺近年言論緊縮的狀況,報社要生存,就必須與總督府進行妥協。我和編輯爭論了很久,最後還是認為你的立場並不適合現在的我們…」', // 階段 4:🚀 核心修改:再度在同一個對話框內部「換行追加」詢問意願文字 '<br><br>「想要改變社會,作法絕對不只有一種。如果是你的話,離開以後一定可以找到其他方法吧!」', // 階段 5:最後跳出終極三個開新房間的按鈕選項 '<div id="choice-options" style="margin-top: 25px; text-align: left; display: flex; flex-direction: column; gap: 15px;">' + '<div><<link "1)文學有時比報導更有力量,我要加入文學組織!" "Chapter2_End_Literature">><</link>></div>' + '<div><<link "2)新民報已經太過溫和,我要加入更有批判力道的左派媒體!" "Chapter2_End_Left">><</link>></div>' + '</div>' ]; var currentStep = 1; // 狀態:等第一次點擊 // 監聽全局手動推進點擊 $passage.on('click.successEnd', function (e) { // 安全隔離:點到按鈕不觸發 if ($(e.target).closest('#choice-options, a').length > 0) { return; } // 🚀 1. 單擊畫面:秀出獎金圖 if (currentStep === 1) { new Wikifier($('#dynamic-money-image-zone')[0], steps[0]); currentStep = 2; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 2. 再單擊畫面:渲染核心對話框與第一段回顧 if (currentStep === 2) { new Wikifier($('#dynamic-main-dialogue-zone')[0], steps[1]); currentStep = 3; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 3. 再單擊畫面:在同一個演講框內部追加「升任編輯」 if (currentStep === 3) { var $speechBox = $('#shezhang-speech-box'); if ($speechBox.length > 0) { new Wikifier($speechBox[0], steps[2]); } currentStep = 4; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 4. 再單擊畫面:在同一個演講框內部追加「詢問意願」 if (currentStep === 4) { var $speechBox = $('#shezhang-speech-box'); if ($speechBox.length > 0) { new Wikifier($speechBox[0], steps[3]); } currentStep = 5; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 5. 最後單擊畫面:順暢跑出三個按鈕,並解綁點擊監聽 if (currentStep === 5) { new Wikifier($('#options-container')[0], steps[4]); $passage.off('click.successEnd'); // 徹底解綁 // 統一美化這三個選項按鈕 $('#choice-options a').css({ 'padding': '10px 18px', 'background': '#222', 'color': '#ffcc00', 'border': '1px solid #ffcc00', 'border-radius': '4px', 'text-decoration': 'none', 'display': 'inline-block', 'line-height': '1.5' }); // 為第三個激進左派媒體按鈕增加辨識度青綠色邊框 $('#choice-options a').last().css({ 'color': '#00ffcc', 'border-color': '#00ffcc' }); setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章大結局:留在新民報——體制內的平衡家】</span> <div style="margin: 20px 0; text-align: left;"> <img src="hezhao.jpg" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 唯一的動態劇情追加主容器 --> <div id="end-story-container" style="text-align: left;"></div> <<script>> $(document).one(':passageend', function () { var $container = $('#end-story-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 定義大結局文字的分段腳本(100% 你的原話劇本與表情) var steps = [ // 階段 0:單擊畫面第一次,蹦出前半段結論 '<p style="font-size: 1.1em; color: #f8fafc; line-height: 1.8; margin-bottom: 20px;">你是個生存的平衡家,持續的留在《新民報》裡,推動地方選舉、西方啟蒙思想(ง๑ •̀_•́)ง</p>', // 階段 1:再單擊畫面第二次,追加蹦出大時代的無奈命運結局 '<p style="font-size: 1.1em; color: #cbd5e1; line-height: 1.8; border-top: 1px dashed #ffcc00; padding-top: 20px;">1930年代開始,日本準備侵略中國和東南亞,打壓左派言論,只要碰觸動搖日本殖民或軍事擴張的題目都不能寫,《新民報》的言論逐漸對日本當局失去威脅(´;ω;`)</p>' + '<br><br><p style="text-align: center; color: #ffcc00; font-weight: bold; font-size: 1.2em; letter-spacing: 2px; margin-top: 30px;">—— 第二章 留在新民報 ‧ 完 ——</p>' ]; var currentStep = 0; // 監聽全局單擊來推進大結局字句 $passage.on('click.endStay', function (e) { // 安全隔離:防範點擊到其他框架或未來可能加進來的超連結 if ($(e.target).closest('a').length > 0) { return; } // 🚀 第一次單擊:追加前半段 if (currentStep === 0) { new Wikifier($container[0], steps[0]); currentStep = 1; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第二次單擊:追加後半段時代悲劇,並把狀態轉為等待最後進入 Reference if (currentStep === 1) { new Wikifier($container[0], steps[1]); currentStep = 2; // 狀態變更:對話放完,等最後一下單擊 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第三次單擊:解綁監聽器,直接帶玩家進入 Reference 文獻 Passage if (currentStep === 2) { $passage.off('click.endStay'); // 徹底解綁 Engine.play('Reference'); // 順暢前往文獻頁面 } }); }); <</script>>
<span style="color: #ffcc00; font-weight: bold;">【第二章大結局:加入臺灣文藝聯盟——以文學為武器的知識分子】</span> <div style="margin: 20px 0; text-align: left;"> <img src="wenyi.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #ffcc00; border-radius: 4px; box-shadow: 0 0 10px rgba(0,0,0,0.5);"> </div> <!-- 唯一的動態劇情追加主容器 --> <div id="end-story-container" style="text-align: left;"></div> <<script>> $(document).one(':passageend', function () { var $container = $('#end-story-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 定義大結局文字的分段腳本(100% 你的原話劇本與表情) var steps = [ // 階段 0:單擊畫面第一次,蹦出前半段大時代背景的壓迫 '<p style="font-size: 1.1em; color: #f8fafc; line-height: 1.8; margin-bottom: 20px;">你是個時不我與的知識分子,你觀察到1930年代開始,日本準備侵略中國和東南亞,打壓左派言論,只要碰觸動搖日本殖民或軍事擴張的題目都必須符合當局利益,《新民報》的言論逐漸對日本當局失去威脅。(´;ω;`)</p>', // 階段 1:再單擊畫面第二次,追加蹦出主角加入文藝聯盟、堅守初衷的結局 '<p style="font-size: 1.1em; color: #cbd5e1; line-height: 1.8; border-top: 1px dashed #ffcc00; padding-top: 20px;">不過你仍然沒有忘記初衷,在1934年加入「臺灣文藝聯盟」繼續在《臺灣文藝》雜誌發表小說,以文學作為批判的武器。</p>' + '<br><br><p style="text-align: center; color: #ffcc00; font-weight: bold; font-size: 1.2em; letter-spacing: 2px; margin-top: 30px;">—— 第二章 加入臺灣文藝聯盟 ‧ 完 ——</p>' ]; var currentStep = 0; // 監聽全局單擊來推進大結局字句 $passage.on('click.endLiterature', function (e) { // 安全隔離:防範點擊到未來可能出現的其他框架 if ($(e.target).closest('a').length > 0) { return; } // 🚀 第一次單擊:追加前半段背景 if (currentStep === 0) { new Wikifier($container[0], steps[0]); currentStep = 1; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第二次單擊:追加後半段文學反抗,並把狀態轉為等待最後進入 Reference if (currentStep === 1) { new Wikifier($container[0], steps[1]); currentStep = 2; // 狀態變更:對話放完,等最後一下單擊 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第三次單擊:解綁監聽器,直接帶玩家進入 Reference 文獻 Passage if (currentStep === 2) { $passage.off('click.endLiterature'); // 徹底解綁 Engine.play('Reference'); // 順暢前往文獻頁面 } }); }); <</script>>
<span style="color: #00ffcc; font-weight: bold;">【第二章大結局:加入新臺灣大眾時報——激進批判的左派媒體】</span> <div style="margin: 20px 0; text-align: left;"> <img src="dazhong.png" style="max-width: 100%; max-height: 450px; object-fit: contain; border: 1px solid #00ffcc; border-radius: 4px; box-shadow: 0 0 10px rgba(0,255,204,0.3);"> </div> <!-- 唯一的動態劇情追加主容器 --> <div id="end-story-container" style="text-align: left;"></div> <<script>> $(document).one(':passageend', function () { var $container = $('#end-story-container'); var $passage = $('#passages'); if ($container.length === 0) return; // 定義大結局文字的分段腳本(100% 你的原話劇本與表情) var steps = [ // 階段 0:單擊畫面第一次,蹦出前半段高燃投身左派媒體 '<p style="font-size: 1.1em; color: #f8fafc; line-height: 1.8; margin-bottom: 20px;">你想起比你早離職的前輩創立的《新臺灣大眾時報》,在那裡,你可以大肆批判農民不平等和日本在滿州等地的擴張行為(,,・ω・,,)</p>', // 階段 1:再單擊畫面第二次,追加蹦出冷酷的現實與最終被逼隱居的結局 '<p style="font-size: 1.1em; color: #cbd5e1; line-height: 1.8; border-top: 1px dashed #00ffcc; padding-top: 20px;">但一切沒有那麼美好......1930年代開始,日本準備侵略中國和東南亞,打壓左派言論,只要碰觸動搖日本殖民或軍事擴張的題目都不能寫。<br><br>你加入的兩個月後,《新臺灣大眾時報》被日本當局解散,你只能回家當隱居的知識分子(´;ω;`)</p>' + '<br><br><p style="text-align: center; color: #00ffcc; font-weight: bold; font-size: 1.2em; letter-spacing: 2px; margin-top: 30px;">—— 第二章 加入新臺灣大眾時報 ‧ 完 ——</p>' ]; var currentStep = 0; // 監聽全局單擊來推進大結局字句 $passage.on('click.endLeft', function (e) { // 安全隔離:防範點擊到其他可能加進來的超連結 if ($(e.target).closest('a').length > 0) { return; } // 🚀 第一次單擊:追加前半段批判理想 if (currentStep === 0) { new Wikifier($container[0], steps[0]); currentStep = 1; setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第二次單擊:追加後半段幻滅結局,並把狀態轉為等待最後進入 Reference if (currentStep === 1) { new Wikifier($container[0], steps[1]); currentStep = 2; // 狀態變更:對話放完,等最後一下單擊 setTimeout(function () { window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }); }, 50); return; } // 🚀 第三次單擊:解綁監聽器,直接將玩家帶入 Reference 文獻 Passage if (currentStep === 2) { $passage.off('click.endLeft'); // 徹底解綁 Engine.play('Reference'); // 順暢前往文獻頁面 } }); }); <</script>>
<div style="background-color: #111111; border: 1px solid #ffcc00; border-radius: 6px; padding: 25px; margin-bottom: 35px; text-align: left; box-shadow: 0 4px 15px rgba(0,0,0,0.5);"> <h2 style="color: #ffcc00; font-size: 1.3em; margin-top: 0; margin-bottom: 25px; border-bottom: 2px solid #ffcc00; padding-bottom: 5px; letter-spacing: 2px;">🎬 製作團隊名單 / Credits</h2> <div style="display: flex; flex-wrap: wrap; gap: 20px; justify-content: space-between; margin-bottom: 30px; text-align: center;"> <div style="flex: 1; min-width: 130px; background-color: #1a1a1a; border: 1px solid #333; border-radius: 6px; padding: 15px; box-sizing: border-box;"> <img src="liuyin.png" style="width: 80px; height: 80px; object-fit: contain; border-radius: 50%; border: 2px solid #ffcc00; background-color: #222; margin-bottom: 10px;"> <div style="color: #ffcc00; font-weight: bold; font-size: 1.1em;">流寅</div> <div style="color: #00ffcc; font-size: 0.85em; margin-top: 3px; line-height: 1.4;"> 史料蒐集 <br> 腳本劇情設計 </div> </div> <div style="flex: 1; min-width: 130px; background-color: #1a1a1a; border: 1px solid #333; border-radius: 6px; padding: 15px; box-sizing: border-box;"> <img src="lurenjia.png" style="width: 80px; height: 80px; object-fit: contain; border-radius: 50%; border: 2px solid #ffcc00; background-color: #222; margin-bottom: 10px;"> <div style="color: #ffcc00; font-weight: bold; font-size: 1.1em;">路人甲</div> <div style="color: #00ffcc; font-size: 0.85em; margin-top: 3px; line-height: 1.4;"> 史料蒐集 <br> 腳本劇情設計<br>腳本校對與整理<br>美術設計 </div> </div> <div style="flex: 1; min-width: 130px; background-color: #1a1a1a; border: 1px solid #333; border-radius: 6px; padding: 15px; box-sizing: border-box;"> <img src="lamei.png" style="width: 80px; height: 80px; object-fit: contain; border-radius: 50%; border: 2px solid #ffcc00; background-color: #222; margin-bottom: 10px;"> <div style="color: #ffcc00; font-weight: bold; font-size: 1.1em;">澀谷辣妹</div> <div style="color: #00ffcc; font-size: 0.85em; margin-top: 3px; line-height: 1.4;"> 史料蒐集 <br> 腳本劇情設計<br>美術設計 </div> </div> <div style="flex: 1; min-width: 130px; background-color: #1a1a1a; border: 1px solid #333; border-radius: 6px; padding: 15px; box-sizing: border-box;"> <img src="su.png" style="width: 80px; height: 80px; object-fit: contain; border-radius: 50%; border: 2px solid #ff00cc; background-color: #222; margin-bottom: 10px;"> <div style="color: #ffcc00; font-weight: bold; font-size: 1.1em;">期末都沒在睡<br>蘇小姐</div> <div style="color: #00ffcc; font-size: 0.85em; margin-top: 3px; line-height: 1.4;">遊戲製作與界面設計</div> </div> </div> <h2 style="color: #ffcc00; font-size: 1.3em; margin-bottom: 15px; border-bottom: 2px solid #ffcc00; padding-bottom: 5px; letter-spacing: 2px;">✨ 特別感謝 / Special Thanks</h2> <div style="line-height: 1.8; color: #cbd5e1; font-size: 0.95em; padding-left: 5px; font-style: italic;"> 💖 感謝同學們不吝於提供意見<br> 🙏 感謝陳翠蓮、許雅惠老師的鼓勵與指導 </div> </div> <span style="color: #ffcc00; font-weight: bold; font-size: 1.4em;">【 遊戲參考文獻與引註資料 】</span> <p style="color: #cbd5e1; font-size: 0.9em; margin-top: 5px; font-style: italic;">(文獻編排與註腳格式參考《臺大歷史學報》撰稿說明)</p> <hr style="border: 0; border-top: 1px solid #ffcc00; margin: 20px 0;"> <div style="text-align: left; line-height: 1.8; color: #f8fafc; font-size: 0.95em;"> <h2 style="color: #ffcc00; font-size: 1.2em; border-left: 4px solid #ffcc00; padding-left: 10px; margin-top: 30px;">一、第一章參考資料</h2> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(一)第一關:自由戀愛論</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 1. 中桐確太郎,〈我的戀愛觀〉,《臺灣民報》,1924年5月11日,第13版。<br> 2. 車夫,〈戀愛的進化觀〉,《臺灣民報》,1924年6月21日,第11版。<br> 3. 帆足理一郎,〈自由戀愛和運命戀愛〉,《臺灣民報》,1924年7月1日,第6版。<br> 4. 〈戀愛的今昔觀:一個情場失意的朋友自述〉,《臺灣民報》,1924年7月1日,第10版。<br> 5. 洪郁如著,吳佩珍、吳亦昕譯,《近代台灣女性史:日治時期新女性的誕生》,臺北:臺大出版中心,2017。<br> <strong style="color: #ffcc00; display: block; margin-top: 10px;">◎ 圖片來源:</strong> 鄉原古統,〈臺北名所繪畫十二景 榮町通〉,國家文化記憶庫(台北市立美術館典藏),網址:<a href="https://tcmb.culture.tw/zh-tw/detail?keyword=%E6%96%B0%E5%85%AC%E5%9C%92&limit=24&offset=0&sort=relevance&order=desc&isFuzzyMode=false&query=%7B%22startYear%22:%221895%22,%22endYear%22:%221945%22,%22rights%22:%5B%22CC%20BY-NC%22,%22CC%20BY-NC-SA%22,%22CC%20BY-NC-ND%22%5D%7D&indexCode=Culture_Object&id=501883&recOffset=11" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。 </div> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(二)第二關:城隍廟祭典</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 1. 醒民,〈換新衣裳〉,《臺灣民報》,1924年2月11日,第1版。<br> 2. 〈怎樣迷信鬼神〉,《臺灣民報》,1924年6月21日,第14版。<br> 3. 文杞,〈迷信也可獎勵和提倡嗎?〉,《臺灣民報》,1924年10月1日,第6版。<br> 4. 前非,〈讀文杞君那篇破除迷信的以後〉,《臺灣民報》,1924年11月21日,第16版。<br> 5. 林佩欣,〈《台灣民報》中關於民間宗教活動的論述——兼論「霸權與反抗運動」理論〉,《政大史粹》,第2期(臺北,2000年6月),頁147-159。<br> <strong style="color: #ffcc00; display: block; margin-top: 10px;">◎ 圖片來源:</strong> 1. 〈大稻埕霞海城隍廟祭典〉,時空旅行社(國立臺灣歷史博物館典藏),網址:<a href="https://curation.culture.tw/curation/CollectionItem?ListId=67&Id=57634&A=68&Q=%25E9%259C%259E%25E6%25B5%25B7%25E5%259F%258E%25E9%259A%258D%25E5%25BB%259F&QF=&Type=&Source=&PageSize=12&P=2&ListMode=gridMode-30-50&HQ=0" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。<br> 2. 倪蔣懷,〈大稻埕一景〉,國家文化記憶庫(國立臺灣美術館典藏),網址:<a href="https://tcmb.culture.tw/zh-tw/detail?keyword=%E5%A4%A7%E7%A8%BB%E5%9F%95&limit=72&offset=0&sort=relevance&order=desc&isFuzzyMode=false&query=%7B%22startYear%22:%221895%22,%22endYear%22:%221945%22,%22format%22:%22%E5%9C%96%E5%83%8F%22,%22rights%22:%5B%22PDM%22,%22CC0%22,%22OGDL%22,%22CC%20BY%22,%22CC%20BY-SA%22,%22CC%20BY-ND%22%5D%7D&indexCode=MOCCOLLECTIONS&id=12000021017&recOffset=5" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。 </div> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(三)第三關:治警事件</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 1. 〈希望施行行政裁判法於臺灣〉,《臺灣民報》,1924年2月21日,第1版。<br> 2. 〈臺灣的自治熱(治安警察法違反事件的政治觀)〉,《臺灣民報》,1924年4月21日,第5版。<br> 3. 〈治安警察法違反嫌疑事件之公判 檢事求刑〉,《臺灣民報》,1924年8月11日,第3版。<br> 4. 〈臺灣議會期成同盟會 治安警察法違反嫌疑的公判〉,《臺灣民報》,1924年9月1日,第2版。<br> 5. 〈臺灣議會期成同盟會 治安警察法違反嫌疑事件第二審公判〉,《臺灣民報》,1924年11月11日,第11版。<br> 6. 〈治警事件第二審判決〉,《臺灣民報》,1924年11月21日,第3版。<br> 7. 劍如,〈國家的意思與犯罪的檢舉(強使人民陷於罪科、不是國家的真意)〉,《臺灣民報》,1924年12月11日,第1版。<br> 8. 〈時論拔萃 臺灣總督府的無理解 治安警察法違反事件(大阪每日新聞社說)〉,《臺灣民報》,1924年12月11日,第7版。<br> 9. 錫舟,〈確信臺灣議會設置的實現〉,《臺灣民報》,1925年2月1日,第1版。<br> 10. 〈臺灣議會期成同盟會 治安警察法違反嫌疑事件 第三審公判〉,《臺灣民報》,1925年2月11日,第5版。<br> 11. 〈治安警察法與新聞紙法〉,《臺灣民報》,1925年12月27日,第9版。<br> 12. 〈臺灣議會期成同盟會傳單〉,開放博物館(中央研究院臺灣史研究所檔案館典藏),網址:<a href="https://openmuseum.tw/muse/digi_object/d77bde5a63ae98f95aab23789e4ee401" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。<br> <strong style="color: #ffcc00; display: block; margin-top: 10px;">◎ 圖片來源:</strong> 〈治警事件出獄紀念照片〉,開放博物館(財團法人蔣渭水文教基金會典藏),網址:<a href="https://openmuseum.tw/muse/digi_object/e44daa4c7bbf3d73d8d1489ebb9514fd" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。 </div> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(四)第四關:電報投稿</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 莊勝全,〈《臺灣民報》的生命史:日治時期臺灣媒體的報導、出版與流通〉,臺北:國立政治大學臺灣史研究所博士論文,2017。 </div> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(五)第五關:二林蔗農事件</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 1. 〈蔗農組合員の盲動 林糖との衝突事件〉,《臺南新報》,1925年10月25日,第2版。<br> 2. 〈林本源製糖會社暴行農民檢擧さる 六十餘名北斗郡役所に〉,《臺南新報》,1925年10月25日,第11版。<br> 3. 〈林糖紛擾事件眞相〉,《臺灣民報》,1925年11月15日,第4版。<br> 4. 〈第一百二十二號要目 二林事件公判號〉,《臺灣民報》,1926年9月12日,第1版。<br> 5. 〈第一百五十三號 二林事件第二審公判號〉,《臺灣民報》,1927年4月17日,第1版。<br> 6. 周馥儀,〈開展公共領域•擊向糖業帝國主義──論台灣知識份子的糖業書寫(1920-1930年代)〉,臺南:國立成功大學台灣文學研究所碩士論文,2007。<br> 7. 陳翠蓮,《台灣人的抵抗與認同:一九二〇~一九五〇》,臺北:遠流出版公司,2008。<br> 8. 李毓嵐,〈歷史記憶的現身與缺席:以二林事件中的蔗農組合幹部與蔗農為例〉,《文史臺灣學報》,第5期(臺北,2012年12技术),頁207–232。<br> 9. 許丙手稿、許伯埏補述、李柏亨翻譯、許玉暄監修,《實業家的二林:林本源製糖關係事件》,臺北:蒼璧出版有限公司,2021。<br> 10. 吳聰敏,《臺灣經濟四百年》,臺北:春山出版,2023。<br> <strong style="color: #ffcc00; display: block; margin-top: 10px;">◎ 圖片來源:</strong> 1. 〈甘蔗園〉,開放博物館(原圖收錄於臺灣寫真會編纂,《臺灣寫真帖》第1卷第10集,臺南:臺灣寫真會,1915),網址:<a href="https://plaza.openmuseum.tw/muse/digi_object/38fc4f63c38460e2256f79f84863367a" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。<br> 2. 〈林本源製糖株式會社〉,開放博物館(臺中市政府文化局典藏),網址:<a href="https://openmuseum.tw/muse/digi_object/58f9471ab1497676aef41fb2570dfbd2" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。<br> 3. 〈二林蔗農事件二審公判辯護律師與相關人員合影〉,開放博物館(國立臺灣師範大學典藏),網址:<a href="https://tcmb.culture.tw/zh-tw/detail?indexCode=Culture_Event&id=612847" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。<br> 4. 〈二林蔗農事件第一回公判攝影〉,開放博物館(國立臺灣師範大學典藏),網址:<a href="https://openmuseum.tw/muse/digi_object/b3f4a787a18984fcc536da199d536948" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。 </div> <h2 style="color: #ffcc00; font-size: 1.2em; border-left: 4px solid #ffcc00; padding-left: 10px; margin-top: 40px;">二、第二章參考書目</h2> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(一)第六關:民報改組</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 1. 〈創刊詞〉,《臺灣民報》,1923年4月15日,第2版。<br> 2. 〈臺灣議會請願委員一部歸臺〉,《臺灣民報》,1925年4月1日,第5版。<br> 3. 〈第六十七號臨時增刊號要目〉,《臺灣民報》,1925年8月26日,第1版。<br> 4. 賴婉蓉,〈謝春木及其作品研究〉,臺北:國立臺灣師範大學臺灣語文學系碩士論文,2010。<br> 5. 莊勝全,〈《臺灣民報》的生命史:日治時期臺灣媒體的報導、出版與流通〉,臺北:國立政治大學臺灣史研究所博士論文,2017,頁76-101。<br> <strong style="color: #ffcc00; display: block; margin-top: 10px;">◎ 圖片來源:</strong> 〈臺灣新民報社〉,臺灣舊照片資料庫(國立臺灣大學圖書館典藏),網址:<a href="https://dl.lib.ntu.edu.tw/s/photo/item/503274#?c=&m=&s=&cv=&xywh=-50%2C-101%2C1690%2C1231" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。 </div> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(二)第七關:霧社事件</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 1. 〈空前的大兇變 治番政策的危機?〉,《臺灣新民報》,1930年11月1日,週刊第3版。<br> 2. 〈蕃變的經過〉,《臺灣新民報》,1930年11月8日,週刊第3版。<br> 3. 〈本報記者 埔里訪問記〉,《臺灣新民報》,1930年11月8日,週刊第3版。<br> <strong style="color: #ffcc00; display: block; margin-top: 10px;">◎ 圖片來源:</strong> 1. 〈石川巡查の卒ゆる味方番白缽卷隊〉,Wikimedia Commons,原圖收錄於海老原耕平,《霧社討伐寫真帳》,台北:共進商會,1931,網址:<a href="https://commons.wikimedia.org/wiki/File:Pro-Japanese_aborigines_assembly_in_the_Musha_incident.jpg?uselang=zh-tw#%E6%8E%88%E6%AC%8A%E6%A2%9D%E6%AC%BE;" target="_blank" style="color: #00ffcc;">點擊前往連結</a>(2026年6月6日檢索)。<br> 2. 〈埔里に飛行場を急設せる屏東飛行聯隊〉,Wikimedia Commons,原圖收錄於佐藤政藏編,《第一第二霧社事件誌》,台中:實業時代社中部支社出版部,1931,網址:<a href="https://commons.wikimedia.org/wiki/File:8th_Air_Squadron_of_Imperial_Japanese_Army_assigned_to_reconnaissance_mission_at_Hori,_soon_after_the_incident_in_Musha_was_reported_1930.jpg?uselang=zh-tw;" target="_blank" style="color: #00ffcc;">點擊前往連結</a>(2026年6月6日檢索)。<br> 3. 〈モーナ・ルダオ (中央)と霧社蕃の有力者〉,Wikimedia Commons,原圖收錄於海老原耕平,《霧社討伐寫真帳》,台北:共進商會,1931,網址:<a href="https://commons.wikimedia.org/wiki/File:Mona_Rudao_and_Seediq_tribal_leaders.jpg?uselang=zh-tw" target="_blank" style="color: #00ffcc;">點擊前往連結</a>(2026年6月6日檢索)。 </div> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(三)第八關:電報</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 莊勝全,結構,〈《臺灣民報》的生命史:日治時期臺灣媒體的報導、出版與流通〉,臺北:國立政治大學臺灣史研究所博士論文,2017。 </div> <h3 style="color: #00ffcc; font-size: 1.05em; margin-left: 15px; margin-top: 20px;">(四)第二章結局</h3> <div style="margin-left: 30px; padding-left: 15px; border-left: 1px dashed #444;"> <strong style="color: #ffcc00;">◎ 文獻:</strong><br> 1. 〈創刊號目次〉,《新臺灣大眾時報》,1920年12月。<br> 2. 〈創刊號目次〉,《臺灣文藝》,創刊號(臺灣文藝聯盟,1934年)。<br> 3. 河原功著,張文薰、林蔚儒、鄒易儒譯,《被擺佈的臺灣文學:審查與抵抗系譜》,臺北:聯經出版事業公司,2017。<br> <strong style="color: #ffcc00; display: block; margin-top: 10px;">◎ 圖片來源:</strong> 〈臺灣新民報社成員合影〉,國家文化記憶庫,網址:<a href="https://cmsdb.culture.tw/event/E0DE09E6-4FC7-4666-9F86-D4D1144BE264" target="_blank" style="color: #00ffcc; word-break: break-all;">點擊前往連結</a>(2026年6月6日檢索)。 </div> </div> <hr style="border: 0; border-top: 1px solid #ffcc00; margin: 30px 0;"> <div style="text-align: center; margin-top: 20px;"> <<button "返回遊戲入口" "入口">><</button>> </div>