</br>要说在太阳神三国杀这游戏中,一个回合里面总共有六大阶段,分别是:
准备阶段;判定阶段;摸牌阶段;出牌阶段;弃牌阶段;结束阶段。
</br>很多技能都在这六个阶段上做文章。比如英魂(准备阶段)、涉猎(摸牌阶段)、琴音(弃牌阶段)、闭月(结束阶段)之类的。
</br>这种以阶段作为发动时机的技能,大多属于触发技,称作阶段触发技。
</br>(孙悟空:我也想要一个阶段触发技!编者:身在福中不知福……)
</br>其实最早我们为孙悟空创造的那个强力摸牌技能"美王"就属于这种阶段触发技。下面我们来仔细分析一下美王的代码,看一看怎样创造一个阶段触发技。
![](https://img.kancloud.cn/47/8a/478a5d165083ce58a43b278fe7f621f4_789x571.png)
</br>跟所有触发技一样,阶段触发技也是通过套用CreateTriggerSkill创建技能的模板创造的。只是它的触发时机是具体的阶段时机了。
跟阶段有关的触发时机有:
1. sgs.TurnStart(回合开始前)
2. sgs.DrawNCards(摸牌阶段摸牌时)
3. sgs.EventPhaseStart(阶段开始时)
4. sgs.EventPhaseEnd(阶段结束时)
5. sgs.EventPhaseChanging(两个阶段之间的时间点)
</br>可以看到,回合开始阶段和摸牌阶段有自己专用的触发时机,美王就是将摸牌阶段摸牌时的sgs.DrawNCards作为自己的触发时机的。
</br>然而另外四个阶段该怎么办呢?
</br>原来,一个阶段内又包扩两个更细小的触发时机,分别是刚进入这个阶段的阶段开始时机sgs.EventPhaseStart,以及即将离开这个阶段的阶段结束时机sgs.EventPhaseEnd。
</br>所以,如果我们说“XX阶段开始时……”,所用的触发时机就是sgs.EventPhaseStart;而如果我们说“XX阶段结束时……”,就该使用sgs.EventPhaseEnd作为触发时机了。
</br>那么怎么区分具体是哪个阶段呢?
</br>不要紧,那个Player为我们提供了一个查看当前阶段的成员函数,那就是`getPhase`。它的原型就是:`getPhase()`。
![](https://img.kancloud.cn/6d/24/6d249a7e4ec3578c5da00677313ad46e_234x26.png)
</br>这个函数的返回结果,列在下面了:
1. 回合启动阶段:sgs.Player_RoundStart(准备进入回合,遇翻面则跳过回合)
2. 准备阶段:sgs.Player_Start(观星、英魂等可以发动)
3. 判定阶段:sgs.Player_Judge(延时性锦囊判定;鬼才、鬼道等可以发动)
4. 摸牌阶段:sgs.Player_Draw(英姿、神威等可以发动)
5. 出牌阶段:sgs.Player_ Play(大多数主动技能可以发动)
6. 弃牌阶段:sgs.Player_Discard(琴音等可以发动)
7. 结束阶段:sgs.Player_Finish(闭月、据守等可以发动)
8. 回合外:sgs.Player_NotActive(大多数被动技能可以发动)
9. 阶段间:sgs.Player_PhaseNone
</br>所以如果说“弃牌阶段……”,所用的触发时机为sgs.EventPhaseStart,并且在触发效果`on_trigger`中进行判断,查看`player:getPhase() == sgs.Player_Discard`是否满足就行啦。
</br>代码片段:
![](https://img.kancloud.cn/78/fe/78fe4adfdaf101dcc11732af68ef6145_614x150.png)
</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 立即胜利