================================================================
RandomMancer 插件使用说明（v0.1）
作者：非小酋啊 and Hy3 and Workbuddy
适配：Terraria 1.4.5.6 / TShock 6.1 / .NET 9.0
================================================================

【这是什么】
RandomMancer 是一个“万物皆可随机”的 TShock 服务端插件，提供两大随机掉落来源：

  1) 物块破坏随机掉落 —— 挖矿 / 拆物块时，按概率额外（或只）掉落随机物品
  2) 生物随机掉落     —— 所有生物（NPC，含敌对怪物与 Boss）死亡时，按概率额外（或只）掉落随机物品

每个来源都拥有完全独立的开关，互不影响。


【安装方法】
1. 解压本压缩包。
2. 将 RandomMancer/bin/RandomMancer.dll 复制到服务端的 ServerPlugins/ 目录。
3. 将 RandomMancer.json 复制到服务端的 tshock/ 配置目录
   （若已存在旧文件，建议先删除，让插件用新结构自动生成）。
4. 启动（或重启）TShock 服务端即可加载；也可放进自带自动编译环境的源码目录重新编译。


【配置文件 RandomMancer.json（中文键名，按来源分组）】

{
  "物块破坏随机": {
    "启用": true,            // 总开关：是否启用物块随机掉落
    "阻止原掉落": false,     // 开启后：只掉随机物品，不再掉原矿物/物块
    "掉落概率": 0.25,        // 每次破坏触发随机掉落的概率（0~1）
    "随机黑名单": []         // 绝不随机掉落的物品ID列表，如 [928, 929]
  },
  "生物随机": {
    "启用": true,            // 总开关：是否启用生物随机掉落（所有 NPC）
    "阻止原掉落": false,     // 开启后：普通生物只掉随机物品，不再掉原 loot
    "掉落概率": 0.5,         // 生物死亡触发随机掉落的概率（0~1）
    "随机黑名单": []         // 绝不随机掉落的物品ID列表
  },
  "随机物品最小堆叠": 1,      // 随机物品堆叠数量下限
  "随机物品最大堆叠": 10,     // 随机物品堆叠数量上限
  "允许随机掉落钱币": true    // 是否允许随机掉落中出现钱币
}

说明：
- 覆盖对象：生物随机掉落对所有 NPC 生效（含敌对怪物）。Boss 类即使开启“阻止原掉落”，
  也始终保留原有掉落（含宝藏袋），不会被拦截，只是额外叠加随机掉落。
- 随机黑名单：名单里的物品 ID 永远不会被随机掉落出来。
  修改后执行 /reload 即时生效。
- 阻止原掉落（性能最优模式）：开启后原物品不再生成，物品总数最少。


【游戏内命令】（权限节点前缀 randommancer.admin.*）

命令只负责“开启 / 关闭”对应功能；概率、黑名单、堆叠等请在配置文件内调整，
改完执行原生 /reload 热重载即可，无需重启服务端。

  /rmtile [on/off]   开启 / 关闭 物块随机掉落
  /rmnpc  [on/off]   开启 / 关闭 生物随机掉落

示例：
  /rmtile on          // 开启物块随机掉落
  /rmnpc off          // 关闭生物随机掉落


【性能说明】
- 功能关闭时钩子直接 return，几乎零开销。
- 概率闸门把物品生成（Item.NewItem 广播）压到最低，避免刷屏卡顿。
- 随机黑名单使用 HashSet 查表，命中判断 O(1)，不增加任何逐物品开销。
- 物块“阻止原掉落”开启后，原矿物不再掉落，物品总数比默认更少。
================================================================
