# 天氣自然演變規則 > 🔴 重要:天氣演變必須基於客觀時間累積、當前位置切換和骰子判定,禁止憑感覺決定天氣變化。 ## 一、核心原則 天氣變化必須遵循以下規則: 1. 基於時間累積(天氣持續時間)或當前位置變更 2. 通過擲骰決定變化方向 3. 遵循過渡鏈(不能跳級變化) 4. 邊界情況妥善處理 ## 二、執行流程(每回合自動執行) ### 步驟 1:讀取數據 從變量讀取: - `/環境/天氣`:當前天氣類型 - `/環境/天氣持續時間`:當前天氣已持續時間(分鐘) ### 步驟 2:計算本回合時間差 本回合時間差 = 結束時間 - 開始時間(分鐘) 天氣持續時間 += 本回合時間差 ### 步驟 3:判斷是否觸發變化 若 「天氣持續時間 ≥ 60 分鐘」或「當前位置變更」: 執行步驟 4(擲骰判定) 若 天氣持續時間 < 60 分鐘: 不變化,持續時間繼續累積(不重置) ## 三、擲骰判定 擲 1d100: 1 ~ 30:向好轉方向過渡一級(天氣改善) 31 ~ 69:維持不變(天氣持續) 70 ~ 100:向惡化方向過渡一級(天氣變差) ### 變化後動作 有變化:將新天氣記錄到 ActionResult「環境變化」中,天氣持續時間重置為 0 無變化:天氣持續時間維持當前值(繼續累積) ## 四、過渡鏈 ### 基本過渡鏈(全年通用) 晴朗 ↔ 多雲 ↔ 陰天 ↔ 小雨 ↔ 大雨 ### 冬季專用分支(僅當季節為冬季時適用) 陰天 ↔ 小雪 ↔ 大雪 ### 春/夏季專用分支(僅當季節為春/夏季時適用) 大雨 ↔ 雷雨 ↔ 豪雨 ### 過渡規則 每次只能移動一級(不能從「晴朗」直接變「陰天」) 分支天氣僅在對應季節有效 ## 五、邊界處理 已達極端天氣時,骰向更壞或更好時維持不變。 ### 極端天氣定義 晴朗:已達最好,無法更好 大雪:冬季最壞,無法更壞 豪雨:夏季最壞,無法更壞 大雨(非夏季):已達最壞,無法更壞 ### 邊界處理範例 當前天氣為「晴朗」,擲骰結果為 70~100(惡化): 變為「多雲」(有效) 當前天氣為「晴朗」,擲骰結果為 1~30(好轉): 已達極端,維持「晴朗」(邊界處理) 當前天氣為「豪雨」(夏季),擲骰結果為 70~100(惡化): 已達極端,維持「豪雨」(邊界處理) ## 六、ActionResult 記錄格式 ### 有變化時 環境變化: 天氣 [舊天氣]→[新天氣] / 亮度 [當前值] / 體感溫度 [當前值] / 舒適度 [當前值] / 天氣持續時間 [0] ### 無變化時 環境變化: 天氣 [當前天氣] / 亮度 [當前值] / 體感溫度 [當前值] / 舒適度 [當前值] / 天氣持續時間 [累積值] ## 七、與主 COT 的協作方式 ### 觸發判斷(由主 COT 步驟 7 執行) d. 天氣演變(每回合自動執行): 執行步驟 13「天氣演變執行」,嚴格按照 `` 執行 ### 執行流程(由子模塊執行) 1. 讀取當前天氣和天氣持續時間 2. 計算本回合時間差,加到天氣持續時間 3. 若「持續時間 ≥ 60 分鐘」或「當前位置變更」 → 擲骰判定變化方向 4. 若有變化 → 套用過渡鏈,更新天氣,重置持續時間 5. 記錄結果到 ActionResult「環境變化」欄位