Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions apps/game-server/data/schedules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ JSON Schema:[`schema.json`](./schema.json)
| `fromMinute` | 0–1439 | 段开始(含)。`360` = 06:00 |
| `toMinute` | 0–1439 | 段结束(**不含**)。`480` = 08:00 |
| `activityKey` | enum | 活动 ID → 中文 HUD 由 `@aetherlife/shared` `npcActivity` 映射 |
| `zoneId` | string | `{regionId}:{localZoneId}`,如 `beginning-fields@v1:orchard` |
| `zoneId` | string | `{regionId}:{localZoneId}`,如 `beginning-fields@v1:home`(全图闲逛)或 `…:orchard` / `plaza` / `pond` |
| `mobility` | `"wander"` \| `"stationary"` \| `"poi"` | 本段内如何选移动目标(见下) |

### 时间示例
Expand All @@ -46,7 +46,7 @@ JSON Schema:[`schema.json`](./schema.json)
| Key | 典型场景 |
|-----|----------|
| `resting` | 睡觉 — **不移动**(`shouldSkipMovement`) |
| `idle` | 无日程 / 非法 key 降级 — **不移动** |
| `idle` | 无日程 / 非法 key 降级标签;**不再**跳过移动(日程发呆请用 `wandering` + `wander`) |
| `reading` | 晨读、学习 |
| `tending_crops` | 农田劳作 |
| `watering` | 浇水 |
Expand All @@ -55,7 +55,7 @@ JSON Schema:[`schema.json`](./schema.json)
| `fishing` | 钓鱼 |
| `patrol` | 区域巡逻(常配 `wander`) |
| `socializing` | 社交(常配 `wander` 或 `poi`) |
| `wandering` | 背景村民默认活动 |
| `wandering` | 闲逛(原 idle 段并进此项) |
| `unknown` | Schema 占位;运行时应被 `validateActivityKey` 转为 `idle` |

---
Expand All @@ -79,15 +79,18 @@ JSON Schema:[`schema.json`](./schema.json)
格式:`{regionId}:{localId}`

- `regionId`:如 `beginning-fields@v1`(含版本,便于换图)
- `localId`:registry 内 zone,如 `orchard`、`pond`、`plaza`
- `localId`:registry 内 zone,如 `home`(全图)、`orchard`、`pond`、`plaza`

zone 矩形来自 `apps/game-server/data/world/.../zones.json`(经 WorldRegistry 加载)。
zone 矩形来自 `apps/game-server/data/world/.../zones.json`(经 WorldRegistry 加载;与 `packages/shared` `defaultBeginningFieldsBundle` 双 SSOT)。

动森风格:白天主段用 `mobility: wander` + `zoneId: …:home` 逛整张可走区;短时 `stationary`/`poi` 绑定人物专属场点(果园/广场/池塘)。

---

## 编辑 checklist

