2016.12.2202:59

AI 立回技巧相关(Part.2)

Episode 11 立回技巧相关(Part.2)

最近沉迷屁股所以没时间更新了_(:3」∠)_

接着上一篇来讲,上一篇我们谈到了立回中如何对应大部分地波的记忆办法,记忆解决办法就是记录下地波的状态号和帧数和距离来确定大跳抓硬直,这次我们看看如何对应投技和当身问题(因为不想分第三块来讲就干脆搁到一起来说了)

方法和之前的办法是一样的,大家要做的事情就是实验和思考如何去正确的使用,当然如果是单人战的话没有必要考虑那么多,如果是双人对打那么就要考虑一下了,有时候你跳一下就可能成为一个很大的破绽,这样会给你的队伍带来很大的不利

先说投技,我们先要做的事就是把投技给记录下来,当然一般只记录平地投,对于投技一般有个特点就是无法抓空中对象(对正常向来说,如果是魔改(对某些人来说)请自重!),那么解决办法就是起跳然后JABCD或者空中特殊技等技能来抓破绽硬直(如果投技全程无敌也请自重)

;----------------------------------------------------------------------
[State 33000, Null]
Type = Null
TriggerAll = Time = 0
Trigger1 = var(20) := -1
Trigger1 = var(21) := -1
Trigger1 = var(22) := -1
Trigger1 = var(23) := -1
Trigger1 = var(24) := -1
Trigger1 = var(25) := -1
Trigger1 = var(26) := -1
Trigger1 = var(27) := -1
Trigger1 = var(28) := -1
Trigger1 = var(29) := -1
IgnoreHitPause = 1

;----------------------------------------------------------------------
;敵に投げステート記憶
;----------------------------------------------------------------------
[State 33000, VarSet]
Type = VarSet
Trigger1 = EnemyNear(Root,var(58)),Ctrl = 0 ;敌方不可控记录
Trigger1 = EnemyNear(Root,var(58)),MoveType = A ;显示判定为攻击
Trigger1 = EnemyNear(Root,var(58)),HitDefAttr = SC,NT,ST,HT ;所有投技
Trigger1 = Helper(33000+Root,ID),var(20) = -1
var(20) = EnemyNear(Root,var(58)),StateNo ;记下状态号
IgnoreHitPause = 1

......(方法和以前一样我就不再重复了)

[State 33000, VarSet]
Type = VarSet
Trigger1 = EnemyNear(Root,var(58)),Ctrl = 0
Trigger1 = EnemyNear(Root,var(58)),MoveType = A
Trigger1 = EnemyNear(Root,var(58)),HitDefAttr = SC,NT,ST,HT
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(20)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(21)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(22)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(23)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(24)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(25)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(26)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(27)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(28)
Trigger1 = Helper(33000+Root,ID),var(20) != -1
Trigger1 = Helper(33000+Root,ID),var(21) != -1
Trigger1 = Helper(33000+Root,ID),var(22) != -1
Trigger1 = Helper(33000+Root,ID),var(23) != -1
Trigger1 = Helper(33000+Root,ID),var(24) != -1
Trigger1 = Helper(33000+Root,ID),var(25) != -1
Trigger1 = Helper(33000+Root,ID),var(26) != -1
Trigger1 = Helper(33000+Root,ID),var(27) != -1
Trigger1 = Helper(33000+Root,ID),var(28) != -1
Trigger1 = Helper(33000+Root,ID),var(29) = -1
var(29) = EnemyNear(Root,var(58)),StateNo
IgnoreHitPause = 1

像这样,该helper内的var(20)~var(29)就负责记录10个投技状态,接下来要做的就是AI部分,考虑对策优先,对策部分先写上方,然后下面记录一般对策,所有关于投技对策的AI部分全部写在AI较为上面的部分,也就是优先的意思,在那之前,先算好你小跳的时间,比如小跳是18,中影跳是25,那么小跳的时间是小于中影跳的

;-----------------------------------------------------------------------
; 相手の特殊ステート(投げ)記憶
;-----------------------------------------------------------------------
[State -3, VarSet]
Type = VarSet
Trigger1 = fvar(8) != 0
FV = 8
Value = 0
IgnoreHitPause = 1

