chikuchikugonzalezの雑記帳

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

RC6のCondトリガー

1.0 RC6でCondトリガーが追加されたらしい。このトリガーはIfElseと同じく

Cond(条件, 条件が真の時の値 ※1, 条件が偽の時の値 ※2)

という形式で使うらしい。

更新履歴には

CNS: New Trigger: Cond. This is a short-circuiting version of ifelse.

M.U.G.E.N Update History

とあった。
とゆーことは、IfElseトリガーは常に※1と※2を評価していたことになる。
なのでちょっと試してみた。

mugen 1.0 RC6で、kfm720に少々コードを追加してIfElseとCondトリガーの値を見てみた。

追加した記述
[Statedef -2]

[State -2:          Reset]
type     = VarRangeSet
trigger1 = 1
first    = 40
last     = 45
value    = 0

[State -2:          Test]
type     = VarSet
trigger1 = 1
v        = 40
value    = ifelse((MoveType = A), var(41) := 1, var(42) := 10)

[State -2:          Test]
type     = VarSet
trigger1 = 1
v        = 43
value    = Cond((MoveType = A), var(44) := 1, var(45) := 10)

[State -2:          Debug]
type     = DisplayToClipboard
trigger1 = 1
text     = "IFELSE : v40=%d v41=%d v42=%d"
params   = var(40), var(41), var(42)

[State -2:          Debug]
type     = AppendToClipboard
trigger1 = 1
text     = "\nCOND   : v43=%d v44=%d v45=%d"
params   = var(43), var(44), var(45)

var(40)とvar(43)にそれぞれ、攻撃中は10、それ以外は1を代入するコードである。
var(40)がifelse、var(43)がcondであるが、とりあえず見るのはvar(41), var(42), var(44), var(45)である。

結果


見事にifelseは※1と※2を評価してますね。とゆーことはたとえば

[State -2]
type     = VarSet
trigger1 = 1
v        = 45
value    = ifelse((MoveType = A), var(41) := 1, var(41) := 10)

みたいなのを書くと、var(41)は常に10ということか。