想当年我们在进行技能管理的时候,提到了许多技能的类型和它们的创建方法。当我们掌握了锁定视为技的创建方法之后,现在就剩下一种叫作禁止技的技能类型没有接触过了。富有冒险精神的孙悟空决心带我们向这个方向再探一探,于是考虑到生态文明等因素,这次我们创建的技能就是:
> 忘忧:锁定技,你不能被选择为【南蛮入侵】或【决斗】的目标。
</br>说到禁止技,我们就能想到创建它的方法,是sgs.CreateProhibitSkill。这类技能可以有效帮我们免疫某些卡牌的打扰,让我们安心游戏。
</br>关于这个创建方法`sgs.CreateProhibitSkill{name, is_prohibited}`的使用:
</br>`name`方面就直接写技能名字好了,这里我们填的是"LuaWangyou"。
</br>`is_prohibited`是用函数`function(self, from, to, card)`进行传值的,其中`self`表示技能本身,而`from`和`to`分别表示卡牌的使用者和使用目标,这些有点类似于距离修改技能的`correct_func`部分。`card`是用来判断的卡牌,如果这个卡牌属于我们要禁止的类型,那么就把函数的结果写成`true`,告诉系统要免疫这张卡牌。
</br>所以一个关键的地方就是判断一张卡牌的类型。这可以用Card的一个成员函数`isKindOf`完成,它的原型是:
```
isKindOf(cardType)
```
![](https://img.kancloud.cn/2e/12/2e1279a9bc0f719c718c10509443031a_562x23.png)
</br>其中`cardType`就是要判断的卡牌类型啦。
</br>还记得太阳神三国杀里面卡牌的类型名称吗?比如杀就是slash,火攻就是fire_attack什么的。不过在这里要换一种写法,把这些类型中每一部分的第一个字母都改成大写,然后去掉所有的下划线,这样才行。所以杀就要改成Slash,火攻就要改成FireAttack。我们需要判断的南蛮入侵就该写成SavageAssault,而决斗就是Duel了。
</br>所以具体到技能的设计上,如果我们发现卡牌的使用对象拥有无忧这个技能,同时卡牌本身又属于南蛮入侵或者决斗,那么就判定这张卡牌不能以这个使用对象为目标了。
</br>代码方面,就是这样的:
![](https://img.kancloud.cn/1e/4e/1e4e0c0b4ba05b0f4c77947eaa7af8eb_757x172.png)
</br>到游戏中体验一下吧。
</br>开了一局三人局,然后……
![](https://img.kancloud.cn/f5/bf/f5bf469bdb3bb0405648a20084416c52_217x115.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 立即胜利