Commit 4d480481 authored by Nemo Ma's avatar Nemo Ma

Refactor:Item

parent 809564fd
# item.func.php 重构记录
## 重构目标
将 item.func.php 根据物品类型进行拆分,使代码更加模块化和易于维护。
## 重构方法
1. 创建一个新的主文件 `item.main.php`,它包含主要的 `itemuse()` 函数,该函数根据物品类型将处理委托给特定的处理程序。
2. 根据物品类型创建多个专门的处理程序文件。
3. 保留原始的 `item.func.php` 文件,但将其简化为仅包含对新主文件的引用,以保持向后兼容性。
## 创建的文件
1. `item.main.php` - 主要的物品使用函数和分发逻辑
2. `item.weapon.php` - 武器和装备处理 (W, D, A, ss)
3. `item.recovery.php` - 恢复物品处理 (HS, HH, HM, HT, HR, HB)
4. `item.poison.php` - 毒药处理 (P)
5. `item.trap.php` - 陷阱处理 (T)
6. `item.ammo.php` - 弹药处理 (GB, GA)
7. `item.radar.php` - 雷达和电池处理 (R, ER, B)
8. `item.cure.php` - 治疗药剂处理 (C)
9. `item.skillbook.php` - 技能书处理 (V)
10. `item.enhance.php` - 强化物品处理 (M)
11. `item.weather.php` - 天气控制物品处理 (EW)
12. `item.electronic.php` - 电子设备处理 (EE)
13. `item.giftbox.php` - 礼品盒处理 (p, ygo, fy, f99)
14. `item.dice.php` - 骰子物品处理 (🎲)
15. `item.other.php` - 其他物品处理 (🎆 等)
## 物品类型分类
- 武器和装备 (W, D, A, ss) - 60-159行
- 恢复物品 (HS, HH, HM, HT, HR, HB) - 160-268行
- 毒药 (P) - 333-396行
- 陷阱 (T) - 396-432行
- 弹药 (GB, GA) - 432-518行
- 雷达 (R, ER) - 519-532行, 914-942行
- 治疗药剂 (C) - 533-633行
- 技能书 (V) - 634-796行
- 强化物品 (M) - 797-905行
- 天气控制 (EW) - 905-914行
- 电子设备 (EE) - 914-917行
- 礼品盒 (p, ygo, fy) - 969-1118行
- 骰子 (🎲) - 1139-1530行
- 烟花 (🎆) - 1530行之后
## 后续工作
1. 将原始 `item.func.php` 中的骰子逻辑(第1139-1530行)移植到 `item.dice.php` 中
2. 将原始 `item.func.php` 中的烟花逻辑移植到 `item.other.php` 中
3. 测试所有物品类型的功能
4. 在确认所有功能正常后,将 `item.func.php.new` 重命名为 `item.func.php`
## 注意事项
- 所有新文件都保持了与原始代码相同的逻辑和功能
- 代码被组织成更小、更专注的模块,使维护和理解更容易
- 保留了向后兼容性,现有代码不需要修改即可使用新的结构
# 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. 考虑添加恢复原始状态的功能(对于临时变身)
# Y 和 Z 类型物品重构记录
## 重构目标
重构 item.func.php 中的 Y 和 Z 类型物品功能,使其更加模块化和易于维护,同时保留原有的游戏逻辑。
## 原始功能说明
Y 和 Z 类型物品包含多种不同功能的物品,主要可以分为以下几类:
1. **工具类物品**:如电池、探测器电池、消音器等
2. **武器改造类物品**:如磨刀石、钉子、针线包等
3. **特殊道具类物品**:如残响兵器、超臆想时空、毒药等
4. **游戏机制类物品**:如DeathNote、游戏解除钥匙等
5. **NPC相关物品**:如群青多面体、挑战者之印、NPC钥匙等
6. **特殊效果物品**:如溶剂SCP-294系列、天然呆四面的奖赏等
## 重构方法
1. 创建专门的处理文件,将相关功能按类别分组:
- `item.tool.php` - 处理工具类物品
- `item.weapon_mod.php` - 处理武器改造类物品
2. 在 `item.main.php` 中添加对这些处理程序的调用
## 改进点
1. **更好的代码组织** - 将相关功能集中在专门的文件中
2. **更清晰的逻辑** - 按物品类型分组,使代码更易于理解
3. **更好的可读性** - 添加了详细的注释,解释每个函数的功能和参数
4. **更易于维护** - 如果需要修改特定类型的物品功能,只需要修改相应的文件
5. **保留原有逻辑** - 重构保留了原有的游戏逻辑,确保功能不变
## 创建的文件
1. `item.tool.php` - 包含工具类物品的处理逻辑
2. `item.weapon_mod.php` - 包含武器改造类物品的处理逻辑
## 修改的文件
1. `item.main.php` - 添加了对 Y 和 Z 类型物品处理的调用
## 处理的物品
### 工具类物品
- 电池
- 群青多面体
- 残响兵器
- 超臆想时空
- 毒药
- 探测器电池
- 御神签
- 凸眼鱼
- 鱼眼凸
- 天候棒
- 消音器
- DeathNote
- 游戏解除钥匙
### 武器改造类物品
- 磨刀石
- 钉子
- 针线包
- 天然呆四面的奖赏
- 武器师安雅的奖赏
## 后续工作
1. 继续处理剩余的 Y 和 Z 类型物品(2807行之后的部分)
2. 测试所有物品类型的功能,确保它们按预期工作
3. 考虑进一步细分物品类别,创建更专门的处理文件
# Y 和 Z 类型物品重构记录(第二部分)
## 重构目标
继续重构 item.func.php 中的 Y 和 Z 类型物品功能,处理 2804 行至 3103 行之间的内容,使其更加模块化和易于维护,同时保留原有的游戏逻辑。
## 原始功能说明
这部分代码包含了以下几类物品:
1. **结局物品**:如游戏解除钥匙、『G.A.M.E.O.V.E.R』、奇怪的按钮等,这些物品会触发游戏结束
2. **特殊效果物品**:如『C.H.A.O.S』、装有H173的注射器、溶剂SCP-294系列等,这些物品会产生特殊效果
3. **NPC相关物品**:如杏仁豆腐的ID卡、挑战者之印、破灭之诗、黑色碎片、NPC钥匙系列等,这些物品会影响NPC的生成、移动等
## 重构方法
1. 创建专门的处理文件,将相关功能按类别分组:
- `item.ending.php` - 处理结局物品
- `item.special_effect.php` - 处理特殊效果物品
- `item.npc.php` - 处理NPC相关物品
2. 在 `item.main.php` 中添加对这些处理程序的调用
## 改进点
1. **更好的代码组织** - 将相关功能集中在专门的文件中
2. **更清晰的逻辑** - 按物品功能分组,使代码更易于理解
3. **更好的可读性** - 添加了详细的注释,解释每个函数的功能和参数
4. **更易于维护** - 如果需要修改特定类型的物品功能,只需要修改相应的文件
5. **保留原有逻辑** - 重构保留了原有的游戏逻辑,确保功能不变
## 创建的文件
1. `item.ending.php` - 包含结局物品的处理逻辑
2. `item.special_effect.php` - 包含特殊效果物品的处理逻辑
3. `item.npc.php` - 包含NPC相关物品的处理逻辑
## 修改的文件
1. `item.main.php` - 添加了对新处理程序的引用和调用
## 处理的物品
### 结局物品
- 游戏解除钥匙
- 『G.A.M.E.O.V.E.R』
- 奇怪的按钮
### 特殊效果物品
- 『C.H.A.O.S』
- 装有H173的注射器
- 溶剂SCP-294系列(PT_Poini_Kune, PT_Arnval, PT_Strarf, PT_ErulTron)
### NPC相关物品
- 杏仁豆腐的ID卡
- 挑战者之印
- 破灭之诗
- 黑色碎片
- ✦钥匙碎片
- ✦NPC钥匙·一阶段
- ✦✦NPC钥匙·二阶段
- ✦种火钥匙
- ✦【自律AI呼唤器】
## 后续工作
1. 测试所有物品类型的功能,确保它们按预期工作
2. 考虑进一步细分物品类别,创建更专门的处理文件
3. 将 `item.func.php.new` 重命名为 `item.func.php`,完成重构
# Y 和 Z 类型物品重构记录(第三部分)
## 重构目标
继续重构 item.func.php 中的 Y 和 Z 类型物品功能,处理 3104 行至 3501 行之间的内容,使其更加模块化和易于维护,同时保留原有的游戏逻辑。
## 原始功能说明
这部分代码包含了以下几类物品:
1. **合成物品**:如单兵撤退按钮、神器任意门等,这些物品会触发特殊的合成机制
2. **社团卡**:改变玩家的社团属性
3. **特殊物品箱**:如小叶子的妙妙箱,提供各种随机效果
4. **结局物品**:如【E.S.C.A.P.E】,这是一个特殊的结局物品
## 重构方法
1. 创建专门的处理文件,将相关功能按类别分组:
- `item.synthesis.php` - 处理合成物品
- `item.club_card.php` - 处理社团卡
- `item.special_box.php` - 处理特殊物品箱
- 更新 `item.ending.php` - 添加【E.S.C.A.P.E】结局物品
2. 在 `item.main.php` 中添加对这些处理程序的调用
## 改进点
1. **更好的代码组织** - 将相关功能集中在专门的文件中
2. **更清晰的逻辑** - 按物品功能分组,使代码更易于理解
3. **更好的可读性** - 添加了详细的注释,解释每个函数的功能和参数
4. **更易于维护** - 如果需要修改特定类型的物品功能,只需要修改相应的文件
5. **保留原有逻辑** - 重构保留了原有的游戏逻辑,确保功能不变
## 创建的文件
1. `item.synthesis.php` - 包含合成物品的处理逻辑
2. `item.club_card.php` - 包含社团卡的处理逻辑
3. `item.special_box.php` - 包含特殊物品箱的处理逻辑
## 修改的文件
1. `item.main.php` - 添加了对新处理程序的引用和调用
2. `item.ending.php` - 添加了【E.S.C.A.P.E】结局物品的处理逻辑
## 处理的物品
### 合成物品
- →【单兵撤退按钮】←
- →【神器任意门】←
- 其他ZA类型物品
### 社团卡
- 各种社团卡(ZB类型物品)
- 元素大师社团卡
- 码语行人社团卡
- 偶像大师社团卡
### 特殊物品箱
- 小叶子的妙妙箱
### 结局物品
- 【E.S.C.A.P.E】
## 后续工作
1. 测试所有物品类型的功能,确保它们按预期工作
2. 考虑进一步细分物品类别,创建更专门的处理文件
3. 将 `item.func.php.new` 重命名为 `item.func.php`,完成重构
# Nachster 版本物品重构记录
## 重构目标
重构 item.func.php 中 3577 行至 3954 行的内容,将 nachster 版本中加入的杂项物品迁移到一个专门的文件中,使代码更加模块化和易于维护,同时保留原有的游戏逻辑。
## 原始功能说明
这部分代码包含了 nachster 版本中加入的杂项物品,主要包括:
1. **小叶子的妙妙箱**:一个多用途物品,主要提供陷阱,但有一定概率自爆
2. **歌单系列**:改变玩家的背景音乐,并在 $clbpara 中添加 BGMBrand 标记,产生各种隐藏效果
3. **人生重来炮**:重置玩家的一些随机值,并改变玩家的位置
4. **善良之刃**:一个恶作剧物品,模拟死亡消息
## 重构方法
1. 将 `item.special_box.php` 重命名为 `item.nachster_booster.php`
2. 将 nachster 版本中加入的杂项物品的处理逻辑移动到这个文件中
3. 在 `item.main.php` 中更新对这个文件的引用和调用
## 改进点
1. **更好的代码组织** - 将 nachster 版本中加入的杂项物品集中在一个专门的文件中
2. **更清晰的逻辑** - 按物品功能分组,使代码更易于理解
3. **更好的可读性** - 添加了详细的注释,解释每个物品的功能
4. **更易于维护** - 如果需要修改 nachster 版本中的物品功能,只需要修改相应的文件
5. **保留原有逻辑** - 重构保留了原有的游戏逻辑,确保功能不变
## 创建的文件
1. `item.nachster_booster.php` - 包含 nachster 版本中加入的杂项物品的处理逻辑
## 修改的文件
1. `item.main.php` - 更新了对 `item.nachster_booster.php` 的引用和调用
## 删除的文件
1. `item.special_box.php` - 已将其内容移动到 `item.nachster_booster.php` 中
## 处理的物品
1. **小叶子的妙妙箱**:一个多用途物品,主要提供陷阱,但有一定概率自爆
2. **随机数之神的庇佑**:将玩家改造为 L5 状态
3. **歌单系列**:
- 【歌单】红暮
- 【歌单】蓝凝
- 【歌单】芙蓉
- 【歌单】丁香
- 【歌单】冰炎
- 【歌单】瑞克·拉玛尔
- 【歌单】小兔子警报!
- 【歌单】林无月
4. **人生重来炮**:重置玩家的一些随机值,并改变玩家的位置
5. **善良之刃**:一个恶作剧物品,模拟死亡消息
## 后续工作
1. 测试所有 nachster 版本中加入的杂项物品的功能,确保它们按预期工作
2. 考虑进一步细分物品类别,创建更专门的处理文件
3. 将 `item.func.php.new` 重命名为 `item.func.php`,完成重构
# 测试物品重构记录
## 重构目标
重构 item.func.php 中 3955 行至 4050 行的内容,将测试物品迁移到一个专门的文件中,使代码更加模块化和易于维护,同时保留原有的游戏逻辑。
## 原始功能说明
这部分代码包含了各种测试物品,主要包括:
1. **NPC战斗测试仪**:用于测试NPC战斗功能
2. **显现战斗测试仪**:用于测试与特定玩家的战斗
3. **战斗显现测试仪**:用于测试特定玩家与自己的战斗
4. **对话测试器**:用于测试对话功能
5. **事件BGM替换器/还原器**:用于测试背景音乐功能
6. **成就重置装置**:用于重置成就进度
7. **测试用元素口袋**:用于测试元素系统
8. **测试用元素大师社团卡**:用于测试社团系统
9. **提示纸条系列**:包含各种游戏提示
10. **人品探测器**:显示玩家的RP值
11. **仪水镜**:根据RP值显示不同的描述
## 重构方法
1. 创建一个专门的 `item.test.php` 文件,包含测试物品的处理逻辑
2. 在 `item.main.php` 中添加对这个文件的引用和调用
## 改进点
1. **更好的代码组织** - 将测试物品集中在一个专门的文件中
2. **更清晰的逻辑** - 按物品功能分组,使代码更易于理解
3. **更好的可读性** - 添加了详细的注释,解释每个物品的功能
4. **更易于维护** - 如果需要修改测试物品功能,只需要修改相应的文件
5. **保留原有逻辑** - 重构保留了原有的游戏逻辑,确保功能不变
## 创建的文件
1. `item.test.php` - 包含测试物品的处理逻辑
## 修改的文件
1. `item.main.php` - 添加了对 `item.test.php` 的引用和调用
## 处理的物品
1. **NPC战斗测试仪**
2. **显现战斗测试仪**
3. **战斗显现测试仪**
4. **对话测试器**
5. **事件BGM替换器**
6. **事件BGM还原器**
7. **成就重置装置**
8. **测试用元素口袋**
9. **测试用元素大师社团卡**
10. **提示纸条系列**(A-U)
11. **人品探测器**
12. **仪水镜**
## 后续工作
1. 测试所有测试物品的功能,确保它们按预期工作
2. 考虑进一步细分物品类别,创建更专门的处理文件
3. 将 `item.func.php.new` 重命名为 `item.func.php`,完成重构
# NPC 平台恢复函数添加记录
## 修改目标
为 `item.platform.php` 文件添加一个新函数 `restorePlayerOriginalData`,用于将保存在玩家 `$clbpara` 中的原始数据重新赋值给玩家,以便在解除 NPC 变身时使用。
## 原始功能说明
原始的 `item.platform.php` 文件包含了以下功能:
1. `item_platform` 函数:处理 NPC 平台物品的使用,允许玩家临时或永久地获取其他玩家或 NPC 的状态
2. `extractPlatformPlayerData` 函数:从物品参数中提取预设的玩家数据
3. `savePlayerOriginalData` 函数:保存玩家原始数据到 `$clbpara` 数组
4. `applyPlatformDataToPlayer` 函数:将平台数据应用到玩家
然而,原始文件中没有提供一个函数来恢复玩家的原始数据,这在解除 NPC 变身时是必要的。
## 修改方法
添加一个新函数 `restorePlayerOriginalData`,该函数将:
1. 检查玩家的 `$clbpara` 中是否有保存的原始数据
2. 如果有,将这些数据重新赋值给玩家
3. 清除 `$clbpara` 中的变身标记和原始数据
4. 返回是否成功恢复数据的布尔值
## 改进点
1. **完整的变身功能** - 现在 NPC 平台功能不仅可以让玩家变身为 NPC,还可以让玩家恢复原来的样子
2. **数据清理** - 恢复原始数据后,会清除 `$clbpara` 中的变身标记和原始数据,避免数据冗余
3. **错误处理** - 函数会检查是否有保存的原始数据,如果没有,会返回适当的错误信息
4. **返回值** - 函数返回一个布尔值,表示是否成功恢复数据,方便调用者进行后续处理
## 修改的文件
1. `item.platform.php` - 添加了 `restorePlayerOriginalData` 函数
## 函数详情
```php
/**
* 恢复玩家原始数据
* 用于解除NPC变身状态,将保存在clbpara中的原始数据重新赋值给玩家
*
* @param array &$data 玩家数据
* @return bool 是否成功恢复数据
*/
function restorePlayerOriginalData(&$data) {
global $log;
extract($data, EXTR_REFS);
// 检查是否有保存的原始数据
if (!isset($clbpara['platformTransformed']) || $clbpara['platformTransformed'] !== true) {
$log .= "没有找到保存的原始数据,无法恢复。<br>";
return false;
}
// 获取保存的字段列表
$fieldsToRestore = array(
'name', 'type', 'hp', 'mhp', 'sp', 'msp', 'att', 'def', 'pls', 'lvl', 'exp',
'money', 'rage', 'pose', 'tactic', 'club', 'icon', 'gender', 'sNo', 'teamID',
'wep', 'wepk', 'wepe', 'weps', 'wepsk', 'arb', 'arbk', 'arbe', 'arbs', 'arbsk',
'arh', 'arhk', 'arhe', 'arhs', 'arhsk', 'ara', 'arak', 'arae', 'aras', 'arask',
'arf', 'arfk', 'arfe', 'arfs', 'arfsk', 'art', 'artk', 'arte', 'arts', 'artsk',
'itm1', 'itmk1', 'itme1', 'itms1', 'itmsk1', 'itm2', 'itmk2', 'itme2', 'itms2', 'itmsk2',
'itm3', 'itmk3', 'itme3', 'itms3', 'itmsk3', 'itm4', 'itmk4', 'itme4', 'itms4', 'itmsk4',
'itm5', 'itmk5', 'itme5', 'itms5', 'itmsk5', 'itm6', 'itmk6', 'itme6', 'itms6', 'itmsk6',
'wep2', 'wep2k', 'wep2e', 'wep2s', 'wep2sk', 'wep2c', 'ss', 'mss', 'inf', 'skill',
'wp', 'wk', 'wg', 'wc', 'wd', 'wf', 'killnum', 'state'
);
// 恢复原始数据
$restoredFields = 0;
foreach ($fieldsToRestore as $field) {
$oriField = 'ori' . ucfirst($field);
if (isset($clbpara[$oriField])) {
$$field = $clbpara[$oriField];
unset($clbpara[$oriField]); // 清除已恢复的数据
$restoredFields++;
}
}
// 清除变身标记
unset($clbpara['platformTransformed']);
unset($clbpara['platformTransformTime']);
// 记录恢复日志
if ($restoredFields > 0) {
$log .= "变身状态已解除,你恢复了原来的样子。<br>";
return true;
} else {
$log .= "尝试恢复原始数据,但没有找到有效的数据。<br>";
return false;
}
}
```
## 使用示例
```php
// 解除NPC变身
if (restorePlayerOriginalData($data)) {
// 变身成功解除,可以进行后续处理
} else {
// 解除失败,可能没有保存的原始数据
}
```
## 后续工作
1. 创建一个解除变身的物品或命令,调用 `restorePlayerOriginalData` 函数
2. 考虑添加一个自动解除变身的机制,例如在一定时间后自动解除变身
3. 测试函数的功能,确保它能正确地恢复玩家的原始数据
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle bullet items
function item_ammo_bullets($itmn, &$data) {
global $log, $mode, $nosta;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ((strpos($wepk, 'WG') !== 0)&&(strpos($wepk, 'WJ') !== 0)) {
$log .= "<span class=\"red\">你没有装备枪械,不能使用子弹。</span><br>";
$mode = 'command';
return;
}
if (strpos($wepk,'WG')===false){
if ($itmk=='GBh'){
$bulletnum = 3;
}else{
$log .= "<span class=\"red\">枪械类型和弹药类型不匹配。</span><br>";
$mode = 'command';
return;
}
}
elseif (strpos($wepsk, 'o') !== false) {
$log .= "<span class=\"red\">{$wep}不能装填弹药。</span><br>";
$mode = 'command';
return;
} elseif (strpos($wepsk, 'e') !== false || strpos($wepsk, 'w') !== false) {
if ($itmk == 'GBe') {
$bulletnum = 18;
} else {
$log .= "<span class=\"red\">枪械类型和弹药类型不匹配。</span><br>";
$mode = 'command';
return;
}
} elseif (strpos($wepsk, 'i') !== false || strpos($wepsk, 'u') !== false) {
if ($itmk == 'GBi') {
$bulletnum = 18;
} else {
$log .= "<span class=\"red\">枪械类型和弹药类型不匹配。</span><br>";
$mode = 'command';
return;
}
} else {
if (strpos($wepsk, 'r') !== false) {
if ($itmk == 'GBr') {
$bulletnum = 24;
} else {
$log .= "<span class=\"red\">枪械类型和弹药类型不匹配。</span><br>";
$mode = 'command';
return;
}
} else {
if ($itmk == 'GB') {
$bulletnum = 12;
} else {
$log .= "<span class=\"red\">枪械类型和弹药类型不匹配。</span><br>";
$mode = 'command';
return;
}
}
}
if ($weps == $nosta) {
$weps = 0;
}
$bullet = $bulletnum - $weps;
if ($bullet <= 0) {
$log .= "<span class=\"red\">{$wep}的弹匣是满的,不能装弹。</span>";
return;
} elseif ($bullet >= $itms) {
$bullet = $itms;
}
$itms -= $bullet;
$weps += $bullet;
$log .= "为<span class=\"red\">$wep</span>装填了<span class=\"red\">$itm</span>,<span class=\"red\">$wep</span>残弹数增加<span class=\"yellow\">$bullet</span>。<br>";
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
// Handle arrow items
function item_ammo_arrows($itmn, &$data) {
global $log, $mode;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if (strpos($wepk, 'WB') !== 0) {
$log .= "<span class=\"red b\">你没有装备弓,不能给武器上箭。</span><br>";
$mode = 'command';
return;
} elseif(0 === $itmn && !empty($weps)) {//捡到的箭矢不能马上拉弓,避免换箭覆盖itm0的问题
$log .= "你一只手捏着弓箭,一只手抓着刚捡到的箭矢,没法马上弯弓搭箭。<span class=\"red b\">还是先把箭矢收进包裹里吧。</span><br>";
$mode = 'command';
return;
} else {
//$theitem = Array('itm' => &$itm, 'itmk' => &$itmk, 'itme' => &$itme, 'itms' => &$itms, 'itmsk' => &$itmsk);
include_once GAME_ROOT . './include/game/item2.func.php';
itemuse_ugb($pdata, $itmn);
}
}
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理社团卡物品
* 这些物品会改变玩家的社团属性
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_club_card($itmn, &$data) {
global $log, $db, $tablepre, $now, $elements_info, $sparkle;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itmk == 'ZB') { // 社团卡
if ($club) {
$log .= "你已经是有身份的人了!不能再使用称号卡。<br>";
$db->query("INSERT INTO {$tablepre}shopitem (kind,num,price,area,item,itmk,itme,itms,itmsk) VALUES ('18','1','20','0','$itm','$itmk','$itme','$itms','$itmsk')");
$log .= "<span class='yellow'>$itm</span>像是有生命一般从你的手上脱离,飞回了商店!";
}
// 处理不能成为合法社团的情况
elseif ($itme == 15) { // L5状态
$log .= "【DEBUG】进入L5状态<br>";
$log .= '你突然感觉到一种不可思议的力量贯通全身!<br>';
$wp = $wk = $wg = $wc = $wd = $wf = 8010;
$att = $def = 13337;
changeclub(15, $data);
addnews($now, 'suisidefail', $name, $nick);
} elseif ($itme == 17 || $itme > 22) { // 状态机社团以及不存在的社团
$log .= "但是什么都没有发生!";
} elseif ($itme == 20) { // 元素大师特殊处理
// 规则怪谈类型文案
$log .= "你拿起<span class='yellow'>$itm</span>左右端详着……<br>
然后,它突然就在你的眼前消失了!<br>
在你寻思着出了什么事情之后,你的面前突然多了几条类似于规则的玩意。<br>
【特殊程序·元素大师使用规则】<br>
<br>
【其之一】这世上的一切都由六种元素组成。<br>
【其之二】每种元素都能组成一种武器或防具。<br>
【其之三】当你捡到物品后,便可将其提炼成元素。<br>
【其之四】此外,看起来没有用的尸体也可被提炼,不过后果自负。<br>
【其之五】提炼时偶尔会蹦出特殊信息,最好将它们记录下来。<br>
【其之六】提炼出的元素,可以通过「元素合成」产出各种物品。<br>
【其之七】相对是这个世界的摄理之一,如果过于追求数字,就无法体现特殊性。<br>
正在你读着这些规则的时候,它们也在你的眼前慢慢消失……<br>";
$log .= "最后变成了一个<span class='sparkle'>{$sparkle}元素口袋{$sparkle}</span>!<br>";
$log .= "在你将这个口袋收起来时,突然胸口一紧,你的眼前跳出了更多的文字:<br>
【其之零】在D.T.S.的虚拟环境中,不存在将物品单纯地放在一起就能合成的手段。<br>
然后,一行新的文字替代了这条规则:<br>
【其之零】一切都是数字的假象而已。<br>
正在你回味着这句话的时候,一切已经恢复如初。";
// 社团变更
changeclub(20, $data);
// 获取初始元素与第一条配方
$dice = rand(0, 5);
$dice2 = rand(0, 1);
$dice3 = rand(0, 3);
${'element' . $dice} += 500 + $dice;
$clbpara['elements'] = Array();
$clbpara['elements']['tags'] = Array($dice => Array('dom' => Array(0 => 1), 'sub' => Array(0 => 1)));
$clbpara['elements']['info']['d']['d1'] = 1;
// 初始化元素合成缓存文件
include_once GAME_ROOT . './include/game/elementmix.func.php';
emix_spawn_info();
} elseif ($itme == 21) { // 码语行人特殊处理
// Let's have some fun !
$clbpara['dialogue'] = 'club21entry';
// 社团变更
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('0','$now','$name','','「Ρжжηψψρип ρип, ρжжηψψρжжρип ρип」')");
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('0','$now','$name','','「ρψψρип ρип, ρип ρип ρжжηψψρжж ρδ」')");
changeclub(21, $data);
// And we inflict some pretty damage as entry fee.
$hp = $hp / 3;
$sp = 1;
} elseif ($itme == 22) { // 偶像大师特殊处理
$log .= "再等等吧……<br>";
} else { // 直接将社团卡的效果写入玩家club
changeclub($itme, $data);
$log .= "你的称号被改动了!";
}
// 销毁物品
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle cure/medicine items
function item_cure($itmn, &$data) {
global $log, $exdmginf, $ex_inf;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$ck=substr($itmk,1,1);
if($ck == 'a'){
$flag=false;
$log .= "服用了<span class=\"red\">$itm</span>。<br>";
foreach ($ex_inf as $value) {
if(strpos($inf, $value) !== false){
$inf = str_replace($value, '', $inf);
$log .= "{$exdmginf[$value]}状态解除了。<br>";
$flag=true;
}
}
if(!$flag){
$log .= '但是什么也没发生。<br>';
}
}elseif(in_array($ck,$ex_inf)){
if(strpos($inf, $ck) !== false){
$inf = str_replace($ck, '', $inf);
$log .= "服用了<span class=\"red\">$itm</span>,{$exdmginf[$ck]}状态解除了。<br>";
}else{
$log .= "服用了<span class=\"red\">$itm</span>,但是什么效果也没有。<br>";
}
}elseif ($ck == 'x'){
$inf = "puiewhbaf";
$log .= "服用了<span class=\"red\">$itm</span>,<br>";
$log .= "但是,假冒伪劣的<span class=\"red\">$itm</span>导致你{$exdmginf['p']}了!<br>";
$log .= "假冒伪劣的<span class=\"red\">$itm</span>导致你{$exdmginf['u']}了!<br>";
$log .= "假冒伪劣的<span class=\"red\">$itm</span>导致你{$exdmginf['i']}了!<br>";
$log .= "假冒伪劣的<span class=\"red\">$itm</span>导致你{$exdmginf['e']}了!<br>";
$log .= "而且,假冒伪劣的<span class=\"red\">$itm</span>还导致你{$exdmginf['w']}了!<br>";
$log .= "你遍体鳞伤地站了起来。<br>";
$log .= "真是大快人心啊!<br>";
}else{
$log .= "服用了<span class=\"red\">$itm</span>……发生了什么?<br>";
}
$itms --;
/*if (strpos ( $itm, '烧伤药剂' ) === 0) {
if (strpos ( $inf, 'u' ) !== false) {
$inf = str_replace ( 'u', '', $inf );
$log .= "服用了<span class=\"red\">$itm</span>,{$exdmginf['u']}状态解除了。<br>";
} else {
$log .= "服用了<span class=\"red\">$itm</span>,但是什么效果也没有。<br>";
}
$itms --;
} elseif (strpos ( $itm, '麻痹药剂' ) === 0) {
if (strpos ( $inf, 'e' ) !== false) {
$inf = str_replace ( 'e', '', $inf );
$log .= "服用了<span class=\"red\">$itm</span>,{$exdmginf['e']}状态解除了。<br>";
} else {
$log .= "服用了<span class=\"red\">$itm</span>,但是什么效果也没有。<br>";
}
$itms --;
} elseif (strpos ( $itm, '解冻药水' ) === 0) {
if (strpos ( $inf, 'i' ) !== false) {
$inf = str_replace ( 'i', '', $inf );
$log .= "服用了<span class=\"red\">$itm</span>,{$exdmginf['i']}状态解除了。<br>";
} else {
$log .= "服用了<span class=\"red\">$itm</span>,但是什么效果也没有。<br>";
}
$itms --;
} elseif (strpos ( $itm, '解毒剂' ) === 0) {
if (strpos ( $inf, 'p' ) !== false) {
$inf = str_replace ( 'p', '', $inf );
$log .= "服用了<span class=\"red\">$itm</span>,{$exdmginf['p']}状态解除了。<br>";
} else {
$log .= "服用了<span class=\"red\">$itm</span>,但是什么效果也没有。<br>";
}
$itms --;
} elseif (strpos ( $itm, '清醒药剂' ) === 0) {
if (strpos ( $inf, 'w' ) !== false) {
$inf = str_replace ( 'w', '', $inf );
$log .= "服用了<span class=\"red\">$itm</span>,{$exdmginf['w']}状态解除了。<br>";
} else {
$log .= "服用了<span class=\"red\">$itm</span>,但是什么效果也没有。<br>";
}
$itms --;
} elseif (strpos ( $itm, '全恢复药剂' ) === 0) {
if (strpos ( $inf, 'w' ) !== false) {
$inf = str_replace ( 'w', '', $inf );
$log .= "服用了<span class=\"red\">$itm</span>,{$exdmginf['w']}状态解除了。<br>";
} else {
$log .= "服用了<span class=\"red\">$itm</span>,但是什么效果也没有。<br>";
}
$itms --;
} else {
$log .= "服用了<span class=\"red\">$itm</span>……发生了什么?<br>";
$itms --;
}*/
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
This diff is collapsed.
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle electronic items
function item_electronic($itmn, &$data) {
extract($data, EXTR_REFS);
include_once GAME_ROOT . './include/game/item2.func.php';
hack($itmn);
}
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理结局物品
* 这些物品会触发游戏结束
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_ending($itmn, &$data) {
global $log, $url, $state, $now;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itm == '游戏解除钥匙') {
$state = 6;
$url = 'end.php';
include_once GAME_ROOT . './include/system.func.php';
gameover($now, 'end3', $name);
} elseif ($itm == '『G.A.M.E.O.V.E.R』') {
$state = 6;
$url = 'end.php';
include_once GAME_ROOT . './include/system.func.php';
gameover($now, 'end7', $name);
} elseif ($itm == '奇怪的按钮') {
$button_dice = rand(1, 10);
if ($button_dice < 5) {
$log .= "你按下了<span class=\"yellow\">$itm</span>,不过好像什么都没有发生!";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($button_dice < 8) {
$state = 6;
$url = 'end.php';
include_once GAME_ROOT . './include/system.func.php';
gameover($now, 'end5', $name);
} else {
$log .= '好像什么也没发生嘛?<br>咦,按钮上的标签写着什么?"危险,勿触"……?<br>';
include_once GAME_ROOT . './include/state.func.php';
$log .= '呜哇,按钮爆炸了!<br>';
death('button', '', 0, $itm);
}
} elseif ($itm == '【E.S.C.A.P.E】') {
// 这实际上是个死法,但是会给成就,称号,并加积分与胜场
include_once GAME_ROOT . './include/state.func.php';
// 成就检查该物品本身的使用,逻辑不写在这里
$log .= '万事俱备,只欠逃离!<br>';
// 销毁物品
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
death('s_escape', '', 0, $itm);
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle enhancement items
function item_enhance($itmn, &$data) {
global $log, $nosta, $upexp;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$log .= "你服用了<span class=\"red\">$itm</span>。<br>";
if (strpos($itmk, 'MA') === 0) {
//global $att;
$att_min = 500;
$att_limit = 2500;
$dice = rand(-5, 5);
if ($att < $att_min) {
$mefct = $itme;
} elseif ($att < $att_limit) {
$mefct = round($itme * (1 - ($att - $att_min) / ($att_limit - $att_min)));
} else {
$mefct = 0;
}
if ($mefct < 5) {
if ($mefct < $dice) {
$mefct = -$dice;
}
}
$att += $mefct;
$mdname = "基础攻击力";
} elseif (strpos($itmk, 'MD') === 0) {
//global $def;
$def_min = 500;
$def_limit = 2500;
$dice = rand(-5, 5);
if ($def < $def_min) {
$mefct = $itme;
} elseif ($def < $def_limit) {
$mefct = round($itme * (1 - ($def - $def_min) / ($def_limit - $def_min)));
} else {
$mefct = 0;
}
if ($mefct < 5) {
if ($mefct < $dice) {
$mefct = -$dice;
}
}
$def += $mefct;
$mdname = "基础防御力";
} elseif (strpos($itmk, 'ME') === 0) {
//global $exp, $upexp, $baseexp;
$lvlup_objective = $itme / 10;
$mefct = round($baseexp * 2 * $lvlup_objective + rand(0, 5));
$exp += $mefct;
$mdname = "经验值";
} elseif (strpos($itmk, 'MS') === 0) {
//global $sp, $msp;
$mefct = $itme;
$sp += $mefct;
$msp += $mefct;
$mdname = "体力上限";
} elseif (strpos($itmk, 'MH') === 0) {
//global $hp, $mhp;
$mefct = $itme;
$hp += $mefct;
$mhp += $mefct;
$mdname = "生命上限";
} elseif (strpos($itmk, 'MV') === 0) {
//global $wp, $wk, $wg, $wc, $wd, $wf;
$skill_minimum = 100;
$skill_limit = 380;
$dice = rand(-10, 10);
$ws_sum = $wp + $wk + $wg + $wc + $wd + $wf;
if ($ws_sum < $skill_minimum * 5) {
$mefct = $itme;
} elseif ($ws_sum < $skill_limit * 5) {
$mefct = round($itme * (1 - ($ws_sum - $skill_minimum * 5) / ($skill_limit * 5 - $skill_minimum * 5)));
} else {
$mefct = 0;
}
if ($mefct < 10) {
if ($mefct < $dice) {
$mefct = -$dice;
}
}
$wp += $mefct;
$wk += $mefct;
$wg += $mefct;
$wc += $mefct;
$wd += $mefct;
$wf += $mefct;
$mdname = "全系熟练度";
}
if ($mefct > 0) {
$log .= "身体里有种力量涌出来!<br>你的{$mdname}提高了<span class=\"yellow\">$mefct</span>点!<br>";
} elseif ($mefct == 0) {
$log .= "已经很强了,却还想靠药物继续强化自己,是不是太贪心了?<br>你的能力没有任何提升。<br>";
} else {
$mefct = -$mefct;
$log .= "已经很强了,却还想靠药物继续强化自己,是不是太贪心了?<br>你贪婪的行为引发了药物的副作用!<br>你的{$mdname}下降了<span class=\"red\">$mefct</span>点!<br>";
}
if (strpos($itmk, 'ME') === 0) {
if ($exp >= $upexp) {
include_once GAME_ROOT . './include/state.func.php';
lvlup_rev($data, $data, 1);
}
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
include_once GAME_ROOT.'./include/game/clubslct.func.php';
include_once GAME_ROOT.'./include/game/item.main.php';
// 以下是原始的itemuse函数,现在它被移动到item.main.php中
// 这个文件只是为了保持向后兼容性
function itemuse($itmn, &$data=NULL) {
// 调用新的主函数
include_once GAME_ROOT.'./include/game/item.main.php';
return itemuse($itmn, $data);
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle gift box items
function item_giftbox($itmn, &$data) {
global $log, $db, $tablepre, $now, $gamecfg;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$itms--; $oitm = $itm; $oitmk = $itmk;
//if($itms <= 0) destory_single_item($data,$itmn,1);
if(strpos($oitmk, 'ps') === 0){//银色盒子
include_once config('randomitem',$gamecfg);
//1st case of the new diceroll system.
//include_once GAME_ROOT.'./include/game/dice.func.php';
$dice = diceroll(100);
//$dice = rand(1,100);
if($dice <= 75){//一般物品
$itemflag = $itmlow;
}elseif($dice <= 95){//中级道具
$itemflag = $itmmedium;
}elseif($dice <= 97){//神装
$itemflag = $itmhigh;
}elseif($dice <= 99){//礼品盒和游戏王
$file = config('present',$gamecfg);
$plist = openfile($file);
$file2 = config('box',$gamecfg);
$plist2 = openfile($file2);
$plist = array_merge($plist,$plist2);
$rand = rand(0,count($plist)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$plist[$rand]);
$itmflag = false;
}else{//三抽
$itemflag = $antimeta;
}
if($itemflag){
$itemflag = explode("\r\n",$itemflag);
$rand = rand(0,count($itemflag)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$itemflag[$rand]);
}
}elseif(strpos($oitmk, 'p0') === 0){//新福袋·VOL1
// 用$clbpara['opened_pack']记录打开福袋的名称,只要有这个名称,就搞事!
if(!empty($clbpara['opened_pack'])){
$log.="似乎你本轮已经打开过福袋,因此不能再打开更多的福袋!<br>";
$db->query("INSERT INTO {$tablepre}shopitem (kind,num,price,area,item,itmk,itme,itms,itmsk) VALUES ('17','1','20','0','$itm','$itmk','$itme','1','$itmsk')");
$log.="<span class=\"yellow\">$itm</span>从你的手中飞出,向商店的方向飞去。<br>";
}
if(strpos($itmk, 'p0P') === 0){
include_once config('randomWP',$gamecfg);
}elseif(strpos($itmk, 'p0K') === 0){
include_once config('randomWK',$gamecfg);
}elseif(strpos($itmk, 'p0G') === 0){
include_once config('randomWG',$gamecfg);
}elseif(strpos($itmk, 'p0C') === 0){
include_once config('randomWC',$gamecfg);
}elseif(strpos($itmk, 'p0D') === 0){
include_once config('randomWD',$gamecfg);
}elseif(strpos($itmk, 'p0F') === 0){
include_once config('randomWF',$gamecfg);
}elseif(strpos($itmk, 'p0O1') === 0){
include_once config('randomO1',$gamecfg);
}elseif(strpos($itmk, 'p000') === 0){
include_once config('random00',$gamecfg);
}elseif(strpos($itmk, 'p0AV') === 0){ #TODO VTuber大福袋
//include_once config('randomAV',$gamecfg);
include_once config('randomO1',$gamecfg);
}else{ #防呆
include_once config('randomO1',$gamecfg);
}
//include_once GAME_ROOT.'./include/game/dice.func.php';
$dice = diceroll(1000);
if($dice <= 550){//一般物品
$itemflag = $itmlow;
}elseif($dice <= 888){//中级道具
$itemflag = $itmmedium;
}elseif($dice <= 995){//神装
$itemflag = $itmhigh;
$clbpara['achvars']['gacha_sr'] += 1;
}else{
$itemflag = $antimeta;
$clbpara['achvars']['gacha_ssr'] += 1;
}
if($itemflag){
$itemflag = explode("\r\n",$itemflag);
$rand = rand(0,count($itemflag)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$itemflag[$rand]);
if($clbpara['opened_pack']){
$in = '乌黑的脸'; # 给一个惩罚用物品
$ik = 'X';
$ie = 1;
$is = 1;
$isk = '';
}
$clbpara['opened_pack'] = $oitm; //记录打开福袋
}
}else{//一般礼品盒
$file = config('present',$gamecfg);
$plist = openfile($file);
$rand = rand(0,count($plist)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$plist[$rand]);
}
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
if($itms <= 0) destory_single_item($data,$itmn,1);
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
addnews($now,'present',$name,$oitm,$in,$nick);
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget($data);
}
// Handle YGO box items
function item_ygo_box($itmn, &$data) {
global $log, $now, $gamecfg;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$itms--; $oitm = $itm;
if($itms <= 0) destory_single_item($data,$itmn,1);
$file1 = config('box',$gamecfg);
$plist1 = openfile($file1);
$rand1 = rand(0,count($plist1)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]);
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
addnews($now,'present',$name,$oitm,$in,$nick);
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget($data);
}
// Handle FY box items
function item_fy_box($itmn, &$data) {
global $log, $now, $gamecfg;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$itms--; $oitm = $itm;
if($itms <= 0) destory_single_item($data,$itmn,1);
$file1 = config('fy',$gamecfg);
$plist1 = openfile($file1);
$rand1 = rand(0,count($plist1)-1);
list($in,$ik,$ie,$is,$isk) = explode(',',$plist1[$rand1]);
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
addnews($now,'present',$name,$oitm,$in,$nick);
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget($data);
}
// Handle debug box items
function item_debug_box($itmn, &$data) {
global $log, $now, $gamecfg;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$itms--; $oitm = $itm;
if($itms <= 0) destory_single_item($data,$itmn,1);
$file1 = config('f99',$gamecfg);
$plist1 = openfile($file1);
$rand1 = rand(0,count($plist1)-1);
list($in,$ik,$ie,$is,$isk,$ipara) = explode(',',$plist1[$rand1]);
//global $itm0,$itmk0,$itme0,$itms0,$itmsk0,$mode;
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;$itmpara0=$ipara;
addnews($now,'present',$name,$oitm,$in,$nick);
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget($data);
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
include_once GAME_ROOT.'./include/game/clubslct.func.php';
// Main item use function that delegates to specific item type handlers
function itemuse($itmn,&$data=NULL) {
//global $mode, $log, $nosta, $pid, $name, $state, $now,$nick,$achievement,$club,$clbpara,$pdata;
global $url,$cmd,$mode,$db,$tablepre,$log,$nosta,$noarb,$gamevars,$corpseprotect,$now,$gamecfg,$hack,$gamevars;
global $exdmginf,$ex_inf,$cskills,$elements_info,$sparkle,$event_bgm;
global $upexp,$baseexp,$elec_cap;
//Some globals seems to be still needed... ...
global $itemspkinfo,$plsinfo;
global $pid;
if(!isset($data))
{
global $pdata;
$data = &$pdata;
}
extract($data,EXTR_REFS);
if (($itmn < 1 || $itmn > 6) && $itmn != 0 ){
$log .= '此道具不存在,请重新选择。';
$mode = 'command';
return;
}
////global ${'itm' . $itmn}, ${'itmk' . $itmn}, ${'itme' . $itmn}, ${'itms' . $itmn}, ${'itmsk' . $itmn};
//2024-07-19: I'm mad enough to add $itmpara, with me luck.
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
//$itmpara = & ${'itmpara' . $itmn};
$itmpara = & get_itmpara(${'itmpara' . $itmn});
$i=$itm;$ik=$itmk;$ie=$itme;$is=$itms;$isk=$itmsk;$ipara=$itmpara;
if (($itms <= 0) && ($itms != $nosta)) {
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
$log .= '此道具不存在,请重新选择。<br>';
$mode = 'command';
return;
}
//If you are dead, you can't use items!
if ($hp <= 0) {
$log .= '你的大脑看起来仍旧想挣扎一下,但你的手已经动不了了,挣扎似乎也没有什么意义。<br>';
$log .= '你已经死亡,无法使用道具。<br>';
$mode = 'command';
return;
}
// Include specific item type handlers
include_once GAME_ROOT.'./include/game/item.weapon.php';
include_once GAME_ROOT.'./include/game/item.recovery.php';
include_once GAME_ROOT.'./include/game/item.poison.php';
include_once GAME_ROOT.'./include/game/item.trap.php';
include_once GAME_ROOT.'./include/game/item.ammo.php';
include_once GAME_ROOT.'./include/game/item.radar.php';
include_once GAME_ROOT.'./include/game/item.cure.php';
include_once GAME_ROOT.'./include/game/item.skillbook.php';
include_once GAME_ROOT.'./include/game/item.enhance.php';
include_once GAME_ROOT.'./include/game/item.weather.php';
include_once GAME_ROOT.'./include/game/item.electronic.php';
include_once GAME_ROOT.'./include/game/item.giftbox.php';
include_once GAME_ROOT.'./include/game/item.dice.php';
include_once GAME_ROOT.'./include/game/item.platform.php';
include_once GAME_ROOT.'./include/game/item.tool.php';
include_once GAME_ROOT.'./include/game/item.weapon_mod.php';
include_once GAME_ROOT.'./include/game/item.ending.php';
include_once GAME_ROOT.'./include/game/item.special_effect.php';
include_once GAME_ROOT.'./include/game/item.npc.php';
include_once GAME_ROOT.'./include/game/item.synthesis.php';
include_once GAME_ROOT.'./include/game/item.club_card.php';
include_once GAME_ROOT.'./include/game/item.nachster_booster.php';
include_once GAME_ROOT.'./include/game/item.test.php';
include_once GAME_ROOT.'./include/game/item.other.php';
// Delegate to specific item type handlers based on item type code
if(strpos($itmk, 'W') === 0 || strpos($itmk, 'D') === 0 || strpos($itmk, 'A') === 0 || strpos($itmk, 'ss') === 0) {
// Weapons and equipment
item_weapon($itmn, $data);
} elseif(strpos($itmk, 'HS') === 0) {
// Stamina recovery
item_recovery_stamina($itmn, $data);
} elseif(strpos($itmk, 'HH') === 0) {
// Health recovery
item_recovery_health($itmn, $data);
} elseif(strpos($itmk, 'HM') === 0) {
// Soul increase
item_recovery_soul_increase($itmn, $data);
} elseif(strpos($itmk, 'HT') === 0) {
// Soul recovery
item_recovery_soul($itmn, $data);
} elseif(strpos($itmk, 'HR') === 0) {
// Rage recovery
item_recovery_rage($itmn, $data);
} elseif(strpos($itmk, 'HB') === 0) {
// Health and stamina recovery
item_recovery_both($itmn, $data);
} elseif(strpos($itmk, 'P') === 0) {
// Poison
item_poison($itmn, $data);
} elseif(strpos($itmk, 'T') === 0) {
// Trap
item_trap($itmn, $data);
} elseif(strpos($itmk, 'GB') === 0) {
// Bullets
item_ammo_bullets($itmn, $data);
} elseif(strpos($itmk, 'GA') === 0) {
// Arrows
item_ammo_arrows($itmn, $data);
} elseif(strpos($itmk, 'R') === 0) {
// Radar (old)
item_radar_old($itmn, $data);
} elseif(strpos($itmk, 'C') === 0) {
// Cure/Medicine
item_cure($itmn, $data);
} elseif(strpos($itmk, 'V') === 0) {
// Skill books
item_skillbook($itmn, $data);
} elseif(strpos($itmk, 'M') === 0) {
// Enhancement
item_enhance($itmn, $data);
} elseif(strpos($itmk, 'EW') === 0) {
// Weather control
item_weather($itmn, $data);
} elseif(strpos($itmk, 'EE') === 0 || $itm == '移动PC') {
// Electronic devices
item_electronic($itmn, $data);
} elseif(strpos($itmk, 'ER') === 0) {
// Radar (new)
item_radar_new($itmn, $data);
} elseif(strpos($itmk, 'B') === 0) {
// Battery
item_battery($itmn, $data);
} elseif(strpos($itmk, 'p') === 0) {
// Gift boxes
item_giftbox($itmn, $data);
} elseif(strpos($itmk, 'ygo') === 0) {
// YGO boxes
item_ygo_box($itmn, $data);
} elseif(strpos($itmk, 'fy') === 0) {
// FY boxes
item_fy_box($itmn, $data);
} elseif(strpos($itmk, 'f99') === 0) {
// Debug boxes
item_debug_box($itmn, $data);
} elseif($itmk == 'U') {
// Trap detector
item_trap_detector($itmn, $data);
} elseif(strpos($itmk, '🎲') === 0) {
// Dice items
item_dice($itmn, $data);
} elseif(strpos($itmk, '💝') === 0) {
// NPC Platform
item_platform($itmn, $data);
} elseif(strpos($itmk, 'Y') === 0 || strpos($itmk, 'Z') === 0) {
// Y/Z type items
// Check if it's a tool item
item_tool($itmn, $data);
// Check if it's a weapon modification item
item_weapon_mod($itmn, $data);
// Check if it's an ending item
item_ending($itmn, $data);
// Check if it's a special effect item
item_special_effect($itmn, $data);
// Check if it's an NPC-related item
item_npc($itmn, $data);
// Check if it's a synthesis item
item_synthesis($itmn, $data);
// Check if it's a club card
item_club_card($itmn, $data);
// Check if it's a nachster booster item
item_nachster_booster($itmn, $data);
// Check if it's a test item
item_test($itmn, $data);
} elseif(strpos($itmk, '🎆') === 0) {
// Fireworks
item_fireworks($itmn, $data);
} else {
// Other items
item_other($itmn, $data);
}
// 消耗物品
if ($itms <= 0 && $itm) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
// 检查成就
include_once GAME_ROOT.'./include/game/achievement.func.php';
check_item_achievement_rev($name,$i,$ie,$is,$ik,$isk);
$mode = 'command';
return;
}
This diff is collapsed.
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理NPC相关物品
* 这些物品会影响NPC的生成、移动等
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_npc($itmn, &$data) {
global $log, $now, $db, $tablepre, $hack, $gamevars;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itm == '杏仁豆腐的ID卡') {
include_once GAME_ROOT . './include/system.func.php';
$duelstate = duel($now, $itm);
if ($duelstate == 50) {
$log .= "<span class=\"yellow\">你使用了{$itm}。</span><br><span class=\"evergreen\">“干得不错呢,看来咱应该专门为你清扫一下战场……”</span><br><span class=\"evergreen\">“所有的NPC都离开战场了。好好享受接下来的杀戮吧,祝你好运。”</span>——林无月<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($duelstate == 51) {
$log .= "你使用了<span class=\"yellow\">{$itm}</span>,不过什么反应也没有。<br><span class=\"evergreen\">“咱已经帮你准备好舞台了,请不要要求太多哦。”</span>——林无月<br>";
} else {
$log .= "你使用了<span class=\"yellow\">{$itm}</span>,不过什么反应也没有。<br><span class=\"evergreen\">“表演的时机还没到呢,请再忍耐一下吧。”</span>——林无月<br>";
}
} elseif ($itm == '挑战者之印') {
include_once GAME_ROOT . './include/system.func.php';
$log .= '你已经呼唤了幻影执行官,现在寻找并击败他们,<br>并且搜寻他们的ID卡吧!<br>';
addnpc(7, 0, 1);
addnpc(7, 1, 1);
addnpc(7, 2, 1);
addnews($now, 'secphase', $name, $nick);
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '破灭之诗') {
$rp = 0;
$clbpara['dialogue'] = 'thiphase';
$clbpara['console'] = 1;
$clbpara['achvars']['thiphase'] += 1;
include_once GAME_ROOT . './include/system.func.php';
$log .= '在你唱出那单一的旋律的霎那,<br>整个虚拟世界起了翻天覆地的变化……<br>';
addnpc(4, 0, 1);
include_once GAME_ROOT . './include/game/item2.func.php';
$log .= '世界响应着这旋律,产生了异变……<br>';
wthchange($itm, $itmsk);
addnews($now, 'thiphase', $name, $nick);
$hack = 1;
$gamevars['apis'] = $gamevars['api'] = 3;
$log .= '因为破灭之歌的作用,全部锁定被打破了!<br>';
movehtm();
addnews($now, 'hack2', $name, $nick);
save_gameinfo();
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '黑色碎片') {
include_once GAME_ROOT . './include/system.func.php';
$log .= '你已经呼唤了一个未知的存在,现在寻找并击败她,<br>并且搜寻她的游戏解除钥匙吧!<br>';
addnews($now, 'dfphase', $name, $nick);
addnpc(12, 0, 1);
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '✦钥匙碎片') {
include_once GAME_ROOT . './include/system.func.php';
$log .= '嗯……?只有碎片也能用吗?<br>好像将一小部分NPC部署进了游戏内……<br>';
//思念体 4*3
addnpc(2, 0, 2);
addnpc(2, 1, 2);
addnpc(2, 2, 2);
addnpc(2, 3, 2);
addnpc(2, 4, 2);
addnpc(2, 5, 2);
addnpc(2, 6, 2);
addnpc(2, 7, 2);
addnews($now, 'key0', $name, $nick);
$itms--;
if ($itms <= 0) destory_single_item($data, $itmn, 1);
} elseif ($itm == '✦NPC钥匙·一阶段') {
include_once GAME_ROOT . './include/system.func.php';
$log .= '已解锁一阶段NPC!<br>似乎大量NPC已经部署至游戏内……<br>';
//职人 1*6
addnpc(11, 0, 1);
addnpc(11, 1, 1);
addnpc(11, 2, 1);
addnpc(11, 3, 1);
addnpc(11, 4, 1);
addnpc(11, 5, 1);
//妖精幻象 1*3
addnpc(13, 0, 1);
addnpc(13, 1, 1);
addnpc(13, 2, 1);
addnews($now, 'key1', $name, $nick);
$itms--;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} elseif ($itm == '✦✦NPC钥匙·二阶段') {
include_once GAME_ROOT . './include/system.func.php';
$log .= '已解锁二阶段NPC!<br>似乎凶恶NPC已经部署至游戏内……<br>';
//杏仁豆腐 2*2
addnpc(5, 0, 1);
addnpc(5, 1, 1);
addnpc(5, 0, 1);
addnpc(5, 1, 1);
//猴子 1*2
addnpc(6, 0, 1);
addnpc(6, 0, 1);
//假蓝凝
addnpc(9, 0, 1);
addnews($now, 'key2', $name, $nick);
$itms--;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} elseif ($itm == '✦种火钥匙') {
include_once GAME_ROOT . './include/system.func.php';
$log .= '虽然不知道你究竟想干啥,<br>但总之你放出了更多的种火……<br>';
//种火 5*10
addnpc(92, 0, 10);
addnpc(92, 1, 10);
addnpc(92, 2, 10);
addnpc(92, 3, 10);
addnpc(92, 4, 10);
addnews($now, 'key3', $name, $nick);
$itms--;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} elseif ($itm == '✦【自律AI呼唤器】') {
//Call in 30 type 93 NPCs, 6 each.
//get player's 1st Yume value - different value results in different NPC.
//There are 5 sets - K, C, G, P, D.
include_once GAME_ROOT . './include/system.func.php';
$log .= '你将这根权杖一般的钥匙狠狠插在了地面上,<br>很快,大批NPC就从空中降落到了战场上!<br>';
if ($clbpara['randver1'] < 21) {
// 1st set - WK High School Oni Girls
addnpc(93, 0, 6);
addnpc(93, 1, 6);
addnpc(93, 2, 6);
addnpc(93, 3, 6);
addnpc(93, 4, 6);
} elseif ($clbpara['randver1'] < 42) {
// 2nd set - WC Idol Magical Girls
addnpc(93, 5, 6);
addnpc(93, 6, 6);
addnpc(93, 7, 6);
addnpc(93, 8, 6);
addnpc(93, 9, 6);
} elseif ($clbpara['randver1'] < 63) {
// 3rd set - WG Mecha Girls
addnpc(93, 10, 6);
addnpc(93, 11, 6);
addnpc(93, 12, 6);
addnpc(93, 13, 6);
addnpc(93, 14, 6);
} elseif ($clbpara['randver1'] < 84) {
// 4th set - WP Martial Arts Girls
addnpc(93, 15, 6);
addnpc(93, 16, 6);
addnpc(93, 17, 6);
addnpc(93, 18, 6);
addnpc(93, 19, 6);
} else {
// 5th set - WD Explosive Girls
addnpc(93, 20, 6);
addnpc(93, 21, 6);
addnpc(93, 22, 6);
addnpc(93, 23, 6);
addnpc(93, 24, 6);
}
addnews($now, 'key4', $name, $nick);
$itms--;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
This diff is collapsed.
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理 NPC 平台物品
* NPC 平台允许玩家临时或永久地获取其他玩家或 NPC 的状态
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_platform($itmn, &$data) {
global $log, $db, $tablepre;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$itmpara = & get_itmpara(${'itmpara' . $itmn});
// 记录玩家原始名称,以便在日志中使用
$playerOriginalName = $name;
// 初始化平台数据数组
$platformData = array();
// 确定数据来源:PID模式或预设数据模式
if (!empty($itmpara['platformPlayerMode']) && $itmpara['platformPlayerMode'] == 'PID') {
// PID模式:从数据库获取目标玩家数据
if (!empty($itmpara['targetPID'])) {
$targetPID = $itmpara['targetPID'];
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$targetPID'");
if ($db->num_rows($result)) {
$platformData = $db->fetch_array($result);
$log .= "NPC平台正在连接到目标玩家数据...<br>";
} else {
$log .= "错误:无法找到指定的目标玩家数据。<br>";
return;
}
} else {
$log .= "错误:未指定目标玩家ID。<br>";
return;
}
} else {
// 预设数据模式:从物品参数中获取预设的玩家数据
$platformData = extractPlatformPlayerData($itmpara);
if (empty($platformData)) {
$log .= "错误:NPC平台中没有有效的预设数据。<br>";
return;
}
$log .= "NPC平台正在加载预设数据...<br>";
}
// 检查是否为临时变身
$isTemporary = isset($itmpara['PlatformIsTimed']);
// 如果是临时变身,保存玩家原始数据
if ($isTemporary) {
savePlayerOriginalData($data);
$log .= "你的原始数据已保存,变身将在一定时间后恢复。<br>";
} else {
$log .= "警告:这是永久性变身,你的原始数据将不会被保存!<br>";
}
// 应用平台数据到玩家
applyPlatformDataToPlayer($data, $platformData);
// 记录变身日志
$targetName = !empty($platformData['name']) ? $platformData['name'] : "未知NPC";
$log .= "变身成功!你现在是 <span class=\"yellow\">{$targetName}</span>。<br>";
// 消耗物品
if ($itms != $nosta) {
$itms--;
if ($itms <= 0) {
$log .= "<span class=\"red\">{$itm}</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
${'itmpara' . $itmn} = '';
}
}
}
/**
* 从物品参数中提取预设的玩家数据
*
* @param array $itmpara 物品参数
* @return array 提取的玩家数据
*/
function extractPlatformPlayerData($itmpara) {
$platformData = array();
$playerFields = array(
'name', 'type', 'hp', 'mhp', 'sp', 'msp', 'att', 'def', 'pls', 'lvl', 'exp',
'money', 'rage', 'pose', 'tactic', 'club', 'icon', 'gender', 'sNo', 'teamID',
'wep', 'wepk', 'wepe', 'weps', 'wepsk', 'arb', 'arbk', 'arbe', 'arbs', 'arbsk',
'arh', 'arhk', 'arhe', 'arhs', 'arhsk', 'ara', 'arak', 'arae', 'aras', 'arask',
'arf', 'arfk', 'arfe', 'arfs', 'arfsk', 'art', 'artk', 'arte', 'arts', 'artsk',
'itm1', 'itmk1', 'itme1', 'itms1', 'itmsk1', 'itm2', 'itmk2', 'itme2', 'itms2', 'itmsk2',
'itm3', 'itmk3', 'itme3', 'itms3', 'itmsk3', 'itm4', 'itmk4', 'itme4', 'itms4', 'itmsk4',
'itm5', 'itmk5', 'itme5', 'itms5', 'itmsk5', 'itm6', 'itmk6', 'itme6', 'itms6', 'itmsk6',
'wep2', 'wep2k', 'wep2e', 'wep2s', 'wep2sk', 'wep2c', 'ss', 'mss', 'inf', 'skill',
'wp', 'wk', 'wg', 'wc', 'wd', 'wf', 'killnum', 'state'
);
foreach ($playerFields as $field) {
$platformKey = 'PlatformPlayer' . ucfirst($field);
if (isset($itmpara[$platformKey])) {
$platformData[$field] = $itmpara[$platformKey];
}
}
return $platformData;
}
/**
* 保存玩家原始数据到 clbpara 数组
*
* @param array &$data 玩家数据
*/
function savePlayerOriginalData(&$data) {
extract($data, EXTR_REFS);
// 保存需要恢复的字段
$fieldsToSave = array(
'name', 'type', 'hp', 'mhp', 'sp', 'msp', 'att', 'def', 'pls', 'lvl', 'exp',
'money', 'rage', 'pose', 'tactic', 'club', 'icon', 'gender', 'sNo', 'teamID',
'wep', 'wepk', 'wepe', 'weps', 'wepsk', 'arb', 'arbk', 'arbe', 'arbs', 'arbsk',
'arh', 'arhk', 'arhe', 'arhs', 'arhsk', 'ara', 'arak', 'arae', 'aras', 'arask',
'arf', 'arfk', 'arfe', 'arfs', 'arfsk', 'art', 'artk', 'arte', 'arts', 'artsk',
'itm1', 'itmk1', 'itme1', 'itms1', 'itmsk1', 'itm2', 'itmk2', 'itme2', 'itms2', 'itmsk2',
'itm3', 'itmk3', 'itme3', 'itms3', 'itmsk3', 'itm4', 'itmk4', 'itme4', 'itms4', 'itmsk4',
'itm5', 'itmk5', 'itme5', 'itms5', 'itmsk5', 'itm6', 'itmk6', 'itme6', 'itms6', 'itmsk6',
'wep2', 'wep2k', 'wep2e', 'wep2s', 'wep2sk', 'wep2c', 'ss', 'mss', 'inf', 'skill',
'wp', 'wk', 'wg', 'wc', 'wd', 'wf', 'killnum', 'state'
);
foreach ($fieldsToSave as $field) {
if (isset($$field)) {
$clbpara['ori' . ucfirst($field)] = $$field;
}
}
// 设置恢复标记和时间
$clbpara['platformTransformed'] = true;
$clbpara['platformTransformTime'] = time();
}
/**
* 将平台数据应用到玩家
*
* @param array &$data 玩家数据
* @param array $platformData 平台数据
*/
function applyPlatformDataToPlayer(&$data, $platformData) {
extract($data, EXTR_REFS);
// 应用平台数据到玩家
foreach ($platformData as $field => $value) {
if (isset($$field)) {
$$field = $value;
}
}
}
/**
* 恢复玩家原始数据
* 用于解除NPC变身状态,将保存在clbpara中的原始数据重新赋值给玩家
*
* @param array &$data 玩家数据
* @return bool 是否成功恢复数据
*/
function restorePlayerOriginalData(&$data) {
global $log;
extract($data, EXTR_REFS);
// 检查是否有保存的原始数据
if (!isset($clbpara['platformTransformed']) || $clbpara['platformTransformed'] !== true) {
$log .= "没有找到保存的原始数据,无法恢复。<br>";
return false;
}
// 获取保存的字段列表
$fieldsToRestore = array(
'name', 'type', 'hp', 'mhp', 'sp', 'msp', 'att', 'def', 'pls', 'lvl', 'exp',
'money', 'rage', 'pose', 'tactic', 'club', 'icon', 'gender', 'sNo', 'teamID',
'wep', 'wepk', 'wepe', 'weps', 'wepsk', 'arb', 'arbk', 'arbe', 'arbs', 'arbsk',
'arh', 'arhk', 'arhe', 'arhs', 'arhsk', 'ara', 'arak', 'arae', 'aras', 'arask',
'arf', 'arfk', 'arfe', 'arfs', 'arfsk', 'art', 'artk', 'arte', 'arts', 'artsk',
'itm1', 'itmk1', 'itme1', 'itms1', 'itmsk1', 'itm2', 'itmk2', 'itme2', 'itms2', 'itmsk2',
'itm3', 'itmk3', 'itme3', 'itms3', 'itmsk3', 'itm4', 'itmk4', 'itme4', 'itms4', 'itmsk4',
'itm5', 'itmk5', 'itme5', 'itms5', 'itmsk5', 'itm6', 'itmk6', 'itme6', 'itms6', 'itmsk6',
'wep2', 'wep2k', 'wep2e', 'wep2s', 'wep2sk', 'wep2c', 'ss', 'mss', 'inf', 'skill',
'wp', 'wk', 'wg', 'wc', 'wd', 'wf', 'killnum', 'state'
);
// 恢复原始数据
$restoredFields = 0;
foreach ($fieldsToRestore as $field) {
$oriField = 'ori' . ucfirst($field);
if (isset($clbpara[$oriField])) {
$$field = $clbpara[$oriField];
unset($clbpara[$oriField]); // 清除已恢复的数据
$restoredFields++;
}
}
// 清除变身标记
unset($clbpara['platformTransformed']);
unset($clbpara['platformTransformTime']);
// 记录恢复日志
if ($restoredFields > 0) {
$log .= "变身状态已解除,你恢复了原来的样子。<br>";
return true;
} else {
$log .= "尝试恢复原始数据,但没有找到有效的数据。<br>";
return false;
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle poison items
function item_poison($itmn, &$data) {
global $log, $nosta, $db, $tablepre, $now;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if (strpos($itmk, '2') === 2) {
$damage = round($itme * 2);
} elseif (strpos($itmk, '1') === 2) {
$damage = round($itme * 1.5);
} else {
$damage = round($itme);
}
if (strpos($inf, 'p') === false) {
$inf .= 'p';
}
$hp -= $damage;
if ($itmsk && is_numeric($itmsk)) {
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$itmsk'");
$wdata = $db->fetch_array($result);
$log .= "糟糕,<span class=\"yellow\">$itm</span>中被<span class=\"yellow\">{$wdata['name']}</span>掺入了毒药!你受到了<span class=\"dmg\">$damage</span>点伤害!<br>";
addnews($now, 'poison', $name, $wdata['name'], $itm, $nick);
} else {
$log .= "糟糕,<span class=\"yellow\">$itm</span>有毒!你受到了<span class=\"dmg\">$damage</span>点伤害!<br>";
}
if ($hp <= 0) {
if ($itmsk && is_numeric($itmsk)) {
$bid = $itmsk;
$result = $db->query("SELECT * FROM {$tablepre}players WHERE pid='$itmsk'");
$edata = $db->fetch_array($result);
//include_once GAME_ROOT . './include/state.func.php';
//$killmsg = death('poison', $wdata['name'], $wdata['type'], $itm);
//$log .= "你被<span class=\"red\">" . $wdata['name'] . "</span>毒死了!";
//if($killmsg){$log .= "<span class=\"yellow\">{$wdata['name']}对你说:"{$killmsg}"</span><br>";}
if(!$edata['type'])
{
$w_log = "<span class=\"yellow\">{$name}误食了你下毒的补给<span class=\"red\">{$itm}</span>被毒死!</span><br>";
logsave($itmsk, $now, $w_log, 'b');
}
$edata['wep_name'] = $itm;
include_once GAME_ROOT.'./include/state.func.php';
$last = pre_kill_events($edata, $data, 0, 'poison');
if($itmsk == $data['pid']) $last = 0;
final_kill_events($edata, $data, 0, $last);
player_save($edata); //current_player_save();
} else {
//$bid = 0;
include_once GAME_ROOT . './include/state.func.php';
death('poison', '', 0, $itm);
$log .= "你被毒死了!";
}
}
else
{
//吃了像围棋子一样的饼干但是活下来了……怎么做到的!
if($itm == '像围棋子一样的饼干') $clbpara['achvars']['eat_weiqi'] = 1;
if($itm == '桔黄色的果酱') $clbpara['achvars']['eat_jelly'] = 1;
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle old radar items
function item_radar_old($itmn, &$data) {
global $log;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
//$log.= $itm .'已经废弃,请联系管理员。';
if ($itme > 0) {
$log .= "使用了<span class=\"red\">$itm</span>。<br>";
include_once GAME_ROOT . './include/game/item2.func.php';
newradar($itmsk);
$itme --;
if ($itme <= 0) {
$log .= $itm . '的电力用光了,请使用电池充电。<br>';
}
} else {
$itme = 0;
$log .= $itm . '没有电了,请先充电。<br>';
}
}
// Handle new radar items
function item_radar_new($itmn, &$data) {
global $log;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itme > 0) {
$log .= "使用了<span class=\"red\">$itm</span>。<br>";
include_once GAME_ROOT . './include/game/item2.func.php';
newradar($itmsk);
//global $club;
if($club == 7){
$e_dice = rand(0,1);
if($e_dice == 1){
$itme--;
$log .= "消耗了<span class=\"yellow\">$itm</span>的电力。<br>";
}else{
$log .= "由于操作迅速,<span class=\"yellow\">$itm</span>的电力没有消耗。<br>";
}
}else{
$itme--;
$log .= "消耗了<span class=\"yellow\">$itm</span>的电力。<br>";
}
if ($itme <= 0) {
$log .= $itm . '的电力用光了,请使用电池充电。<br>';
}
} else {
$itme = 0;
$log .= $itm . '没有电了,请先充电。<br>';
}
}
// Handle battery items
function item_battery($itmn, &$data) {
global $log, $elec_cap;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$flag = false;
$bat_kind = substr($itmk,1,1);
for($i = 1; $i <= 6; $i ++) {
//global ${'itm' . $i}, ${'itmk' . $i}, ${'itme' . $i}, ${'itms' . $i};
if (${'itmk' . $i} == 'E'.$bat_kind && ${'itms' . $i}) {
if(${'itme' . $i} >= $elec_cap){
$log .= "包裹{$i}里的<span class=\"yellow\">{${'itm'.$i}}</span>已经充满电了。<br>";
}else{
${'itme' . $i} += $itme;
if(${'itme' . $i} > $elec_cap){${'itme' . $i} = $elec_cap;}
$itms --;
$flag = true;
$log .= "为包裹{$i}里的<span class=\"yellow\">{${'itm'.$i}}</span>充了电。";
break;
}
}
}
if (! $flag) {
$log .= '你没有需要充电的物品。<br>';
}
if ($itms <= 0 && $itm) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle stamina recovery items
function item_recovery_stamina($itmn, &$data) {
global $log, $nosta;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($sp < $msp) {
$oldsp = $sp;
if($club == 12){
$spup = round($itme*1.25);
}else{
$spup = $itme;
}
/*$sp += $spup;
$sp = $sp > $msp ? $msp : $sp;
$oldsp = $sp - $oldsp;*/
$addsp = $msp - $sp < $spup ? $msp - $sp : $spup;
//ADD: Process Luck Battle Mode random SP/HP gains.
if ($clbpara['BGMBrand'] == 'rixolamal'){
$addsp = diceroll($itme);
$log .= "随机数大神不喜欢给定值,你回复的体力被骰子改动了!<br>";
}
if($addsp > 0) $sp += $addsp;
else $addsp = 0;
$log .= "你使用了<span class=\"red\">$itm</span>,恢复了<span class=\"yellow\">$addsp</span>点体力。<br>";
//吃了无毒果酱
if($itm == '桔黄色的果酱') $clbpara['achvars']['eat_jelly'] = 1;
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
} else {
$log .= '你的体力不需要恢复。<br>';
}
}
// Handle health recovery items
function item_recovery_health($itmn, &$data) {
global $log, $nosta;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($hp < $mhp) {
$oldhp = $hp;
if($club == 12){
$hpup = round($itme*1.25);
}else{
$hpup = $itme;
}
/*$hp += $hpup;
$hp = $hp > $mhp ? $mhp : $hp;
$oldhp = $hp - $oldhp;*/
$addhp = $mhp - $hp < $hpup ? $mhp - $hp : $hpup;
if ($clbpara['BGMBrand'] == 'rixolamal'){
$addhp = diceroll($itme);
$log .= "随机数大神不喜欢给定值,你回复的生命被骰子改动了!<br>";
}
if($addhp > 0) $hp += $addhp;
else $addhp = 0;
$log .= "你使用了<span class=\"red\">$itm</span>,恢复了<span class=\"yellow\">$addhp</span>点生命。<br>";
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
} else {
$log .= '你的生命不需要恢复。<br>';
}
}
// Handle soul increase items
function item_recovery_soul_increase($itmn, &$data) {
global $log, $nosta;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$mss+=$itme;
$ss+=$itme;
$log .= "你使用了<span class=\"red\">$itm</span>,增加了<span class=\"yellow\">$itme</span>点歌魂。<br>";
if ($clbpara['BGMBrand'] == 'lila'){
$check = diceroll(20);
if ($check > 17){
$log .= "<span class=\"clan\">突然,一位纯洁的女初中生形象出现在你的脑海中,<br>你觉醒了额外的歌魂!<br></span>";
$mss += $check * 2;
$ss += $check * 2;
}
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
// Handle soul recovery items
function item_recovery_soul($itmn, &$data) {
global $log, $nosta;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$ssup=$itme;
if ($ss < $mss) {
$oldss = $ss;
$ss += $ssup;
$ss = $ss > $mss ? $mss : $ss;
$oldss = $ss - $oldss;
$log .= "你使用了<span class=\"red\">$itm</span>,恢复了<span class=\"yellow\">$oldss</span>点歌魂。<br>";
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
} else {
$log .= '你的歌魂不需要恢复。<br>';
}
}
// Handle rage recovery items
function item_recovery_rage($itmn, &$data) {
global $log, $nosta, $gamecfg;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$rageup=$itme;
require config('gamecfg',$gamecfg);
if ($rage < $mrage) {
$oldrage = $rage;
$rage += $rageup;
$rage = $rage > $mrage ? $mrage : $rage;
$oldrage = $rage - $oldrage;
$log .= "你吃了一口<span class=\"red\">$itm</span>,顿时感觉心中充满了愤怒。你的怒气值增加了<span class=\"yellow b\">$oldrage</span>点!<br>";
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
} else {
$log .= '你已经出离愤怒了,动怒伤肝,还是歇歇吧!<br>';
}
}
// Handle health and stamina recovery items
function item_recovery_both($itmn, &$data) {
global $log, $nosta;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if (($hp < $mhp) || ($sp < $msp)) {
if($club == 12){
$bpup = round($itme*1.25);
}else{
$bpup = $itme;
}
//$oldsp = $sp;
//$sp += $bpup;
//$sp = $sp > $msp ? $msp : $sp;
//$oldsp = $sp - $oldsp;
$addsp = $msp - $sp < $bpup ? $msp - $sp : $bpup;
if ($clbpara['BGMBrand'] == 'rixolamal'){
$addsp = diceroll($itme);
$log .= "随机数大神不喜欢给定值,你回复的体力被骰子改动了!<br>";
}
if($addsp > 0) $sp += $addsp;
else $addsp = 0;
//$oldhp = $hp;
//$hp += $bpup;
//$hp = $hp > $mhp ? $mhp : $hp;
//$oldhp = $hp - $oldhp;
$addhp = $mhp - $hp < $bpup ? $mhp - $hp : $bpup;
if ($clbpara['BGMBrand'] == 'rixolamal'){
$addhp = diceroll($itme);
$log .= "随机数大神不喜欢给定值,你回复的生命被骰子改动了!<br>";
}
if($addhp > 0) $hp += $addhp;
else $addhp = 0;
$log .= "你使用了<span class=\"red\">$itm</span>,恢复了<span class=\"yellow\">$addhp</span>点生命和<span class=\"yellow\">$addsp</span>点体力。<br>";
//吃了无毒的围棋子饼干 真勇啊!
if($itm == '像围棋子一样的饼干') $clbpara['achvars']['eat_weiqi'] = 1;
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
} else {
$log .= '你的生命和体力都不需要恢复。<br>';
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle skill book items
function item_skillbook($itmn, &$data) {
global $log, $nosta, $cskills, $now;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$skill_minimum = 100;
$skill_limit = 380;
$log .= "你阅读了<span class=\"red\">$itm</span>。<br>";
$dice = rand(-10, 10);
if (strpos($itmk, 'VV') === 0) {
//global $wp, $wk, $wg, $wc, $wd, $wf;
$ws_sum = $wp + $wk + $wg + $wc + $wd + $wf;
if ($ws_sum < $skill_minimum * 5) {
$vefct = $itme;
} elseif ($ws_sum < $skill_limit * 5) {
$vefct = round($itme * (1 - ($ws_sum - $skill_minimum * 5) / ($skill_limit * 5 - $skill_minimum * 5)));
} else {
$vefct = 0;
}
if ($vefct < 10) {
if ($vefct < $dice) {
$vefct = -$dice;
}
}
$wp += $vefct; //$itme;
$wk += $vefct; //$itme;
$wg += $vefct; //$itme;
$wc += $vefct; //$itme;
$wd += $vefct; //$itme;
$wf += $vefct; //$itme;
$wsname = "全系熟练度";
} elseif (strpos($itmk, 'VP') === 0) {
//global $wp;
if ($wp < $skill_minimum) {
$vefct = $itme;
} elseif ($wp < $skill_limit) {
$vefct = round($itme * (1 - ($wp - $skill_minimum) / ($skill_limit - $skill_minimum)));
} else {
$vefct = 0;
}
if ($vefct < 10) {
if ($vefct < $dice) {
$vefct = -$dice;
}
}
$wp += $vefct; //$itme;
$wsname = "斗殴熟练度";
} elseif (strpos($itmk, 'VK') === 0) {
//global $wk;
if ($wk < $skill_minimum) {
$vefct = $itme;
} elseif ($wk < $skill_limit) {
$vefct = round($itme * (1 - ($wk - $skill_minimum) / ($skill_limit - $skill_minimum)));
} else {
$vefct = 0;
}
if ($vefct < 10) {
if ($vefct < $dice) {
$vefct = -$dice;
}
}
$wk += $vefct; //$itme;
$wsname = "斩刺熟练度";
} elseif (strpos($itmk, 'VG') === 0) {
//global $wg;
if ($wg < $skill_minimum) {
$vefct = $itme;
} elseif ($wg < $skill_limit) {
$vefct = round($itme * (1 - ($wg - $skill_minimum) / ($skill_limit - $skill_minimum)));
} else {
$vefct = 0;
}
if ($vefct < 10) {
if ($vefct < $dice) {
$vefct = -$dice;
}
}
$wg += $vefct; //$itme;
$wsname = "射击熟练度";
} elseif (strpos($itmk, 'VC') === 0) {
//global $wc;
if ($wc < $skill_minimum) {
$vefct = $itme;
} elseif ($wc < $skill_limit) {
$vefct = round($itme * (1 - ($wc - $skill_minimum) / ($skill_limit - $skill_minimum)));
} else {
$vefct = 0;
}
if ($vefct < 10) {
if ($vefct < $dice) {
$vefct = -$dice;
}
}
$wc += $vefct; //$itme;
$wsname = "投掷熟练度";
} elseif (strpos($itmk, 'VD') === 0) {
//global $wd;
if ($wd < $skill_minimum) {
$vefct = $itme;
} elseif ($wd < $skill_limit) {
$vefct = round($itme * (1 - ($wd - $skill_minimum) / ($skill_limit - $skill_minimum)));
} else {
$vefct = 0;
}
if ($vefct < 10) {
if ($vefct < $dice) {
$vefct = -$dice;
}
}
$wd += $vefct; //$itme;
$wsname = "引爆熟练度";
} elseif (strpos($itmk, 'VF') === 0) {
//global $wf;
if ($wf < $skill_minimum) {
$vefct = $itme;
} elseif ($wf < $skill_limit) {
$vefct = round($itme * (1 - ($wf - $skill_minimum) / ($skill_limit - $skill_minimum)));
} else {
$vefct = 0;
}
if ($vefct < 10) {
if ($vefct < $dice) {
$vefct = -$dice;
}
}
$wf += $vefct; //$itme;
$wsname = "灵击熟练度";
} elseif (strpos($itmk, 'VS') === 0) {
//global $cskills,$clbpara;
if(!empty($itmsk) && isset($cskills[$itmsk]))
{
$flag = getclubskill($itmsk,$clbpara);
if($flag)
{
$log.="哇!没想到这本书里竟然介绍了<span class='yellow'>「{$cskills[$itmsk]['name']}」</span>的原理!<br>获得了技能<span class='yellow'>「{$cskills[$itmsk]['name']}」</span>!<br>你心满意足地把<span class='red'>{$itm}</span>吃进了肚里。<br>";
addnews($now,'getsk_'.$itmsk,$name,$itm,$nick);
}
else
{
$log.="什么嘛!原来里面都是些你看过的东西了,你没有从书中学到任何新东西。<br>你一怒之下把这本破书撕了个稀巴烂!<br>";
}
}
else
{
$log.="但是你横看竖看,也弄不明白作者到底想表达什么!<br>你一怒之下把这本破书撕了个稀巴烂!<br>";
}
}
if(isset($vefct))
{
if ($vefct > 0) {
$log .= "嗯,有所收获。<br>你的{$wsname}提高了<span class=\"yellow\">$vefct</span>点!<br>";
} elseif ($vefct == 0) {
$log .= "对你来说书里的内容过于简单了。<br>你的熟练度没有任何提升。<br>";
} else {
$vefct = -$vefct;
$log .= "对你来说书里的内容过于简单了。<br>而且由于盲目相信书上的知识,你反而被编写者的纰漏所误导了!<br>你的{$wsname}下降了<span class=\"red\">$vefct</span>点!<br>";
}
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理特殊效果物品
* 这些物品会产生特殊效果,如改变玩家属性、状态等
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_special_effect($itmn, &$data) {
global $log, $now, $db, $tablepre;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itm == '『C.H.A.O.S』') {
$flag = false;
$log .= "一阵强光刺得你睁不开眼。<br>强光逐渐凝成了光球,你揉揉眼睛,发现包裹里的东西全都不翼而飞了。<br>";
for ($i = 1; $i <= 6; $i++) {
$itm_i = & ${'itm'.$i};
$itmk_i = & ${'itmk'.$i};
$itme_i = & ${'itme'.$i};
$itms_i = & ${'itms'.$i};
$itmsk_i = & ${'itmsk'.$i};
# ventus
if ($itm_i == '黑色发卡') {$flag = true;}
$itm_i = '';
$itmk_i = '';
$itme_i = 0;
$itms_i = 0;
$itmsk_i = '';
}
$karma = $rp * $killnum - $def + $att;
$f1 = false;
# terra
$tflag = (($ss >= 600) && ($killnum <= 15)) ? 1 : 0;
# aqua
$hflag = $karma <= 2000 ? 1 : 0;
# 元素大师使用chaos时,不再需要进一步合成,但是会失去元素合成功能
if ($club == 20) {
$log .= "系在你腰间的口袋剧烈颤动着,下一刻,你的直觉被某物触动了。<br>
在你的视界里,浮现出了难以描绘、似真似幻的独特“元素”:<br><br>";
if ($tflag) $log .= "有生命的热火、有逝者的悲怆;<br>";
if ($hflag) $log .= "有命运的尾迹、有因缘的蟠结;<br>";
if ($flag) $log .= "有衬出影子的光、有糅在光里的影。<br>";
$log .= "<br>然后,你的<span class='sparkle'>{$sparkle}元素口袋{$sparkle}</span>飞了出去——<br><br>";
# 失去元素口袋
$clbstatusa = 1;
# 追加判定
if ($tflag && $hflag && $flag == true) {
# 直接获得gameover
$itm0 = '『G.A.M.E.O.V.E.R』';
$itmk0 = 'Y';
$itme0 = 1;
$itms0 = 1;
$itmsk0 = 'zv';
$f1 = true;
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget($data);
} else {
$log .= "但似乎还是少了些什么东西……<br>";
# 大侠请重新来过
$itm0 = '『S.C.R.A.P』';
$itmk0 = 'Y';
$itme0 = 1;
$itms0 = 1;
//$itmsk0='zv';
$f1 = false;
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget($data);
}
} else {
if ($tflag) {
$itm0 = '『T.E.R.R.A』';
$itmk0 = 'Y';
$itme0 = 1;
$itms0 = 1;
$itmsk0 = 'z';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget($data);
$f1 = true;
}
if ($hflag) {
$itm0 = '『A.Q.U.A』';
$itmk0 = 'Y';
$itme0 = 1;
$itms0 = 1;
$itmsk0 = 'x';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget($data);
$f1 = true;
}
if ($flag == true) {
$itm0 = '『V.E.N.T.U.S』';
$itmk0 = 'Y';
$itme0 = 1;
$itms0 = 1;
$itmsk0 = 'Z';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget($data);
$f1 = true;
}
}
if ($f1 == false) {
$itm0 = '『S.C.R.A.P』';
$itmk0 = 'Y';
$itme0 = 1;
$itms0 = 1;
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget($data);
}
} elseif ($itm == '装有H173的注射器') {
$log .= '你考虑了一会,<br>把袖子卷了起来,给自己注射了H173。<br>';
$deathdice = rand(0, 4096);
$spdice = 1;
// Shiny Charm
if ($art == '★闪耀护符★') {
// Reference: https://wiki.52poke.com/wiki/%E7%95%B0%E8%89%B2%E5%AF%B6%E5%8F%AF%E5%A4%A2#%E3%80%8A%E6%9C%B1%EF%BC%8F%E7%B4%AB%E3%80%8B
//$deathdice += 2731; # 4096 - 1365
$spdice = diceroll(1365);
}
if ($deathdice >= 4096 || $club == 15 || $spdice == 0) {
$log .= '你突然感觉到一种不可思议的力量贯通全身!<br>';
$wp = $wk = $wg = $wc = $wd = $wf = 8010;
$att = $def = 13337;
changeclub(15, $data);
addnews($now, 'suisidefail', $name, $nick);
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} else {
include_once GAME_ROOT . './include/state.func.php';
$log .= '你失去了知觉。<br>';
death('suiside', '', 0, $itm);
}
} elseif (strpos($itm, '溶剂SCP-294') === 0) {
if ($itm == '溶剂SCP-294_PT_Poini_Kune') {
$log .= '你考虑了一会,一扬手喝下了杯中中冒着紫色幽光的液体。<br><span class="yellow">你感到全身就像燃烧起来一样,不禁扪心自问这值得么?</span><br>';
if ($mhp > 573) {
$up = rand(0, $mhp + $msp);
} else {
$up = rand(0, 573);
}
if ($club == 17) {
$hpdown = $spdown = round($up * 1.5);
} elseif ($club == 12) {
$hpdown = $up + 250;
$spdown = $up;
//根性兄贵加成消失
} else {
$hpdown = $spdown = $up;
}
$wp += $up; $wk += $up; $wg += $up; $wc += $up; $wd += $up; $wf += $up;
$rp += 500;
$mhp = $mhp - $hpdown;
$msp = $msp - $spdown;
$log .= '你的生命上限减少了<span class="yellow">'.$hpdown.'</span>点,体力上限减少了<span class="yellow">'.$spdown.'</span>点,而你的全系熟练度提升了<span class="yellow">'.$up.'</span>点!<br>';
} elseif ($itm == '溶剂SCP-294_PT_Arnval') {
$log .= '你考虑了一会,一扬手喝下了杯中中冒着白色气泡的清澈液体。<br><span class="yellow">你感到全身就像燃烧起来一样,不禁扪心自问这值得么?</span><br>';
if ($msp > 573) {
$up = rand(0, $msp * 1.5);
} else {
$up = rand(0, 573);
}
$mhp = $mhp + $up;
$def = $def + $up;
$down = $club == 17 ? round($up * 1.5) : $up;
$rp += 200;
$msp = $msp - $down;
$att = $att - $down;
$log .= '你的体力上限和攻击力减少了<span class="yellow">'.$down.'</span>点,而你的生命上限和防御力提升了<span class="yellow">'.$up.'</span>点!<br>';
} elseif ($itm == '溶剂SCP-294_PT_Strarf') {
$log .= '你考虑了一会,一扬手喝下了杯中中冒着灰色气泡的清澈液体。<br><span class="yellow">你感到全身就像燃烧起来一样,不禁扪心自问这值得么?</span><br>';
if ($mhp > 573) {
$up = rand(0, $msp * 1.5);
} else {
$up = rand(0, 573);
}
$msp = $msp + $up;
$att = $att + $up;
$down = $club == 17 ? round($up * 1.5) : $up;
$rp += 200;
$mhp = $mhp - $down;
$def = $def - $down;
$log .= '你的生命上限和防御力减少了<span class="yellow">'.$down.'</span>点,而你的体力上限和攻击力提升了<span class="yellow">'.$up.'</span>点!<br>';
} elseif ($itm == '溶剂SCP-294_PT_ErulTron') {
$log .= '你考虑了一会,<br>一扬手喝下了杯中中冒着粉红光辉的液体。<br>你感到你整个人貌似变得更普通了点。<br>';
$lvl = $exp = 0;
$att = round($att * 0.8);
$def = round($def * 0.8);
$log .= '<span class="yellow">你的等级和经验值都归0了!但是,你的攻击力和防御力也变得更加普通了。</span><br>';
}
if ($att < 0) {$att = 0;}
if ($def < 0) {$def = 0;}
if ($hp > $mhp) {$hp = $mhp;}
if ($sp > $msp) {$sp = $msp;}
$deathflag = false;
if ($mhp <= 0) {$hp = $mhp = 0; $deathflag = true;}
if ($msp <= 0) {$sp = $msp = 0; $deathflag = true;}
if ($deathflag) {
$log .= '<span class="yellow">看起来你的身体无法承受药剂的能量……<br>果然这一点都不值得……<br></span>';
include_once GAME_ROOT . './include/state.func.php';
death('SCP', '', 0, $itm);
} else {
changeclub(17, $data);
addnews($now, 'notworthit', $name, $nick);
}
$itms--;
if ($itms <= 0) {
if ($hp > 0) {$log .= "<span class=\"yellow\">{$itm}用完了。</span><br>";}
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理合成物品
* 这些物品会触发特殊的合成机制
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_synthesis($itmn, &$data) {
global $log, $db, $tablepre, $now, $plsinfo;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itmk == 'ZA') {
if ($itm == '→【单兵撤退按钮】←') {
$log .= "你按下了这个按钮。<br>但似乎什么都没有发生。<br>按钮就这样消失了。<br>在你觉得你买到了假冒伪劣产品时,你听到了来自红暮的广播。<br>";
// 销毁物品
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('2','$now','【红暮】','','如果你们发现了什么带有异样颜色的代码断片,千万别合成它们,老实带过来给我就行。')");
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('2','$now','【红暮】','','大家请注意,虚拟幻境系统似乎遭到了来自不明人士的入侵。')");
// 播撒合成用物品
$kitm1 = "[INNOCENCE]";
$kitm2 = "[DILIGENCE]";
$kitm3 = "[CONSCIENCE]";
$rndpls1 = rand(1, count($plsinfo) - 2);
$rndpls2 = rand(1, count($plsinfo) - 2);
$rndpls3 = rand(1, count($plsinfo) - 2);
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm1', 'XA', '1', '1', '', '$rndpls1')");
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm2', 'XA', '1', '1', '', '$rndpls2')");
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm3', 'XA', '1', '1', '', '$rndpls3')");
$plsname1 = $plsinfo[$rndpls1];
$plsname2 = $plsinfo[$rndpls2];
$plsname3 = $plsinfo[$rndpls3];
$log .= "然后,你听到了来自蓝凝的私聊——<br><span class=\"clan\">【蓝凝】就给你一些提示吧,你需要找到三个代码断片进行合成:{$kitm1}{$kitm2}{$kitm3},它们分别位于{$plsname1}{$plsname2}{$plsname3}。<br>【蓝凝】别谢我,问就是我免贵姓雷了。祝你好运!</span>";
$log .= "<br>看起来,在脱出幻境之前,你需要玩一把寻宝游戏了……";
} elseif ($itm == '→【神器任意门】←') {
$log .= "你将这个门扉种在了地上。<br>但门扉突然消失了。<br>在你觉得你捡到了个笑话时,你听到了来自红暮的广播。<br>";
// 销毁物品
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('2','$now','【红暮】','','如果你们发现了什么带有异样颜色的代码断片,千万别合成它们,老实带过来给我就行。')");
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('2','$now','【红暮】','','大家请注意,虚拟幻境系统似乎遭到了来自不明人士的入侵。')");
// 播撒合成用物品
$kitm1 = "[ΨТОВХ]";
$kitm2 = "[ЫΑИЙВХΨ]";
$kitm3 = "[ΩЙΑТΨ]";
$rndpls1 = rand(1, count($plsinfo) - 2);
$rndpls2 = rand(1, count($plsinfo) - 2);
$rndpls3 = rand(1, count($plsinfo) - 2);
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm1', 'XB', '1', '1', '', '$rndpls1')");
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm2', 'XB', '1', '1', '', '$rndpls2')");
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm3', 'XB', '1', '1', '', '$rndpls3')");
$plsname1 = $plsinfo[$rndpls1];
$plsname2 = $plsinfo[$rndpls2];
$plsname3 = $plsinfo[$rndpls3];
$log .= "然后,你听到了来自不明人士的私聊——<br><span class=\"lime\">【???】就给你一些提示吧,你需要找到三个代码断片进行合成:{$kitm1}{$kitm2}{$kitm3},它们分别位于{$plsname1}{$plsname2}{$plsname3}。<br>【???】祝你好运!</span>";
$log .= "<br>看起来,在脱出幻境之前,你需要玩一把寻宝游戏了……";
} else {
$log .= "你启动了单人脱出机构。<br>";
// 销毁物品
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('2','$now','【红暮】','','如果你们发现了什么带有异样颜色的代码断片,千万别合成它们,老实带过来给我就行。')");
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('2','$now','【红暮】','','大家请注意,虚拟幻境系统似乎遭到了来自不明人士的入侵。')");
// 播撒合成用物品
$kitm1 = "[rm]";
$kitm2 = "[-r]";
$kitm3 = "[-f]";
$rndpls1 = rand(1, count($plsinfo) - 2);
$rndpls2 = rand(1, count($plsinfo) - 2);
$rndpls3 = rand(1, count($plsinfo) - 2);
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm1', 'XC', '1', '1', '', '$rndpls1')");
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm2', 'XC', '1', '1', '', '$rndpls2')");
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$kitm3', 'XC', '1', '1', '', '$rndpls3')");
$plsname1 = $plsinfo[$rndpls1];
$plsname2 = $plsinfo[$rndpls2];
$plsname3 = $plsinfo[$rndpls3];
$log .= "然后,你听到了来自不明人士的私聊——<br><span class=\"lime\">【???】就给你一些提示吧,你需要找到三个代码断片进行合成:{$kitm1}{$kitm2}{$kitm3},它们分别位于{$plsname1}{$plsname2}{$plsname3}。<br>【???】祝你好运!</span>";
$log .= "<br>看起来,在脱出幻境之前,你需要玩一把寻宝游戏了……";
}
}
}
This diff is collapsed.
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理工具类物品
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_tool($itmn, &$data) {
global $log, $mode, $nosta, $db, $tablepre, $now, $plsinfo;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itm == '电池') {
// 功能需要修改,改为选择道具使用YE类型道具可充电
$flag = false;
for($i = 1; $i <= 6; $i++) {
if (${'itm' . $i} == '移动PC') {
${'itme' . $i} += $itme;
$itms--;
$flag = true;
$log .= "为<span class=\"yellow\">{${'itm'.$i}}</span>充了电。";
break;
}
}
if (!$flag) {
$log .= '你没有需要充电的物品。<br>';
}
} elseif ($itm == '群青多面体') {
$result = $db->query("SELECT pid,name,pls FROM {$tablepre}players WHERE type = 14 && hp > 0");
$ndata = array();
while($nd = $db->fetch_array($result)){
$ndata[$nd['name']] = $nd;
}
if(!empty($ndata)){
foreach($ndata as $key => &$val){
$npls = $val['pls'];
while($npls == $val['pls']){
$npls = rand(1,count($plsinfo)-1);
}
$val['pls'] = $npls;$npls = $plsinfo[$npls];
$log .= "<span class=\"yellow\">{$key}</span>响应道具号召,移动到了<span class=\"yellow\">{$npls}</span>。<br>";
addnews($now,'npcmove',$name,$key,$nick);
}
$db->multi_update("{$tablepre}players",$ndata,'pid');
if($itms != $nosta){$itms--;}
}
return;
} elseif ($itm == '残响兵器') {
foreach(Array('wep','arb','arh','ara','arf','art') as $val) {
// 全局变量已在extract中处理
}
for($i = 1; $i <= 6; $i++) {
// 全局变量已在extract中处理
}
include template('nametag');
$cmd = ob_get_contents();
ob_clean();
return;
} elseif ($itm == '超臆想时空') {
foreach(Array('wep','arb','arh','ara','arf','art') as $val) {
// 全局变量已在extract中处理
}
for($i = 1; $i <= 6; $i++) {
// 全局变量已在extract中处理
}
include template('supernametag');
$cmd = ob_get_contents();
ob_clean();
return;
} elseif ($itm == '毒药') {
for($i = 1; $i <= 6; $i++) {
// 全局变量已在extract中处理
}
include template('poison');
$cmd = ob_get_contents();
ob_clean();
return;
} elseif ($itm == '探测器电池') {
$flag = false;
for($i = 1; $i <= 6; $i++) {
if (${'itmk' . $i} == 'R') {
${'itme' . $i} += $itme;
$itms--;
$flag = true;
$log .= "为<span class=\"yellow\">{${'itm'.$i}}</span>充了电。";
break;
}
}
if (!$flag) {
$log .= '你没有探测仪器。<br>';
}
} elseif ($itm == '御神签') {
$log .= "使用了<span class=\"yellow\">$itm</span>。<br>";
include_once GAME_ROOT . './include/game/item2.func.php';
divining();
$itms--;
} elseif ($itm == '凸眼鱼') {
$tm = $now - $corpseprotect; // 尸体保护
$db->query("UPDATE {$tablepre}players SET weps='0',wep2s='0',arbs='0',arhs='0',aras='0',arfs='0',arts='0',itms0='0',itms1='0',itms2='0',itms3='0',itms4='0',itms5='0',itms6='0',money='0' WHERE hp <= 0 AND endtime <= $tm");
$cnum = $db->affected_rows();
addnews($now, 'corpseclear', $name, $cnum, $nick);
$log .= "使用了<span class=\"yellow\">$itm</span>。<br>突然刮起了一阵怪风,吹走了地上的{$cnum}具尸体!<br>";
$itms--; $isk = $cnum;
} elseif ($itm == '鱼眼凸') {
$tm = $now - $corpseprotect; // 尸体保护
$db->query("UPDATE {$tablepre}players SET pls='$pls' WHERE hp <= 0 AND endtime <= $tm");
$cnum = $db->affected_rows();
addnews($now, 'corpsegather', $name, $cnum, $nick);
$log .= "使用了<span class=\"yellow\">$itm</span>。<br>突然刮起了一阵怪风,将遍布全场的{$cnum}具尸体吹到了你所在的地方!<br>";
$rp += diceroll(1024);
$log .= "<span class=\"lime\">这过于惨无人道了!</span><br>你觉得罪恶感爬上了你的脊梁!<br>";
$itms--; $isk = $cnum;
} elseif ($itm == '天候棒') {
if($weather <= 13) {
$weather = rand(10, 13);
include_once GAME_ROOT . './include/system.func.php';
save_gameinfo();
addnews($now, 'wthchange', $name, $weather, $nick);
$log .= "你转动了几下天候棒。<br>天气突然转变成了<span class=\"red\">$wthinfo[$weather]</span>!<br>";
} else {
addnews($now, 'wthfail', $name, $weather, $nick);
$log .= "你转动了几下天候棒。<br>但天气并未发生改变!<br>";
}
$itms--;
} elseif ($itm == '消音器') {
if (strpos($wepk, 'WG') !== 0) {
$log .= '你没有装备枪械,不能使用消音器。<br>';
} elseif (strpos($wepsk, 'S') === false) {
$wepsk .= 'S';
$log .= "你给<span class=\"yellow\">$wep</span>安装了<span class=\"yellow\">$itm</span>。<br>";
$itms--;
} else {
$log .= "你的武器已经安装了消音器。<br>";
}
} elseif ($itm == '■DeathNote■') {
$mode = 'deathnote';
$log .= '你翻开了■DeathNote■<br>';
return;
} elseif ($itm == '游戏解除钥匙') {
$state = 6;
$url = 'end.php';
include_once GAME_ROOT . './include/system.func.php';
gameover($now, 'end3', $name);
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle trap items
function item_trap($itmn, &$data) {
global $log, $mode, $nosta, $db, $tablepre, $upexp;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if(!check_skill_unlock('c13_master', $data))
{
$log .= "你老脸一红,只觉得自己是被鬼迷了心窍,怎么会起了这种卑劣的念头!<br>羞愤之下,你一口把<span class='yellow'>{$itm}</span>吞进了肚子。<br>";
$itms = 0;
destory_single_item($data, $itmn, 1);
$mode = 'command';
return;
}
$trapk = str_replace('TN', 'TO', $itmk);
if($clbpara['BGMBrand'] == 'rixolamal'){
$trapk = str_replace('TO', 'TOr', $itmk);
$log .= "你对随机数大神的反叛让随机数大神将<span class=\"red\">$itm</span>变成了一个随机造成伤害的地雷!<br>";
}
$db->query("INSERT INTO {$tablepre}maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('$itm', '$trapk', '$itme', '1', '$pid', '$pls')");
$log .= "设置了陷阱<span class=\"red\">$itm</span>。<br>小心,自己也很难发现。<br>";
if($club == 5){$exp += 2;$wd+=2;}
else{$exp++;$wd++;}
if ($exp >= $upexp) {
include_once GAME_ROOT . './include/state.func.php';
lvlup_rev($data, $data, 1);
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
// Handle trap detector items
function item_trap_detector($itmn, &$data) {
global $log, $nosta, $db, $tablepre;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
$trapresult = $db->query("SELECT * FROM {$tablepre}maptrap WHERE pls = '$pls' AND itme>='$itme'");
$trpnum = $db->num_rows($trapresult);
$itms--;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
if ($trpnum>0){
$itemno = rand(0,$trpnum-1);
$db->data_seek($trapresult,$itemno);
$mi=$db->fetch_array($trapresult);
$deld = $mi['itm'];
$delp = $mi['tid'];
$db->query("DELETE FROM {$tablepre}maptrap WHERE tid='$delp'");
$log.="远方传来一阵爆炸声,伟大的<span class=\"yellow\">{$itm}</span>用生命和鲜血扫除了<span class=\"yellow\">{$deld}</span>。<br><span class=\"red\">实在是大快人心啊!</span><br>";
}else{
$log.="你使用了<span class=\"yellow\">{$itm}</span>,但是没有发现陷阱。<br>";
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment