120 lines
3.4 KiB
JSON
120 lines
3.4 KiB
JSON
<weather_rules>
|
||
# 天氣自然演變規則
|
||
|
||
> 🔴 重要:天氣演變必須基於客觀時間累積、當前位置切換和骰子判定,禁止憑感覺決定天氣變化。
|
||
|
||
|
||
## 一、核心原則
|
||
|
||
天氣變化必須遵循以下規則:
|
||
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「天氣演變執行」,嚴格按照 `<weather_rules>` 執行
|
||
|
||
### 執行流程(由子模塊執行)
|
||
|
||
1. 讀取當前天氣和天氣持續時間
|
||
2. 計算本回合時間差,加到天氣持續時間
|
||
3. 若「持續時間 ≥ 60 分鐘」或「當前位置變更」 → 擲骰判定變化方向
|
||
4. 若有變化 → 套用過渡鏈,更新天氣,重置持續時間
|
||
5. 記錄結果到 ActionResult「環境變化」欄位
|
||
|
||
</weather_rules> |