Files
NewWPSBot/.tasks/2025-11-15_2_trap-system.md
2025-11-15 17:15:06 +08:00

78 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 背景
文件名: 2025-11-15_2_trap-system.md
创建于: 2025-11-15_16:41:02
创建者: ASUS
主分支: main
任务分支: (不需要创建)
Yolo模式: Off
# 任务描述
在菜园系统中加入陷阱功能,支持多种陷阱物品:
- 可以在某个地块放置陷阱(如防盗网等)
- 陷阱有不同等级,具有不同的触发概率、罚金金额、禁止偷盗时长和消息内容
- 偷盗者有概率触发陷阱,触发后立即缴纳罚金并被禁止偷盗一定时间
- 陷阱物品可以通过炼金合成获得,使用已有的矿物和木材作为材料
# 项目概览
菜园系统基于PWF插件体系依赖现有WPSConfigSystem、WPSBackpackSystem、WPSStoreSystem、WPSFortuneSystem以及WPSAlchemyGame。
# 分析
- 数据库扩展:需要在 `garden_plots` 表中添加 `trap_item_id``trap_config` 字段来存储陷阱信息
- 新增 `garden_theft_ban` 表记录用户偷盗禁令user_id, banned_until
- 陷阱定义:需要设计多个等级的陷阱物品,包含触发概率、罚金、禁止时长、消息等属性
- 物品注册:在 `garden_plugin_base.py``wake_up` 中注册陷阱物品
- 炼金配方:注册陷阱的炼金合成配方,使用矿物和木材作为材料
- 服务层扩展:`GardenService` 需要添加 `place_trap``_check_trap``_is_theft_banned``_ban_theft` 等方法
- 修改偷盗逻辑:在 `steal` 方法中检查禁令和陷阱触发
- 插件层:创建 `garden_plugin_trap.py` 实现放置陷阱指令
# 提议的解决方案
- 设计3-4个等级的陷阱物品普通、稀有、史诗、传说每个等级有不同的效果
- 使用矿物(矿石、宝石、水晶、精华)和木材(银杏、樱花、红枫)合成不同等级的陷阱
- 陷阱触发后立即扣除罚金并设置禁止偷盗时间,同时发送陷阱消息给偷盗者
- 禁止偷盗期间用户无法偷取任何地块的作物
# 当前执行步骤:"已完成实现"
# 任务进度
- 2025-11-15_16:43:34
- 已修改:
- Plugins/WPSGardenSystem/garden_models.py: 添加 GardenTrapDefinition 类和4种陷阱定义扩展数据库模型
- Plugins/WPSGardenSystem/garden_service.py: 添加陷阱相关方法place_trap, remove_trap, _check_trap, _is_theft_banned, _ban_theft修改 steal 方法集成陷阱检查
- Plugins/WPSGardenSystem/garden_plugin_steal.py: 集成陷阱触发逻辑,扣除罚金并发送消息
- Plugins/WPSGardenSystem/garden_plugin_trap.py: 创建放置/移除陷阱的插件
- Plugins/WPSGardenSystem/garden_plugin_base.py: 在 wake_up 中注册陷阱物品和炼金配方
- 更改:
- 实现了完整的陷阱系统包括4个等级的陷阱防盗网、荆棘陷阱、魔法结界、传奇守护
- 每个陷阱有不同的触发概率、罚金、禁止时长和消息内容
- 陷阱可以通过炼金合成获得,使用矿物和木材作为材料
- 偷盗时会检查禁令和陷阱,触发后立即扣除罚金并设置禁止偷盗时间
- 添加了 garden_theft_ban 表记录用户偷盗禁令
- 原因:实现用户需求的陷阱功能
- 阻碍因素:无
- 状态:未确认
- 2025-11-15_16:46:13
- 已修改:
- Plugins/WPSGardenSystem/garden_models.py: 为 GardenTrapDefinition 添加 durability 字段设置各等级陷阱的耐久度普通3次、稀有5次、史诗8次、传说15次
- Plugins/WPSGardenSystem/garden_service.py: 在 _check_trap 中添加耐久度检查和减少逻辑,耐久度归零时自动移除陷阱;在 place_trap 中设置初始耐久度
- Plugins/WPSGardenSystem/garden_plugin_steal.py: 在消息中显示陷阱剩余耐久度,耐久度耗尽时提示
- Plugins/WPSGardenSystem/garden_plugin_trap.py: 在放置陷阱消息中显示耐久度
- Plugins/WPSGardenSystem/garden_plugin_base.py: 在菜园概览中显示陷阱信息及剩余耐久度
- 更改:实现了陷阱耐久度系统,每次触发后减少耐久度,耐久度归零时自动移除陷阱
- 原因:满足用户需求,让陷阱具有使用次数限制
- 阻碍因素:无
- 状态:未确认
- 2025-11-15_17:11:26
- 已修改:
- Plugins/WPSGardenSystem/garden_plugin_base.py: 修改 format_garden_overview 方法,添加 show_trap 参数控制是否显示陷阱信息
- Plugins/WPSGardenSystem/garden_plugin_view.py: 添加 _resolve_target_user 和 _handle_view 方法,修改 callback 支持 "查看"/"view" 子指令,更新 collect_command_entries 和 collect_guide_entries
- 更改实现了查看其他玩家菜园的功能支持通过用户名或用户ID查看且不显示陷阱信息以保护隐私
- 原因:满足用户需求,允许查看任意玩家的菜园情况
- 阻碍因素:无
- 状态:未确认
# 最终审查