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

4.1 KiB
Raw Blame History

背景

文件名: 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_idtrap_config 字段来存储陷阱信息
  • 新增 garden_theft_ban 表记录用户偷盗禁令user_id, banned_until
  • 陷阱定义:需要设计多个等级的陷阱物品,包含触发概率、罚金、禁止时长、消息等属性
  • 物品注册:在 garden_plugin_base.pywake_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: 在菜园概览中显示陷阱信息及剩余耐久度
    • 更改:实现了陷阱耐久度系统,每次触发后减少耐久度,耐久度归零时自动移除陷阱
    • 原因:满足用户需求,让陷阱具有使用次数限制
    • 阻碍因素:无
    • 状态:未确认

最终审查