新增菜园陷阱

This commit is contained in:
2025-11-15 17:06:12 +08:00
parent 3a5c0b2eda
commit 5d08fa0820
7 changed files with 660 additions and 3 deletions

View File

@@ -0,0 +1,68 @@
# 背景
文件名: 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: 在菜园概览中显示陷阱信息及剩余耐久度
- 更改:实现了陷阱耐久度系统,每次触发后减少耐久度,耐久度归零时自动移除陷阱
- 原因:满足用户需求,让陷阱具有使用次数限制
- 阻碍因素:无
- 状态:未确认
# 最终审查