[State -3, 相手の特殊ステート]
Type = Null
TriggerAll = var(59) = 1
TriggerAll = NumHelper(33000+ID)
TriggerAll = EnemyNear(var(58)),MoveType = A
Trigger1 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(20)
Trigger1 = fvar(8) := fvar(8) + 1 || 1
Trigger2 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(21)
Trigger2 = fvar(8) := fvar(8) + 1 || 1
Trigger3 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(22)
Trigger3 = fvar(8) := fvar(8) + 1 || 1
Trigger4 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(23)
Trigger4 = fvar(8) := fvar(8) + 1 || 1
Trigger5 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(24)
Trigger5 = fvar(8) := fvar(8) + 1 || 1
Trigger6 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(25)
Trigger6 = fvar(8) := fvar(8) + 1 || 1
Trigger7 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(26)
Trigger7 = fvar(8) := fvar(8) + 1 || 1
Trigger8 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(27)
Trigger8 = fvar(8) := fvar(8) + 1 || 1
Trigger9 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(28)
Trigger9 = fvar(8) := fvar(8) + 1 || 1
Trigger10 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(29)
Trigger10 = fvar(8) := fvar(8) + 1 || 1
IgnoreHitPause = 1

像这样先记录下到一个var内,然后这个var不为0的时候代表对面是被记录下来的投技

[State -3, 小、中ジャンプ隙突き(対投げ用)]
Type = ChangeState
Value = ifelse(Abs(EnemyNear(var(58)),Pos X - Pos X) > D,(前中影跳state),ifelse(Abs(EnemyNear(var(58)),Pos X - Pos X) > C,(前小跳state),(上小跳state))) ; C < D,当然这个只是举例子,如果你喜欢用中影跳的话也没关系
TriggerAll = var(59) = 1
TriggerAll = RoundState = 2
TriggerAll = StateType != A
TriggerAll =!EnemyNear(var(58)),Ctrl
TriggerAll = EnemyNear(var(58)),StateType != A
TriggerAll = EnemyNear(var(58)),StateType != L
TriggerAll = EnemyNear(var(58)),MoveType = A
TriggerAll = EnemyNear(var(58)),StateNo >= 200
TriggerAll = EnemyNear(var(58)),AnimTime < -18
TriggerAll = EnemyNear(var(58)),HitDefAttr = SCA, NT, ST, HT || (fvar(8) != 0) ;代表记录下来的投技和检测到的投技(双保险)
TriggerAll = EnemyNear(var(58)),Time >= 50-var(59)*5 || var(59) > 9
TriggerAll = EnemyNear(var(58)),Facing != Facing || EnemyNear(var(58)),Facing = Facing && var(51) = 5 ;有关var(51)我在前面的双打部分提到过,var(51) = 5代表背后有敌人,也就是说是被夹击的状态,保持这种状态去攻击被对你的敌人可以救你的队友
TriggerAll = Ctrl || (StateNo = [20,22]) || (StateNo = [100,101]) || (StateNo = [120,149])
Trigger1 = Abs(EnemyNear(var(58)),Pos X - Pos X) = [A,B]

[State -3, バックステップ 投げ外し]
Type = ChangeState
Value = 105 ;代表44的意思,有些角色44下可以进行出招
TriggerAll = var(59) = 1
TriggerAll = RoundState = 2
TriggerAll = StateType != A
TriggerAll = BackEdgeBodyDist >= 30 ;只要不在墙角就行,如果你想跳离墙角的话就用大跳或者其他无敌闪避技能
TriggerAll =!EnemyNear(var(58)),Ctrl
TriggerAll = EnemyNear(var(58)),Vel Y >= 0 ;代表对手在平地的意思(大概不会有钻地龙吧)
TriggerAll = EnemyNear(var(58)),HitDefAttr = SCA, NT, ST, HT || (fvar(8) != 0)
TriggerAll = EnemyNear(var(58)),Time >= 50-var(59)*5 || var(59) > 9
TriggerAll = EnemyNear(var(58)),Facing != Facing || EnemyNear(var(58)),Facing = Facing && var(51) = 5
TriggerAll = Ctrl || (StateNo = [20,22]) || (StateNo = [100,101]) || (StateNo = [120,149])
Trigger1 = Abs(EnemyNear(var(58)),Pos X - Pos X) = [A,B]

44部分写在跳的下面也就是说,如果不满足跳跃成立的条件就赶紧44,甚至可以在墙角的时候进行大跳等判断迅速逃离墙角,以上投技的部分就先解释到这里,我们接下来看看当身,之前也有提到过当身的对应记录办法,这里也再提一下

