下面要谈一个很严肃的问题了。嗯,就是体力上限的问题。这是关乎到武将们的切身利益的严重问题。流失体力上限,这是一种几乎不可逆的行为,使用前请务必三思啊……(☆SP刘备:不要学我玩嗓子!)
</br>不过在代码中,流失体力上限和流失体力一样简单,都是可以一行代码解决的小问题。Room麾下一员大将`loseMaxHp`正等待着我们的召唤!那么我们就来考察考察这个成员函数吧:
</br>`loseMaxHp`,原型与`loseHp`极其类似:
```
loseMaxHp(victim, lose=1)
```
</br>甚至连参数都一模一样。以`victim`表示受害者,`lose`表示流失体力上限的数目,默认为1。
</br>话不多说,接着拿我们的孙大圣做个实验吧!(孙悟空:别……)
</br>创建一个新技能
> 灭妖:每当你对一名角色造成一次伤害后,你可以令该角色流失一点体力上限。
</br>(孙悟空:……)
</br>这也是个触发技,触发时机是造成伤害后,应该是sgs.Damage。由于会是询问发动,所以设定它的触发频率是不频繁触发sgs.Skill_NotFrequent。
</br>代码如下:
![](https://img.kancloud.cn/21/32/2132269d87522919100c3ba7d460951c_678x288.png)
</br>哦,这里有个小细节需要注意一下:
</br>还记得询问是否发动技能的`askForSkillInvoke`函数吧?我们又见面了。
</br>在研究AI文件的时候我们就知道了,`askForSkillInvoke`的第三个参数`data`是用于保存和传递环境数据的。其实`data`的本领可大了,能储存许多类型的数据。所以随着环境的不同,`data`中存放的数据也是不一样的。
</br>在我们这个造成伤害的时机(sgs.Damage)下,`data`里面储存的之前我们提到的伤害结构体。而我们如果要查阅这个伤害结构体里的信息的话,需要进行一下所谓的“类型转换”。于是就有了这么一句:
```
local damage = data:toDamage()
```
</br>`toDamage`是`data`提供的一个用于转换到伤害结构体的方法。有了它,我们就可以很轻松地取得了这次伤害的伤害结构体了。
</br>那么`data`的真身究竟是什么样的呢?为什么可以变化成那么多的样子?
</br>偷偷地记住:`data`的真身是一个叫做sgs.QVariant的结构。关于这个结构的具体信息,可以参考源码(可在群文件里搜索 秒沉水 查找到源码)里的swig\qvariant.i文件的说明。
</br>接下来的事情就像我们预想的那样行动了……
![](https://img.kancloud.cn/42/81/42819d42f37b9f9b7cc34a58c1c14276_235x118.png)
</br>结果……
![](https://img.kancloud.cn/1a/05/1a05bffd5a97840c1ea44cd709de782f_172x186.png)
</br>(黄忠:欺负老年人,这世道啊……)
</br>向黄老表示一下歉意……然后宣布,我们的实验成功了!
- 编写说明
- 第一章 创建一个新武将
- 1.1 开发环境准备
- 1.2 创建一个新的武将扩展包
- 1.3 创建我们的新武将
- 第二章 添加技能
- 第三章 武将美化
- 3.1 美化环境准备
- 3.2 添加武将卡牌
- 3.3 添加武将头像
- 3.4 添加武将标签
- 第四章 创建一个新技能
- 第五章 添加音效
- 5.1 打造自己的声音工作室
- 5.2 添加技能使用音效
- 5.3 添加武将阵亡音效
- 第六章 添加提示信息
- 6.1 添加代码注释
- 6.2 显示提示信息
- 6.3 启动全屏信息特效
- 第七章 武将变更
- 第八章 启用AI
- 8.1 创建我们的AI文件
- 8.2 真实的AI
- 8.3 动手写AI
- 第九章 修改距离
- 第十章 技能管理
- 10.1 技能判定
- 10.2 创建技能
- 10.3 获得技能
- 10.4 失去技能
- 第十一章 修改手牌上限
- 第十二章 体力变更
- 12.1 流失体力
- 12.2 制造伤害
- 13.3 恢复体力
- 12.4 流失体力上限
- 12.5 增长体力上限
- 第十三章 游戏进程的变更
- 13.1 创建阶段触发技能
- 13.2 跳过回合阶段
- 13.3 插入一个额外的回合阶段
- 13.4 启用翻面
- 13.5 获得一个额外的回合
- 第十四章 启用标记(Mark)
- 14.1 添加标记
- 14.2 获得标记
- 14.3 失去标记
- 14.4 查看标记数目
- 第十五章 卡牌转换
- 15.1 主动牌的转换
- 15.2 被动牌的转换
- 第十六章 卡牌传递
- 16.1 创建摸牌技能
- 16.2 游戏中摸牌
- 16.3 游戏中弃牌
- 16.4 从其他武将处获得牌
- 16.5 判断目标区域是否有牌
- 16.6 移动场上的牌
- 第十七章 用牌实现技能效果
- 第十八章 启用标志(Flag)
- 第十九章 涉足判定领域
- 19.1 启用判定
- 19.2 更改判定
- 19.3 获得判定牌
- 第二十章 私家牌堆
- 20.1 向牌堆中添加牌
- 20.2 查看牌堆中牌的数量
- 20.3 从牌堆中移除牌
- 第二十一章 牌的锁定
- 第二十二章 免疫牌
- 第二十三章 让房间提供牌
- 23.1 提供主动牌
- 23.2 提供被动牌
- 第二十四章 启用标签(Tag)
- 第二十五章 濒死结算
- 第二十六章 交换座次
- 第二十七章 创建主公技
- 27.1 创建由主公发起的主公技
- 27.2 创建由他人发起的主公技
- 第二十八章 强力技能
- 28.1 直接死亡
- 28.2 改换身份
- 28.3 原地复活
- 28.4 立即胜利