注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

象征式

踢翻一切帝国主义狗逼

 
 
 

日志

 
 
 
 

一些强级GM金领带模式所用的较为稀有的技术  

2016-04-11 12:03:54|  分类: 关于正常 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
分辨出HELPER+PROJ等【飞道攻击】与人物本体【普通攻击】的当身,具体代码如下:

[state debug]

trigger1 = time = 0

type = targetdrop

这段是为了防止人物在受击、倒地、被击飞等硬直较大的情况下,我方仍旧保有TARGET时会误触发而设置的。

这部分涉及到STATE运行顺序,虽然正常情况下并不会太仔细排序,但【每个状态号里的控制器会按顺序从上到下进行触发】所以这一段targetdrop要是排在后面会无法运行从而起不到DEBUG的作用。time = 0是为了能第一帧就能进行,但往后不执行,如果往后也执行TARGETDROP,那么这个当身就会失效。


[state check reversion]

trigger1 = 1

type = reversaldef

reversal.attr = SCA,AA,AP

sparkxy = 0,0

sparkno = -1

区分攻击属性,当然自重一点,无法阻止投技。

[State 1000, PlaySnd]

type = PlaySnd

trigger1 = animelem = 1

value = S14,21

播放语音

[state proj target]

trigger1 = time = 0

type = helper

helpertype = normal

stateno = 1202

id = 1202

name = "proj eater"

pos = 0,0

postype = p1

keyctrl = 0

这个是侦测PROJ属性攻击用的HELPER,因为本体无法靠TARGET条件来进行当身跳转,所以我单独分一个等身大小的HELPER出来进行辅助。

[state helper target]

trigger1 = target,ishelper

type = targetstate

value = 1198

这段是侦测TARGET为HELPER时进行的敌方跳转。

[state root target]

trigger1 = !target,ishelper

type = targetstate

value = 1200

这段则是侦测对方是本体时用的敌方跳转

[state if target is helper or proj]

trigger1 = target,ishelper && numtarget > 0

trigger2 = !numhelper(1202)

type = changestate

value = 1197

这段有两个条件,第一个是检测到对方的攻击是HELPER就跳转,第二个是检测到用来对付PROJ攻击的HELPER有动静了就跳转

[state if target is root]

trigger1 = !target,ishelper && numtarget > 0

type = changestate

value = 1201

这段是对应的敌方本体

[state end]

trigger1 = animtime = 0

type = changestate

value = 0

ctrl = 1

动作结束返回站姿

;Proj eater

[statedef 1202]

type = S

movetype = A

anim = 9003

ctrl = 0

velset = 0,0


[state kickass to PRoj]

trigger1 = 1

type = reversaldef

reversal.attr = SCA

hitflag = P

p1stateno = 1198

sparkxy = 0,0

sparkno = -1

pausetime = 0,0

虽然很多人都不会写,但当身是可以写hitflag这一行的,虽然FF等工具里并不会正常显示并提示格式错误,但实际上是有用的。这段hitflag = P意思为【只对PROJ属性起反应,不细分PROJ的攻击属性】,当然因为PROJ没有STATE,所以填P2STATENO是没用的,但是我方仍旧可以使用P1STATENO来跳转自身,所以我想到了用这个HELPER做检测。本体检测到这个PROJ吞噬的HELPER跳转了,本体就会跟着跳转,从而完成伪装【对飞行道具起反应的当身】。

[state des]

trigger1 = animtime = 0

type = destroyself

自毁,不多说。


这一整套当身对于一个普通当身来说的确是复杂了一点,不过因为HELPER的存在所以要写得复杂才行,否则就会变成对HELPER也起到正常当身的作用,那么就乱套了。


还有一个利用原模式下陷阱光线HELPER所做的【遥控炸弹】,这个思路也比较复杂。但实际上很容易操作,并不需要额外写一个仿制的陷阱光线,直接在原HELPER上动手脚即可。

[State -1, Another-Trap Explode]

triggerall = command = "trap explode"

triggerall = numhelper(1121) > 0

