3.3 KiB
3.3 KiB
睡眠系统文档
概述
睡眠系统实现了基于真实时间的自动睡眠机制,让宠物在特定时段自动进入睡眠状态。睡眠时寠物处于类似"暂停"的状态,时间和年龄继续增长,但属性衰减大幅降低。
睡眠时段配置
睡眠时段在 data/pet-species.js 的 baseStats.sleepSchedule 中配置:
夜间睡眠 (Night Sleep)
- 时间: 21:30 - 08:00
- 自动睡眠: 是
- 唤醒后随机再睡机率: 30%
午休 (Noon Nap)
- 时间: 12:00 - 13:00
- 自动睡眠: 是
- 唤醒后随机再睡机率: 30%
配置结构
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: 是否为自动睡眠(内部使用,用于区分自动/手动睡眠)
游戏体验
睡眠系统提供了以下游戏体验:
- 真实感: 宠物遵循自然的作息时间
- 保护机制: 夜间和午休时宠物自动进入低消耗模式
- 互动性: 玩家可以尝试唤醒宠物,但有机率失败
- 平衡性: 睡眠时不会完全暂停,只是大幅降低消耗
调整建议
可以通过修改配置来调整睡眠系统:
- 延长/缩短睡眠时段: 修改
startHour/endHour - 调整唤醒难度: 修改
randomWakeChance(0 = 总是能唤醒, 1 = 总是失败) - 添加新的睡眠时段: 在
sleepSchedule中添加新配置 - 完全禁用自动睡眠: 设置
autoSleep: false