凶恶向mugen辞典 by.aceBluest
(附带简易教程)
此文旨在发展同好,因为涉及mugen的凶恶向人物,所以不喜欢那类人物的就把文章删了吧
还有这不是起步教程,要有一定的基础才能看懂,打基础请移步贴吧置顶教程
当然有些东西还是要自己探索的,比如说anim探查,stateno探查,id调查之类的东西
虽然是比较基础,但是不同的人用法也不同,还有例如己方helper的潜入型调查,对方helper的利用型调查等
这些我就不在这里一一论述了,还是那句话,每个人都有自己不同的方法,自己探索出适合自己的才是最好的
状态控制器我只在有必要的项目做注释,一般的角色名为kfm
hitdef以及projectile如果只需要示范damege,fall.damage,p2stateno等会单独写
认为自己没问题的话,现在开始
---------------------------------------------------------------
---------------------------------------------------------------
大众基础向
---------------------------------------------------------------
---------------------------------------------------------------
大伤害·溢出伤害
如同字面所述,就是hitdef和projectile的伤害值很大让人当场死亡
不过在一定的范围内还是会受到别的因素影响,比如对手的defence值
比如自身的attack为100的时候damage为1000,对手是一般的功夫男
那样就能达到即死的效果,但是如果对方的defence值或者life值变大,将会无法即死
不过在更多情况下会使用极大值来表示,这里的是mugen处理溢出的状况
通常所说的大伤害是高于普通角色的life,并没有达到溢出的情况
而溢出伤害和极大值就是另一种情况的表现了
例子:
通常大伤害:damage=enemy,lifemax
溢出伤害:damage=2147483648
---------------------------------------------------------------
反向溢出伤害
hitdef和projectile的伤害值为负数的情况,通常会让对手回复life
达到负伤害的极大值的话,life的值会大到mugen无法处理,造成life=0的bug
当然和大伤害一样会受到defence值的影响就是一个弊端
不过这个在lifeadd为极大值的时候也会发生
例子:
反向溢出伤害:damage=-2147483648
---------------------------------------------------------------
即死投·即死当身
投,即hitdef和projectile中使用p2stateno来取得对手目标让其进入别的状态
然后使用lifeset和lifeadd进行操作使得life值为0,targetstate的操作也是这个分类的
但是hitdef和projectile的p2stateno在对手有hitoverride的情况下无法将对方的状态改变
使用reversaldef以及p2stateno的定义进行状态夺取的则被称为即死当身
当对手使用hitdef时候可以将对方进入别的状态,即使对方使用有hitoverride也可以起效
可以说是凶恶人物的基本手段呢,而狂级人物一旦加入了这个也有一下子提升实力的效果
备注:直接通过当身让有hitpausetime的对手进入超即死状态即为超即死当身
例子:
即死投:
p2stateno=xxx;(xxx为自己设定的即死状态号,下同)
或者
[state ]
type=targetstate
trigger1=x;(x为条件,自己考虑该怎么写,下同)
value=xxx;(同上)
ignorehitpause=1;(可选参数,默认为0,为1时系统会不受影响读取这个状态控制器,以后不作说明)
即死当身:
[state ]
type=reversaldef
trigger1=x;(同上)
reversal.attr=sca,aa,at,ap;(所有定义的攻击)
pausetime=
numhits=
sparkno=
hitsound=
p2stateno=xxx;(同上)
ignorehitpause=1;
---------------------------------------------------------------
落下即死
如同字面的意思,hitdef和projectile,reversaldef的fall.damage使用极大值
对方进入落下的状态(5100,5110),在那些状态下有hitfalldamage的定义,进入的话会立即死亡
进入自己的状态下定义hitfalldamage将会是强力的攻击手段,而且fall.damage不受defence的影响也是好处
大抵就是攻击定义的p2stateno=5100or5110,p2getp1state=0让对方读取自己的状态让对方立即死亡
例子:
即死当身:
fall=1;(保证落下)
fall.recover=0
fall.damage=2147483648
p2getp1state=0;(读取p1的state)
---------------------------------------------------------------
targetlifeadd·毒·回复阻止
利用targetlifeadd使得对方的life为0,达到即死的效果
加入absolute=1指定为绝对值则是保险的作用
顺便说一下当对方的life为0时系统作判定,如果有抗性并不一定会立即死亡
本身非常的简单,但是由此派生出来的东西很广泛,比如毒,回复阻止等等
毒,字面意思,小小的伤害持续进行,通常和永续target合用,较大伤害的毒也被称为猛毒呢
通常用来对付那些不受直接大伤害或者lifeadd型即死的人物
回复阻止,通过永续target和targetlifeadd配合对手life的记忆进行消减,通常神上位不怎么会使用
如果用来提高游戏性还是不错的选择呢
例子:
targetlifeadd即死:
[state ]
type=targetlifeadd
trigger1=x;(同上)
value=-2147483648
absolute=1;(绝对值)
ignorehitpause=1
毒:
[state ]
type=targetlifeadd
trigger1=x;(同上)
value=-random%5
absolute=1;(绝对值)
ignorehitpause=1
回复阻止:
[state ]
type=targetlifeadd
trigger1=x;(同上)
value=-(var(1)-var(2));(var(1)和var(2)为对方受击前后的life记忆变量)
absolute=1;(绝对值)
ignorehitpause=1
---------------------------------------------------------------
---------------------------------------------------------------
进阶1-初阶
---------------------------------------------------------------
---------------------------------------------------------------
永续target bug
目标取得的场合,将目标取得后的reversaldef在1F内不断实行防止脱离
可以维持这个target从而在合适的情况下进行targetstate和targetlifeadd
如果对方没有对应耐性就是很好用的即死手段
但因为是执行reversaldef的情况下无法同时执行hitdef,因此常用helper来进行
这个也是混线bug的利用基础
例子:
永续target取得:
[state ];(target取得用reversaldef)
type=reversaldef
trigger1=1
reversal.attr=sca,aa,at,ap
pausetime=1,2
sparkno=-1
numhits=0
ignorehitpause=1
[state ]
type=targetstate
trigger1=x;(同上)
value=xxx;(同上)
ignorehitpause=1
[state ]
type=targetlifeadd
trigger1=x;(同上)
value=-2147483648
absolute=1;(绝对值)
ignorehitpause=1
[state ]
type=targetlifeadd
trigger1=x;(同上)
value=-random%5
absolute=1;(绝对值)
ignorehitpause=1
[state ]
type=targetlifeadd
trigger1=x;(同上)
value=-(var(1)-var(2))
absolute=1;(绝对值)
ignorehitpause=1
---------------------------------------------------------------
512超越使用(以后简称512法)
利用hitpausetime达到单个状态号里超越512个状态控制器,依然能够正常的读取的情况
不会出现「state xxxxx can only have max of 512 controllers」
从而能够影响人物的内存的bug,利用非常的广泛,
超即死,苏生,冻结解除,palno变更,helper normal化,亲变更,亲捏造,直死等都会利用到
将目标拖入状态,取得target后,通过type=null进行排列,在合适的位置通过ignorehitpause=1进行无视hitpausetime的读取
从而影响在该位置的内存,嘛,描述的不是很形象没有办法呢
例子:
hitpausetime=7,7
[state ]
type=changestate
trigger1=hitpausetime>1
value=xxxx;(512个状态控制器超越的状态号)
ignorehitpause=1
---------------------------------------------------------------
超即死
512超越使用的一种,利用上述办法将对方读入553-556的状态让alive地址为0,使对方当场死亡
就算是lifeset的锁血和noko也不能阻止这一的alive归0,是优点呢
若是对方的alive是1以外的值就用多次的changestate判定使得对方的alive最终归0的手段也成为超即死改
例子:
超即死改:
[statedef 511]
[state ]
type=hitdef
trigger1=x
...
hitpausetime=7,7
ignorehitpause=1
[state ]
type=changestate
trigger1=hitpausetime>1
value=512;(512个状态控制器超越的状态号)
ignorehitpause=1
[statedef 512]
[state 1]
type=selfstate
trigger1=name="kfm";(自身保护)
value=0;(自己设定的保护状态号,不一定是0)
ctrl=(!ishelper)
ignorehitpause=1
[state 2]
type=lifeset
trigger1=1
value=0
ignorehitpause=1
[state 3]
type=null
trigger1=1
...
[state 553]
type=null
trigger1=1
ignorehitpause=1
[state 554]
type=null
trigger1=1
ignorehitpause=1
[state 555]
type=null
trigger1=1
ignorehitpause=1
[state 556]
type=null
trigger1=1
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
---------------------------------------------------------------
冻结·冻结解除·冻结当身
冻结就是pausetime,hitpausetime发生的场合,无论是哪种攻击手段都可以那么称呼的呢
冻结解除就是不需要等待pausetime,hitpausetime的时间流逝,直接使得这两个的值为0的情况
一般有三种方法,一个是自己的攻击使用hitpausetime使得自己不会停止
一个是针对对方的冻结攻击使用pausetime为0的hitdef覆盖,还有一个就是利用512超越来进行的
冻结当身就是使用非常大的hitpausetime的reversaldef来封住对方的行动或者使用死之宣告
不过也因此会影响通常的攻击,所以上位神以及以上的人物通常作为最终的手段使用
例子:
冻结当身:
[state ]
type=reversaldef
trigger1=x
reversal.attr=sca,aa,at,ap
pausetime=2147483647,2147483647
sparkno=
numhits=
ignorehitpause=1
冻结解除(512法):
[state 541]
type=null
trigger1=1
ignorehitpause=1
[state 542]
type=null
trigger1=1
ignorehitpause=1
[state 543]
type=null
trigger1=1
ignorehitpause=1
[state 544]
type=null
trigger1=1
ignorehitpause=1
---------------------------------------------------------------
---------------------------------------------------------------
进阶2-中阶
---------------------------------------------------------------
---------------------------------------------------------------
死之宣告·强制死之宣告
回合后(roundstate=3的时候)由于mugen是根据时机的规格来进行判断
因此这时候对life进行targetlifeadd的攻击,可以使得对手的life为0不能回复达到即死的效果
还有,配合冻结当身能够提高死之宣告的成功率,因此这种手段又被称为冻结死之宣告
通过自杀使得roundstate强制进入3而进行死之宣告的攻击,则被称为强制死之宣告
强制死之宣告通过自杀而不等时间到达就能强制到达r3,同时自身执行苏生并对方的life归0的手段
再利用时止的手段让对方的life无法回复由于KO的判断在r2,但是胜负的判断在r3
这就可以使得对方进入lose,自己进入win的状态
但由于必须自杀的关系,如果失败了自己就输了,所以是把双刃剑
很多作者都在强制死之宣告发动上花了很多心思进行演出,欣赏人物的最后一刻也很有意思呢
例子:
死之宣告:
[state ]
type=targetlifeadd
trigger1=roundstate=3&&numtarget
value=-2147483647
absolute=1;(绝对值)
ignorehitpause=1
强制死之宣告:
[statedef 1]
[state ]
type=changestate
trigger1=x
value=2(本体自杀状态号)
ignorehitpause=1
[satetdef 2]
[state ]
type=hitdef
trigger1=x
...
hitpausetime=7
ignorehitpause=1
[state ]
type=changestate
trigger1=hitpausetime>1
value=3(苏生状态号)
ignorehitpause=1
[statedef 3]
[state 1]
type=lifeset
trigger1=!life
value=lifemax
ignorehitpause=1
[state 2]
type=null
trigger1=1
....
[state 553]
type=selfstate
trigger1=!alive
value=ifelse(!ishelper,xxx,130);(helper处理号xxx和自身保护状态号130)
ctrl=1
ignorehitpause=1
[state 554]
type=null
trigger1=1
ignorehitpause=1
[state 555]
type=null
trigger1=1
ignorehitpause=1
[state 556]
type=null
trigger1=1
ignorehitpause=1
[state ]
type=selfstate
trigger1=1
value=stateno
persistent=256;行动复位
ignorehitpause=1
[state ]
type=selfstate
trigger1=1
value=stateno
persistent=256
ignorehitpause=1
[state ]
type=selfstate
trigger1=1
value=stateno
persistent=256
ignorehitpause=1
[statedef 4];(永续target维持用helper)
[state ]
type=targetlifeadd
trigger1=roundstate=3&&numtarget
value=-2147483647
absolute=1;(绝对值)
ignorehitpause=1
---------------------------------------------------------------
Omega Tom Hanks Killer(OTHK)
先在前面说明一下,helper发出的projectile是和本体一样对待
也就是说,p1stateno指定的projectile无论是谁发出的到最后进行移动的都是本体
那么,用reversaldef捕获了hitdef的helper,然后在状态里让他发射projectile让本体进入helper的hitdef状态
通过强制本体使用helper的hitdef进行当身使得本体立即死亡,夺取对方的helper就是最重要的事情
要注意当helper使用了hitoverride就无法夺取目标来使用了
说白了其实就是让原本不使用hitdef的本体强制使用hitdef,由于技术的发现和一个人物有关,所以叫这个名字
被发现后很长一段时间都在使用,可以理解为凶恶人物制作的基础之一了
例子:
OTHK:
[state ]
type=projectile
trigger1=xxx
projanim=anim;(重要)
......
p1stateno=prevstateno;(重要)
ignorehitpause=1
备注:(配合混线通过调查anim和p1stateno到lifeset为0的状态号为即死返)
---------------------------------------------------------------
超即死投
夺取对手的state到自己的有hitpausetime的状态里,赋予hitpausetime后进入超即死状态号让对方当场死亡
一般通过p2stateno或者targetstate进入hitpausetime赋予的状态号
赋予hitpausetime不一定是hitdef,reversaldef也可以
例子:
超即死投
[satetdef 510]
[state ]
type=hitdef;reversaldef;projectile
....
p2stateno=511
ignorehitpause=1
;or
[state ]
type=targetstate
trigger1=x
value=511
ignorehitpause=1
[statedef 511]
[state ]
type=hitdef
trigger1=x
...
hitpausetime=7,7
ignorehitpause=1
[state ]
type=changestate
trigger1=hitpausetime>1
value=512;(512个状态控制器超越的状态号)
ignorehitpause=1
[statedef 512]
[state 1]
type=selfstate
trigger1=name="kfm";(自身保护)
value=0;(自己设定的保护状态号,不一定是0)
ctrl=(!ishelper)
ignorehitpause=1
[state 2]
type=lifeset
trigger1=1
value=0
ignorehitpause=1
[state 3]
type=null
trigger1=1
...
[state 553]
type=null
trigger1=1
ignorehitpause=1
[state 554]
type=null
trigger1=1
ignorehitpause=1
[state 555]
type=null
trigger1=1
ignorehitpause=1
[state 556]
type=null
trigger1=1
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
[state ]
type=changestate
triggerall=!ishelper&&name!="kfm"
trigger1=1
value=ifelse(hitpausetime<2,511,ifelse(roundstate<3,stateno,5150))
ignorehitpause=1
---------------------------------------------------------------
混线bug
先取得自己召唤helper的target,取得后消除被击中的helper,同时用reversaldef维持这个target
这时候如果对方召唤出的新helper进入了原先我们取得target的位置,就能通过targetstate进行控制
用来配合OThK,可以杀掉很多的角色。不同构造的混线bug造成的杀伤力也不同,一般就是精度的差别
当然现在大部分神都是使用开幕混线的,所以更多的是探查上的差距,由混线衍生出的不同招式名称也很多
例子:
混线(整个比较长,我主要写重点,这个是最简单的多重混线)
[satetdef -2]
[state ];混线用helper
type=selfstate
trigger1=ishelper(1)
value=1
ignorehitpause=1
[state ];混线target
type=selfstate
trigger1=ishelper(2)
value=2
ignorehitpause=1
[state ]
type=helper
triggerall=!ishelper&&name="kfm"
trigger1=numhelper(1)=0
name="Konsen"
stateno=1
Id=1
helpertype=player;(重要定义)
pos=0,0
postype=p1
facing=1
keyctrl=0
ownpal=1
supermove=1
pausemovetime=2147483647
supermovetime=2147483647
ignorehitpause=1
[state ]
type=helper
triggerall=!ishelper&&name="kfm"
trigger1=numhelper(1)>0
trigger1=numhelper(2)<8
trigger1=helper(1),numtarget<8
name="Konsen-hit"
stateno=2
Id=2
helpertype=player;(重要定义)
pos=0,0
postype=p1
facing=1
keyctrl=0
ownpal=1
supermove=1
pausemovetime=2147483647
supermovetime=2147483647
ignorehitpause=1
[statedef 1]
type=a
movetype=i
physics=n
anim=1;(攻击判定anim)
[state ];维持
type=reversaldef
trigger1=ishelper(1)
trigger1=numtarget>0
reversal.attr=sca,aa,at,ap
priority=2147483647
pausetime=0,0
sparkno=-1
hitsound=-1
ignorehitpause=1
[state ];不受影响
type=nothitby
trigger1=ishelper(1)
value=sca,aa,at,ap
time=-1
ignorehitpause=1
[state ];保险
type=helper
triggerall=numhelper(2)<8
trigger1=helper(1),numtarget<8
name="Konsen-hit"
stateno=2
Id=2
helpertype=player;(重要定义)
pos=0,0
postype=p1
facing=1
keyctrl=0
ownpal=1
supermove=1
pausemovetime=2147483647
supermovetime=2147483647
ignorehitpause=1
[state ];攻击判定anim切换,hitdef攻击
type=changeanim
trigger1=ishelper(1)
trigger1=numtarget=0
trigger1=numhelper(2)>0
value=1
ignorehitpause=1
[state ];状态转换,hitdef生效
type=statetypeset
trigger1=ishelper(1)
trigger1=numtarget=0
trigger1=numhelper(2)>0
type=a
movetype=a
physics=n
ignorehitpause=1
[State ];目标取得用hitdef
type=hitdef
trigger1=ishelper(1)
trigger1=numtarget=0
trigger1=numhelper(2)>0
attr=,na
damage=0,0
numhits=0
guardflag=
hitflag=mafdp
priority=7,hit
pausetime=0,10
affectteam=f;(重要)
ignorehitpause=1
[state ];判定无anim,保护
type=changeanim
trigger1=ishelper(1)
trigger1=numtarget=8;维持
value=3
ignorehitpause=1
[State ];状态转换,保护
type=statetypeset
trigger1=ishelper(1)
trigger1=numtarget=8
type=a
movetype=i
physics=n
ignorehitpause=1
[State ];混线处理state转入
type=targetstate
triggerall=ishelper(1)
triggerall=numtarget>0
triggerall=target,ishelper
trigger1=x
value=xx
ignorehitpause=1
[state ];败北消除
type=destroyself
trigger1=ishelper(1)
trigger1=root,life=0
ignorehitpause=1
[statedef 2]
type=s
movetype=h
physics=n
anim=2;受击判断anim
[state ];数目未满8个时候无敌
type=nothitby
trigger1=ishelper(2)
trigger1=numhelper(2)<8
value=sca
ignorehitpause=1
[state ]
type=hitby
trigger1=ishelper(2)
trigger1=numhelper(2)=8
value=sca,na;对应混线hitdef的attr
ignorehitpause=1
[State ];取得target后消除,以及混线helper不在的时候消除
type=destroyself
trigger1=numhelper(1)>0
trigger1=helper(1),numtarget=8
trigger2=numhelper(1)=0
;这里只是简单的说明混线的产生,混线技以后会说
---------------------------------------------------------------
---------------------------------------------------------------
进阶3-高阶
---------------------------------------------------------------
---------------------------------------------------------------
装甲贯通炮
混线bug的派生技之一,预先给对方积蓄落下伤害,在取得对方的helper后
使用projectile的p1stateno让对方进入落下的状态(5100,5110)从而即死
看起来是比较奇怪的名称,但是如果对方存在装甲(hitoverride)的情况下
hitdef和projectile的通常落下即死无法发挥作用,由于这个能杀死所以这么认为的吧
例子:
装甲贯通炮:
[satetdef 6];攻击招式状态号
[state ]
type=projectile
trigger1=!ishelper
projId=1
projanim=1;攻击anim号
.....
fall.damage=2147483648
ignorehitpause=1
[statedef 7];混线处理状态号
[state ]
type=projectile
trigger1=ishelper&&root,name!="kfm"
projId=2
projanim=anim;enemy,var(x);调查的anim号
.....
p1stateno=ifelse(root,gethitvar(fall.damage)>root,lifemax,5110,5100)
ignorehitpause=1
---------------------------------------------------------------
OROCHI杀手·即死返
混线派生技之一,通过混线夺取对方的helper然后p1stateno=169995或者lifeset=0的p1stateno=49000,即死对方
本来是应对众多G OROCHI改的招式,而后加入了anim探查和stateno探查使得这个方法泛用化
泛用化的OROCHI杀手就是混线即死返
例子:
OROCHI杀手:
[state ]
type=projectile
trigger1=ishelper&&root,name!="kfm"
projId=3
projanim=anim;enemy,var(x);调查的anim号
.....
p1stateno=ifelse(random<499,169995,49000)
ignorehitpause=1
即死返:
[state ]
type=projectile
trigger1=ishelper&&root,name!="kfm"
projId=3
projanim=anim;enemy,var(x);调查的anim号
.....
p1stateno=enemy,var(y);调查的即死stateno
ignorehitpause=1
---------------------------------------------------------------
变数弄
混线派生技之一,有些对手在lifeset的value里使用了var(x)来进行血量锁定的操作,这样的方法可以防止F1按死人物
同时通过varset可以让人物按照作者所希望的方式进行血量削减,通过混线取得helper的目标
取得对方的helper之后使用parentvarset来对对方的var(x)进行改变,从而即死这一类的人物
由于有些人物会因为变数弄而论外化,因此变数修复对于神上位及以上的人物来说也是很必要的
补足:sysvar不能使用parentvarset
例子:
变数弄:
[state ]
type=parentvarset
trigger1=x
var(0)=(gametime%11=[3,4])*1+(gametime%11=[6,7])*(root,lifemax)+(gametime%11=[9,10])*-9999999999999
ignorehitpause=1
变数修复:
[state ]
type=parentvarset
trigger1=!x
var(0)=helper(0),var(0)
ignorehitpause=1
---------------------------------------------------------------
潘多拉杀手
混线bug的派生技之一,默认的mugen状态号110和115有hitby,从而让对方当场死亡
由于是杀死潘多拉魔盒0.2b的手段,因此被叫做在这个名字
另外潘多拉杀手改和这个完全不同,需要注意
例子:
潘多拉杀手:
[state ]
type=projectile
trigger1=ishelper&&root,name!="kfm"
projId=3
projanim=anim;enemy,var(x);调查的anim号
.....
p1stateno=ifelse(random<499,110,115)
ignorehitpause=1
---------------------------------------------------------------
邪眼杀手
也就是即死状态多重化,需要番号一致才可以,达成的手段就是targetstate到一系列的状态号
由于对方helper的selfstate会不断跳转,最终到达即死状态,使得对方当场死亡
例子:
邪眼杀手:
[statedef 1];混线
[state ]
type=targetstate
trigger1=x
value=[2,10000]
ignorehitpause=1
[statedef 2]
type=U
movetype=U
physics=N
ctrl=0
[state ]
type=changestate
trigger1=1
value=5150;即死处理状态号
persistent=256
ignorehitpause=1
.....
[statedef 10000]
type=U
movetype=U
physics=N
ctrl=0
[state ]
type=changestate
trigger1=1
value=5150
persistent=256
ignorehitpause=1
---------------------------------------------------------------
潘多拉杀手改
混线派生技之一,对于使用selfstate或者lifeset,lifeadd或者noko的对手,对他们的死亡条件或者锁定条件进行逆满足,
或满足脱离条件能使得对方无法有效对自身的helper进行脱离由此获得对方helper的target,将对方即死
或满足死亡条件就能让对方自杀,或者让对方的noko无效,这个方法用在即死潘多拉魔盒0.3上
例子:
潘多拉杀手改:
[state ]
type=parentvarset
trigger1=x
var(4)=prevstateno
ignorehitpause=1
---------------------------------------------------------------
Anomalocaris杀手
Anomalocaris这个人物,12P使用attr省略前段的本体hitdef,所有helper无条件锁定,本身的life未锁定,通常的当身无法起效
在当身的同时使用pause和superpause,就能对其进行当身,从而即死这类型的人物
例子:
Anomalocaris杀手
[state ]
type=reversaldef
trigger1=1
reversal.attr=sca,aa,at,ap;(所有定义的攻击)
damage=999999999999
pausetime=2
numhits=0
sparkno=-1
fall.damage=999999999999
p2stateno=1000044
ignorehitpause=1
[state ]
type=pause
triggerall=gametime%10=[1,5]
trigger1=enemynear,movetype=a
trigger1=enemynear(numenemy>1),movetype=a
time=2
movetime=2
ignorehitpause=1
[state ]
type=superpause
triggerall=gametime%10=[1,5]
trigger1=enemynear,movetype=a
trigger1=enemynear(numenemy>1),movetype=a
anim=-1
time=2
movetime=2
darken=0
p2defmul=1
ignorehitpause=1
---------------------------------------------------------------
间者helper·bug helper
混线夺取的helper瞬间召唤normal helper用来维持永续target,而自己的helper则能够自由的行动
优点是即使被夺走了也能够继续维持,而且不会伤害到自身
例子:
间者helper:
[state ];间者helper召唤
type=helper
triggerall=playeridexist(id)
trigger1=!numhelper(12212121212)
id=12212121212
name="\@v@/bug helpor"
postype=p1
pos=999999,999999
stateno=random*random
helpertype=normal;重要
size.xscale=0
size.yscale=0
keyctrl=0
supermovetime=9999999999999
pausemovetime=9999999999999
ignorehitpause=1
---------------------------------------------------------------
Marking
字面意思为标记,实际上就是对方的本体的永续target确保,用来配合死之宣告等
原理比较简单,通过hitoverride来实现
例子:
Marking:
[statedef 1];混线处理
[state ]
type=hitby
trigger1=name!="kfm"
value=SCA,AA,AT,AP
ignorehitpause=1
[state ]
type=hitby
trigger1=name!="kfm"
value2=SCA,AA,AT,AP
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=0
stateno=1
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=1
stateno=1
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=2
stateno=1
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=3
stateno=1
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=4
stateno=1
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=5
stateno=1
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=6
stateno=1
ignorehitpause=1
[state ]
type=hitoverride
trigger1=name!="kfm"
time=0
attr=
slot=7
stateno=1
ignorehitpause=1
---------------------------------------------------------------
---------------------------------------------------------------
进阶4-高阶2(主要是初心者比较难理解的,基本都建立在混线以及亲变更的基础上)
---------------------------------------------------------------
---------------------------------------------------------------
亲变更·gametime式脱离贯通
512法的运用之一,位置在6689,6690前后,通过改变内存达到,具体的情况如下
helper(1)召唤了helper(2),这个时候helper(2)的亲就是helper(1),helper(1)如果使用了destroyself消除自身
那么helper(2)的亲就是空出来的了,这个时候helper(1)空出来的地址可以给helper(3)进入
通过重新定向后,进入那个地址的helper(3)可以认定为helper(2)的亲,因为本身的记忆,所以parentvarset无法对helper(1)起效
但是通过制定helper的id可以对helper(3)实现变量的改写,如果对方使用变量进行生存管理便会被即死
对于神人物的杀伤力是非常大的
另外,用来配合gametime式脱离贯通,使得对方的selfstate无法生效,由此夺取对方的helper即死对方的事情也是可以的
因为不少人物的helper所使用的selfstate有个条件是使用gametime来控制的,比如trigger1=var(0)!=gametime+512
然后在-3下用var(0)来记忆一个value=gametime+512的值,若是对方使用变数弄,便会自动让helper脱离
例子:
亲变更:
[statedef 1]
[state ]
type=hitdef
trigger1=x
...
hitpausetime=7,7
ignorehitpause=1
[state ]
type=changestate
trigger1=id判定
trigger1=hitpausetime>1
value=2;(亲变更状态号)
ignorehitpause=1
[statedef 2]
[state 1]
type=null
trigger1=1
[state 2]
type=null
trigger1=1
....
[state ]
type=null
trigger1=1
[state 6690]
type=null
trigger1=1
persistent=128;(重要)
ignorehitpause=1
[state ]
type=null
trigger1=1
[state ]
type=null
trigger1=1
[state ]
type=null
trigger1=1
[state ]
type=null
trigger1=1
[state ]
type=null
trigger1=1
[state ]
type=null
trigger1=1
[state ]
type=null
trigger1=1
[state ]
type=null
trigger1=1
[state ]
type=changestate
trigger1=1
value=130;(helper储存状态号)
ignorehitpause=1
gametime式脱离贯通(整数变量记忆)
先要做的是对方的gametime记忆感知:
[statedef 1];探查用helper处理
[state ];调查开始,gametime变量保存
type=null
triggerall=var(4):=var(4)*(var(4)=[0,59])||1
triggerall=!var(0)
trigger1=var(0):=gametime
trigger1=var(1):=enemy(0),var(var(4))
ignorehitpause=1
[state ];调查2F内变量保存
type=varset
triggerall=var(0)
trigger1=gametime=var(0)+1
var(2)=enemy(0),var(var(4))
ignorehitpause=1
[state ];1-2F循环调查,保存
type=changestate
triggerall=var(0)
triggerall=gametime=var(0)+1
triggerall=var(1)=var(2)
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
value=stateno
ignorehitpause=1
[state ];3F开始变量保存
type=varset
triggerall=var(0)
trigger1=gametime=var(0)+2
var(3)=enemy(0),var(var(4))
ignorehitpause=1
[state ];1-3F循环调查
type=changestate
triggerall=var(0)
triggerall=gametime=var(0)+2
triggerall=var(1)=var(2)||var(2)=var(3)||var(3)=var(1)
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
value=stateno
ignorehitpause=1
[state ];取得变量处理计算
type=null
triggerall=var(0)
triggerall=gametime=var(0)+2
trigger1=var(5):=floor((var(1)-2*var(2)+var(3))/2 )||1
trigger1=var(6):=var(2)-var(1)-var(5)*(2*var(0)+1)||1
trigger1=var(7):=var(1)-var(5)*var(0)*var(0)-var(6)*var(0)
ignorehitpause=1
ax^2+bx+c=A
a(x+1)^2+b(x+1)+c=B
a(x+2)^2+b(x)c=C
这三个方程联立求解
2a=A-2B+C
a的解出来的话联立方程式就能解出来
a(x+1)+b=B-A解开b的值,而c的值明白
顺便3次函数解开也是可能的
只不过由于溢出的关系那样的gametime保存无法使用
不过在这里也写出来便于大家理解
4个变量保存,2次函数一样联立方程式引导
6a=-A+3B-3C+d 解出a
a(6x+6)+2b=C-2B+A 解出b
a(3x^2+3x+1)+b(2x+1)+c=B-A 解出c
[state ];导出结果调查验证
type=changestate
triggerall=var(0)
triggerall=var(5)||var(6)||var(7)
triggerall=gametime<=var(0)+10
triggerall=enemy(0),var(var(4))!=var(5)*gametime*gametime+var(6)*gametime+var(7)
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
trigger1=var(5):=0||1
trigger1=var(6):=0||1
trigger1=var(7):=0||1
value=stateno
ignorehitpause=1
[state ];计算正确记忆1
type=changestate
triggerall=var(0)
triggerall=var(5)||var(6)||var(7)
triggerall=gametime=var(0)+10
triggerall=!(var(30)||var(31)||var(32)||var(33));该组变量未记忆
trigger1=var(30):=var(4)||1;记忆开始
trigger1=var(31):=var(5)||1
trigger1=var(32):=var(6)||1
trigger1=var(33):=var(7)||1
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
trigger1=var(5):=0||1
trigger1=var(6):=0||1
trigger1=var(7):=0||1
value=stateno
ignorehitpause=1
[state ];计算正确记忆2
type=changestate
triggerall=var(0)
triggerall=var(5)||var(6)||var(7)
triggerall=gametime=var(0)+10
triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成
triggerall=var(4)!=var(30);与记忆1不同
triggerall=!(var(35)||var(36)||var(37)||var(38));该组变量未记忆
trigger1=var(35):=var(4)||1;记忆开始
trigger1=var(36):=var(5)||1
trigger1=var(37):=var(6)||1
trigger1=var(38):=var(7)||1
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
trigger1=var(5):=0||1
trigger1=var(6):=0||1
trigger1=var(7):=0||1
value=stateno
ignorehitpause=1
[state ];计算正确记忆3
type=changestate
triggerall=var(0)
triggerall=var(5)||var(6)||var(7)
triggerall=gametime=var(0)+10
triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成
triggerall=var(35)||var(36)||var(37)||var(38);记忆2完成
triggerall=var(4)!=var(30);与记忆1不同
triggerall=var(4)!=var(35);与记忆2不同
triggerall=!(var(40)||var(41)||var(42)||var(43));该组变量未记忆
trigger1=var(40):=var(4)||1;记忆开始
trigger1=var(41):=var(5)||1
trigger1=var(42):=var(6)||1
trigger1=var(43):=var(7)||1
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
trigger1=var(5):=0||1
trigger1=var(6):=0||1
trigger1=var(7):=0||1
value=stateno
ignorehitpause=1
[state ];计算正确记忆4
type=changestate
triggerall=var(0)
triggerall=var(5)||var(6)||var(7)
triggerall=gametime=var(0)+10
triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成
triggerall=var(35)||var(36)||var(37)||var(38);记忆2完成
triggerall=var(40)||var(41)||var(42)||var(43);记忆3完成
triggerall=var(4)!=var(30);与记忆1不同
triggerall=var(4)!=var(35);与记忆2不同
triggerall=var(4)!=var(40);与记忆3不同
triggerall=!(var(45)||var(46)||var(47)||var(48));该组变量未记忆
trigger1=var(45):=var(4)||1;记忆开始
trigger1=var(46):=var(5)||1
trigger1=var(47):=var(6)||1
trigger1=var(48):=var(7)||1
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
trigger1=var(5):=0||1
trigger1=var(6):=0||1
trigger1=var(7):=0||1
value=stateno
ignorehitpause=1
[state ];计算正确记忆5
type=changestate
triggerall=var(0)
triggerall=var(5)||var(6)||var(7)
triggerall=gametime=var(0)+10
triggerall=var(30)||var(31)||var(32)||var(33);记忆1完成
triggerall=var(35)||var(36)||var(37)||var(38);记忆2完成
triggerall=var(40)||var(41)||var(42)||var(43);记忆3完成
triggerall=var(45)||var(46)||var(47)||var(48);记忆4完成
triggerall=var(4)!=var(30);与记忆1不同
triggerall=var(4)!=var(35);与记忆2不同
triggerall=var(4)!=var(40);与记忆3不同
triggerall=var(4)!=var(45);与记忆4不同
triggerall=!(var(50)||var(51)||var(52)||var(53));该组变量未记忆
trigger1=var(45):=var(4)||1;记忆开始
trigger1=var(46):=var(5)||1
trigger1=var(47):=var(6)||1
trigger1=var(48):=var(7)||1
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
trigger1=var(5):=0||1
trigger1=var(6):=0||1
trigger1=var(7):=0||1
value=stateno
ignorehitpause=1
[state ];调查循环
type=changestate
triggerall=var(0)
triggerall=gametime>var(0)+10
trigger1=var(0):=0||1 ;调查用变量复位
trigger1=var(1):=0||1
trigger1=var(2):=0||1
trigger1=var(3):=0||1
trigger1=var(4):=ifelse(var(4)<59,var(4)+1,0)||1 ;次回调查变量指定
trigger1=var(5):=0||1
trigger1=var(6):=0||1
trigger1=var(7):=0||1
value=stateno
ignorehitpause=1
贯通部分:
[staetdef 2];gametime式贯通
[state ]
type=parentvarset
var(playerid(floor(root,fvar(5))),var(30))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(31) + var(58)*playerid(floor(root,fvar(5))),var(32)+playerid(floor(root,fvar(5))),var(33)
triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在
trigger1=playerid(floor(root,fvar(5))),var(30)
trigger2=playerid(floor(root,fvar(5))),var(31)
trigger3=playerid(floor(root,fvar(5))),var(32)
trigger4=playerid(floor(root,fvar(5))),var(33)
ignorehitpause=1
[state ]
type=parentvarset
var(playerid(floor(root,fvar(5))),var(35))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(36) + var(58)*playerid(floor(root,fvar(5))),var(37)+playerid(floor(root,fvar(5))),var(38)
triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在
trigger1=playerid(floor(root,fvar(5))),var(35)
trigger2=playerid(floor(root,fvar(5))),var(36)
trigger3=playerid(floor(root,fvar(5))),var(37)
trigger4=playerid(floor(root,fvar(5))),var(38)
ignorehitpause=1
[state ]
type=parentvarset
var(playerid(floor(root,fvar(5))),var(40))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(41) + var(58)*playerid(floor(root,fvar(5))),var(42) + playerid(floor(root,fvar(5))),var(43)
triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在
trigger1=playerid(floor(root,fvar(5))),var(40)
trigger2=playerid(floor(root,fvar(5))),var(41)
trigger3=playerid(floor(root,fvar(5))),var(42)
trigger4=playerid(floor(root,fvar(5))),var(43)
ignorehitpause=1
[state ]
type=parentvarset
var(playerid(floor(root,fvar(5))),var(45))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(46) + var(58)*playerid(floor(root,fvar(5))),var(47) + playerid(floor(root,fvar(5))),var(48)
triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在
trigger1=playerid(floor(root,fvar(5))),var(45)
trigger2=playerid(floor(root,fvar(5))),var(46)
trigger3=playerid(floor(root,fvar(5))),var(47)
trigger4=playerid(floor(root,fvar(5))),var(48)
ignorehitpause=1
[state ]
type=parentvarset
var(playerid(floor(root,fvar(5))),var(50))=var(58)*var(58)*playerid(floor(root,fvar(5))),var(51) + var(58)*playerid(floor(root,fvar(5))),var(52) + playerid(floor(root,fvar(5))),var(53)
triggerall=playeridexist(floor(root,fvar(5)));探查用helper存在
trigger1=playerid(floor(root,fvar(5))),var(50)
trigger2=playerid(floor(root,fvar(5))),var(51)
trigger3=playerid(floor(root,fvar(5))),var(52)
trigger4=playerid(floor(root,fvar(5))),var(53)
ignorehitpause=1
理解了上述的办法,浮点小数就可以举一反三了,这里就不一一列举
---------------------------------------------------------------
ayuayu杀手
混线bug派生技,也是mugen的bug之一,利用超大damage,让对方前往不存在的statedef,以及movetype的操作,从而即死对方
似乎是过大的damage让hitoverride处理,不存在的statedef就无法进行处理的样子
例子:
ayuayu杀手:
[statedef 1];攻击状态号
[state ]
type=projectile
trigger1=!ishelper
projId=1
projanim=1
damage=ifelse(random<500,9999999999,-9999999999),ifelse(random<500,9999999999,-9999999999)
.....
ignorehitpause=1
[state ]
type=projectile
trigger1=ishelper&&root,name!="kfm"
trigger1=root,gethitvar(damage)>999999999||root,gethitvar(damage)<-999999999||root,moveType=h
trigger1=root,stateno!=919191919
projId=1
projanim=anim;enemy,var(x);调查的anim号
.....
p1stateno=919191919;不存在的statedef
ignorehitpause=1
---------------------------------------------------------------
ukfm杀手
ukfm本身的判定全部为攻击框(clsn1),但是ukfm有某个helper和有clsn2的anim同步
夺走这个helper后可以让ukfm进入受击框(clsn2)的判定,从而即死ukfm
例子:
ukfm杀手:
[state ]
type=changeanim
trigger1=name="Ultimate Kung Fu Man"
trigger1=ishelper(9999)
value=7777
ignorehitpause=1
把这个对策泛用就行了
---------------------------------------------------------------
欠损杀手
对付欠损少女(E Youmu)的技能,先是通过当身,让对方进入对方自身召唤normal helper的状态
夺取这个normal helper,让其获得有hitby或者hitfalldamage的stateno,从而再通过p1stateno让对方本体进入,即死对方
用这个办法也能即死黑太阳(1stALSIEL),当然状态号要做一些改变
例子:
欠损杀手:
[statedef 1];helper当身
[state ]
type=reversaldef
trigger1=enmeynear,name="E Youmu"
reversal.attr=sca,aa,at,ap;(所有定义的攻击)
pausetime=
numhits=
sparkno=
hitsound=
p2stateno=4017;欠损少女召唤normal helper的状态号
ignorehitpause=1;
[statedef 2];混线处理
[state ]
type=projectile
triggerall=ishelper&&root,name!="kfm"
trigger1=root,name="E youmu"
trigger1=!numprojid(1)
projId=1
projanim=231;欠损少女的攻击anim号
.....
p1stateno=ifelse(root,gethitvar(fall.damage),5110,4026);即死状态号贯通
ignorehitpause=1
---------------------------------------------------------------
全文完