4.7 KiB
4.7 KiB
背景
文件名: 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查看,且不显示陷阱信息以保护隐私
- 原因:满足用户需求,允许查看任意玩家的菜园情况
- 阻碍因素:无
- 状态:未确认
- 已修改: