# eeDice - DC 擲骰機器人 專案開發:Elantris 客服群組:https://discord.gg/Ctwz4BB 說明文件:https://hackmd.io/@eelayntris/eedice 邀請連結:[`eeDice#8838`](https://discord.com/api/oauth2/authorize?client_id=898765970267570186&permissions=274877926464&scope=bot) 近期更新:2024-04-20 > 幸運女神賜我神力! [name=eeDice][color=#5c7cfa] ![eeDice profile](https://i.imgur.com/v5Yuy36.png) ###### tags: `discord` `trpg` `dice` [TOC] --- ## 功能特色 遊玩 TRPG 時很常透過骰子掌控遊戲中的隨機性以增添樂趣,這隻機器人可以幫忙丟骰子並且計算這些算式。支援各種骰子語法,不管你是 GM、DM、KP 都能輕鬆使用,減少計算負擔讓玩家都能更沉浸在劇情當中。 ## 指令說明 - 斜線指令 - 以下指令語法中後面有冒號的單字是「參數」 - 記得開啟 Discord 使用者設定中的「文字&圖片」>「在打字時預覽表情符號、提及以及 markdown 語法」 - 可以複製指令語法後貼到 DC 訊息輸入框,再選擇對應的機器人指令 - 文字訊息 :warning: - 目前機器人沒有讀取訊息內容的權限,無法使用文字訊息觸發機器人指令 ### 擲骰運算 /roll 計算一個四則運算的算式,並將其中的骰子語法替換成擲骰結果。 ![command roll](https://i.imgur.com/501ileY.png) **指令語法:** - `/roll expression: times:` - `expression`:算式 - `times`:計算次數 **使用範例:** ``` 丟一顆六面骰並且 +2: /roll expression:d6 + 2 經典 DnD 創角擲骰決定六個屬性值,「重複六次」的「丟四顆六面骰後移除一顆最低點數並加總」: /roll expression:4d6d1 times:6 假設某個角色的攻擊技能是個複雜的算式: /roll expression: (2d6 + 2) * 2 + d4 假設某個角色有傷害抗性,傷害減半但還是要向上取整: /roll expression:Math.ceil(3d6 / 2) ``` **備註說明:** - 骰子語法 - 完整語法請參考 [Dice Expressions](https://wiki.rptools.info/index.php/Dice_Expressions),目前已實作完 General Dice Expressions 的部分 - 基礎骰子語法 `XdY`:`X` 顆 `Y` 面骰,其中 `X` 省略時預設為 `1` - 支援 js 內建 [Math 函數](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math) - 常用的無條件捨去 `Math.floor()`、無條件進位 `Math.ceil()` - 各種限制 - 計算次數最多 10 次 - 算式長度最多 50 個字元 - 一個算式內最多 10 個骰子語法 - 骰子最大面數為 d100、同一顆骰子最多擲 20 次(`20d100`) - 這個指令還滿常出問題的,請多多回報給開發者 <(\_ \_)> ### 擲骰紀錄 /trace 查看一則指令結果的詳細資訊。當有人要求驗骰的時候可以給他看每個指令產生的擲骰紀錄、指令發生錯誤時可以查看錯誤訊息。 ![command trace](https://i.imgur.com/iZkQjpv.png) **指令語法:** - `/trace target:` - `target`:指定訊息的連結或 ID **使用範例:** ``` 複製機器人回應的訊息連結: /trace target:https://discord.com/channels/225584441026805760/225660570857111552/908572876058271784 電腦版按住 shift 後選擇複製 ID: /trace target:225660570857111552-908572876058271784 開啟開發者模式後複製訊息 ID: /trace target:908572876058271784 ``` **備註說明:** - 指定訊息一直想不到更好的做法,總之先放了這幾種方式 - 請選擇「機器人回應的訊息」,而非使用者輸入的指令訊息 ### 隨機抽選 /pick 隨機抽選訊息內容中的其中一個選項。 **指令語法:** - `/pick choices` - `choices` 各個選項,以空白分隔 **使用範例:** ``` /pick choices:紅色 橘色 黃色 綠色 藍色 紫色 /pick choices:可以色色 不可以色色 ``` **備註說明:** - 選項至少要有 2 個 - 可以使用 Trace 指令查看總共有幾個選項、選了第幾個選項 ### 隨機順序 /shuffle 將一連串項目以隨機順序列出。 **指令語法:** - `/shuffle items:` - `items`:各個項目,以空白分隔 **使用範例:** ``` /shuffle items:漢堡 薯條 可樂 ``` **備註說明:** - 項目至少要有 2 個 - 可以使用 Trace 指令查看各個項目洗牌前後的順序