triggerall = var(50) = 0

triggerall = palno >= 7

triggerall = power >= 1000*numhelper(1121)

trigger1 = statetype = S && ctrl

trigger2 = stateno = 1111 && movecontact

type = changestate

value = 1122

这是出招,遥控炸弹有两个版本,但除了炸出来的东西以外都没大区别,就不再复制另一段。让我们仔细分析一下这段出招的内容。


triggerall = command = "trap explode"

首先自然是出招按键,这一段我本来是想用原本就有的出招来做,但后来发现那样做的话系统会分不出两个版本的区别,所以就单独做了新的出招。

triggerall = numhelper(1121) > 0

炸弹要有陷阱光线的HELPER存在才能使用。

triggerall = var(50) = 0

不能在AI打架时使用。

triggerall = palno >= 7

金领带时才能使用,这是最大区别之一。

triggerall = power >= 1000*numhelper(1121)

这是遥控炸弹的设定之一,用陷阱光线的HELPER存在数量作为条件来发动,当然所扣的气为HELPER数量乘1000,这版本的GM气的上限为3000,所以自然场上只能存在三个HELPER,多一个都无法发动。

trigger1 = statetype = S && ctrl

trigger2 = stateno = 1111 && movecontact

出招方式一,站在地上且能自由操控时即可发动,所有超杀最普遍的出招方式。方式二,可取消某一招出。

接下来就到使HELPER出现的条件了,HELPER数量限制并不在CMD里,而是在陷阱光线的状态号里。如下:

trigger2 = palno >= 7

trigger2 = numhelper(1121) < 3

这是新增的条件,必须是金领带模式才能出到3个。

陷阱光线HELPER里也有改动,看似复杂其实很单纯的思路。

[State 1000, HitBy]

type = HitBy

trigger1 = 1

trigger1 = root,palno <= 6

value = SCA, AA


[State 1000, HitBy]

type = NotHitBy

trigger1 = 1

trigger1 = root,palno >= 7

value = SCA


[State 1000, HitOverride]

type = HitOverride

trigger1 = 1

trigger1 = root,palno <= 6

attr =  SCA, AA

stateno = 1123


[State 1000, DestroySelf]

type = DestroySelf

trigger1 = time = 500

trigger1 = root,palno <= 6

对于从属的分辨,我习惯用ROOT直接代替PARENT,一是ROOT输入方便,二是直接分辨出本体不需要再对HELPER进行从属关系的梳理。

这一段可以看到,6P及以下时出的陷阱光线是普通模式,会自动消失,能被打击触发,但如果HELPER判断本体为7P及以上的金领带色表时则不会被打到,且不会自主销毁。


接下来的代码由于量实在太大,就不复制了,单纯在这里用文字讲解:

HELPER可以通过PARENT或者ROOT这个前缀来进行对本体状态的分辨,再进行自我状态跳转,从而造成一种自如触发的【错觉】。

而且此时HELPER是【不受任何影响的】,所以当本体在做什么的时候,只需要执行root,stateno的检测,检测本体在什么状态号里,即可进行相对应的行动。新增的超杀“螺旋爆炸”就是利用了这个思路来进行制作的,不需要再额外浪费一个HELPER名额。熟悉GM代码的人应该都知道,GM的“螺旋缠绕冲击”不是靠本体发射P2位置的PROJ来打架的,而是发射一个锁定在P2位置的HELPER并定时发射PROJ来进行攻击,而本体只是在那里手舞足蹈地跳大神而已,一切都是HELPER定时发射PROJ造成的【错觉】,那么此时如果我用ROOT来当条件,HELPER就会跟着反应。

相对应的,本体也可以通过HELPER来进行反应,前面的当身也是利用了本体检测HELPER状态来进行反应的。

那么这个遥控炸弹的扣气量如何设置呢?

poweradd = -1000*numhelper(1121)

因为陷阱光线的HELPER是1,2,3,所以这个算式在实际计算时是(1000乘1),(1000乘2),(1000乘3)来计算的,不复杂。


  评论这张
 
阅读(35)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017