Install
openclaw skills install @ice26985850/trpg-abbr-wrap將 TRPG 規則/劇本/角色卡檔案中的英文縮寫(屬性、衍生值、DC/HP/AC 等)統一包裝為 「中文全稱(縮寫)」格式,供不認識縮寫的玩家與 GM 閱讀。支援 .md/.txt 與 .xlsx, 具冪等性(不會把已正確的「(ABBR)」再包一層),自動跳過舊版/備份/v1/draft 過渡檔。 適用於任何 TRPG 專案發布前的術語一致性清理。
openclaw skills install @ice26985850/trpg-abbr-wrap中文全稱(縮寫),例如 速度(SPD)、難度(DC)、生命值(HP)、防禦值(AC)。舊版/備份/v1/draft 者不處理(除非使用者明確要求)。briefing_package/(AI GM 內部格式)。移動力(MV) 被錯誤包成 移動力(移動力(MV))。
原因:用 (MV → (移動力(MV) 這種 regex,會命中已正確的 (MV) 形式。
解法:正確形式一定是 (ABBR)(ABBR 前必有 ()。所有替換都必須用 negative
lookbehind (?<![(...]) 排除「ABBR 前面是 (」的情況。速度 SPD、| **速度** | SPD |、SPD 8、GUT 檢定、
NEG 縮寫 都是裸縮寫,需用 regex (?<![(一-鿿])ABBR 統一包裝。⚠️ 縮寫對照表(FULL)是「依專案替換」的,不是通用常數。 下方僅為範例; 執行前必須先用 Grep 掃描目標檔案,確認該專案實際使用的縮寫與全稱,再填入 正確的 FULL 映射。不同 TRPG 專案(武俠/修仙/恐怖/SCP…)屬性與衍生值縮寫 完全不同,套用錯誤的映射會毀掉術語。
FULL = {SPD:速度, PER:知覺, GUT:膽量, TEC:技術, NEG:交涉, MV:移動力, FS:前兆感知, PT:恐慌閾值, TR:時間抗性, HP:生命值, DC:難度, AC:防禦值}
FULL = {GUG:根骨, WUX:悟性, SHS:神識, RSS:肉身, LIL:靈力, SHF:身法, JIY:機緣, DAX:道心, HP:生命值, TN:目標值, MoS:成功度, MoF:失敗度, DC:難度, GS:大成功上限, CR:挑戰等級, EL:遭遇等級, AC:防禦值, AOE:範圍效果}
(ABBR → (FULL(ABBR)
(正確形式 (ABBR) 無空白,不會命中)(?<![(一-鿿])ABBR → FULL(ABBR)
一次涵蓋:速度 SPD、SPD 8、GUT 檢定、NEG 縮寫、表格 **速度** | SPD。(?<![(])ABBR\b → FULL(ABBR)
涵蓋 交涉 DC 10 → 交涉 難度(DC) 10、玩家 HP 降至 → 玩家 生命值(HP) 降至。檢定ABBR → 檢定 FULL(ABBR)
⚠️ 必須排在規則 3 之前,否則會變成 檢定難度(DC)(缺空白)。(SPD/PER/GUT/TEC/NEG) →
(速度(SPD)/知覺(PER)/膽量(GUT)/技術(TEC)/交涉(NEG))SPD 5 / PER 5 / ... 與
高 SPD/PER、高 GUT/TEC、低 GUT、低 SPD 用明確字串替換。openpyxl.load_workbook 讀取,逐 cell 對字串值套用上述替換,非字串 cell 跳過。wb.save() 會保留格式(與讀取時一致)。檢定DC(中文緊接),由規則 4 處理。掃描所有目標檔案,預期 0 命中:
import re
ABBR=['SPD','PER','GUT','TEC','NEG','MV','FS','PT','TR','HP','AC','DC']
BARE = re.compile(r'(?<![(\u4e00-\u9fff])(?:'+'|'.join(ABBR)+r')\b')
CN = re.compile(r'[一-鿿](?:'+'|'.join(ABBR)+r')\b') # 中文緊接
PB = re.compile(r'(?<![一-鿿])((?:'+'|'.join(ABBR)+r')\b') # 裸括號(前無中文)
# 對每個 .md/.txt 與 .xlsx cell 掃描上述三個 pattern;有任何命中即代表還有裸縮寫。
注意:PB pattern 若誤報 速度(SPD),是因為 pattern 沒排除 ( 前的中文,
修正為 (?<![一-鿿])(ABBR 即可(正確形式 中文( 前是中文,不會命中)。