カンフー突き手

Last-modified: 2014-08-23 (土) 22:42:48

カンフーマンの代名詞的な必殺技、しかしノックバック(相手を押し出す力)が弱いため、突進技として使うと
ガードされた場合、相手にめり込んで反撃を貰ってしまう。同じくコンボとして使っても似たような状態に

 

しかしこの難点はヒット時であれば話は変わり、相手に深くめり込むので「三烈カンフー突き手」への
コンボがほぼ確実に成功する。「速いカンフー突き手」という、特殊な効果の得られる技もあるので
やはりカンフーマンの代名詞的な必殺技と言えるだろう。その性質上コンボ用として使っていく

 

<注意点>
「var(1)」は変数、変数元の記述と条件が一致したら使用される。キャラクター作者の方が
記述内容を減らすために使っていることが多いが、AI作成の際には各triggerにそれぞれ条件を設定したい
という場合が多いので、変数元の記述に書き戻してしまうことがほとんどである

 

[State -1, 変数の例2];必殺技の発生条件をチェック
type = VarSet
trigger1 = statetype != A
trigger1 = ctrl
trigger2 = (stateno = [200,299]) || (stateno = [400,499])
trigger2 = stateno != 440 ;[Statedef 440](足払いのステート)ではない時
trigger2 = movecontact
var(1) = 1

 

変数元の記述はこうなっている、「var(1)」は全てこれに戻してからAIとして作成していく
<注意点>


 

速いカンフー突き手

編集前

[State -1, 速いカンフー突き手];ゲージ消費
type = ChangeState
value = 1020
triggerall = command = "QCF_xy"
triggerall = power >= 330
trigger1 = var(1)

 
編集中

[State -1, 速いカンフー突き手];ゲージ消費
type = ChangeState
value = 1020
triggerall = command = "QCF_xy"
triggerall = power >= 330
trigger1 = statetype != A
trigger1 = ctrl
trigger2 = (stateno = [200,299]) || (stateno = [400,499])
trigger2 = stateno != 440 ;[Statedef 440](足払いのステート)ではない時
trigger2 = movecontact

 
編集後

;動きは素早く距離は150まで届き、ヒットすれば相手を壁バウンドふっ飛びさせる
;跳ね返ってきた相手のステートナンバーは「stateno = [1025,1028]」になっている
[State -1, 速いカンフー突き手];ゲージ消費
type = ChangeState
value = 1020
triggerall = power >= 330
triggerall = roundstate = 2
triggerall = p2statetype != L
triggerall = p2bodydist X = [-10,150]
triggerall = p2statetype != A
trigger1 = statetype != A
trigger1 = ctrl
trigger1 = 0
trigger2 = (stateno = [200,299]) || (stateno = [400,499])
trigger2 = stateno != 440 ;[Statedef 440](足払いのステート)ではない時
trigger2 = movehit
trigger2 = random <= 500


相手が空中にいる時のコンボは「強いカンフーアッパー」「強いカンフーニー」に担当させるので
「triggerall = p2statetype != A」と地上用として記述する。trigger1は基本トリガーと呼ばれており
無いとエラーが出るので消す訳にはいかない、なので「trigger1 = 0」を入れておく、こう記述しておくと
そのtriggerは使わないという意味になる。要するにガードされると不利になるので、突進技として
単発で出すようなことはしないという意味、よって主にコンボパーツとして使っていく

 

また壁バウンド中の相手のステートナンバーは「stateno = [1025,1028]」となっている
詳しくはkfm.cns内の、「速いカンフー突き手」の記述を読んでいけば分かるのだが

 

;速いカンフー突き手:相手側1(ヒット硬直)
[Statedef 1025]
type = A
movetype= H
physics = N
velset = 0,0
;(長いので以下略)

 

;速いカンフー突き手:相手側4(壁からのバウンド)
[Statedef 1028]
type = A
movetype= H
physics = N
;(長いので以下略)

 

「速いカンフー突き手」をヒットさせた相手に「壁バウンド」という特殊な動きをさせるため、1025~1028番が
専用のステートとなっている(ゲーム毎の特殊なバウンドを再現するときも同様の記述を使うことが多い)
これが重要なのは、該当のステートナンバーの「statedef」の記述の中に、この一文があるから

 

[State 1028, 相手の特定の攻撃属性無効];(※6)
type = NotHitBy
trigger1 = 1
value = , NA, NP

 

要するに壁バウンド中は、通常攻撃では追撃できない、必殺技でなければいけないということ
なので一部の通常攻撃を記述するときに、「壁バウンド中には何もしない」記述を入れる必要がある

 

弱カンフー突き手

編集前

[State -1, 弱カンフー突き手]
type = ChangeState
value = 1000
triggerall = command = "QCF_x"
trigger1 = var(1)

 
編集後

;その場で突き手を繰り出す、射的距離はあまり長くない
;[State -1, 弱カンフー突き手]
;type = ChangeState
;value = 1000
;triggerall = command = "QCF_x"
;trigger1 = var(1)


コンボパーツとして使っていくにも、踏み込まないので少々使いづらい
という事でコメントアウトして、使わないということにしておく

 

強カンフー突き手

編集前

[State -1, 強カンフー突き手]
type = ChangeState
value = 1010
triggerall = command = "QCF_y"
trigger1 = var(1)

 
編集中

[State -1, 強カンフー突き手]
type = ChangeState
value = 1010
triggerall = command = "QCF_y"
trigger1 = statetype != A
trigger1 = ctrl
trigger2 = (stateno = [200,299]) || (stateno = [400,499])
trigger2 = stateno != 440 ;[Statedef 440](足払いのステート)ではない時
trigger2 = movecontact

 
編集後

;距離は100まで届くが、射程範囲ギリギリだとヒットしてもダウンしない
;もしダウンさせたいなら、距離74程度まで近づいて出す必要がある
[State -1, 強カンフー突き手]
type = ChangeState
value = 1010
triggerall = roundstate = 2
triggerall = p2statetype != L
triggerall = p2bodydist X = [-10,74]
triggerall = p2statetype != A
trigger1 = statetype != A
trigger1 = ctrl
trigger1 = 0
trigger2 = (stateno = [200,299]) || (stateno = [400,499])
trigger2 = stateno != 440 ;[Statedef 440](足払いのステート)ではない時
trigger2 = movehit
trigger2 = power >= 1000 && random <= power / 2


「三烈カンフー突き手」へ繋ぐことが目的だが、相手がダウン吹っ飛び中だと繋ぎやすくなる
ということでダウンさせられる距離で使う。それ以外は基本的に「速いカンフー突き手」と同じ記述だが
ゲージが1本以上溜まっており、「三烈カンフー突き手」に繋げられるならこちらを使う感じ

 

ちなみに乱数要素で少し面白いことをしている、trigger2の「random <= power / 2」とは
「乱数の値がパワーの現在値の半分以下なら使う」ということ、1000ならその半分の500なので筆者がよく使う
乱数の値だが、2000=ゲージが2本溜まっていたら、その半分は1000=確実に実行するということ
パワーゲージの現在値を乱数と組み合わせることで、パワーゲージの溜まり具合に合わせて
行動を変える記述が可能、というごく簡単な一例を示してみている