💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
在如此欢乐的时节,濒死总归不是一件受待见的事情,但万一真出现了,我们可不能束手待毙。(孙悟空:保卫花果山,猴猴有责!) </br>这次我们考虑的是在某个武将的濒死时做一些什么事情,那么就不得不留意一下有关濒死的几个技能触发时机: * Dying(进入濒死状态时) * AskForPeaches(处于濒死状态时) * AskForPeachesDone(濒死结算完毕) </br>一般来说,如果我们创建了一个包含了这些时机的触发技,那么只要场上有任何一名角色濒死,消息会立刻传到我们技能这里。 </br>还记得触发技的允许触发的条件吗?就是那个`can_trigger`函数,它的默认值是“具有本技能并且存活”。所以通常我们的技能即使知道了某个角色正在死亡线上挣扎,也会因为那个武将没有我们的技能而对TA不理不睬。这个条件保证了,即使所有人都遇到了同样的触发时机,也只有拥有技能的人才能使用技能。 </br>所以如果我们要在其它角色的濒死时机做些什么的话,can_trigger是很重要的一项内容,我们需要把它改成“目标存在”之类的条件来解除这些限制。 </br>但是,一旦解除了这个限制,发动技能的时候很可能就不是技能本身的拥有者所在的回合了,这就会使on_trigger函数中的player参数的值并不是拥有技能的那个人,而是当前回合的那位了。 </br>所以为了找到这个的发动来源,我们可以使用Room的一个成员函数,那就是`findPlayerBySkillName`了。它的函数原型是: ``` findPlayerBySkillName(skill_name, include_dead=false) ``` ![](https://img.kancloud.cn/3c/aa/3caab0df285094f011e92dbef047a5bb_960x23.png) </br>其中,`skill_name`就是用来查找的那个技能的名字了,参数`include_dead`表示查找结果里是否可以包括已阵亡的角色,填true就是连死人也算上,填false就是只在活着的角色里找,当然默认是填false了。 </br>与濒死状态有关的内容,还有一个叫作濒死结构体的东西——DyingStruct,它可以为我们记录某个武将濒死时的一些信息,结构方面是这样的: ![](https://img.kancloud.cn/98/da/98dabde361a43a066a085ae1b0103ba2_885x137.png) </br>具体的内容我们可以从源码(可在群文件里搜索 秒沉水 查找到源码)的src\core\structs.h中找到。 </br>可以看到DyingStruct包含了两个成员变量:`who`和`damage`。 </br>其中: 1. `who`表示处于濒死状态的那个可怜人; 2. `damage`是一个伤害结构体DamageStruct,记载了造成濒死状态的伤害事件的有关信息。如果这个damage的值是nil的话,说明who的濒死是体力流失造成的,没有经过什么伤害! </br>关于DyingStruct中的信息,我们可以在我们技能的`on_trigger`函数中通过环境数据`data`得到,方法是使用sgs.QVariant提供的toDying()函数。 </br>好了,现在我们为一心要保护花果山的孙悟空提供这样的一个技能吧: > 护卫:一名其他角色进入濒死状态时,你可以失去1点体力并摸一张牌,令其恢复1点体力。 </br>代码如下: ![](https://img.kancloud.cn/07/db/07dbb51d5eaa1b736a2ddce341f9634f_704x570.png) </br>其中那个`objectName`是ServerPlayer对象用来查看武将名称的小帮手,我们通过比较`source`和`dest`的名称是否一样来确定濒死的人和拥有技能的人是不是同一位。 </br>到游戏中体验一下救死扶伤的成就感吧! </br>看好,典韦快挂了!我们孙悟空还体力满满~ ![](https://img.kancloud.cn/bc/78/bc782a75e3b329434841b68848ed8356_369x180.png) </br>再给他一下,让他濒死…… ![](https://img.kancloud.cn/1b/63/1b630ea549f9f47e7183cf6509001466_508x399.png) </br>结果: ![](https://img.kancloud.cn/30/94/30949d860a8e6ff331290a74b93408b2_371x190.png) </br>看游戏记录就知道发生什么了…… ![](https://img.kancloud.cn/29/f4/29f48ed26837d2166d7cc2cf0044f172_216x86.png) </br>成功!(众猴子:吾主英明!曹丕:我什么都不知道……)