# 睡眠系统文档 ## 概述 睡眠系统实现了基于真实时间的自动睡眠机制,让宠物在特定时段自动进入睡眠状态。睡眠时寠物处于类似"暂停"的状态,时间和年龄继续增长,但属性衰减大幅降低。 ## 睡眠时段配置 睡眠时段在 `data/pet-species.js` 的 `baseStats.sleepSchedule` 中配置: ### 夜间睡眠 (Night Sleep) - **时间**: 21:30 - 08:00 - **自动睡眠**: 是 - **唤醒后随机再睡机率**: 30% ### 午休 (Noon Nap) - **时间**: 12:00 - 13:00 - **自动睡眠**: 是 - **唤醒后随机再睡机率**: 30% ## 配置结构 ```javascript sleepSchedule: { nightSleep: { startHour: 21, // 开始小时 startMinute: 30, // 开始分钟 endHour: 8, // 结束小时 endMinute: 0, // 结束分钟 autoSleep: true, // 是否自动进入睡眠 randomWakeChance: 0.3 // 唤醒后随机再睡的机率 (0-1) }, noonNap: { startHour: 12, startMinute: 0, endHour: 13, endMinute: 0, autoSleep: true, randomWakeChance: 0.3 } } ``` ## 睡眠机制 ### 1. 自动进入睡眠 - 每个 tick (3秒) 检查当前时间 - 如果在睡眠时段且宠物未睡觉,自动进入睡眠 - 控制台显示:`😴 夜間睡眠時間,寵物自動進入睡眠` ### 2. 自动醒来 - 当睡眠时段结束时,自动睡眠的宠物会自动醒来 - 控制台显示:`⏰ 睡眠時間結束,寵物自動醒來` ### 3. 手动唤醒 + 随机再睡 - 在睡眠时段手动唤醒宠物时: - 有 30% 机率宠物会打个哈欠又睡着 - 控制台显示:`寵物醒來後打了個哈欠,在夜間時段又睡著了...` - 有 70% 机率成功唤醒 ### 4. 手动睡眠 - 在非睡眠时段,玩家可以手动让宠物睡觉 - 手动睡眠不受时段限制 ## 睡眠时的状态 ### 属性衰减 - **饥饿衰减**: 降低到 10% - **快乐衰减**: 降低到 10% - **便便**: 不会产生新便便 - **年龄**: 继续增长 ### 互动限制 - ❌ 不能餵食 - ❌ 不能玩耍 - ❌ 不能治療 - ✅ 可以清理便便 - ✅ 可以唤醒 ### 系统暂停 - **事件系统**: 睡眠时不会触发任何随机事件 - **战斗系统**: 睡眠时无法进行战斗 ## 实现细节 ### 核心方法 #### `isInSleepTime()` 检查当前时间是否在睡眠时段内,返回 `'nightSleep'`、`'noonNap'` 或 `null`。 #### `getSleepPeriod(periodName)` 获取指定睡眠时段的配置。 #### `toggleSleep()` 切换睡眠状态,包含随机再睡逻辑。 ### 状态标记 - `isSleeping`: 是否在睡眠中 - `_autoSlept`: 是否为自动睡眠(内部使用,用于区分自动/手动睡眠) ## 游戏体验 睡眠系统提供了以下游戏体验: 1. **真实感**: 宠物遵循自然的作息时间 2. **保护机制**: 夜间和午休时宠物自动进入低消耗模式 3. **互动性**: 玩家可以尝试唤醒宠物,但有机率失败 4. **平衡性**: 睡眠时不会完全暂停,只是大幅降低消耗 ## 调整建议 可以通过修改配置来调整睡眠系统: - **延长/缩短睡眠时段**: 修改 `startHour/endHour` - **调整唤醒难度**: 修改 `randomWakeChance` (0 = 总是能唤醒, 1 = 总是失败) - **添加新的睡眠时段**: 在 `sleepSchedule` 中添加新配置 - **完全禁用自动睡眠**: 设置 `autoSleep: false`