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;
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle dice items
function item_dice($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};
// 这里需要从原item.func.php文件中移植骰子相关的逻辑
// 从第1139行到第1530行的代码
// 包括各种不同类型的骰子(D3, D6, D10, D20, D40, D100, D1000)的处理逻辑
// 示例框架:
if ($itm == '[D3]') {
// 处理D3骰子逻辑
$log .= '你向天空投出了骰子!<br><br>进行1d3检定!<br>';
fortuneCookie1(diceroll($clbpara['randver1']));
//D3 - Randomly shuffle the effect and stamina of player's equipment and weapon.
//grabbing the effect and stamina of player equipment and weapon
//Does not affect "A" equipment
$rand_e = array($wepe, $wep2e, $arbe, $arhe, $arae, $arfe);
$rand_s = array($weps, $wep2s, $arbs, $arhs, $aras, $arfs);
$etotal = round(($wepe + $wep2e + $arbe + $arhe + $arae + $arfe) / 2);
$stotal = round(($weps + $wep2s + $arbs + $arhs + $aras + $arfs) / 2);
//Loop through the effect and stamina arrays, randomize each one that's not 0
foreach ($rand_s as $key => &$value) {
if ($value != 0) {
$value = diceroll($stotal);
}
}
foreach ($rand_e as $key => &$value) {
if ($value != 0) {
$value = diceroll($etotal);
}
}
//place the contents of arraies back to player equipment.
$wepe = $rand_e[0];
$wep2e = $rand_e[1];
$arbe = $rand_e[2];
$arhe = $rand_e[3];
$arae = $rand_e[4];
$arfe = $rand_e[5];
$weps = $rand_s[0];
$wep2s = $rand_s[1];
$arbs = $rand_s[2];
$arhs = $rand_s[3];
$aras = $rand_s[4];
$arfs = $rand_s[5];
//echo "$wepe,$wep2e,$arbe,$arhe,$arae,$arfe,$weps,$wep2s,$arbs,$arhs,$aras,$arfs";
//output description logs.
$log .= '似乎你身上的装备的效果和耐久都出现了变化!<br>';
//Generate a random number based on player's 1st Yume Value.
$dicebreak = diceroll($clbpara['randver1']);
//check if this value is greater than half of player's 1st Yume Value, if so, we do not destroy the item.
if($dicebreak > $clbpara['randver1'] / 3){
$log .= '骰子落了下来,令人惊奇的是,它竟然没有被摔坏,还可以继续使用!<br>';
}else{
//destroy the dice item.
$log .= '骰子落了下来,化为一缕青烟消失了……<br>';
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} elseif ($itm == '[D6]') {
// 处理D6骰子逻辑
$log .= '你向天空投出了骰子!<br><br>进行1d6检定!<br>';
fortuneCookie1(diceroll($clbpara['randver1']));
//D6 - spawn a random item to player's hand.
$log .= '骰子骨碌碌地旋转起来,变成了一件【空想道具】!<br>';
//Populate an array desinating which kind of item this would turn into.
$randomtype = Array('DB','DH','DA','DF','WGK','WCF','WCP','WKF','WKP','WFK','WDG','WDF','WJ','WB','HB');
//Populate an array desinating which property can be added onto the item, we need to include an empty value for an empty roll.
$randomprop = Array('','D','d','','E','e','','I','i','','U','u','','p','q','','W','w','','R','x','-','*','+','','A','a','V','v'
,'','C','F','G','','P','K','z');
$rtype = array_rand($randomtype);
//There should be a check to ensure defensive prop only goes on defensive items and offensive prop only goes on offensive items.
//but gosh darn it to f*cking hack of bloody hell - We'll let players taste the true power of true randomness.
//Thus, this check is omitted - On PURPOSE!!!
//populate this item.
$itm0 = "【异色·空想道具】";
//itmk is one of the values in above array, $randomtype.
$itmk0 = $randomtype[$rtype];
//We roll 5 times to populate the itmsk value.
for ($i = 0; $i < 5; $i++) {
$itemrandomproproll = diceroll(count($randomprop));
$itmsk0 .= $randomprop[$itemrandomproproll];
}
//generate the item's effect and stimina, based on player's Yume values.
$itme0 = diceroll($clbpara['randver3'] * 3);
$itms0 = diceroll($clbpara['randver2']);
//Generate a random number based on player's 1st Yume Value.
$dicebreak = diceroll($clbpara['randver1']);
//check if this value is greater than half of player's 1st Yume Value, if so, we do not destroy the item.
if($dicebreak > $clbpara['randver1'] / 3){
$log .= '令人惊讶的是,你在出现的空想道具里面又发现了一枚骰子!<br>';
}else{
//destroy the dice item.
$log .= '骰子落了下来,化为一缕青烟消失了……<br>';
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} elseif ($itm == '[D10]') {
// 处理D10骰子逻辑
$log .= '你向天空投出了骰子!<br><br>进行1d10检定!<br>';
fortuneCookie1(diceroll($clbpara['randver1']));
//D10 - spawn a random item to player's hand - Enhanced D6 with a better item pool.
$log .= '骰子骨碌碌地旋转起来,变成了一件【空想道具】!<br>';
//Populate an array desinating which kind of item this would turn into.
$randomtype = Array('DB','DH','DA','DF','WGK','WCF','WCP','WKF','WKP','WFK','WDG','WDF','WJ','WB','HB');
//Populate an array desinating which property can be added onto the item, we need to include an empty value for an empty roll.
$randomprop = Array('','D','d','E','e','','I','i','U','u','','p','q','','W','w','','R','x','-','*','+','','A','a');
$rtype = array_rand($randomtype);
//There should be a check to ensure defensive prop only goes on defensive items and offensive prop only goes on offensive items.
//AGAIN, this check is omitted - On PURPOSE!!!
//populate this item.
$itm0 = "【超异色·空想道具】";
//itmk is one of the values in above array, $randomtype.
$itmk0 = $randomtype[$rtype];
//We roll 10 times to populate the itmsk value.
for ($i = 0; $i < 10; $i++) {
$itemrandomproproll = diceroll(count($randomprop));
$itmsk0 .= $randomprop[$itemrandomproproll];
}
//generate the item's effect and stimina, based on player's Yume values.
$itme0 = diceroll($clbpara['randver3'] * 3);
$itms0 = diceroll($clbpara['randver2']);
//Generate a random number based on player's 1st Yume Value.
$dicebreak = diceroll($clbpara['randver1']);
//check if this value is greater than half of player's 1st Yume Value, if so, we do not destroy the item.
if($dicebreak > $clbpara['randver1'] / 3){
$log .= '令人惊讶的是,你在出现的空想道具里面又发现了一枚骰子!<br>';
}else{
//destroy the dice item.
$log .= '骰子落了下来,化为一缕青烟消失了……<br>';
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} elseif ($itm == '[D20]') {
// 处理D20骰子逻辑
$log .= '你向天空投出了骰子!<br><br>进行1d20检定!<br><br>';
fortuneCookie1(diceroll($clbpara['randver1']));
//D20 - Randomly fill player's bag with items from player's location.
//Get item from database.
$result = $db->query("SELECT * FROM {$tablepre}mapitem WHERE pls = '$pls'");
$itemnum = $db->num_rows($result);
//First we deal with some special cases...
//What if there's no item, or not enough items on the map?
if($itemnum <= 6){
$log .= '骰子落在了地上,突然碎裂成了六个更小的骰子,你的背包被骰子占满,其他物品都消失了!<br>';
$itm1 = $itm2 = $itm3 = $itm4 = $itm5 = $itm6 = '[D6]';
$itmk1 = $itmk2 = $itmk3 = $itmk4 = $itmk5 = $itmk6 = '🎲';
$itme1 = $itme2 = $itme3 = $itme4 = $itme5 = $itme6 = 1;
$itms1 = $itms2 = $itms3 = $itms4 = $itms5 = $itms6 = 1;
$itmsk1 = $itmsk2 = $itmsk3 = $itmsk4 = $itmsk5 = $itmsk6 = '';
$itmpara0 = $itmpara1 = $itmpara2 = $itmpara3 = $itmpara4 = $itmpara5 = $itmpara6 = '';
}else{
//Otherwise, we swap every item in player's bag with random items at player's location.
$log .= '一道白光闪过,你背包中的物品都消失了,但是……<br>';
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm1=$mi['itm'];
$itmk1=$mi['itmk'];
$itme1=$mi['itme'];
$itms1=$mi['itms'];
$itmsk1=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm1}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm2=$mi['itm'];
$itmk2=$mi['itmk'];
$itme2=$mi['itme'];
$itms2=$mi['itms'];
$itmsk2=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm2}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm3=$mi['itm'];
$itmk3=$mi['itmk'];
$itme3=$mi['itme'];
$itms3=$mi['itms'];
$itmsk3=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm3}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm4=$mi['itm'];
$itmk4=$mi['itmk'];
$itme4=$mi['itme'];
$itms4=$mi['itms'];
$itmsk4=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm4}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm5=$mi['itm'];
$itmk5=$mi['itmk'];
$itme5=$mi['itme'];
$itms5=$mi['itms'];
$itmsk5=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm5}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm6=$mi['itm'];
$itmk6=$mi['itmk'];
$itme6=$mi['itme'];
$itms6=$mi['itms'];
$itmsk6=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm6}</span>!<br>";
}
//Generate a random number based on player's 1st Yume Value.
$dicebreak = diceroll($clbpara['randver1']);
if($dicebreak > $clbpara['randver1'] / 3){
$log .= '骰子落了下来,令人惊奇的是,它竟然没有被摔坏,还可以继续使用!<br>';
$itm0 = '[D20]';
$itmk0 = '🎲';
$itme0 = $itms0 = 1;
$itmsk0 = '';
}
} elseif ($itm == '[D40]') {
// 处理D40骰子逻辑
$log .= '你向天空投出了骰子!<br><br>进行1d40检定!<br><br>';
fortuneCookie1(diceroll($clbpara['randver1']));
//D40 - Randomly fill player's bag with items from all mapitems. - Enhanced D20
//Get item from database.
$result = $db->query("SELECT * FROM {$tablepre}mapitem");
$itemnum = $db->num_rows($result);
//First we deal with some special cases...
//What if there's no item, or not enough items on the map?
if($itemnum <= 6){
$log .= '骰子落在了地上,突然碎裂成了六个更小的骰子,你的背包被骰子占满,其他物品都消失了!<br>';
$itm1 = $itm2 = $itm3 = $itm4 = $itm5 = $itm6 = '[D10]';
$itmk1 = $itmk2 = $itmk3 = $itmk4 = $itmk5 = $itmk6 = '🎲';
$itme1 = $itme2 = $itme3 = $itme4 = $itme5 = $itme6 = 1;
$itms1 = $itms2 = $itms3 = $itms4 = $itms5 = $itms6 = 1;
$itmsk1 = $itmsk2 = $itmsk3 = $itmsk4 = $itmsk5 = $itmsk6 = '';
$itmpara1 = $itmpara2 = $itmpara3 = $itmpara4 = $itmpara5 = $itmpara6 = '';
}else{
//Otherwise, we swap every item in player's bag with random items at player's location.
$log .= '一道白光闪过,你背包中的物品都消失了,但是……<br>';
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm1=$mi['itm'];
$itmk1=$mi['itmk'];
$itme1=$mi['itme'];
$itms1=$mi['itms'];
$itmsk1=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm1}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm2=$mi['itm'];
$itmk2=$mi['itmk'];
$itme2=$mi['itme'];
$itms2=$mi['itms'];
$itmsk2=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm2}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm3=$mi['itm'];
$itmk3=$mi['itmk'];
$itme3=$mi['itme'];
$itms3=$mi['itms'];
$itmsk3=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm3}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm4=$mi['itm'];
$itmk4=$mi['itmk'];
$itme4=$mi['itme'];
$itms4=$mi['itms'];
$itmsk4=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm4}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm5=$mi['itm'];
$itmk5=$mi['itmk'];
$itme5=$mi['itme'];
$itms5=$mi['itms'];
$itmsk5=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm5}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm6=$mi['itm'];
$itmk6=$mi['itmk'];
$itme6=$mi['itme'];
$itms6=$mi['itms'];
$itmsk6=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm6}</span>!<br>";
}
//Generate a random number based on player's 1st Yume Value.
$dicebreak = diceroll($clbpara['randver1']);
if($dicebreak > $clbpara['randver1'] / 4){
$log .= '骰子落了下来,令人惊奇的是,它竟然没有被摔坏,还可以继续使用!<br>';
$itm0 = '[D40]';
$itmk0 = '🎲';
$itme0 = $itms0 = 1;
$itmsk0 = '';
}
} elseif ($itm == '[D100]') {
// 处理D100骰子逻辑
$log .= '你向天空投出了骰子!<br><br>进行1d100检定!<br><br>';
fortuneCookie1(diceroll($clbpara['randver1']));
//D100 - Shuffle the player's mhp, msp, mss, atk, def and all w values.
//Firstly, are you the chosen one?
$chosenone = 1;
if ($clbpara['randver1'] == 77 || $clbpara['randver1'] == 111){
$chosenone += 1;
}
if ($clbpara['randver2'] == 233 || $clbpara['randver2'] == 211){
$chosenone += 1;
}
if ($clbpara['randver3'] == 573 || $clbpara['randver2'] == 765){
$chosenone += 1;
}
//Then, we calculate your new values:
$log .= '你突然觉得头晕目眩!<br>';
//->mhp and msp
$tvalue = round(($mhp + $msp + $mss) / 2);
//Make sure you don't die from this.
$hp = $mhp = (diceroll($tvalue) + 1) * $chosenone;
$sp = $msp = (diceroll($tvalue) + 1) * $chosenone;
$mss = (diceroll($tvalue) + 1) * $chosenone;
$ss = round($mss / 2);
$log .= '你的最大生命,最大体力值与歌魂发生了变化!<br>';
//->atk and def
$avalue = round(($att + $def) / 1.5);
$att = (diceroll($avalue) + 1) * $chosenone;
$def = (diceroll($avalue) + 1) * $chosenone;
$log .= '你的攻击力与防御力发生了变化!<br>';
//->w values
$wvalue = round(($wp + $wk + $wd + $wc + $wg + $wf) / 4);
$wp = (diceroll($wvalue) + 1) * $chosenone;
$wk = (diceroll($wvalue) + 1) * $chosenone;
$wd = (diceroll($wvalue) + 1) * $chosenone;
$wc = (diceroll($wvalue) + 1) * $chosenone;
$wg = (diceroll($wvalue) + 1) * $chosenone;
$wf = (diceroll($wvalue) + 1) * $chosenone;
$log .= '你的武器熟练度发生了变化!<br>';
//Generate a random number based on player's 1st Yume Value.
$dicebreak = diceroll($clbpara['randver2']);
//check if this value is greater than player's 1st Yume Value, if so, we do not destroy the item.
if($dicebreak > $clbpara['randver1']){
$log .= '骰子落了下来,令人惊奇的是,它竟然没有被摔坏,还可以继续使用!<br>';
}else{
//destroy the dice item.
$log .= '骰子落了下来,化为一缕青烟消失了……<br>';
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} elseif ($itm == '[D1000]') {
// 处理D1000骰子逻辑
$log .= '你投出了这个骰子!<br>骰子飞上了天空,变成了三个不同的骰子!这真是太炫酷了!<br>';
//D1000 - Does all of the above, based on player's Yume Values.
//D3
if ($clbpara['randver1'] > 64){
fortuneCookie1(diceroll($clbpara['randver1']));
$rand_e = array($wepe, $wep2e, $arbe, $arhe, $arae, $arfe);
$rand_s = array($weps, $wep2s, $arbs, $arhs, $aras, $arfs);
$etotal = round(($wepe + $wep2e + $arbe + $arhe + $arae + $arfe) / 2);
$stotal = round(($weps + $wep2s + $arbs + $arhs + $aras + $arfs) / 2);
//Loop through the effect and stamina arrays, randomize each one that's not 0
foreach ($rand_s as $key => &$value) {
if ($value != 0) {
$value = diceroll($stotal);
}
}
foreach ($rand_e as $key => &$value) {
if ($value != 0) {
$value = diceroll($etotal);
}
}
//place the contents of arraies back to player equipment.
//This dice doubles the power of all items.
$wepe = $rand_e[0] * 2;
$wep2e = $rand_e[1]* 2;
$arbe = $rand_e[2]* 2;
$arhe = $rand_e[3]* 2;
$arae = $rand_e[4]* 2;
$arfe = $rand_e[5]* 2;
$weps = $rand_s[0]* 2;
$wep2s = $rand_s[1]* 2;
$arbs = $rand_s[2]* 2;
$arhs = $rand_s[3]* 2;
$aras = $rand_s[4]* 2;
$arfs = $rand_s[5]* 2;
//output description logs.
$log .= '似乎你身上的装备的效果和耐久都出现了变化!<br>';
}else{
$log .= '其中一个骰子就这么飞出了你的视野,你看不到它的出目!<br>';
}
//D20
if ($clbpara['randver2'] > 128){
fortuneCookie1(diceroll($clbpara['randver1']));
//Different from the normal D20, this pulls from entire mapitem table.
$result = $db->query("SELECT * FROM {$tablepre}mapitem");
$itemnum = $db->num_rows($result);
//First we deal with some special cases...
//What if there's no item, or not enough items on the map?
if($itemnum <= 6){
$log .= '骰子落在了地上,突然碎裂成了六个更小的骰子,你的背包被骰子占满,其他物品都消失了!<br>';
$itm1 = $itm2 = $itm3 = $itm4 = $itm5 = $itm6 = '[D6]';
$itmk1 = $itmk2 = $itmk3 = $itmk4 = $itmk5 = $itmk6 = '🎲';
$itme1 = $itme2 = $itme3 = $itme4 = $itme5 = $itme6 = 1;
$itms1 = $itms2 = $itms3 = $itms4 = $itms5 = $itms6 = 1;
$itmsk1 = $itmsk2 = $itmsk3 = $itmsk4 = $itmsk5 = $itmsk6 = '';
$itmpara1 = $itmpara2 = $itmpara3 = $itmpara4 = $itmpara5 = $itmpara6 = 0;
}else{
//Otherwise, we swap every item in player's bag with random items at player's location.
$log .= '一道白光闪过,你背包中的物品都消失了,但是……<br>';
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm1=$mi['itm'];
$itmk1=$mi['itmk'];
$itme1=$mi['itme'];
$itms1=$mi['itms'];
$itmsk1=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm1}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm2=$mi['itm'];
$itmk2=$mi['itmk'];
$itme2=$mi['itme'];
$itms2=$mi['itms'];
$itmsk2=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm2}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm3=$mi['itm'];
$itmk3=$mi['itmk'];
$itme3=$mi['itme'];
$itms3=$mi['itms'];
$itmsk3=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm3}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm4=$mi['itm'];
$itmk4=$mi['itmk'];
$itme4=$mi['itme'];
$itms4=$mi['itms'];
$itmsk4=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm4}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm5=$mi['itm'];
$itmk5=$mi['itmk'];
$itme5=$mi['itme'];
$itms5=$mi['itms'];
$itmsk5=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm5}</span>!<br>";
$itemno = rand(0,$itemnum-1);
$db->data_seek($result,$itemno);
$mi=$db->fetch_array($result);
$itm6=$mi['itm'];
$itmk6=$mi['itmk'];
$itme6=$mi['itme'];
$itms6=$mi['itms'];
$itmsk6=$mi['itmsk'];
$iid=$mi['iid'];
$db->query("DELETE FROM {$tablepre}mapitem WHERE iid='$iid'");
$log .= "你获得了<span class=\"yellow\">{$itm6}</span>!<br>";
}
}else{
$log .= '其中一个骰子就这么飞出了你的视野,你看不到它的出目!<br>';
}
//D100
if ($clbpara['randver3'] < 1024){
fortuneCookie1(diceroll($clbpara['randver1']));
//This dice is triple the power of original D100.
$chosenone = 3;
if ($clbpara['randver1'] == 77 || $clbpara['randver1'] == 111){
$chosenone += 2;
}
if ($clbpara['randver2'] == 233 || $clbpara['randver2'] == 211){
$chosenone += 2;
}
if ($clbpara['randver3'] == 573 || $clbpara['randver2'] == 765){
$chosenone += 2;
}
//Then, we calculate your new values:
$log .= '你突然觉得头晕目眩!<br>';
//->mhp and msp
$tvalue = $mhp + $msp + $mss;
//Make sure you don't die from this.
$hp = $mhp = (diceroll($tvalue) + 1) * $chosenone;
$sp = $msp = (diceroll($tvalue) + 1) * $chosenone;
$mss = (diceroll($tvalue) + 1) * $chosenone;
$ss = round($mss / 2);
$log .= '你的最大生命,最大体力值与歌魂发生了变化!<br>';
//->atk and def
$avalue = $att + $def;
$att = (diceroll($avalue) + 1) * $chosenone;
$def = (diceroll($avalue) + 1) * $chosenone;
$log .= '你的攻击力与防御力发生了变化!<br>';
//->w values
$wvalue = $wp + $wk + $wd + $wc + $wg + $wf;
$wp = (diceroll($wvalue) + 1) * $chosenone;
$wk = (diceroll($wvalue) + 1) * $chosenone;
$wd = (diceroll($wvalue) + 1) * $chosenone;
$wc = (diceroll($wvalue) + 1) * $chosenone;
$wg = (diceroll($wvalue) + 1) * $chosenone;
$wf = (diceroll($wvalue) + 1) * $chosenone;
$log .= '你的武器熟练度发生了变化!<br>';
}else{
$log .= '其中一个骰子就这么飞出了你的视野,你看不到它的出目!<br>';
}
//Generate a random number based on player's 1st Yume Value.
$dicebreak = diceroll($clbpara['randver1']);
//check if this value is greater than half of player's 1st Yume Value, if so, we do not destroy the item.
if($dicebreak > $clbpara['randver1'] / 3){
$log .= '骰子再次合成一体,落了下来,令人惊奇的是,它竟然没有被摔坏,还可以继续使用!<br>';
}else{
//destroy the dice item.
$log .= '骰子落了下来,化为一缕青烟消失了……<br>';
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
<?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;
}
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理nachster版本中加入的杂项物品
* 包括小叶子的妙妙箱、歌单系列、人生重来炮等
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_nachster_booster($itmn, &$data) {
global $log, $db, $tablepre, $now, $plsinfo, $event_bgm, $elements_info;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itm == '小叶子的妙妙箱') {
// A multiuse item that will provide various of items for you, mainly traps.
// However, there will be an increasing possibity that this item will self-explode.
// And when it does, there will also be a possibity that you'll lose HP and SP.
// Very low chance of insta-death.
// init itm0.
$itm0 = '';
$itmk0 = '';
$itme0 = 0;
$itms0 = 0;
$itmsk0 = '';
$itmpara = '';
// Par 低维生物's suggestion, the explode-rate will be stored in its $itmsk.
$log .= "你下定决心,打开了这个可疑的<span class='yellow'>$itm</span>,开始翻找起来……<br>";
// Getting the item's current self-destruct rate.
$harukaBoxExplodeRate = intval($itmsk);
// Generate a random number based on the user's 1st Yume value.
$harukaBoxCheck = diceroll($clbpara['randver1']);
if ($harukaBoxCheck <= 17) {
// Get random low-mid effect trap.
$log .= "你从里面翻找出了看起来能作为<span class='yellow'>略微有趣的陷阱</span>的东西!<br>";
$itm0 = '略微有趣的玻璃珠';
$itmk0 = 'TN';
$itme0 = diceroll($clbpara['randver1']);
$itms0 = diceroll(5);
$itmsk0 = '';
} elseif ($harukaBoxCheck <= 23) {
// Get random HB item.
$log .= "你从里面翻找出了看起来能作为<span class='yellow'>有趣的补给</span>的东西!<br>";
$itm0 = '有趣的零食';
$itmk0 = 'HB';
$itme0 = diceroll($clbpara['randver1']) * diceroll(3);
$itms0 = diceroll(17);
$itmsk0 = 'z';
} elseif ($harukaBoxCheck <= 42) {
// Get random mid effect true damage trap.
$log .= "你从里面翻找出了看起来能作为<span class='yellow'>精心制作的陷阱</span>的东西!<br>";
$itm0 = '精心制作的玻璃珠阵';
$itmk0 = 'TNt';
$itme0 = diceroll($clbpara['randver2']);
$itms0 = diceroll(5);
$itmsk0 = '';
} elseif ($harukaBoxCheck <= 61) {
// Get random high effect trap.
$log .= "你从里面翻找出了看起来能作为<span class='yellow'>非常有趣的陷阱</span>的东西!<br>";
$itm0 = '非常有趣的玻璃珠';
$itmk0 = 'TN';
$itme0 = diceroll($clbpara['randver3']);
$itms0 = diceroll(5);
$itmsk0 = '';
} elseif ($harukaBoxCheck <= 80) {
// Get random percent damage trap.
$log .= "你从里面翻找出了看起来能作为<span class='yellow'>十分强力的陷阱</span>的东西!<br>";
$itm0 = '强而有力的玻璃珠';
$itmk0 = 'TN8';
$itme0 = 1;
$itms0 = diceroll(2);
$itmsk0 = 'x';
} elseif ($harukaBoxCheck <= 109) {
// Get high true damage trap.
$log .= "你从里面翻找出了看起来能作为<span class='yellow'>精心制作的可怕陷阱</span>的东西!<br>";
$itm0 = '精心制作的可怕玻璃珠阵';
$itmk0 = 'TNt';
$itme0 = diceroll($clbpara['randver3']);
$itms0 = diceroll(5);
$itmsk0 = '';
} else {
// Get Chaos Normal Trap.
$log .= "你从里面翻找出了一些<span class='yellow'>不可名状</span>的东西!<br>它似乎可以当作陷阱使用……<br>";
$itm0 = '不可名状之物';
$itmk0 = 'TN';
$itme0 = diceroll(114514);
$itms0 = diceroll(69);
$itmsk0 = '';
}
// Troll the player if itms0 somehow rolled an 0. YSK: I encountered that 4 times in a row.
if ($itms0 == 0) {
$log .= "然而,<span class='yellow'>$itm0</span>却伴随着一阵少女银铃般的笑声,<br>在你的手上化作一阵青烟消失了!<br>靠!<br>";
$itm0 = '';
$itmk0 = '';
$itme0 = 0;
$itms0 = 0;
$itmsk0 = '';
// Refund some of explode rate.
//$harukaBoxCheck -= 30;
}
// Add to explode rate.
$harukaBoxExplodeRate += $harukaBoxCheck;
if ($harukaBoxExplodeRate < 667) {
$log .= "<span class='yellow'>妙妙箱不怀好意地颤抖了一下。</span>但最终什么都没发生!<br>";
// Write explode rate back to itmsk.
$itmsk = strval($harukaBoxExplodeRate);
} else {
// BOOM!!
$log .= "<span class='yellow'>妙妙箱不怀好意地颤抖了一下。</span>然后华丽地在你的手上炸开了!<br>";
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
// Also Destroy item0.
$itm0 = $itmk0 = $itmsk0 = '';
$itme0 = $itms0 = 0;
// Get damage.
$harukaBoxDamage = diceroll($clbpara['randver2']) * (diceroll(3) + 1);
// Calculate Damage.
if ($hp < $harukaBoxDamage) {
$dflag = diceroll(1024);
if ($dflag > 1020) {
// YOU WA SHOCK!!
include_once GAME_ROOT . './include/state.func.php';
$log .= '你在一片火焰中失去了知觉。<br>';
death('event', '', 0, $itm);
} else {
$log .= "你受到了<span class='yellow'>巨大的</span>伤害!你感觉你整个人都要折在这里了!<br>";
$hp = 1;
$sp = 1;
}
} else {
$hp -= $harukaBoxDamage;
$sp -= $harukaBoxDamage;
if ($sp < 1) {
$sp = 1;
}
$log .= "你受到了<span class='yellow'>$harukaBoxDamage</span>点伤害!<br>";
$inf .= 'a';
$log .= "你的双手也被炸得血肉模糊!真是不幸啊!<br>";
}
}
} elseif ($itm == '随机数之神的庇佑') {
$log .= "你将<span class='yellow'>$itm</span>捧在手心……<br>
突然,从天上传来一个慵懒的声音:<br>
<span class=\"blueseed\">“现在还没到我的上班时间呢!”<br>
“不过既然你提前抽出来了,我也给你点好处,那么载入既定事项……”</span><br>
然后你看到天上出现了一行字:【实行L5改造】<br>";
$log .= '你突然感觉到一种不可思议的力量贯通全身!<br>';
$wp = $wk = $wg = $wc = $wd = $wf = 8010;
$att = $def = 13337;
//$club = 15; 因为是神力嘛!↓但是下面这个还是要适用的。
addnews($now, 'suisidefail', $name, $nick);
// 销毁物品
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】红暮') {
// Songlists. They change your BGM, but more importantly...
// They place a Brand on your character named BGMBrand in $clbpara.
// It will have various hidden effects, search for BGMBrand for details.
if ($clbpara['BGMBrand'] == 'rixolamal') {
$log .= "一种神奇的力量阻止了音乐播放器的启动!<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
$log .= "你打开了手上的音乐播放器,里面传出了这样的声音:<br>
<span class=\"ltcrimson\">”你的选择很不错,我这里为你准备了一些劲爆的摇滚乐。<br>
一定能让你在这场战斗中热血沸腾的。”——红暮<br><br></span>
<span class=\"yellow\">你的音乐播放列表被替换了!<br></span>";
$clbpara['event_bgmbook'] = $event_bgm['crimsontracks'];
$clbpara['BGMBrand'] = 'crimson';
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】蓝凝') {
if ($clbpara['BGMBrand'] == 'rixolamal') {
$log .= "一种神奇的力量阻止了音乐播放器的启动!<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
$log .= "你打开了手上的音乐播放器,里面传出了这样的声音:<br>
<span class=\"ltazure\">”姐姐似乎给你准备了摇滚乐,但我觉得还是我的更好一点。<br>
这些歌曲都是上个年代的流行曲风,梦幻般的人声和幻境也更相称吧?<br>
欸?你说这不就仅仅是音乐,没有人声么?为什么会这样呢?”——蓝凝<br><br></span>
<span class=\"yellow\">你的音乐播放列表被替换了!<br></span>";
if ($clbpara['randver1'] < 64) {
$clbpara['event_bgmbook'] = $event_bgm['altazuretracks'];
} else {
$clbpara['event_bgmbook'] = $event_bgm['azuretracks'];
}
$clbpara['BGMBrand'] = 'azure';
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】芙蓉') {
if ($clbpara['BGMBrand'] == 'rixolamal') {
$log .= "一种神奇的力量阻止了音乐播放器的启动!<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
$log .= "你打开了手上的音乐播放器,里面传出了这样的声音:<br>
<span class=\"tmagenta\">”干我们这行的,得时刻保持冷静优雅。<br>
所以我给你准备了古典音乐,确切地说,是李斯特的《巡礼之年》第一部。<br>
这可是被人称作是李斯特的大成之作的作品,Enjoy~”——芙蓉<br><br></span>
<span class=\"ltcrimson\">”……做好身份隔离,芙蓉。”——红暮<br><br></span>
<span class=\"yellow\">你的音乐播放列表被替换了!<br></span>";
$clbpara['event_bgmbook'] = $event_bgm['fleurtracks'];
$clbpara['BGMBrand'] = 'fleur';
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】丁香') {
if ($clbpara['BGMBrand'] == 'rixolamal') {
$log .= "一种神奇的力量阻止了音乐播放器的启动!<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
$log .= "你打开了手上的音乐播放器,里面传出了这样的声音:<br>
<span class=\"clan\">”欸?我也要提交一批歌单吗……?<br>
那么我就尽量尝试一下……<br>
就这些如何?虽然我觉得这可能不适合这个游戏吧……”——丁香<br><br></span>
<span class=\"sienna\">”适合不适合另说,但这起名太差劲了——就地丢弃,请。”——芙蓉<br><br></span>
<span class=\"yellow\">你的音乐播放列表被替换了!<br></span>";
$clbpara['event_bgmbook'] = $event_bgm['lilatracks'];
$clbpara['BGMBrand'] = 'lila';
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】冰炎') {
if ($clbpara['BGMBrand'] == 'rixolamal') {
$log .= "一种神奇的力量阻止了音乐播放器的启动!<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
$log .= "你打开了手上的音乐播放器,里面传出了这样的声音:<br>
<span class=\"orange\">”虚拟幻境我自然是知道的。高速动作PVP对吧?<br>
要为这里提供一点音乐……吗。<br>
那么就来点听起来很像某驰名游戏系列的配乐的曲子吧!”——冰炎<br><br></span>
<span class=\"ltcrimson\">”微妙。”——红暮<br><br></span>
<span class=\"yellow\">你的音乐播放列表被替换了!<br></span>";
$clbpara['event_bgmbook'] = $event_bgm['rimefiretracks'];
$clbpara['BGMBrand'] = 'rimefire';
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】瑞克·拉玛尔') {
$log .= "你打开了手上的音乐播放器,里面传出了这样的声音:<br>
<span class=\"orange\">”哦,你是想反叛随机数大神吧!<br>
我知道的,摇骰子总是会让人心潮澎湃,那么就让我这位大英雄帮你一把吧!<br>
音乐是其次,欢迎来到骰子的反叛世界!”——瑞克·拉玛尔<br><br></span>
<span class=\"ltcrimson\">”这……这个不是都市传说么?快去查一查。”——红暮<br><br></span>
<span class=\"yellow\">你的音乐播放列表被替换了!<br></span>";
$clbpara['event_bgmbook'] = $event_bgm['rixolamaltracks'];
$clbpara['BGMBrand'] = 'rixolamal';
// Some init...
$clbpara['traitorRoll'] = 0;
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】小兔子警报!') {
if ($clbpara['BGMBrand'] == 'rixolamal') {
$log .= "一种神奇的力量阻止了音乐播放器的启动!<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
if ($clbpara['touchedByBunny'] == 0) {
$rp -= 120;
}
$log .= "你打开了手上的奇怪物品,里面传出了这样的声音:<br>
<span class=\"lime\">”为什么突然会给游戏加入歌单这种东西……?<br>
那么为了更好地伪装,我也注入个歌单进来。<br>
毕竟我平时码代码就是听这些的。顺路啦。”——????<br><br></span>
<span class=\"yellow\">你的音乐播放列表被替换了!<br></span>";
if ($clbpara['randver3'] < 512) {
$clbpara['event_bgmbook'] = $event_bgm['christracks'];
} else {
$log .= "<span class=\"tmagenta\">”哈,抓到你了。<br>顺便……这个啊……要用我喜欢的语言来唱。”——芙蓉<br></span>";
$clbpara['event_bgmbook'] = $event_bgm['altchristracks'];
}
$clbpara['BGMBrand'] = 'christine';
$clbpara['touchedByBunny'] += 1;
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '【歌单】林无月') {
if ($clbpara['BGMBrand'] == 'rixolamal') {
$log .= "一种神奇的力量阻止了你按下按钮!<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
$log .= "你按下了手中遥控器的按钮。<br>
<span class=\"yellow\">你重置了你的音乐播放列表!<br></span>";
unset($clbpara['event_bgmbook']);
unset($clbpara['BGMBrand']);
// Destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '人生重来炮') {
// detect if you are actually able to use this.
if ($pls > 100) {
$log .= "你点燃了这门炮的引线,然后尝试将头伸进炮筒之中。<br>
<span class=\"yellow\">但是大炮突然就这么消失了!这是怎么回事呢?<br></span>";
// destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
if ($mhp <= 200) {
$log .= "你点燃了这门炮的引线,然后尝试将头伸进炮筒之中。<br>
<span class=\"yellow\">但是你体能已经太弱,在成功将头伸进去之前,大炮就在你面前发射了!<br></span>
<span class=\"red\">你被炮弹射了一脸,受到了巨大的伤害!<br>";
$hp = 1;
// destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
$log .= "你点燃了这门炮的引线,然后迅速将头伸进了炮筒之中!<br>
<span class=\"yellow\">只听轰地一声,你被炮弹击出了千米之外,你感觉身体内的什么东西焕然一新了……<br></span>";
// Reset... some values...
$clbpara['randver1'] = rand(1, 128);
$clbpara['randver2'] = rand(1, 256);
$clbpara['randver3'] = rand(1, 1024);
// process damage
$mhp -= 200;
$hp = $mhp;
$msp -= 200;
$sp = $msp;
$log .= "<span class=\"red\">你受到了相当的伤害,龇牙咧嘴地站了起来。<br></span>";
// process area change
$pls = rand(1, count($plsinfo) - 2);
// destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($itm == '善良之刃') {
// fake a death message.
$log .= "你觉得这个幻境太过危险,真的呆不下去了!<br>
<span class=\"yellow\">于是你将这把匕首对着自己,噗叽一声就刺了下去!<br></span>";
// it will require 200+ rage.
if ($rage <= 200) {
$log .= "匕首的刀刃却被弹开了!<br>
从匕首中传来了恶意的嘲笑:<br>
<span class=\"yellow\">”桀桀桀,连自裁的决心都没有,你还真是个软蛋!”<br></span>
你出离愤怒,一脚将匕首踩碎了。<br>
<br>
你被整蛊物品嘲讽,非常生气!<br>";
$rage = 200;
// destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} else {
$log .= "白刀子进,白刀子出!<br>
你被中刀的冲击击飞,落在了地上。<br>
好疼。<br>
<span class=\"yellow\">等下……白刀子……出?<br></span>
你听到了你的死亡报告,但还是毫发无伤地站了起来。<br>
想死而不能,这可是太逊了……<br>
你不禁叹出一口气。<br>";
$rage = 0;
// add fake death news - Event Death.
addnews($now, 'death13', $name, 0);
// add fake death chat.
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('3','$now','$name','$pls','我觉得我还可以抢救一下……')");
// destroy this item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}elseif($itm == '😂我太酷啦!😂') {
$log .= "你毅然决然地高喊了一句:“我·太·酷·啦~”<br>一拳头锤碎了这个奇形怪状的按钮。<br>随后,在失去意识之前,你感觉你的身体飞上了天空。<br>";
# Also produce a chatlog
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('0','$now','$name','','「我·太·酷·啦~」')");
# Do an initial coin toss
$selfdestructdice1 = diceroll(1);
$selfdestructdice2 = diceroll(6);
if ($selfdestructdice1 > 0){
# You'll self destruct into a bunch of happy items, to bring smile to others.
$happyitemname = $name . "的存在意义";
# Firstly, we look at your stats to see how strong those would be, and how many of them would it be.
$happyitemeffect = round($mhp / 20);
$happyitemnumber = round($exp / 20);
# Then, we look at the dice result to see what would you explode into.
if ($selfdestructdice2 == 1){
$happyitemkind = "HH";
}elseif ($selfdestructdice2 == 2){
$happyitemkind = "HS";
}elseif ($selfdestructdice2 == 3){
$happyitemkind = "PH";
}elseif ($selfdestructdice2 == 4){
$happyitemkind = "PS";
}elseif ($selfdestructdice2 == 5){
$happyitemkind = "HM";
}elseif ($selfdestructdice2 == 6){
$happyitemkind = "TO";
}else{
$happyitemkind = "T";
}
# Producing a valid arealist
$rndhappypls= rand(1,count($plsinfo)-2);
# Process the item insertation process.
# But, before that, a special treatment for map traps:
if ($selfdestructdice2 == 6){
# Insert traps into maptrap table.
for ($i = 0; $i < $happyitemnumber; $i++){
$rndhappypls= rand(1,count($plsinfo)-2);
$db->query("INSERT INTO {$tablepre}maptrap (itm, itmk, itme, itms, itmsk, pls) VALUES ('$happyitemname', '$happyitemkind', '$happyitemeffect', '1', '$pid', '$rndhappypls')");
}
$log .= "你的身体在高空中炸出了一片烟花。<br>
在那烟花中,那曾经属于你的存在落在了幻境的地面上,钻进了地底下。<br>
想必,这会为大家带来惊喜吧……<br>";
}else{
# Insert items into mapitem table.
for ($i = 0; $i < $happyitemnumber; $i++){
$rndhappypls= rand(1,count($plsinfo)-2);
$db->query("INSERT INTO {$tablepre}mapitem (itm, itmk, itme, itms, itmsk, pls) VALUES ('$happyitemname', '$happyitemkind', '$happyitemeffect', '1', '$pid', '$rndhappypls')");
}
$log .= "你的身体在高空中炸出了一片烟花。<br>
在那烟花中,那曾经属于你的存在落在了幻境的地面上。<br>
想必,这会为大家带来笑容吧……<br>";
}
# Then we produce a chat for this feat.
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('2','$now','【幻境自检】','','检测到未经授权的地图物品!')");
}else{
# Nothing happens, you just self destruct.
$log .= "你的身体在高空中炸成了一片烟花,<br>
给虚拟幻境的天空带来了五彩的红霞。<br>
大家看到这祥瑞的天象,纷纷露出了笑容。<br>
这大概就是……「笑容世界」吧。<br>
大逃杀真是塔洛西啊!<br>";
}
# Then we kill you to end everything.
include_once GAME_ROOT . './include/state.func.php';
death ( 'sdestruct', '', 0, $itm );
# But wait, since you exploded, you can't leave a body!
$db->query ( "UPDATE {$tablepre}players SET weps='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 pid = {$pid} " );
} elseif($itm == '【我太帅啦!】') {
# Joke Item, fill the user's bag with garbage items.
$log .= "按下这个按钮后,你突然有了一种神奇的想表现自己的欲望,<br>
<span class=\"minirainbow\">于是你突然从手中具现出了一大堆卡牌,然后自顾自摆起了阵法!</span><br>
等你回过神来,你发现你的背包里面到处都是莫名其妙的卡牌。<br>
希望这真的值得……<br>";
$itm1 = '脑内印出的超雷龙-雷龙 ★8'; $itm2 = '脑内印出的命运英雄 毁灭凤凰人 ★8'; $itm3 = '脑内印出的枪管上膛狞猛龙 ★8';
$itm4 = '勇者衍生物 ★4'; $itm5 = '脑内印出的流离的狮鹫骑手 ★7'; $itm6 = '脑内印出的T.G.超图书馆员 ★5';
$itme1 = $itme2 = $itme3 = $itme5 = $itme6 = 1;
$itme4 = 20;
$itmk1 = $itmk2 = $itmk3 = 'WC08';
$itms1 = $itms2 = $itms3 = $itms4 = $itms5 = $itms6 = 1;
$itmk4 = 'WC04'; $itmk5 = 'WC07'; $itmk6 = 'WC05';
$itmsk1 = $itmsk2 = $itmsk3 = $itmsk4 = $itmsk5 = $itmsk6 = '';
# Destroy the item.
//$itm = $itmk = $itmsk = '';
//$itme = $itms = 0;
# Sign
$clbpara['iAmHandsome'] += 1;
} elseif($itm == '【我太棒啦!】') {
# Joke Item, shred the user's HP and SP, then convert them into health item.
$log .= "按下这个按钮后,你突然觉得你很棒,<br>
于是举起双拳就像大猩猩一样擂起胸膛。<br>
<span class=\"minirainbow\">但你用力过猛,感觉体内的什么东西竟然被吐了出来!</span><br>
希望这真的值得……<br>";
$lossdice = diceroll(92);
$oldhp = $hp;
$oldsp = $sp;
$hp = round($hp * ($lossdice / 100));
$sp = round($sp * ($lossdice / 100));
$diff = ($oldhp + $oldsp) - ($hp + $sp);
$itm0 = $name . "的力量";
$itme0 = $diff;
$itmk0 = 'HB';
$itms0 = 1;
$itmsk0 = '';
# Destroy the item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
# Sign
$clbpara['iAmGreat'] += 1;
} elseif($itm == '【我太强啦!】') {
# Joke Item, Alerting the position of the user by generate a chatlog and decrease their $mhp by 100.
if ($mhp < 100) {
$log .= "你作势想按下按钮,但立刻觉得你似乎还不够强……<br>还是算了吧。<br>";
}else{
# Output some log.
$log .= "按下这个按钮后,你突然想让战场上的各位看到你强大的一面,于是你吐气扬声,大吼一句:<br>
<span class=\"minirainbow\">“我 太 强 啦!”</span><br>
然而,因为你喊得太用力了,你吐出了一口鲜血!<br>
<span class=\"minirainbow\">你的最大生命值减少了100点!</span><br>
希望这真的值得……<br>";
$mhp -= 100;
if ($hp>$mhp) $hp = $mhp;
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('0','$now','$name','','「我 太 强 啦!」')");
# Destroy the item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
# Sign
$clbpara['iAmStrong'] += 1;
}
} elseif($itm == '【我太牛啦!】') {
# Joke Item, Aleating the position of the user, then turn their $mhp and $msp into money.
$log .= "按下这个按钮后,你突然觉得你很牛B。于是你仰天长啸:<br>
<span class=\"minirainbow\">“我身上钱很多,快来撩我!”</span><br>
然后,你觉得眼前一黑,你的身上真的多出了很多钱!<br>
希望这真的值得……<br>";
$lossdice = diceroll(98);
$oldmhp = $mhp;
$oldmsp = $msp;
$mhp = round($mhp * ($lossdice / 100));
$msp = round($msp * ($lossdice / 100));
$hp = $mhp; $sp = $msp;
$diff = ($oldmhp + $oldmsp) - ($mhp + $msp);
$money += $diff;
$log .= "你的最大生命值和最大体力值被转换成了<span class=\"yellow\">$diff</span>点金钱!<br>";
$db->query("INSERT INTO {$tablepre}chat (type,`time`,send,recv,msg) VALUES ('0','$now','$name','','「我身上钱很多,快来撩我!」')");
# Destroy the item.
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
# Sign
$clbpara['iAmRich'] += 1;
} elseif ($itm == '棱镜八面体'){
$log .= "你使用了<span class=\"yellow b\">{$itm}</span>。<br>";
$theitem = array('itm' => &$itm, 'itmk' => &$itmk, 'itme' => &$itme,'itms' => &$itms,'itmsk' => &$itmsk);
octitem_rotate($theitem, $itmn, 1);
}
}
function octitem_rotate(&$theitem, $rotpos, $showlog = 0)
{
global $log;
$itm=&$theitem['itm']; $itmk=&$theitem['itmk'];
$itme=&$theitem['itme']; $itms=&$theitem['itms']; $itmsk=&$theitem['itmsk'];
$oct_colors_words = array('<span class="red">红</span>','<span class="lime">绿</span>','<span class="clan">蓝</span>','<span class="yellow">黄</span>','<span class="gold">金</span>','<span class="linen">银</span>','<span class="mtgblack">黑</span>','<span class="mtgwhite">白</span>');
if (strlen($itmsk) != 16)
{
$oct_seq = range(0, 7);
shuffle($oct_seq);
$oct_colors = range(0, 7);
shuffle($oct_colors);
}
else
{
$itmsk_arr = str_split($itmsk);
$oct_seq = array_slice($itmsk_arr, 0, 8);
$oct_colors = array_slice($itmsk_arr, 8);
}
//改变选中面和另两个面的颜色
$oct_colors[$rotpos] = ($oct_colors[$rotpos] + 1) % 8;
$rotpos2 = ($rotpos + 1) % 8;
$oct_colors[$rotpos2] = ($oct_colors[$rotpos2] + 1) % 8;
$rotpos3 = ($rotpos + 2) % 8;
$oct_colors[$rotpos3] = ($oct_colors[$rotpos3] + 1) % 8;
$itmsk = implode('', $oct_seq).implode('', $oct_colors);
if ($showlog)
{
$log .= "<br><span class=\"yellow b\">{$itm}</span>八个面的颜色为:<br>";
foreach ($oct_seq as $v)
{
$log .= $oct_colors_words[$oct_colors[$v]].' ';
}
//$log .= "测试:真实序列为".implode('', $oct_colors);
$log .= "<br>";
}
//结果检查
$oc_count = count(array_unique($oct_colors));
if ($oc_count == 1)
{
if ($showlog)
{
$log .= "<span class=\"yellow b\">{$itm}</span>的形状发生了变化……<br>";
}
$itm = '★棱镜八面体模样的彩色糖果★'; $itmk = 'HM';
$itme = 88; $itms = 8; $itmsk = 'x';
}
}
<?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;
}
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle fireworks items
function item_fireworks($itmn, &$data) {
global $log;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
// 这里需要从原item.func.php文件中移植烟花相关的逻辑
// 从第1530行之后的代码
//В ΜΑЛΨ, В ЩΑЁΨ, В ЦΨΨ ОΑЙЙ, В ТИХ ЩДТЖИΜД.
//ХЖ ДЖХЖТ, ЖХΨ ЦЩТΑВΜДЩ ТЖΑΡ, ΜΨЩ. ЩДВХΜЦ. ΡЖХΨ.
//Thanks Chantal for crunching those numbers - I'll make sure I find you something else to crunch on some other time...
# This method concerns 4 of them, and one additional check:
//$hp up, $w[X] up, $mhp up, $def up
# Then, decide on the Rank of the Fireseed Item, this will decide its maximum value:
$rank = 0;
# Those items will always start with either ◆,✦,★,☾, and ☼
if (strpos ( $itm, '◆' ) === 0){
$rank = 1;
}elseif (strpos ( $itm, '✦' ) === 0){
$rank = 2;
}elseif (strpos ( $itm, '★' ) === 0){
$rank = 3;
}elseif (strpos ( $itm, '☾' ) === 0){
$rank = 4;
}elseif (strpos ( $itm, '☼') === 0){
$rank = 5;
}else{
$rank = 0;
}
# Special check for a invalid item (Rank = 0), Just turn it into healing.
if($rank == 0){
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚,你感觉焕然一新!<br>";
$hp = $mhp;
$sp = $msp;
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
# Logic for each of the 4 usages.
elseif($itmk == '🎆H'){
# This is healing item, it can heal beyond your $mhp based on its rank.
if ($rank == 1){
$gainmax = round($mhp * 0.51);
}elseif ($rank == 2){
$gainmax = round($mhp * 1.08);
}elseif ($rank == 3){
$gainmax = round($mhp * 2.33);
}elseif ($rank == 4){
$gainmax = round($mhp * 5.73);
}else{
$gainmax = '∞';
}
// Tracking how much HP one can overheal based on its rank.
$clbpara['fireseedMaxHPRecover'] = $gainmax;
if ($gainmax !== '∞'){
// Gain HP and SP - note we don't overheal SP here.
$addsp = $msp - $sp < $itme ? $msp - $sp : $itme;
if($addsp > 0) $sp += $addsp;
else $addsp = 0;
// Calculating overheal HP value.
$addhp = ($mhp + $gainmax) - $hp < $itme ? ($mhp + $gainmax) - $hp : $itme;
if($addhp > 0) $hp += $addhp;
else $addhp = 0;
if ($addhp <= 0){
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
但是似乎并没有回复生命!<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你可能需要找个纯度更高的代码片段哟~」<br></span>";
}else{
$gainless = ($mhp + $gainmax) - $hp;
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
治愈的代码片段为你恢复了<span class=\"yellow\">$addhp</span>点生命和<span class=\"yellow\">$addsp</span>点体力。<br>
<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你还能获得{$gainless}点临时生命哟~<br>
但临时生命就是临时的,随时都有可能消失哟~」<br></span>";
if($gainless < $itme){
$log.="<br><span class=\"redseed\">这时,有另一把声音插了进来:<br>
「看起来这个纯度的代码片段已经喂不饱你了。<br>
赶快找下一个纯度的代码片段吧!」<br></span>";
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}else{
$addsp = $msp - $sp < $itme ? $msp - $sp : $itme;
if($addsp > 0) $sp += $addsp;
else $addsp = 0;
$addhp = $itme;
$hp += $addhp;
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
治愈的代码片段为你恢复了<span class=\"yellow\">$addhp</span>点生命和<span class=\"yellow\">$addsp</span>点体力。<br>";
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}elseif ($itmk == '🎆V'){
# This is $w[X] up, it simply add to all $w[X] values.
if ($rank == 1){
$gainmax = 201;
}elseif ($rank == 2){
$gainmax = 502;
}elseif ($rank == 3){
$gainmax = 2003;
}elseif ($rank == 4){
$gainmax = 8011;
}else{
$gainmax = '∞';
}
// Tracking how much w value one can gain based on its rank.
$clbpara['fireseedmaxProfGain'] = $gainmax;
if ($gainmax !== '∞'){
// Gain w value
$addw = $itme;
$clbpara['fireseedmaxProfAdd'] += $addw;
if($clbpara['fireseedmaxProfGain'] - $clbpara['fireseedmaxProfAdd'] > 0) {
$wp += $addw;
$wk += $addw;
$wg += $addw;
$wc += $addw;
$wd += $addw;
$wf += $addw;}
else $addw = 0;
if ($addw <= 0){
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
但是似乎什么都没有发生!<br>
<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你可能需要找个纯度更高的代码片段哟~」<br></span>";
}else{
$gainless = $clbpara['fireseedmaxProfGain'] - $clbpara['fireseedmaxProfAdd'];
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
载有熟练度的代码片段让你获得了<span class=\"yellow\">$addw</span>点全系熟练度!<br>
<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你还能通过这个纯度的代码获得{$gainless}点熟练度哟~」<br></span>";
if($gainless < $itme){
$log.="<br><span class=\"redseed\">这时,有另一把声音插了进来:<br>
「看起来这个纯度的代码片段已经喂不饱你了。<br>
赶快找下一个纯度的代码片段吧!」<br></span>";
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}else{
$addw = $itme;
$wp += $addw;
$wk += $addw;
$wg += $addw;
$wc += $addw;
$wd += $addw;
$wf += $addw;
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
载有熟练度的代码片段让你获得了<span class=\"yellow\">$addw</span>点全系熟练度!<br>";
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}elseif ($itmk == '🎆O'){
# This is $mhp up item, it simply add to that value.
if ($rank == 1){
$gainmax = 1001;
}elseif ($rank == 2){
$gainmax = 3002;
}elseif ($rank == 3){
$gainmax = 5003;
}elseif ($rank == 4){
$gainmax = 8008;
}else{
$gainmax = '∞';
}
// Tracking how much $mhp value one can gain based on its rank.
$clbpara['fireseedmaxHPGain'] = $gainmax;
if ($gainmax !== '∞'){
// Gain $mhp value
$addmhp = $itme;
$clbpara['fireseedmaxHPAdd'] += $addmhp;
if($clbpara['fireseedmaxHPGain'] - $clbpara['fireseedmaxHPAdd'] > 0) $mhp += $addmhp;
else $addmhp = 0;
if ($addmhp <= 0){
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
但是似乎什么都没有发生!<br>
<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你可能需要找个纯度更高的代码片段哟~」<br></span>";
}else{
$gainless = $clbpara['fireseedmaxHPGain'] - $clbpara['fireseedmaxHPAdd'];
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
载有生命的代码片段让你获得了<span class=\"yellow\">$addmhp</span>点生命最大值!<br>
<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你还能通过这个纯度的代码获得{$gainless}点生命最大值哟~」<br></span>";
if($gainless < $itme){
$log.="<br><span class=\"redseed\">这时,有另一把声音插了进来:<br>
「看起来这个纯度的代码片段已经喂不饱你了。<br>
赶快找下一个纯度的代码片段吧!」<br></span>";
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}else{
$addw = $itme;
$mhp += $addmhp;
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
载有生命的代码片段让你获得了<span class=\"yellow\">$addmhp</span>点生命最大值!<br>";
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}elseif ($itmk == '🎆D'){
# This is $def up item, it simply add to that value.
if ($rank == 1){
$gainmax = 1001;
}elseif ($rank == 2){
$gainmax = 3002;
}elseif ($rank == 3){
$gainmax = 5003;
}elseif ($rank == 4){
$gainmax = 8008;
}else{
$gainmax = '∞';
}
// Tracking how much $def value one can gain based on its rank.
$clbpara['fireseedmaxDefGain'] = $gainmax;
if ($gainmax !== '∞'){
// Gain $def value
$adddef = $itme;
$clbpara['fireseedmaxDefAdd'] += $adddef;
if($clbpara['fireseedmaxDefGain'] - $clbpara['fireseedmaxDefAdd'] > 0) $def += $adddef;
else $adddef = 0;
if ($adddef <= 0){
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
但是似乎什么都没有发生!<br>
<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你可能需要找个纯度更高的代码片段哟~」<br></span>";
}else{
$gainless = $clbpara['fireseedmaxDefGain'] - $clbpara['fireseedmaxDefAdd'];
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
载有防御数据的代码片段让你获得了<span class=\"yellow\">$adddef</span>点基础防御力!<br>
<br>
<br>
<span class=\"blueseed\">同时,你还隐约听见了一个声音:<br>
「你还能通过这个纯度的代码获得{$gainless}点基础防御力哟~」<br></span>";
if($gainless < $itme){
$log.="<br><span class=\"redseed\">这时,有另一把声音插了进来:<br>
「看起来这个纯度的代码片段已经喂不饱你了。<br>
赶快找下一个纯度的代码片段吧!」<br></span>";
}
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}else{
$adddef = $itme;
$def += $adddef;
$log.="你将<span class=\"yellow\">{$itm}</span>吞下了肚。<br>
载有防御数据的代码片段让你获得了<span class=\"yellow\">$adddef</span>点基础防御力!<br>";
if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>的余烬崩解消失了……<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}elseif($itmk == '🎆B'){
# Fireseed Box, containing various helpful items.
# Officially dubbed Silent Box.
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$itms--; $oitm = $itm; $oitmk = $itmk;
include_once config('randomFS',$gamecfg);
$dice = diceroll(1000);
if($dice <= 420){
$itemflag = $lesserdata;
}elseif($dice <= 740){
$itemflag = $item;
}elseif($dice <= 927){
$itemflag = $constructs;
}elseif($dice <= 998){
$itemflag = $material;
}else{
$itemflag = $sundata;
$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($itms <= 0) destory_single_item($data,$itmn,1);
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
if($itemflag = $sundata) addnews($now,'present',$name,$oitm,$in,$nick);
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget($data);
}elseif($itmk == '🎆C'){
# Weird Fireseed Box, containing interesting items.
# Officially dubbed Weird Box.
$log.="你打开了<span class=\"yellow\">$itm</span>。<br>";
$itms--; $oitm = $itm; $oitmk = $itmk;
include_once config('randomFSW',$gamecfg);
$dice = diceroll(1000);
if($dice <= 660){
$itemflag = $selfjoke;
}elseif($dice <= 996){
$itemflag = $jokeonothers;
}else{
$itemflag = $superjoke;
$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($itms <= 0) destory_single_item($data,$itmn,1);
$itm0 = $in;$itmk0=$ik;$itme0=$ie;$itms0=$is;$itmsk0=$isk;
if($itemflag = $sundata) addnews($now,'present',$name,$oitm,$in,$nick);
include_once GAME_ROOT.'./include/game/itemmain.func.php';
itemget($data);
}else{
$log.="这段代码……要如何使用呢?<br>";
}
//Process a special check for total Ash item used, for future usage.
$clbpara['fireseedAshUsage'] += $rank;
//Process item decrease. - Changed to do it only after succeeding item usage.
/* if ($itms != $nosta) {
$itms --;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
} */
# Special check for a poisoned fireseed item, WIP for now.
// }else($itmk == 'P🎆'){
// $log.="这个<span class=\"yellow\">{$itm}</span>有毒!到底是谁干的!<br>";
# For Maximum Funniness, we destroy this item.
// $log .= "<span class=\"red\">$itm</span>的余烬向天上盘旋飞舞,消失了。<br>";
// $itm = $itmk = $itmsk = '';
// $itme = $itms = 0;}
}
// Handle other items not covered by specific handlers
function item_other($itmn, &$data) {
global $log;
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>";
}
<?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>看起来,在脱出幻境之前,你需要玩一把寻宝游戏了……";
}
}
}
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理测试物品
* 这些物品主要用于测试游戏功能
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_test($itmn, &$data) {
global $log, $db, $tablepre, $now, $pid, $event_bgm, $cmd;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if ($itm == 'NPC战斗测试仪') {
include_once GAME_ROOT.'./include/game/revcombat.func.php';
$pa = fetch_playerdata_by_pid(1);
$pd = fetch_playerdata_by_pid(2);
\revcombat\rev_combat_prepare($pa, $pd, 1);
} elseif ($itm == '显现战斗测试仪') {
//Mod the above item, YOU'll enter fight with a player entry matching the item's $itme value.
include_once GAME_ROOT.'./include/game/revcombat.func.php';
$pa = fetch_playerdata_by_pid($pid);
$pd = fetch_playerdata_by_pid($itme);
\revcombat\rev_combat_prepare($pa, $pd, 1);
} elseif ($itm == '战斗显现测试仪') {
//Mod the above item, A player entry matching item's $itme value will enter a fight with YOU.
include_once GAME_ROOT.'./include/game/revcombat.func.php';
$pa = fetch_playerdata_by_pid($itme);
$pd = fetch_playerdata_by_pid($pid);
\revcombat\rev_combat_prepare($pa, $pd, 1);
} elseif ($itm == '对话测试器') {
//???
$clbpara['dialogue'] = 'testingDialog';
//$clbpara['noskip_dialogue'] = 1;
} elseif ($itm == '事件BGM替换器') {
// 这是一个触发事件BGM的案例,只要输入$clbpara['event_bgmbook'] = Array('事件曲集名'); 即可将当前曲集替换为特殊事件BGM
// 特殊事件曲集'event_bgmbook'的优先级高于地图曲集'pls_bgmbook',前者存在时后者不会生效
//global $clbpara,$event_bgm;
//include_once config('audio',$gamecfg);
$log.="【DEBUG】你目前的播放列表被替换为了{$event_bgm['test'][0]}!<br>特殊的事件曲集不会被其他曲集覆盖,除非你使用下面的道具。<br>";
$clbpara['event_bgmbook'] = $event_bgm['test'];
} elseif ($itm == '事件BGM还原器') {
// 这是一个取消事件BGM的案例,只要unset($clbpara['event_bgmbook']);就可以将当前曲集替换为地图曲集或默认曲集;
// 如果你想播放另一个事件曲集,也可以$clbpara['event_bgmbook'] = Array('另一个事件曲集名');
//global $clbpara;
$log.="【DEBUG】你目前的播放列表还原为了默认播放列表!<br>";
unset($clbpara['event_bgmbook']);
} elseif ($itm == '成就重置装置') {
//使用会重置对应属性编号的成就进度
include_once GAME_ROOT.'./include/game/achievement.func.php';
reset_achievement_rev($itmsk, $name);
} elseif ($itm == '测试用元素口袋') {
//global $elements_info;
$log.="【DEBUG】你不知道从哪里摸出来一大堆元素!<br>";
foreach($elements_info as $e_key => $e_info) {
//global ${'element'.$e_key};
${'element'.$e_key} += 100000;
$log.="获得了100000份".$elements_info[$e_key]."!<br>";
}
//初始化元素合成缓存文件
include_once GAME_ROOT.'./include/game/elementmix.func.php';
emix_spawn_info();
} elseif ($itm == '测试用元素大师社团卡') {
//-----------------------//
//这是一张测试用卡 冴冴可以挑一些用得上的放在使用社团卡后执行的事件里
//global $elements_info,$sparkle;
//未选择社团情况下才可以用社团卡
if($club) {
$log.="你已经是有身份的人了!不能再使用社团卡。<br>";
} else {
//反正是测试用的 发段怪log
$log.="你拿起<span class='yellow'>$itm</span>左右端详着……<br>
你将目光扫过卡片上若隐若现的纹理,突然发现这张卡内似乎别有洞天。<br>
透过纹理,你看到一群奇装异服的小人们,围坐在一处颇具古典风格的露天广场上。<br>
广场中央有一人,正抬手指天,慷慨陈词。<br>
你听不到它们在说什么,但演讲者那极富感染力的动作勾起了你的好奇心,<br>
你不由自主得沿着它指的方向望去——<br>
<br>
洁白如镜的天穹上,倒映出的是你的脸。<br>
<br>
你赶忙移开视线,但小人们已经发现了你。<br>
从广场再到远处的平原上,数以十计、百计、千计、万计,
一眼望不到头的小人们从你视野的尽头涌出,挤向你所在的方向。<br>
你一时慌乱,下意识地便将手里的卡片丢了出去。<br>
眼前亦真亦幻的怪异景象登时消失不见了。<br>
<br>
你低下头,发现脚下的卡片已经被烧掉了一半,<br>
在被火焰烧灼得卷曲起的边缘处,漏出了某样东西的一角。<br>
你捡起卡片,甩了甩,便看到一个足足有卡片五倍甚至四倍大的东西从里面掉了出来!<br>";
$log.="<br>获得了<span class='sparkle'>{$sparkle}元素口袋{$sparkle}</span>!<br>";
$log.="……这到底是怎么一回事呢?<br><br>";
//社团变更
changeclub(20, $data);
//获取初始元素与第一条配方
$dice = rand(0, 5);
//global ${'element'.$dice};
${'element'.$dice} += 200+$dice;
//初始化元素合成缓存文件
include_once GAME_ROOT.'./include/game/elementmix.func.php';
emix_spawn_info();
//销毁道具
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
//-----------------------//
} elseif ($itm == '提示纸条A') {
$log .= '你读着纸条上的内容:<br>"执行官其实都是幻影,那个红暮的身上应该有召唤幻影的玩意。"<br>"用那个东西然后打倒幻影的话能用游戏解除钥匙出去吧。"<br>';
} elseif ($itm == '提示纸条B') {
$log .= '你读着纸条上的内容:<br>"我设下的灵装被残忍地清除了啊……"<br>"不过资料没全部清除掉。<br>用那个碎片加上传奇的画笔和天然属性……"<br>"应该能重新组合出那个灵装。"<br>';
} elseif ($itm == '提示纸条C') {
$log .= '你读着纸条上的内容:<br>"小心!那个叫红暮的家伙很强!"<br>"不过她太依赖自己的枪了,有什么东西能阻挡那伤害的话……"<br>';
} elseif ($itm == '提示纸条D') {
$log .= '你读着纸条上的内容:<br>"我不知道另外那个孩子的底细。如果我是你的话,不会随便乱惹她。"<br>"但是她貌似手上拿着符文册之类的东西。"<br>"也许可以利用射程优势?!"<br>"你知道的,法师的射程都不咋样……"';
} elseif ($itm == '提示纸条E') {
$log .= '你读着纸条上的内容:<br>"生存并不能靠他人来喂给你知识,"<br>"有一套和元素有关的符卡的公式是没有出现在帮助里面的,用逻辑推理好好推理出正确的公式吧。"<br>"金木水火土在这里都能找到哦~"<br>';
} elseif ($itm == '提示纸条F') {
$log .= '你读着纸条上的内容:<br>"喂你真的是全部买下来了么……"<br>"这样的提示纸条不止这六种,其他的纸条估计被那两位撒出去了吧。"<br>"总之祝你好运。"<br>';
} elseif ($itm == '提示纸条G') {
$log .= '你读着纸条上的内容:<br>"上天保佑,"<br>"请不要在让我在模拟战中被击坠了!"<br>"空羽 上。"<br>';
} elseif ($itm == '提示纸条H') {
$log .= '你读着纸条上的内容:<br>"在研究施设里面出了大事的SCP竟然又输出了新的样本!"<br>"按照董事长的意见就把这些家伙当作人体试验吧!"<br>署名看不清楚……<br>';
} elseif ($itm == '提示纸条I') {
$log .= '你读着纸条上的内容:<br>"嗯……"<br>"制作神卡所用的各种认证都可以在商店里面买到。"<br>"其实卡片真的有那么强大的力量么?"<br>';
} elseif ($itm == '提示纸条J') {
$log .= '你读着纸条上的内容:<br>"知道么?"<br>"果酱面包果然还是甜的好,哪怕是甜的生姜也能配制出如地雷般爆炸似的美味。"<br>"祝你好运。"<br>';
} elseif ($itm == '提示纸条K') {
$log .= '你读着纸条上的内容:<br>"水符?"<br>"你当然需要水,然后水看起来是什么颜色的?"<br>"找一个颜色类似的东西合成就有了吧。"<br>';
} elseif ($itm == '提示纸条L') {
$log .= '你读着纸条上的内容:<br>"木符?"<br>"你当然需要树叶,然后说到树叶那是什么颜色?"<br>"找一个颜色类似的东西合成就有了吧。"<br>';
} elseif ($itm == '提示纸条M') {
$log .= '你读着纸条上的内容:<br>"火符?"<br>"你当然需要找把火,然后说到火那是什么颜色?"<br>"找一个颜色类似的东西合成就有了吧。"<br>';
} elseif ($itm == '提示纸条N') {
$log .= '你读着纸条上的内容:<br>"土符?"<br>"说到土那就是石头吧,然后说到石头那是什么颜色?"<br>"找一个颜色类似的东西合成就有了吧。"<br>';
} elseif ($itm == '提示纸条P') {
$log .= '你读着纸条上的内容:<br>"金符?这个的确很绕人……"<br>"说到金那就是炼金,然后这是21世纪了,炼制一个金色方块需要什么?"<br>"总之祝你好运。"<br>';
} elseif ($itm == '提示纸条Q') {
$log .= '你读着纸条上的内容:<br>"据说在另外的空间里面;"<br>"一个吸血鬼因为无聊就在她所居住的地方洒满了大雾,"<br>"真任性。"<br>';
} elseif ($itm == '提示纸条R') {
$log .= '你读着纸条上的内容:<br>"知道么,"<br>"东方幻想乡这作游戏里面EXTRA的最终攻击"<br>"被老外们称作『幻月的Rape Time』,当然对象是你。"<br>';
} elseif ($itm == '提示纸条S') {
$log .= '你读着纸条上的内容:<br>"土水符?"<br>"哈哈哈那肯定是需要土和水啦,可能还要额外的素材吧。"<br>"总之祝你好运。"<br>';
} elseif ($itm == '提示纸条T') {
$log .= '你读着纸条上的内容:<br>"我一直对虚拟现实中的某些迹象很在意……"<br>"这种未名的威压感是怎么回事?"<br>"总之祝你好运。"<br>';
} elseif ($itm == '提示纸条U') {
$log .= '你读着纸条上的内容:<br>"纸条啥的……"<br>"希望这张纸条不会成为你的遗书。"<br>"总之祝你好运。"<br>';
} elseif ($itm == '人品探测器') {
//global $rp;
$log .= '你读着纸条上的内容:<br>"你的RP值为'.$rp.'。"<br>"总之祝你好运。"<br>';
} elseif ($itm == '仪水镜') {
//global $rp;
$log .= '水面上映出了你自己的脸,你仔细端详着……<br>';
if ($rp < 40) {
$log .= '你的脸看起来十分白皙。<br>';
} elseif ($rp < 200) {
$log .= '你的脸看起来略微有点黑。<br>';
} elseif ($rp < 550) {
$log .= '你的脸上貌似笼罩着一层黑雾。<br>';
} elseif ($rp < 1200) {
$log .= '你的脸已经和黑炭差不多了,赶快去洗洗!<br>';
} elseif ($rp < 5499) {
$log .= '你印堂漆黑,看起来最近要有血光之灾!<br>';
} elseif ($rp > 5500) {
$log .= '水镜中已经黑的如墨一般了。<br>希望你的H173还在……<br>';
} else {
$log .= '你的脸从水镜中消失了。<br>';
}
}elseif ($itm == '风祭河水'){
//global $rp, $wp, $wk, $wg, $wc, $wd, $wf;
$slv_dice = rand ( 1, 20 );
if ($slv_dice < 8) {
$log .= "你一口干掉了<span class=\"yellow\">$itm</span>,不过好像什么都没有发生!";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($slv_dice < 16) {
$rp = $rp - 10*$slv_dice;
$log .= "你感觉身体稍微轻了一点点。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} elseif ($slv_dice < 20) {
$rp = 0 ;
$log .= "你头晕脑胀地躺到了地上,<br>感觉整个人都被救济了。<br>你努力着站了起来。<br>";
$wp = $wk = $wg = $wc = $wd = $wf = 100;
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
} else {
$log .= '你头晕脑胀地躺到了地上,<br>感觉整个人都被救济了。<br>';
include_once GAME_ROOT . './include/state.func.php';
$log .= '然后你失去了意识。<br>';
//$bid = 0;
death ( 'salv', '', 0, $itm );
}
}elseif(strpos($itm,'RP回复设备')!==false){
//global $rp;
$rp = 0;
$log .= "你使用了<span class=\"yellow\">$itm</span>。你的RP归零了。<br>";
}elseif ($itm == '调制解调器'){
if(!empty($gamevars['apis']))
{
$log .= '你将这件长得很像猫的东西放在了地上……目送它慢悠悠地爬走了。<br>';
if($gamevars['api'] < $gamevars['apis'])
{
$gamevars['api']++;
save_gameinfo();
$log .= '<span class="yellow">好像有什么东西恢复了!</span><br>';
}
else
{
$log .= '<span class="yellow">但是什么也没有发生!</span><br>';
}
$itms--;
}
else
{
$log .= '这件长得很像猫的东西该怎么用呢?<br>';
}
}
//元素大师使用提示纸条的特殊效果:
if($club == 20 && strpos($itmk,'Y')===0 && strpos($itm,'提示纸条')!==false)
{
$log.="<br>就在你读完内容打算把纸条收起来时,你愕然发现纸条背面竟然还有字!<br><br>";
include config('elementmix',$gamecfg);
$log.= $emix_slip[array_rand($emix_slip)];
//除商店纸条外:提供一条元素特征(TODO)、或一条固定配方、或一条随机属性组合
$log .= "<br><span class='yellow'>附:见面有缘,再送你一条提示吧:<br>“将带有";
if(!preg_match('/(A|B|C|D)/',$itm))
{
//野生纸条:给随机属性组合提示
$submix_list = array_merge_recursive($submix_list,$gamevars['rand_emixsubres']);
}
$s_id = array_rand($submix_list);
$s_result = $itemspkinfo[$submix_list[$s_id]['result']];
foreach($submix_list[$s_id]['stuff'] as $skey) $log .= "【$itemspkinfo[$skey]】";
$log .= "特征的元素组合起来,就有机会组合出【{$s_result}】属性。”</span><br>";
//阅后即焚
$log .="<br>……说这么多鬼记得住啊!<br>你思考了一下,决定把{$itm}吃进肚子里,以便慢慢消化其中的知识。<br>";
$itms--;
# 将提示给到的次要特征组合加入笔记内
if(empty($clbpara['elements']['info']['sd']['sd'.$s_id]))
$clbpara['elements']['info']['sd']['sd'.$s_id] = 1;
}
}
<?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>";
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle weapons and equipment
function item_weapon($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};
$itmpara = & get_itmpara(${'itmpara' . $itmn});
if(strpos($itmk, 'W') === 0) {
$eqp = 'wep';
$noeqp = 'WN';
} elseif(strpos($itmk, 'DB') === 0) {
$eqp = 'arb';
$noeqp = 'DN';
} elseif(strpos($itmk, 'DH') === 0) {
$eqp = 'arh';
$noeqp = '';
} elseif(strpos($itmk, 'DA') === 0) {
$eqp = 'ara';
$noeqp = '';
} elseif(strpos($itmk, 'DF') === 0) {
$eqp = 'arf';
$noeqp = '';
} elseif(strpos($itmk, 'A') === 0) {
$eqp = 'art';
$noeqp = '';
} elseif(strpos($itmk, 'ss') === 0) {
$eqp = 'art';
$noeqp = '';
} elseif(strpos($itmk, 'XX') === 0) {
$eqp = 'art';
$noeqp = '';
} elseif(strpos($itmk, 'XY') === 0) {
$eqp = 'art';
$noeqp = '';
}
//global ${$eqp}, ${$eqp.'k'}, ${$eqp.'e'}, ${$eqp.'s'}, ${$eqp.'sk'};
//global $artk;
if((($artk=='XX')||($artk=='XY'))&&($eqp == 'art')){
$log .= '你的饰品不能替换!<br>';
$mode = 'command';
return;
}
# 诅咒装备不能主动卸下
if(in_array('V',get_itmsk_array(${$eqp.'sk'})))
{
$log .= "你尝试着将{$$eqp}替换下来……但它就像长在了你身上一样,纹丝不动!<br>";
$mode = 'command';
return;
}
# 主动装备诅咒装备时,会变得不幸!
if(in_array('V',get_itmsk_array($itmsk)))
{
$log .= "<span class=\"grey\">你感觉自己要倒大霉了……</span><br>";
getclubskill('inf_cursed',$clbpara);
}
//PORT
if(strpos($itmsk,'^')!==false){
//global $itmnumlimit;
$itmnumlimit = $itme>=$itms ? $itms : $itme;
}
if (($noeqp && strpos(${$eqp.'k'}, $noeqp) === 0) || !${$eqp.'s'}) {
// 装备道具时,进行单次套装检测
include_once GAME_ROOT.'./include/game/itemmain.func.php';
reload_single_set_item($data,$eqp,$itm,1);
${$eqp} = $itm;
${$eqp.'k'} = $itmk;
${$eqp.'e'} = $itme;
${$eqp.'s'} = $itms;
${$eqp.'sk'} = $itmsk;
${$eqp.'para'} = $itmpara;
$log .= "装备了<span class=\"yellow\">$itm</span>。<br>";
$itm = $itmk = $itmsk = $itmpara = '';
$itme = $itms = 0;
} else {
// 替换装备时,进行单次套装检测
// 先检测目前穿的装备
include_once GAME_ROOT.'./include/game/itemmain.func.php';
reload_single_set_item($data,$eqp,${$eqp});
// 再检测要替换的装备,类型为1,表示装备
reload_single_set_item($data,$eqp,$itm,1);
$itmt = ${$eqp};
$itmkt = ${$eqp.'k'};
$itmet = ${$eqp.'e'};
$itmst = ${$eqp.'s'};
$itmskt = ${$eqp.'sk'};
$itmparat = ${$eqp.'para'};
${$eqp} = $itm;
${$eqp.'k'} = $itmk;
${$eqp.'e'} = $itme;
${$eqp.'s'} = $itms;
${$eqp.'sk'} = $itmsk;
${$eqp.'para'} = $itmpara;
$itm = $itmt;
$itmk = $itmkt;
$itme = $itmet;
$itms = $itmst;
$itmsk = $itmskt;
$itmpara = $itmparat;
$log .= "卸下了<span class=\"red\">$itm</span>,装备了<span class=\"yellow\">{${$eqp}}</span>。<br>";
}
}
<?php
if (! defined('IN_GAME')) {
exit('Access Denied');
}
/**
* 处理武器改造类物品
*
* @param int $itmn 物品在物品栏中的位置
* @param array &$data 玩家数据
*/
function item_weapon_mod($itmn, &$data) {
global $log, $nosta, $now;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
if (strpos($itm, '磨刀石') !== false) {
if (strpos($wepk, 'K') == 1 && strpos($wepsk, 'Z') === false) {
if (strpos($wepsk, 'j') !== false) {
$log .= '多重武器不能改造。<br>';
return;
}
$dice = rand(0, 100);
if ($dice >= 15) {
if ($clbpara['BGMBrand'] == 'crimson') {
$check = diceroll(20);
if ($check > 17) {
$log .= "<span class=\"ltcrimson\">你想到了红暮挥舞红杀铁剑的英姿,<br>手上的刀磨得更快了!<br></span>";
$wepe += $check;
}
}
$wepe += $itme;
$log .= "使用了<span class=\"yellow\">$itm</span>,<span class=\"yellow\">$wep</span>的攻击力变成了<span class=\"yellow\">$wepe</span>。<br>";
if (strpos($wep, '锋利的') === false) {
$wep = '锋利的'.$wep;
}
} else {
$wepe -= ceil($itme / 2);
if ($wepe <= 0) {
$log .= "<span class=\"red\">$itm</span>使用失败,<span class=\"red\">$wep</span>损坏了!<br>";
$wep = $wepk = $wepsk = '';
$wepe = $weps = 0;
} else {
$log .= "<span class=\"red\">$itm</span>使用失败,<span class=\"red\">$wep</span>的攻击力变成了<span class=\"red\">$wepe</span>。<br>";
}
}
$itms--;
} elseif(strpos($wepsk, 'Z') !== false) {
$log .= '咦……刀刃过于薄了,感觉稍微磨一点都会造成不可逆的损伤呢……<br>';
} else {
$log .= '你没装备锐器,不能使用磨刀石。<br>';
}
} elseif (preg_match("/钉$/", $itm) || preg_match("/钉\[/", $itm)) {
// 码语行人,$club==21的时候不能使用钉子
if ($club == 21) {
$log .= "<span class=\"yellow\">突然,你的眼前出现了扭曲的字符!</span><br>";
$log .= "<span class=\"glitchb\">
“凌乱陈言省略号,<br>
数值爆炸知多少?<br>
玩家以外用不到,<br>
出了问题再来找!”<br></span><br>";
$log .= "<span class=\"yellow\">唔,看起来这个钉子对你似乎没有什么意义……</span><br>";
return;
} elseif ((strpos($wep, '棍棒') !== false) && ($wepk == 'WP')) {
if (strpos($wepsk, 'j') !== false) {
$log .= '多重武器不能改造。<br>';
return;
}
$dice = rand(0, 100);
if ($dice >= 10) {
if ($clbpara['BGMBrand'] == 'crimson') {
$check = diceroll(20);
if ($check > 17) {
$log .= "<span class=\"ltcrimson\">你想到了红暮挥舞红杀铁锤的英姿,<br>手上的钉子打得更快了!<br><span>";
$wepe += $check;
}
}
$wepe += $itme;
$log .= "使用了<span class=\"yellow\">$itm</span>,<span class=\"yellow\">$wep</span>的攻击力变成了<span class=\"yellow\">$wepe</span>。<br>";
if (strpos($wep, '钉') === false) {
$wep = str_replace('棍棒', '钉棍棒', $wep);
}
} else {
$wepe -= ceil($itme / 2);
if ($wepe <= 0) {
$log .= "<span class=\"red\">$itm</span>使用失败,<span class=\"red\">$wep</span>损坏了!<br>";
$wep = $wepk = $wepsk = '';
$wepe = $weps = 0;
} else {
$log .= "<span class=\"red\">$itm</span>使用失败,<span class=\"red\">$wep</span>的攻击力变成了<span class=\"red\">$wepe</span>。<br>";
}
}
$itms--;
} else {
$log .= '你没装备棍棒,不能安装钉子。<br>';
}
} elseif ($itm == '针线包') {
// 码语行人,$club==21的时候不能使用针线包
if ($club == 21) {
$log .= "<span class=\"yellow\">突然,你的眼前出现了扭曲的字符!</span><br>";
$log .= "<span class=\"glitchb\">
“冷汗直流小问号,<br>
防御堆到多少好?<br>
与其数值罩白梦,<br>
不如让她转生了!”<br></span><br>";
$log .= "<span class=\"yellow\">唔,看起来这个针线包对你似乎没有什么意义……</span><br>";
return;
} elseif (($arb == $noarb) || !$arb) {
$log .= '你没有装备防具,不能使用针线包。<br>';
} elseif(strpos($arbsk, '^') !== false) {
$log .= '<span class="yellow">你不能对背包使用针线包。<br>';
} elseif(strpos($arbsk, 'Z') !== false) {
$log .= '<span class="yellow">该防具太单薄以至于不能使用针线包。</span><br>你感到一阵蛋疼菊紧,你的蛋疼度增加了<span class="yellow">233</span>点。<br>';
} else {
if ($clbpara['BGMBrand'] == 'rimefire') {
$check = diceroll(20);
if ($check > 17) {
$log .= "<span class=\"orange\">你突然脑海中浮现了一位青年彻夜优化装甲的英姿,<br>手上的针线打得更快了!<br></span>";
$arbe += $check;
}
}
$arbe += (rand(0, 2) + $itme);
$log .= "用<span class=\"yellow\">$itm</span>给防具打了补丁,<span class=\"yellow\">$arb</span>的防御力变成了<span class=\"yellow\">$arbe</span>。<br>";
$itms--;
}
} elseif ($itm == '天然呆四面的奖赏') {
// 码语行人,$club==21的时候不能使用天然呆四面的奖赏
if ($club == 21) {
$log .= "<span class=\"yellow\">突然,你的眼前出现了扭曲的字符!</span><br>";
$log .= "<span class=\"glitchb\">
“无语无言点句号,<br>
第四墙外看不到!<br>
无法干涉即取消,<br>
反正一个也不少!<br>”</span><br>";
$log .= "<span class=\"yellow\">唔,看起来这个奇怪的物品对你似乎没有什么意义……</span><br>";
return;
}
if (!$weps || !$wepe) {
$log .= '请先装备武器。<br>';
return;
}
if (strpos($wepsk, 'j') !== false) {
$log .= '多重武器不能改造。<br>';
return;
}
if (strpos($wepsk, 'O') !== false) {
$log .= '进化武器不能改造。<br>';
return;
}
$log .= "使用了<span class='yellow'>天然呆四面的奖赏</span>。<br>";
$log .= "你召唤了<span class='lime'>天然呆四面</span>对你的武器进行改造!<br>";
addnews($now, 'newwep', $name, $itm, $wep, $nick);
$dice = rand(0, 99);
if ($dice < 70) {
$log .= "<span class='lime'>天然呆四面</span>把你的武器弄坏了!<br>";
$log .= "你的武器变成了一块废铁!<br>";
$log .= "<span class='lime'>“不小心把你的武器弄坏了,还真是对不起呢……<br>";
$wep = "一块废铁"; $wepk = "WP"; $wepe = 1; $weps = 1; $wepsk = "";
$log .= "那么…… 给你点补偿吧,请务必收下。”<br></span>";
$itm = ""; $itmk = ""; $itme = 0; $itms = 0; $itmsk = "";
$dice2 = rand(0, 99);
$itm0 = '四面亲手制作的■DeathNote■'; $itmk0 = 'Y'; $itme0 = 1; $itms0 = 1; $itmsk0 = 'z';
include_once GAME_ROOT . './include/game/itemmain.func.php';
itemget($data);
} else if ($dice < 90) {
$log .= "<span class='lime'>天然呆四面</span>把玩了一会儿你的武器。<br>";
$log .= "你的武器的耐久似乎稍微多了一点。<br>";
if (strpos($wep, '-改') === false) $wep = $wep . '-改';
$weps += ceil($wepe / 200);
$itm = ""; $itmk = ""; $itme = 0; $itms = 0; $itmsk = "";
} else {
$log .= "<span class='lime'>天然呆四面</span>把玩了一会儿你的武器。<br>";
$log .= "你的武器似乎稍微变强了一点。<br>";
if (strpos($wep, '-改') === false) $wep = $wep . '-改';
$wepe += ceil($wepe / 200);
$itm = ""; $itmk = ""; $itme = 0; $itms = 0; $itmsk = "";
}
} elseif ($itm == '武器师安雅的奖赏') {
// 码语行人,$club==21的时候不能使用武器师安雅的奖赏
if ($club == 21) {
$log .= "<span class=\"yellow\">突然,你的眼前出现了扭曲的字符!</span><br>";
$log .= "<span class=\"glitchb\">
“奇诡无比省略号,<br>
奇葩捏他哪里找?<br>
横竖都是用不上。<br>
看我直接注释掉!”<br></span><br>";
$log .= "<span class=\"yellow\">唔,看起来武器师安雅的奖赏对你似乎没有什么意义……</span><br>";
return;
} elseif (!$weps || !$wepe) {
$log .= '请先装备武器。<br>';
return;
}
if (strpos($wepsk, 'j') !== false) {
$log .= '多重武器不能改造。<br>';
return;
}
$dice = rand(0, 99);
$dice2 = rand(0, 99);
$skill = array('WP' => $wp, 'WK' => $wk, 'WG' => $wg, 'WC' => $wc, 'WD' => $wd, 'WF' => $wf);
$skill_advanced = array('WJ' => $wg, 'WB' => $wc);
arsort($skill);
$skill_keys = array_keys($skill);
$skill_advanced_keys = array_keys($skill_advanced);
$nowsk = substr($wepk, 0, 2);
if (strlen($wepk) > 2) $subsk = 'W'.$wepk[2];
$maxsk = $skill_keys[0];
// 复合武器只要其中一个类别是最高就不会改系
// 上位武器熟练超过1200不会改系,可能算加强六系称号
if (((!in_array($nowsk, $skill_advanced_keys) && ($skill[$nowsk] != $skill[$maxsk]) && (empty($subsk) || ((!empty($subsk) && !in_array($subsk, $skill_advanced_keys) && ($skill[$subsk] != $skill[$maxsk]))))) || (in_array($nowsk, $skill_advanced_keys) && ($skill_advanced[$nowsk] < 1200))) && ($dice < 30)) {
$wepk = substr_replace($wepk, $maxsk, 0, 2);
$kind = "更改了{$wep}的<span class=\"yellow\">类别</span>!";
} elseif (($weps != $nosta) && ($dice2 < 70)) {
$weps += ceil($wepe / 2);
$kind = "增强了{$wep}的<span class=\"yellow\">耐久</span>!";
} else {
$wepe += ceil($wepe / 2);
$kind = "提高了{$wep}的<span class=\"yellow\">攻击力</span>!";
}
$log .= "你使用了<span class=\"yellow\">$itm</span>,{$kind}";
addnews($now, 'newwep', $name, $itm, $wep, $nick);
if (strpos($wep, '-改') === false) {
$wep = $wep . '-改';
}
$itms--;
} elseif ($itm == '『灵魂宝石』' || $itm == '『祝福宝石』') {
//global $cmd;
//码语行人,$club==21的时候不能使用宝石
if ($club == 21) {
$log .= "<span class=\"yellow\">突然,你的眼前出现了扭曲的字符!</span><br>";
$log .= "<span class=\"glitchb\">
“纠结纠结小问号,<br>
代码溢出怎么搞?<br>
干脆一刀禁了它。<br>
反正挨打不用愁!”<br></span><br>";
$log .= "<span class=\"yellow\">唔,看起来这个宝石对你似乎没有什么意义……</span><br>";
return;
}
$cmd = '<input type="hidden" name="mode" value="item"><input type="hidden" name="usemode" value="qianghua"><input type="hidden" name="itmp" value="' . $itmn . '">你想强化哪一件装备?<br><input type="radio" name="command" id="menu" value="menu" checked><a onclick=sl("menu"); href="javascript:void(0);" >返回</a><br><br><br>';
for ($i = 1; $i <= 6; $i++) {
//global ${'itmsk' . $i};
if ((strpos(${'itmsk' . $i}, 'Z') !== false) && (strpos(${'itm' . $i}, '宝石』') === false)) {
//global ${'itm' . $i}, ${'itme' . $i}, ${'itms' . $i};
$cmd .= '<input type="radio" name="command" id="itm' . $i . '" value="itm' . $i . '"><a onclick=sl("itm' . $i . '"); href="javascript:void(0);" >' . "{${'itm' .$i}}/{${'itme' .$i}}/{${'itms' .$i}}" . '</a><br>';
$flag = true;
}
}
$cmd .= '<br><br><input type="button" onclick="postCmd(\'gamecmd\',\'command.php\');" value="提交">';
if (! $flag) {
$log .='唔?你的包裹里没有可以强化的装备,是不是没有脱下来呢?DA☆ZE<br><br>';
}else{
$log .="宝石在你的手上发出异样的光芒,似乎有个奇怪的女声在你耳边说道<span class=\"yellow\">\"我是从天界来的凯丽\"</span>.";
}
return;
} elseif ($itm == '水果刀') {
$flag = false;
for($i = 1; $i <= 6; $i ++) {
//global ${'itm' . $i}, ${'itmk' . $i},${'itms' . $i},${'itme' . $i},$wk;
if (strpos(${'itmsk' . $i}, '🍎') !== false) {
if($wk >= 120){
$log .= "练过刀就是好啊。你娴熟地削着果皮。<br><span class=\"yellow\">{${'itm'.$i}}</span>变成了<span class=\"yellow\">★残骸★</span>!<br>咦为什么会出来这种东西?算了还是不要吐槽了。<br>";
${'itm' . $i} = '★残骸★';
${'itme' . $i} *= rand(2,4);
${'itms' . $i} *= rand(3,5);
${'itmsk' . $i} = '';
$flag = true;
$wk++;
}else{
$log .= "想削皮吃<span class=\"yellow\">{${'itm'.$i}}</span>,没想到削完发现只剩下一堆果皮……<br>手太笨拙了啊。<br>";
$brackets_arr = Array('☆☆','★★','〖〗','【】','『』','「」','✦✦','☾☽','☼☼','■■');
$if_brackets = 0;
foreach ($brackets_arr as $brackets)
{
if ((mb_substr(${'itm' . $i}, 0, 1)).(mb_substr(${'itm' . $i}, -1)) === $brackets){
$if_brackets = 1;
${'itm' . $i} = mb_substr(${'itm' . $i}, 0, -1).'皮'.mb_substr(${'itm' . $i}, -1);
break;
}
}
if ($if_brackets == 0) ${'itm' . $i} = ${'itm' . $i}.'皮';
${'itmk' . $i} = 'TN';
${'itms' . $i} *= rand(2,4);
${'itmsk' . $i} = '';
$flag = true;
$wk++;
}
break;
}
if($flag == true) {break;};
}
if (! $flag) {
$log .= '包裹里没有水果。<br>';
} else {
$dice = rand(1,5);
if($dice==1){
$log .= "<span class=\"red\">$itm</span>变钝了,无法再使用了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
}
}
<?php
if (! defined ( 'IN_GAME' )) {
exit ( 'Access Denied' );
}
// Handle weather control items
function item_weather($itmn, &$data) {
global $log;
extract($data, EXTR_REFS);
$itm = & ${'itm' . $itmn};
$itmk = & ${'itmk' . $itmn};
$itme = & ${'itme' . $itmn};
$itms = & ${'itms' . $itmn};
$itmsk = & ${'itmsk' . $itmn};
include_once GAME_ROOT . './include/game/item2.func.php';
wthchange($itm, $itmsk);
$itms--;
if ($itms <= 0) {
$log .= "<span class=\"red\">$itm</span>用光了。<br>";
$itm = $itmk = $itmsk = '';
$itme = $itms = 0;
}
}
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