2025-11-15 17:06:12 +08:00
|
|
|
|
# 背景
|
|
|
|
|
|
文件名: 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:15:06 +08:00
|
|
|
|
- 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查看,且不显示陷阱信息以保护隐私
|
|
|
|
|
|
- 原因:满足用户需求,允许查看任意玩家的菜园情况
|
|
|
|
|
|
- 阻碍因素:无
|
|
|
|
|
|
- 状态:未确认
|
|
|
|
|
|
|
2025-11-15 17:06:12 +08:00
|
|
|
|
# 最终审查
|
|
|
|
|
|
|