💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
*此处建议看当先(lua手册)和观微(extra.lua)的代码,原本insertPhase的办法已废弃* </br>我们通过跳过阶段让我们的新武将孙悟空失去了它的判定阶段,那么,造成的后果就是,场上漂浮的闪电将永远停留在它的头上……司马懿们该多着急啊! </br>于是我们想着,在弃牌阶段结束后,重新插入一个判定阶段,让孙悟空的游戏进程重归完整吧。 </br>插入一个额外的阶段,我们要用Player提供的成员函数。这次我们使用的是一个叫做`setPhase`的函数。它的原型是: ``` setPhase(Phase phase) ``` </br>其参数phase是要设置为的阶段。 </br>我们把原本进行的阶段设置为我们要插入的阶段,等插入的阶段结束后,我们再把阶段设置为原来进行的阶段,这样就实现了插入一个阶段。 </br>和跳过阶段类似,插入阶段也需要把阶段变更作为触发时机。 </br>但由于插入一个额外的阶段,改变了原先阶段的推进顺序,所以需要先修改阶段变更结构体内的信息,把即将进入的阶段改变成我们将要插入的阶段。然后再执行插入操作,这样才能保证回合内阶段的推进按我们设想的那样进行~ </br>所以我们在弃牌阶段后重新插入一个判定阶段的代码就是这样的: ``` player:setPhase(sgs.Player_Discard) local thread = room:getThread() if not thread:trigger(sgs.EventPhaseStart, room, player) then thread:trigger(sgs.EventPhaseProceeding, room, player) end thread:trigger(sgs.EventPhaseEnd, room, player) player:setPhase(sgs.Player_RoundFinish) ``` </br>重新开一局单挑,双开,主公选择大乔(提供乐不思蜀),反贼选择孙悟空,我们就可以看到新插入的判定阶段是怎么一回事了。 </br>首先,大乔发动国色对孙悟空使用了乐不思蜀。但是,在孙悟空的回合,跳过了判定阶段,直接进入了出牌阶段。 </br>接下来,孙悟空结束出牌阶段,又结束了弃牌阶段。这时进入了我们特意插入的额外的一个判定阶段,于是乐不思蜀开始判定了! </br>当然,这时的乐不思蜀即使中了也没关系了~最重要的是,我们插入额外阶段的“险恶用心”达到了。 </br>想到了什么?把跳过阶段和插入阶段结合起来用,可以达到打乱阶段顺序的目的哦! </br>就是这样。