また、一時演算用変数の表記として下のような独特な表現をしている。
X[nn]
■比較演算子へ
x=i;
【構文例】 0B 20 00 00 この例では、演算用一時アドレス B[20] に 00 を代入する。
0B 20 00 00
【補足】 +0x40 +0x80 した演算子はそれぞれ 2BYTE用・4BYTE用になる。
x+=i;
【構文例】 0B 20 00 02 0B 00 01 08 この例では、02 で初期化した演算用一時アドレス B[20] に 08 を加算する。 結果は 0B == 0x0A
0B 20 00 02 0B 00 01 08
x-=i;
【構文例】 05 4C 42 01 この例では使用者の現在HPを1減らす。
05 4C 42 01
x|=i;
【構文例】 05 42 03 40 この例では 使用者を“レビテート”状態にしている。
05 42 03 40
x&=i;
【構文例】 05 41 04 FE この例では 使用者の“石化”状態(01)を解除(& ~0x01)している。
05 41 04 FE
x^=i;
【構文例】 06 17 05 01 この例では 対象の“アンデッド”特性を交互にON/OFFしている。
06 17 05 01
x*=i;
【構文例】 03 54 86 03 この例では使用者のY(縦移動=ジャンプ)速度を3倍にしている。
03 54 86 03
x/=i;
【構文例】 06 32 47 05 この例では対象の物理防御力(DF)を 1/5 にしている。
06 32 47 05
【補足】 +0x40 +0x80 した演算子はそれぞれ 2BYTE用・4BYTE用になる。 0で割らないよう注意。
x%=i;
【構文例】 0B 20 08 20 この例では 一時計算用領域 B[20] にある値を 0〜31 までの範囲に納めている。
0B 20 08 20
x<<=i;
【構文例】 05 38 49 01 この例では 使用者の魔法攻撃力(MAT)を2倍している。
05 38 49 01
x>>=i;
【構文例】 06 30 4A 02 この例では 使用者の物理攻撃力(AT)を 1/4 にしている。
06 30 4A 02
x=rand()%i;
【構文例】 0B 20 4B FF 05 32 59 20 この例では 0〜255 までの値をランダムで防御力に加算している。
0B 20 4B FF 05 32 59 20
x=m;
【構文例】 03 33 0C 20 この例では使用者の“向き”を 一時計算用アドレス B[20] にコピーしている。
03 33 0C 20
x+=m;
【構文例】 05 26 4C 20 05 2C 4D 20 この例では使用者の速さ(Agl)と運(Lck)の合計を一時計算用アドレス W[20] セットしている。
05 26 4C 20 05 2C 4D 20
x-=m;
【構文例】 03 50 8C 20 04 50 8E 20 この例では使用者と対象のX速度の差を D[20] にセットしている。
03 50 8C 20 04 50 8E 20
x|=m;
【構文例】 06 14 8C 20 05 14 8F 20 この例では使用者と対象の種族ビットを合わせている。 この例では余り意味はないが、例えば『存在している敵の中に1体でもアンデッドがいると発動しない』などの条件を設定可能。
06 14 8C 20 05 14 8F 20
x&=m;
【構文例】 0B 20 00 80 06 17 10 20 この例では対象が『ボス』か調べている。 もし B[20] が 00 であればその対象はボスではない。
0B 20 00 80 06 17 10 20
x^=m;
XOR を こうやって使う意味というのは計りかねるが…。
x*=m;
【構文例】 05 18 0C 20 05 44 52 20 この例では使用者の 火属性値 に LV をかけている。 ここでは触れていないが、サイズの異なる変数を扱う時は転送先の変数(ここでは B[20])を大きい方のサイズで 00 による初期化を行っておくこと。
05 18 0C 20 05 44 52 20
x/=m;
【構文例】 06 30 4C 20 05 44 53 20 この例では対象の物理攻撃力を 使用者の LV で割っている。
06 30 4C 20 05 44 53 20
【補足】 +0x40 +0x80 した演算子はそれぞれ 2BYTE用・4BYTE用になる。 0 で割らないよう注意。
x%=m;
【補足】 +0x40 +0x80 した演算子はそれぞれ 2BYTE用・4BYTE用になる。。 0 で割らないよう注意。
x<<=m;
m>>=x;
x=rand()%m;
【構文例】 07 00 57 20 この例では 受けたダメージ未満の乱数が W[20] にセットされる。 例えば、この値を 使用者MPに加算代入する?
07 00 57 20
m=x;
【構文例】 03 33 18 20 この例では B[20] の値を 使用者の向き に代入している。 あらかじめ B[20] に向きを保存しておけば、終了時にこうして元の向きに戻してやることが可能。
03 33 18 20
m+=x;
【構文例】 05 4C 59 20 計算で求めた W[20] を使用者の現在HPに加算。
05 4C 59 20
m-=x;
【構文例】 05 4E 5A 20 計算で求めた W[20] を使用者の現在MPから減算。
05 4E 5A 20
m|=x;
【構文例】 05 40 9B 20 計算で求めた D[20] を使用者の状態変化へビット合成。 こういう使い方は本当は良くない(変化持続時間をセットできない為)。
05 40 9B 20
m&=x;
【構文例】 05 40 9C 20 計算で求めた D[20] を使用者の状態変化へセット。 場合によっては状態変化が解除される。
05 40 9C 20
m^=x;
【構文例】 05 40 9D 20 計算で求めた D[20] を使用者の状態変化へ排他的ビット合成。 えーと、修正前『エターナルドリームス』の一部なんだけど、こういう外道な真似はしちゃいけません。 斬るたびに状態がころころ変わり、石化したり治ったりと大変な事になります(その上自然治癒無し)。
05 40 9D 20
m*=x;
【構文例】 05 30 5E 20 使用者の攻撃力を W[20]倍。
05 30 5E 20
m/=x;
【構文例】 07 00 5F 20 受けたダメージを 1 / W[20]倍。
07 00 5F 20
m%=x;
ちとサンプルは難しい。
m<<=x;
ちとサンプルは難しい。 シフト演算はちょっとした値でもべらぼうな値になるので変数によるシフトは注意が必要。
m=rand()%x;
【構文例】 07 04 63 20 魔法発動時の消費MPを計算で W[20] にセットされた値までの乱数にする。
07 04 63 20
■算術演算子
if( x==i )
【構文例】 07 02 24 00 02 90 00 受けた攻撃が無属性なら真。
07 02 24 00 02 90 00
if( x!=i )
【構文例】 07 02 25 00 02 90 00 受けた攻撃が無属性でないなら真。
07 02 25 00 02 90 00
if( x<=i )
【構文例】 06 44 66 F0 02 90 00 敵のレベルが250以上なら真。 if( !(x>i) )と等価。
06 44 66 F0 02 90 00
if( !(x>i) )
if( x>=i )
【構文例】 06 44 67 F0 02 90 00 敵のレベルが250以下なら真。 if( !(x<i) )と等価。
06 44 67 F0 02 90 00
if( !(x<i) )
if( x<i )
【構文例】 06 44 68 F0 02 90 00 敵のレベルが250より上なら真。 if( !(x>=i) )と等価。
06 44 68 F0 02 90 00
if( !(x>=i) )
if( x>i )
【構文例】 06 44 69 F0 02 90 00 敵のレベルが250未満なら真。 if( !(x<=i) )と等価。
06 44 69 F0 02 90 00
if( !(x<=i) )
if( x&i )
if( !(x&i) )
if( i==(x&i) )
if( i!=(x&i) )
if( x%i )
if( !(x%i) )
if( x==m )
if( x!=m )
if( x<=m )
if( x>=m )
if( x<m )
if( x>m )
if( x&m )
if( !(x&m) )
if( m==(x&m) )
if( m!=(x&m) )