読者です 読者をやめる 読者になる 読者になる

chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

勝手に相手のAIが起動するバグについて

ウチのキャラ全般でおきている模様なので、現象をまとめてみます。
次のようにすると再現すると思います。

  1. ウチのキャラでステートを奪う
    • ルナのチャームバレットが空中復帰できるのでやりやすいかと
  2. 復帰できるポイントまたは落下と同時にコマンドを何か入力
    • 技術的にはSelfStateが発生するところ
  3. 入力されたコマンドがAI起動用コマンドとして認識され、相手のAI起動処理が暴発*1
  4. 相手のAI起動

という流れです。正直なところ、直し方がわかりません。KFMで再現できないのも、よくわからなくなっている原因です。
ちなみにウチでこれの発生を確認したキャラは、

  • 葉桜氏 K'
  • 悪咲3号氏 Gルガール、豪鬼

になります。いずれもコマンド式AI起動処理を持っているようで、ヘルパー式のみだと暴発しない模様。
にしても不可思議なのは、AI起動用コマンドってたいていの場合、

[Command]
Name = "AI7"
Command = F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F
Time = 0
[Command]
Name = "AI8"
Command = D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D
Time = 0
[Command]
Name = "AI9"
Command = B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B
Time = 0
[Command]
Name = "AI10"
Command = U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U
Time = 0

という定義なので、SelfStateの瞬間に方向キーだけでAI処理が暴発するということは0ないし1Fで19回同じ方向が入っていることになるのですが。

例:葉桜氏 K'での対処法

一応相手のキャラ側で対策が出来る場合もあるのでその例を。ただこれをやると間違って人操作として認識されたら永遠にAIにならない問題が発生しますが。

;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
; AI
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[State -3,AIスイッチ -> ON]
Type = VarSet
;TriggerAll = var(59)<=0              ; ココを
TriggerAll = !var(59)                 ; こうする。
TriggerAll = var(58)>0
TriggerAll = RoundState!=3
TriggerAll=!IsHelper||IsHelper(10000+ID)
Trigger1 = Command="AI0" ||Command="AI1" ||Command="AI2" ||Command="AI3" ||Command="AI4"
Trigger2 = Command="AI5" ||Command="AI6" ||Command="AI7" ||Command="AI8" ||Command="AI9"
Trigger3 = Command="AI10"||Command="AI11"||Command="AI12"||Command="AI13"||Command="AI14"
Trigger4 = Command="AI15"||Command="AI16"||Command="AI17"||Command="AI18"||Command="AI19"
〜以下略〜

上の一行だけの変更で暴発は防げます。つまり人操作になったら絶対にAIを起動しない状態にするだけです*2

あれ直った?

えー、ウチのキャラのですね、<キャラ名>.cmdを開いてですね、command.buffer.timeを1にしたら直ったんですが。

[Defaults]
command.time        = 15            ; デフォルトコマンド入力時間 (F)
;command.buffer.time = 4             ; 先行入力時間 (F)
command.buffer.time = 1             ; 先行入力時間 (F)

*1:相手のAIフラグに入る値を変更したらちゃんと反映されたので、相手のAI処理が暴発と判断。ウチのキャラは相手の変数弄ってないですし

*2:葉桜氏K'はvar(59) = -1で人操作、1でAI。var(58)がAIレベルなのでこうなる