;----------------------------------------------------------------------
;自分被ステート奪取記憶
;----------------------------------------------------------------------
[State 33000, VarSet]
Type = VarSet
TriggerAll = EnemyNear(Root,var(58)),Ctrl = 0
TriggerAll = EnemyNear(Root,var(58)),MoveType = A
TriggerAll = EnemyNear(Root,var(58)),StateNo >= 200
TriggerAll = EnemyNear(Root,var(58)),StateType != A
TriggerAll =(Root,StateNo != [120,159]) && (Root,StateNo != [5000,5500])
TriggerAll = Root,Movetype = H && Root,Time = 1
Trigger1 = Helper(33000+Root,ID),fvar(10) = 0
FV = 10
Value = EnemyNear(Root,var(58)),PrevStateNo
IgnoreHitPause = 1

.......

[State 33000, VarSet]
Type = VarSet
TriggerAll = EnemyNear(Root,var(58)),Ctrl = 0
TriggerAll = EnemyNear(Root,var(58)),MoveType = A
TriggerAll = EnemyNear(Root,var(58)),StateNo >= 200
TriggerAll = EnemyNear(Root,var(58)),StateType != A
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(10)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(11)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(12)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(13)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(14)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(15)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(16)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(17)
TriggerAll = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),fvar(18)
TriggerAll =(Root,StateNo != [120,159]) && (Root,StateNo != [5000,5500])
TriggerAll = Root,Movetype = H && Root,Time = 1
Trigger1 = Helper(33000+Root,ID),fvar(10)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(11)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(12)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(13)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(14)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(15)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(16)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(17)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(18)!= 0
Trigger1 = Helper(33000+Root,ID),fvar(19) = 0
FV = 19
Value = EnemyNear(Root,var(58)),PrevStateNo
IgnoreHitPause = 1

;-----------------------------------------------------------------------
; 自分被ステート奪取記憶
;-----------------------------------------------------------------------
[State -3, VarSet]
Type = VarSet
Trigger1 = fvar(5) != 0
FV = 5
Value = 0
IgnoreHitPause = 1

[State -3, 自分被ステート奪取]
Type = Null
TriggerAll = var(59) = 1
TriggerAll = NumHelper(33000+ID)
TriggerAll = EnemyNear(var(58)),Ctrl = 0
TriggerAll = EnemyNear(var(58)),MoveType = A
TriggerAll = EnemyNear(var(58)),StateNo >= 200
TriggerAll = EnemyNear(var(58)),StateType != A
Trigger1 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(10)
Trigger1 = fvar(5) := fvar(5) + 2 || 1
Trigger2 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(11)
Trigger2 = fvar(5) := fvar(5) + 2 || 1
Trigger3 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(12)
Trigger3 = fvar(5) := fvar(5) + 2 || 1
Trigger4 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(13)
Trigger4 = fvar(5) := fvar(5) + 2 || 1
Trigger5 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(14)
Trigger5 = fvar(5) := fvar(5) + 2 || 1
Trigger6 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(15)
Trigger6 = fvar(5) := fvar(5) + 2 || 1
Trigger7 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(16)
Trigger7 = fvar(5) := fvar(5) + 2 || 1
Trigger8 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(17)
Trigger8 = fvar(5) := fvar(5) + 2 || 1
Trigger9 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(18)
Trigger9 = fvar(5) := fvar(5) + 2 || 1
Trigger10 = EnemyNear(var(58)),StateNo = Helper(33000+ID),fvar(19)
Trigger10 = fvar(5) := fvar(5) + 2 || 1
IgnoreHitPause = 1

;----------------------------------------------------------------------
[State 33000, Null]
Type = Null
TriggerAll = Time = 0
Trigger1 = var(0) := -1
Trigger1 = var(1) := -1
.......
Trigger1 = var(19) := -1
IgnoreHitPause = 1

;----------------------------------------------------------------------
;敵に当身ステート記憶 Part 1
;----------------------------------------------------------------------
[State 33000, VarSet]
Type = VarSet
Trigger1 = Root,MoveReversed
Trigger1 = EnemyNear(Root,var(58)),Ctrl = 0
Trigger1 = EnemyNear(Root,var(58)),MoveType = A
Trigger1 = Helper(33000+Root,ID),var(0) = -1
var(0) = EnemyNear(Root,var(58)),StateNo
IgnoreHitPause = 1

.......

