# NPC 平台功能重构记录

## 重构目标
重构 item.func.php 中的 NPC 平台（💝）功能，使其更加模块化和易于维护，同时保留原有的游戏逻辑。

## 原始功能说明
NPC 平台功能允许玩家临时或永久地获取其他玩家或 NPC 的状态。主要逻辑如下：

1. 读取物品的 $itmpara 中的特殊变量，并将玩家自己的名称 $name 存储在 $playerOriginalName 中备用
2. 根据 $platformPlayerMode 的值，判断该平台是否为 PID 平台：
   - 如果是，从数据库的 {$tablepre}players 表中读取 targetPID 对应的玩家信息
   - 如果否，且物品 $itmpara 中包含预定的数值（以 PlatformPlayer 打头的变量），则读取这些信息
3. 根据物品 $itmpara 中 PlatformIsTimed 的存在与否，确认变身是否为临时的：
   - 如果是临时的，将玩家现有的全部数值存储在 $clbpara 数组中（以 ori 打头的变量）
4. 最后，将读取的信息替换玩家的对应字段

## 重构方法
1. 创建一个专门的 `item.platform.php` 文件，包含 NPC 平台功能的所有逻辑
2. 将功能拆分为多个函数，使代码更加清晰和易于维护：
   - `item_platform()` - 主函数，处理 NPC 平台物品的使用
   - `extractPlatformPlayerData()` - 从物品参数中提取预设的玩家数据
   - `savePlayerOriginalData()` - 保存玩家原始数据到 clbpara 数组
   - `applyPlatformDataToPlayer()` - 将平台数据应用到玩家
3. 在 `item.main.php` 中添加对 NPC 平台处理的调用

## 改进点
1. **更好的代码组织** - 将相关功能集中在一个专门的文件中
2. **更清晰的逻辑** - 将复杂的逻辑拆分为多个函数，每个函数负责一个特定的任务
3. **更好的可读性** - 添加了详细的注释，解释每个函数的功能和参数
4. **更易于维护** - 如果需要修改 NPC 平台功能，只需要修改 `item.platform.php` 文件
5. **保留原有逻辑** - 重构保留了原有的游戏逻辑，确保功能不变

## 创建的文件
1. `item.platform.php` - 包含 NPC 平台功能的所有逻辑

## 修改的文件
1. `item.main.php` - 添加了对 NPC 平台处理的调用

## 后续工作
1. 测试 NPC 平台功能，确保它按预期工作
2. 考虑添加更多的错误处理和日志记录
3. 考虑添加恢复原始状态的功能（对于临时变身）