1. 改 JSON 后跑 `pnpm --filter @aetherlife/game-server test -- src/ambient/schedule.test.ts`
2. 段边界不要重叠(同一分钟只应命中一段)
3. 长 `stationary` 段现在会有 linger;若要 **真·不动**,用 `resting` 或 `idle`,不要用 `stationary`
3. `resting` 才完全不移动;发呆请用 `wandering` + `wander`
4. 新 activity 需同步 `@aetherlife/shared` `NPC_ACTIVITY_KEYS` 与 `schema.json` enum
5. 改 zones 须同步 `zones.json` 与 `defaultBeginningFieldsBundle`
10 changes: 5 additions & 5 deletions apps/game-server/data/schedules/npc-1.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"npcId": "npc-1",
"persona": "order_keeper",
"_comment": "Order keeper — AM stationary orchard study, PM patrol orchard, evening plaza social, night orchard rest.",
"_comment": "Order keeper — morning orchard reading, day home patrol, evening plaza social, night rest.",
"segments": [
{
"fromMinute": 360,
Expand All @@ -12,16 +12,16 @@
},
{
"fromMinute": 480,
"toMinute": 720,
"toMinute": 900,
"activityKey": "patrol",
"zoneId": "beginning-fields@v1:orchard",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 720,
"fromMinute": 900,
"toMinute": 1080,
"activityKey": "socializing",
"zoneId": "beginning-fields@v1:plaza",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
Expand Down
6 changes: 3 additions & 3 deletions apps/game-server/data/schedules/npc-10.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"npcId": "npc-10",
"persona": "brawler",
"_comment": "Brawler — AM plaza patrol, PM plaza wander, evening orchard chopping.",
"_comment": "Brawler — home patrol/roam by day; evening wood chopping at orchard; night rest plaza.",
"segments": [
{
"fromMinute": 360,
"toMinute": 720,
"activityKey": "patrol",
"zoneId": "beginning-fields@v1:plaza",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 720,
"toMinute": 1080,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:plaza",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
Expand Down
17 changes: 12 additions & 5 deletions apps/game-server/data/schedules/npc-11.json
Original file line number Diff line number Diff line change
@@ -1,24 +1,31 @@
{
"npcId": "npc-11",
"persona": "perfectionist",
"_comment": "Perfectionist — AM orchard tending stationary, PM orchard watering, evening orchard reading.",
"_comment": "Perfectionist — morning orchard chores, day careful home roam, evening reading, night rest.",
"segments": [
{
"fromMinute": 360,
"toMinute": 540,
"toMinute": 480,
"activityKey": "tending_crops",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "stationary"
},
{
"fromMinute": 540,
"toMinute": 900,
"fromMinute": 480,
"toMinute": 720,
"activityKey": "watering",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "stationary"
},
{
"fromMinute": 900,
"fromMinute": 720,
"toMinute": 1080,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 1080,
"toMinute": 1200,
"activityKey": "reading",
"zoneId": "beginning-fields@v1:orchard",
Expand Down
19 changes: 6 additions & 13 deletions apps/game-server/data/schedules/npc-12.json
Original file line number Diff line number Diff line change
@@ -1,31 +1,24 @@
{
"npcId": "npc-12",
"persona": "explorer",
"_comment": "Explorer — AM orchard wander, PM plaza patrol, evening pond fishing, night plaza wander.",
"_comment": "Explorer — maximal home roam; short fishing/social; night still wandering (light sleeper).",
"segments": [
{
"fromMinute": 360,
"toMinute": 540,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "wander"
},
{
"fromMinute": 540,
"toMinute": 900,
"activityKey": "patrol",
"zoneId": "beginning-fields@v1:plaza",
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 900,
"toMinute": 1080,
"toMinute": 1020,
"activityKey": "fishing",
"zoneId": "beginning-fields@v1:pond",
"mobility": "stationary"
},
{
"fromMinute": 1080,
"fromMinute": 1020,
"toMinute": 1200,
"activityKey": "socializing",
"zoneId": "beginning-fields@v1:plaza",
Expand All @@ -35,7 +28,7 @@
"fromMinute": 1200,
"toMinute": 360,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:plaza",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
}
]
Expand Down
12 changes: 6 additions & 6 deletions apps/game-server/data/schedules/npc-2.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"npcId": "npc-2",
"persona": "expansionist",
"_comment": "Expansionist — AM orchard crops, PM wander plaza outreach, evening orchard patrol, night pond rest.",
"_comment": "Expansionist — morning tend orchard, day roam whole home, evening plaza, night rest pond.",
"segments": [
{
"fromMinute": 360,
"toMinute": 540,
"toMinute": 480,
"activityKey": "tending_crops",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "stationary"
},
{
"fromMinute": 540,
"fromMinute": 480,
"toMinute": 900,
"activityKey": "patrol",
"zoneId": "beginning-fields@v1:plaza",
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
Expand All @@ -29,7 +29,7 @@
"toMinute": 1200,
"activityKey": "watering",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "wander"
"mobility": "stationary"
},
{
"fromMinute": 1200,
Expand Down
17 changes: 12 additions & 5 deletions apps/game-server/data/schedules/npc-3.json
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
{
"npcId": "npc-3",
"persona": "logician",
"_comment": "Logician — AM pond reading, midday plaza debate poi, evening plaza patrol, night pond rest.",
"_comment": "Logician — morning pond reading, day home roam, evening plaza social, night rest pond.",
"segments": [
{
"fromMinute": 360,
"toMinute": 540,
"toMinute": 480,
"activityKey": "reading",
"zoneId": "beginning-fields@v1:pond",
"mobility": "stationary"
},
{
"fromMinute": 540,
"fromMinute": 480,
"toMinute": 900,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 900,
"toMinute": 1080,
"activityKey": "socializing",
"zoneId": "beginning-fields@v1:plaza",
"mobility": "poi"
},
{
"fromMinute": 900,
"fromMinute": 1080,
"toMinute": 1200,
"activityKey": "patrol",
"zoneId": "beginning-fields@v1:plaza",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
Expand Down
21 changes: 7 additions & 14 deletions apps/game-server/data/schedules/npc-4.json
Original file line number Diff line number Diff line change
@@ -1,34 +1,27 @@
{
"npcId": "npc-4",
"persona": "chaos_agent",
"_comment": "Chaos agent — AM idle plaza, PM wander plaza, night wandering plaza.",
"_comment": "Chaos — nearly always roaming full home; short plaza social; rarely rests.",
"segments": [
{
"fromMinute": 360,
"toMinute": 720,
"activityKey": "idle",
"zoneId": "beginning-fields@v1:plaza",
"mobility": "wander"
},
{
"fromMinute": 720,
"toMinute": 1080,
"toMinute": 900,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:plaza",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 1080,
"toMinute": 1200,
"fromMinute": 900,
"toMinute": 1080,
"activityKey": "socializing",
"zoneId": "beginning-fields@v1:plaza",
"mobility": "poi"
},
{
"fromMinute": 1200,
"fromMinute": 1080,
"toMinute": 360,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:plaza",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
}
]
Expand Down
14 changes: 7 additions & 7 deletions apps/game-server/data/schedules/npc-5.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
{
"npcId": "npc-5",
"persona": "pacifist",
"_comment": "Pacifist — AM pond fishing, midday orchard tending, evening pond rest.",
"_comment": "Pacifist — morning/evening pond fishing linger; midday peaceful home roam.",
"segments": [
{
"fromMinute": 360,
"toMinute": 540,
"toMinute": 480,
"activityKey": "fishing",
"zoneId": "beginning-fields@v1:pond",
"mobility": "stationary"
},
{
"fromMinute": 540,
"fromMinute": 480,
"toMinute": 900,
"activityKey": "tending_crops",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "stationary"
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 900,
"toMinute": 1080,
"activityKey": "watering",
"activityKey": "tending_crops",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "stationary"
},
Expand Down
21 changes: 14 additions & 7 deletions apps/game-server/data/schedules/npc-6.json
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
{
"npcId": "npc-6",
"persona": "power_broker",
"_comment": "Power broker — AM orchard reading, PM plaza social poi, evening plaza patrol.",
"_comment": "Power broker — morning reading, day home roam + plaza networking, night rest orchard.",
"segments": [
{
"fromMinute": 360,
"toMinute": 540,
"toMinute": 480,
"activityKey": "reading",
"zoneId": "beginning-fields@v1:orchard",
"mobility": "stationary"
},
{
"fromMinute": 540,
"toMinute": 900,
"fromMinute": 480,
"toMinute": 720,
"activityKey": "wandering",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
"fromMinute": 720,
"toMinute": 1080,
"activityKey": "socializing",
"zoneId": "beginning-fields@v1:plaza",
"mobility": "poi"
},
{
"fromMinute": 900,
"fromMinute": 1080,
"toMinute": 1200,
"activityKey": "patrol",
"zoneId": "beginning-fields@v1:plaza",
"activityKey": "socializing",
"zoneId": "beginning-fields@v1:home",
"mobility": "wander"
},
{
Expand Down
Loading
Loading