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 '關係定位:成年角色,維持夥伴與朋友關係。' } }