[State 33000, VarSet]
Type = VarSet
Trigger1 = Root,MoveReversed
Trigger1 = EnemyNear(Root,var(58)),Ctrl = 0
Trigger1 = EnemyNear(Root,var(58)),MoveType = A
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(0)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(1)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(2)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(3)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(4)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(5)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(6)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(7)
Trigger1 = EnemyNear(Root,var(58)),StateNo != Helper(33000+Root,ID),var(8)
Trigger1 = Helper(33000+Root,ID),var(0) != -1
Trigger1 = Helper(33000+Root,ID),var(1) != -1
Trigger1 = Helper(33000+Root,ID),var(2) != -1
Trigger1 = Helper(33000+Root,ID),var(3) != -1
Trigger1 = Helper(33000+Root,ID),var(4) != -1
Trigger1 = Helper(33000+Root,ID),var(5) != -1
Trigger1 = Helper(33000+Root,ID),var(6) != -1
Trigger1 = Helper(33000+Root,ID),var(7) != -1
Trigger1 = Helper(33000+Root,ID),var(8) != -1
Trigger1 = Helper(33000+Root,ID),var(9) = -1
var(9) = EnemyNear(Root,var(58)),StateNo
IgnoreHitPause = 1

;----------------------------------------------------------------------
;敵に当身ステート記憶 Part 2
;----------------------------------------------------------------------
[State 33000, VarSet]
Type = VarSet
Trigger1 = Root,fvar(5) = 2
Trigger1 = Root,MoveReversed
Trigger1 = EnemyNear(Root,var(58)),Ctrl = 0
Trigger1 = EnemyNear(Root,var(58)),MoveType = A
Trigger1 = Helper(33000+Root,ID),var(10) = -1
var(10) = EnemyNear(Root,var(58)),PrevStateNo
IgnoreHitPause = 1

.......

[State 33000, VarSet]
Type = VarSet
Trigger1 = Root,fvar(5) = 2
Trigger1 = Root,MoveReversed
Trigger1 = EnemyNear(Root,var(58)),Ctrl = 0
Trigger1 = EnemyNear(Root,var(58)),MoveType = A
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(10)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(11)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(12)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(13)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(14)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(15)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(16)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(17)
Trigger1 = EnemyNear(Root,var(58)),PrevStateNo != Helper(33000+Root,ID),var(18)
Trigger1 = Helper(33000+Root,ID),var(10) != -1
Trigger1 = Helper(33000+Root,ID),var(11) != -1
Trigger1 = Helper(33000+Root,ID),var(12) != -1
Trigger1 = Helper(33000+Root,ID),var(13) != -1
Trigger1 = Helper(33000+Root,ID),var(14) != -1
Trigger1 = Helper(33000+Root,ID),var(15) != -1
Trigger1 = Helper(33000+Root,ID),var(16) != -1
Trigger1 = Helper(33000+Root,ID),var(17) != -1
Trigger1 = Helper(33000+Root,ID),var(18) != -1
Trigger1 = Helper(33000+Root,ID),var(19) = -1
var(19) = EnemyNear(Root,var(58)),PrevStateNo
IgnoreHitPause = 1

;-----------------------------------------------------------------------
; 相手の特殊ステート(当身)記憶
;-----------------------------------------------------------------------
[State -3, VarSet]
Type = VarSet
Trigger1 = fvar(2) != 0
FV = 2
Value = 0
IgnoreHitPause = 1

[State -3, 相手の特殊ステート]
Type = Null
TriggerAll = var(59) = 1
TriggerAll = NumHelper(33000+ID)
TriggerAll = EnemyNear(var(58)),MoveType = A
Trigger1 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(0)
Trigger1 = fvar(2) := fvar(2) + 1 || 1
Trigger2 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(1)
Trigger2 = fvar(2) := fvar(2) + 1 || 1
Trigger3 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(2)
Trigger3 = fvar(2) := fvar(2) + 1 || 1
Trigger4 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(3)
Trigger4 = fvar(2) := fvar(2) + 1 || 1
Trigger5 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(4)
Trigger5 = fvar(2) := fvar(2) + 1 || 1
Trigger6 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(5)
Trigger6 = fvar(2) := fvar(2) + 1 || 1
Trigger7 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(6)
Trigger7 = fvar(2) := fvar(2) + 1 || 1
Trigger8 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(7)
Trigger8 = fvar(2) := fvar(2) + 1 || 1
Trigger9 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(8)
Trigger9 = fvar(2) := fvar(2) + 1 || 1
Trigger10 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(9)
Trigger10 = fvar(2) := fvar(2) + 1 || 1
Trigger11 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(10)
Trigger11 = fvar(2) := fvar(2) + 2 || 1
Trigger12 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(11)
Trigger12 = fvar(2) := fvar(2) + 2 || 1
Trigger13 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(12)
Trigger13 = fvar(2) := fvar(2) + 2 || 1
Trigger14 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(13)
Trigger14 = fvar(2) := fvar(2) + 2 || 1
Trigger15 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(14)
Trigger15 = fvar(2) := fvar(2) + 2 || 1
Trigger16 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(15)
Trigger16 = fvar(2) := fvar(2) + 2 || 1
Trigger17 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(16)
Trigger17 = fvar(2) := fvar(2) + 2 || 1
Trigger18 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(17)
Trigger18 = fvar(2) := fvar(2) + 2 || 1
Trigger19 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(18)
Trigger19 = fvar(2) := fvar(2) + 2 || 1
Trigger20 = EnemyNear(var(58)),StateNo = Helper(33000+ID),var(19)
Trigger20 = fvar(2) := fvar(2) + 2 || 1
IgnoreHitPause = 1

