cond属性について質問があります。
condは必ず先に評価されるわけではないのでしょうか?

下記のようなマクロを呼び出した時、4行目「sabun2」の行でエラーになってしまいます。

呼び出し元
[charaLoad chara="主人公" sabun1="笑い"] ←「sabun2」は指定していない

呼び出されるマクロ
[macro name="charaLoad"]
[eval exp="f.chara = charaList[mp.chara];"] ←キャラ画像、座標などを格納した配列から該当キャラ情報を取り出している
[image * storage="&f.chara['base'].img" visible=true]
[pimage * storage="&f.chara[mp.sabun1].img" dx="&f.chara[mp.sabun1].x1" dy="&f.chara[mp.sabun1].y1" cond="mp.sabun1!=void"]
[pimage * storage="&f.chara[mp.sabun2].img" dx="&f.chara[mp.sabun2].x1" dy="&f.chara[mp.sabun2].y1" cond="mp.sabun2!=void"]
[endmacro]

ちなみに下記のようにしたら問題なく動作しました。
[if exp="mp.sabun2!=void"]
[pimage * storage="&f.chara[mp.sabun2].img" dx="&f.chara[mp.sabun2].x1" dy="&f.chara[mp.sabun2].y1" cond="mp.sabun2!=void"]
[endif]