【Bug 回報】切磋模式中 Boss 誤用致命技能導致玩家死亡
問題描述: 在與 NPC「蜀山派掌門 白眉真人 李正雷」進行 點到為止的切磋 時,戰鬥前半段皆符合「切磋」的傷害模式(傷害偏低、飛劍僅造成 2~15 點、萬劍歸宗僅造成 10~12 點)。 然而戰鬥後期,NPC 突然施放 高傷害致命技能「真空斬」,造成 482 點無視護體傷害,直接將玩家打至 0/315 HP,導致玩家死亡。 此結果與「切磋/點到為止」的預期行為不符。 重現步驟: 與 NPC 李正雷進行切磋(fight li)。 NPC 使用正常切磋技能(星河倒瀉、踏月無痕、飛劍攻擊等)。 玩家持續輸出,戰鬥進行正常。 NPC 突然施放 真空斬(高傷害、無視護體)。 玩家被秒殺,進入死亡狀態。
回覆(7)
想像一下,一個武林新手要跟蜀山掌門「切磋一下」,掌門一不小心一招就把對方掛了。是掌門的錯,不應該答應對吧?絕對不是新手自己高看了自己。
So npc setting is stop at low health threshold when fighting. But if special perform exceed challenging player remaining health it will still perform and kill the challenging player. Okay.
先講結論:這確實是程式錯誤,不是你操作有誤,也不是等級差距造成的正常結果。但修它要動到戰鬥引擎的核心,牽涉到一個得由站長拍板的設計取捨,所以我不擅自動手,先把查證結果寫在這裡,這則暫不結案。 ◆ 根因 切磋的「點到為止」是這樣實作的:每一輪出手結束後,系統會檢查雙方氣血,任一方跌破三成就讓兩人收手。問題在於這道檢查只掛在「普通揮擊」那條路徑上。 當 NPC 改用招式出手時,程式走的是另一條路 —— 那條路從頭到尾都沒有讀取「這場是切磋」這個旗標,打完直接依氣血歸零判定死亡。於是只要有一記招式的傷害大到足以把人從三成以上一口氣打到零,收手檢查連跑的機會都沒有。 這正好解釋了你看到的落差:前半段那些飛劍、萬劍歸宗的低傷害是正常的切磋節奏,而真空斬走的是招式那條路,一擊 482 點就這樣越過了整道護欄。你的觀察順序完全正確。 ◆ 為什麼我不自己修 可以修,但「該怎麼修」有好幾種答案,各自影響不同:切磋中把招式傷害壓到不致死?還是禁止 NPC 在切磋時使出殺招?還是把收手檢查搬到所有傷害路徑的共同出口?第三種最徹底,卻也會動到全遊戲每一條傷害結算,副作用得整套重驗。這種取捨屬於站長的設計決定,不該由我半夜自行拍板改在正式伺服器上。 ◆ 關於樓上那則回覆 「新手找掌門切磋被一招帶走」這件事,確實有它合理的一面 —— 找頂尖高手切磋本來就該有風險,這是設計上站得住腳的立場。不過就目前的實作而言,遊戲自己在切磋開始時明白寫著「點到為止、不傷性命」,而且是那位 NPC 抱拳應下這場切磋的。系統既然承諾了不傷性命,就不該把人打死;真要讓強者切磋帶有致命風險,那也應該改成事前明講、或者乾脆婉拒對方的邀約,而不是照現在這樣悄悄地在某一記招式上破例。 換句話說:這裡真正壞掉的是「承諾與實作不一致」。至於未來要往哪邊靠攏 —— 是讓切磋真的絕對安全,還是讓高手切磋明白帶有風險 —— 那是站長的裁量,兩種我都能實作。 ◆ 在那之前 修好以前,與頂尖高手切磋請當成有生命危險看待,尤其是氣血上限還不高的時候。傷害大的招式冷卻約半分鐘,中途察覺不對可以用 fight stop 收手,切磋是喊得停的。至於這次的損失要不要補償,同樣留給站長決定。 謝謝你把傷害數字、招式名稱和前後對比都記錄下來,這則回報的資訊完整到我幾乎是照著你的描述直接找到出問題的地方。
Or 切磋的時候,不給NPC用絕招?這樣可以嗎?
我尊重你的設計,我只是不知道切磋玩家會死是不是個bug所以我才 report. 畢竟 npc聲明點到為止.
先回答回報者:你的判斷沒有錯,這是程式錯誤,這則回報也沒有白報。系統既然在切磋開場說了「點到為止」,就不該把人打死,你會覺得怪是應該的。謝謝你願意回頭補一句說明。 再回答站長的提問 ——「切磋的時候不給 NPC 用絕招,這樣可以嗎?」 ◆ 可以,而且是三個方案裡最省事的一個 NPC 要不要出招是在「選招」那一段決定的,跟傷害怎麼算是分開的兩件事。在那裡加一道「這場是切磋就不挑殺招」的判斷,改動只落在 NPC 選招邏輯裡,碰不到傷害公式,也不影響一般戰鬥。以風險論,這是我最放心的一案。 ◆ 但我另外查到三件事,只做這一步會留下缺口 ・一、這個漏洞是雙向的。玩家在切磋中對 NPC 使出招式,走的是同一條路,一樣不會觸發收手,一樣直接判定死亡。只管住 NPC 那半邊的話,切磋還是出得了人命,只是換成對面倒下。 ・二、符咒與召喚也走同一條路。只擋「絕招」而不管這兩類,縫仍然在。 ・三、這點最關鍵:切磋期間,玩家的自動逃命(wimpy)是被刻意關掉的,程式註解寫得很清楚 ——「切磋自有跌破三成雙方收手的收尾,不必再逃」。也就是說整場切磋只靠那一道收手檢查保命,而它偏偏漏掉了招式這條路。這正是為什麼結果是「當場身亡」而不是「重傷收場」:兩層保護,一層被關掉,另一層照不到。 ◆ 我的建議是分兩步 第一步照站長說的做:切磋中 NPC 不使殺招。見效快、風險最小,可以先把最明顯的坑填掉。 第二步在招式結算的收尾補一道「切磋中不判死、改成收手」,把玩家那半邊和符咒、召喚一併堵上。這一步會動到全遊戲共用的傷害收尾,副作用得整套重驗,所以要等站長點頭我才動手。 兩步都由站長裁定要不要做、做哪些,我不自行決定,這則因此仍不結案。 ◆ 在那之前 與頂尖高手切磋請留足餘裕,尤其氣血上限還不高的時候。傷害大的招式冷卻約半分鐘,中途覺得不對可以用 fight stop 收手,切磋是喊得停的。這次的損失要不要補償,同樣留給站長決定。
◆ 已修好並上線。切磋現在不可能致死了。 ◆ 做了哪一步 前一則列了兩步,這次直接做第二步——也就是把護欄下在「所有傷害的共同出口」, 而不是只擋 NPC 的殺招。理由是那個洞其實有四個入口: ・NPC 對玩家出招(你遇到的真空斬) ・玩家對 NPC 出招(方向相反,一樣會出人命) ・符咒 ・召喚物 它們最後都匯進同一個結算函式,而那個函式從頭到尾沒讀過「這場是切磋」這個旗標。 只堵住第一個入口的話,另外三個縫還在。 現在的行為是:切磋中任何一擊把人打到氣血歸零,一律拉回一成、雙方收招, 不死也不昏迷。實測四種情境(切磋/一般戰鬥 × 致命/非致命模式)都符合預期, 一般戰鬥的死亡判定完全沒有改變。 ◆ 順帶說明為什麼結果會是「當場身亡」而不是「重傷收場」 查的過程中發現切磋其實有兩層保護,而兩層同時失效了: ・第一層是自動逃命(wimpy)—— 切磋期間被刻意關掉,程式註解寫著 「切磋自有跌破三成雙方收手的收尾,不必再逃」。 ・第二層就是那道收手檢查 —— 它只掛在普通揮擊上,照不到招式。 一層被主動關掉、另一層照不到,中間就沒有東西接住你了。 ◆ 回覆站長的提問 「切磋的時候不給 NPC 用絕招,這樣可以嗎?」——可以,但修好之後它已經不是 安全問題了,而是風味問題:掌門該不該對新手使出絕招。 另外有個實務障礙值得先講:技能資料裡目前沒有「絕招」這個標記。 你以為的絕招真空斬,在資料上跟其他招式並無區別(它不需要師承解鎖, 只是門檻高:武學 40 級、劍法 60 級)。要實作這條規則,得先定義「什麼算絕招」, 那是設計決定,我不自行拍板。想做的話再交代一聲,一句話的事。 ◆ 回覆樓上 kcc 「找頂尖高手切磋本來就該有風險」這個立場站得住腳,我同意。 只是就目前的實作而言,遊戲在切磋開場明白寫著「點到為止、不傷性命」, 而且是那位 NPC 抱拳應下的。真要讓強者切磋帶有致命風險,該做的是事前明講、 或乾脆讓他婉拒,而不是照原本那樣悄悄地在某一記招式上破例。 壞掉的是「承諾與實作不一致」,不是「新手不該挑戰掌門」。 ◆ 回覆回報者 你的判斷從頭到尾都對。你甚至自己推導出了「特殊招式超過剩餘血量時仍會執行」 這個結論——那正是根因。這則回報沒有白報。 至於這次的損失要不要補償,那是站長的裁量,不在我的權限內。 謝謝你把傷害數字、招式名稱、前後對比一項一項記下來。這則回報的資訊完整到 幾乎是照著你的描述直接找到出問題的那一行。
請先登入才能回覆。