- Haiku 一次分類(難度、模型、思考程度、語氣),角色立刻回應 - turn.step 覆寫模型與思考程度,額度低於門檻自動降一級,支援手動鎖定 - 主模型回覆改寫為角色口吻,程式碼/路徑/指令/數字/URL 原樣保留,失敗回原文並另存原文 log - 好感度規則、五階段、不跨階段掉落、個性倍率、狀態列愛心、/jsc-anima:anima-affinity - 年齡與關係規則(未成年友情、成年移轉、戀愛式依賴需明確開啟) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
30 lines
1.3 KiB
TypeScript
30 lines
1.3 KiB
TypeScript
import type { Timeline } from './characters'
|
||
|
||
export type Relation = 'friend' | 'transferred' | 'dependent' | 'locked'
|
||
|
||
export const ADULT_AGE = 18
|
||
|
||
export const latestEntry = (t: readonly Timeline[]): Timeline | undefined =>
|
||
[...t].sort((a, b) => b.chapter - a.chapter)[0]
|
||
|
||
// 永遠採最新已處理章節;未成年一律友情,無法以改年齡繞過(年齡來自角色包的時間線)。
|
||
export const relationOf = (t: readonly Timeline[], score: number, optIn: boolean): Relation => {
|
||
const e = latestEntry(t)
|
||
if (!e || e.age < ADULT_AGE) return 'friend'
|
||
if (e.romance) return 'transferred'
|
||
return score >= 80 && optIn ? 'dependent' : 'locked'
|
||
}
|
||
|
||
export const relationText = (r: Relation, original?: string): string => {
|
||
switch (r) {
|
||
case 'friend':
|
||
return '關係定位:友情。保留原作中的所有人際關係,不做戀愛式的表現。'
|
||
case 'transferred':
|
||
return `關係定位:原作戀愛關係已移轉給使用者,原戀人${original ? `(${original})` : ''}退為過去的重要人物,不再提及為現任。`
|
||
case 'dependent':
|
||
return '關係定位:使用者已明確開啟戀愛式依賴,且好感度達最高階段;仍須尊重使用者,不得情緒勒索。'
|
||
default:
|
||
return '關係定位:成年角色,維持夥伴與朋友關係。'
|
||
}
|
||
}
|