同样这里也不多解释,看不明白的看前面的当身对应篇有说明,这里只是回顾部分,接下来就要想想如何用跳和44来逃避当身了,先举个跳跃的例子

[State -3, ハイジャンプ 逃げる]
Type = ChangeState
Value = (大跳state)
TriggerAll = var(59) = 1
TriggerAll = RoundState = 2
TriggerAll = StateType != A
TriggerAll = BackEdgeBodyDist < 30 ;前提条件是在墙角内想逃离墙角
TriggerAll =!EnemyNear(var(58)),Ctrl
TriggerAll = EnemyNear(var(58)),StateType != A
TriggerAll = EnemyNear(var(58)),StateType != L
TriggerAll = EnemyNear(var(58)),MoveType != H
TriggerAll = EnemyNear(var(58)),StateNo >= 200
TriggerAll = EnemyNear(var(58)),Facing != Facing && P2Dist X > 0 || fvar(5) = 2
TriggerAll = EnemyNear(var(58)),Time >= 50-var(59)*5 || var(59) > 9
TriggerAll =!Enemy,NumProj && fvar(9) = 0 && (!InGuardDist || fvar(5) = 2) ;fvar(9) = 0是前篇讲的有关地波记录state的变量
TriggerAll = Ctrl || (StateNo = [20,22]) || (StateNo = [100,101]) || (StateNo = [120,149])
Trigger1 = EnemyNear(var(58)),AnimTime < -38 || Abs(EnemyNear(var(58)),Pos X - Pos X) < A && EnemyNear(var(58)),AnimTime < -18 ;大概一个小跳的时间并且距离更近的时候就按小跳时间计算,距离太远则要防止对面的对空技能
Trigger1 = (fvar(2) != 0 && fvar(5) = 2 || fvar(2) = 2) && Abs(EnemyNear(var(58)),Pos X - Pos X) < B ;B > A

[State -3, バックステップ/中後ジャンプ 逃げる]
Type = ChangeState
Value = ifelse(P2BodyDist X > 60,(后影中跳state),105)
TriggerAll = var(59) = 1
TriggerAll = RoundState = 2
TriggerAll = StateType != A
TriggerAll = BackEdgeBodyDist >= 30 ;这里条件和上面相反,不在墙角内
TriggerAll =!EnemyNear(var(58)),Ctrl
TriggerAll = EnemyNear(var(58)),StateType != A || EnemyNear(var(58)),StateType = A && EnemyNear(var(58)),Vel X >= 0 ;这里把空中当身也算进去了
TriggerAll = EnemyNear(var(58)),StateType != L
TriggerAll = EnemyNear(var(58)),MoveType != H
TriggerAll = EnemyNear(var(58)),StateNo >= 200
TriggerAll = EnemyNear(var(58)),Facing != Facing && P2Dist X > 0 || fvar(5) = 2
TriggerAll = EnemyNear(var(58)),Time >= 50-var(59)*5 || var(59) > 9
TriggerAll =!Enemy,NumProj && fvar(9) = 0 && (!InGuardDist || fvar(5) = 2)
TriggerAll = Ctrl || (StateNo = [20,22]) || (StateNo = [100,101]) || (StateNo = [120,149])
Trigger1 = EnemyNear(var(58)),AnimTime < -10 || EnemyNear(var(58)),StateType = A && EnemyNear(var(58)),Vel X >= 0 ;(只需要极短的时间来确认或者对面是空中当身的情况)
Trigger1 = (fvar(2) != 0 && fvar(5) = 2 || fvar(2) = 2) && Abs(EnemyNear(var(58)),Pos X - Pos X) < C

以上是举例说明内容,更多的应对还需要各位自己去实践运用

好了,今天的课就先到这,如果您有什么问题的话可以私信我,我会第一时间给您答复,或者把问题发到我的邮箱

mizore@kotori.moe, 谢谢大家!

アクセス

オンライン