Files
main_plugin_farm/docs/12-crop-catalogue.md
T

44 lines
2.1 KiB
Markdown
Raw Normal View History

# 作物字段与文字指令
本次只补充现有玩法所需的规则与身份字段,不导入网页全量目录,
不保存网页作物 ID,也不更改旧版参考数据库。
## 作物规则
`Plant` 新增字段:
| 字段 | 默认值 | 用途 |
| --- | --- | --- |
| `purchasable` | `True` | 控制商店展示与购买,旧目录从 `isBuy` 读取 |
| `enabled` | `True` | 关闭时禁止新购买与播种,不影响已种作物收获和出售 |
| `crop_type` | `1` | 当前只允许类型 1 购买和播种 |
旧目录可选字段 `enabled` 使用整数 0/1,`crop_type` 使用正整数。
未提供时按上表默认值读取,不将网页 `show` 或 `isLock` 当作购买权限。
`isVip`、金币和点券价格、成熟时间、再生长时间继续沿用原规则。
## 本地 ID
库存使用本地 `plant_id` 作为业务标识。名称仅用于展示与指令查找,
目录内允许同名作物,但每个本地 ID 必须唯一且不能改给另一种作物。
目录改名不改变库存归属;已经种下的作物继续按播种快照结算。
文字指令可使用名称或 `#本地编号`,例如 `购买种子 #1 2`。
同名时拒绝按名称执行,要求使用编号;商店与仓库显示本地编号。
`#编号` 建议保留为指令语法,不作为作物名称。
## 数据库升级
新数据库版本为 2,`inventory` 的主键从 `(identity, name)` 改为
`(identity, plant_id)`;保留名称、种子数、产物数和锁定状态。
版本 1 在 `SQLiteStore.initialize()` 时自动迁移,整个过程在同一事务内。
迁移通过本地目录与已种作物快照解析旧名称;不存在唯一对应 ID 时中止,
保留版本 1 的全部数据,不猜测 ID、不丢弃库存。
自定义目录应传入 `initialize(catalogue=自定义目录)`,真寻接入已传入目录。
账户、流水、历史操作回执和地块成熟时间不改写。
迁移提交后记录版本和行数日志,不记录玩家身份或库存明细。
仅在临时测试库验证迁移,不代表已升级部署中的玩家库。
本次不包含生长阶段、浇水虫害或网页数据导入器。