💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
我们知道,先知郭嘉有一个独特的能力,他可以在判定结束后获得自己的判定牌。这种另类的摸牌手段赋予了整个判定过程一个圆满的结局。我们在成功进行了判定和改判的实验后,当然要一鼓作气,见识一下这判定中最后的一环。 </br>(编者:郭先生把天妒的代码借我们看看吧?郭嘉:也好……) ![](https://img.kancloud.cn/a1/c2/a1c250af8ccc5ad58b055ce6d4c197b8_783x329.png) </br>天妒是一个纯正的触发技,它以判定结束(sgs.FinishJudge)为触发时机,一般来说是一个频繁发动(sgs.Skill_Frequent)的技能。在触发效果的实现上,大体分为两个部分:找到判定牌,然后获得它。 在sgs.FinishJudge这个触发时机,环境数据data中储存的是这次判定的判定结构体信息。所以,我们要先用`toJudge()`方法得到这个结构体,因而我们可以在`on_trigger`中看到`local judge = data:toJudge()`这句话。 </br>而我们知道判定牌是归JudgeStruct的成员变量`card`保管的,所以我们用接下来的`local card = judge.card`拿到了这张判定牌。于是第一部分就完成了。 </br>第二部分,获得这张判定牌,这里选用的是ServerPlayer的一个成员函数`obtainCard`。它的原型是: ``` obtainCard(card, unhide=true) ``` ![](https://img.kancloud.cn/72/dc/72dcd6217d7c9547b997c19554986072_539x24.png) </br>看着有点眼熟?当然了,其实我们早就见过的,只不过当时它在Room手下干活而已,在ServerPlayer这边做个兼职,稍微换了一下样貌的。还算是老朋友了吧。 </br>于是`player:obtainCard(card)`就能够帮我们获得我们想要的这张判定牌了。 </br>不过那个`card_data`又是怎么回事呢?看`setValue`的意思它还保存了一份判定牌的信息?其实那个只是为后面询问是否发动技能的`askForSkillInvoke`提供环境数据罢了,AI可以通过它得知要获得的判定牌具体是什么,从而决定是否发动技能。 </br>好的,这下我们终于也知道怎么获得判定牌了! </br>(编者:谢郭先生!郭嘉:就这样吧……)