「関数(戦闘シーン)」の編集履歴(バックアップ)一覧に戻る

関数(戦闘シーン) - (2022/11/03 (木) 09:35:27) のソース

**&color(green){戦闘中イベントの主な関数}
青色の引数には&color(blue){文字変数}が使えます(先頭に @ を付けると文字変数と見なされます)

:win()|
戦闘シーンから抜けます。
:routine(event構造体の名前)|
指定event構造体をサブルーチンとして呼び出します。
&color(gray){call、event関数で呼び出すと戦闘シーンが終わった後に実行されますので注意してください。}
:resetTime()|
システム内部の戦闘カウントをゼロにします。
戦闘カウントとは戦闘開始からの経過時間を示すシステム内の数値です。
制限時間が1減ると戦闘カウントは10増えてます。
:setLimit(&color(magenta){数値})|
:setLimit(&color(magenta){数値}, &color(magenta){数値})|
制限時間を指定数値に戻します。
2引数版は第2引数のみを見ます。第1引数は無視されます。
1引数版を使いましょう。
:addLimit(&color(magenta){数値})|
:addLimit(&color(magenta){数値}, &color(magenta){数値})|
制限時間を増やします。負の値だと減ります。
2引数版は第2引数のみを見ます。第1引数は無視されます。
1引数版を使いましょう。
:openGoal()|
ダンジョンで出口を開きます。
:closeGoal()|
ダンジョンで出口を隠します。
:storeAliveUnit(&color(blue){unit/class}, 文字変数)|
引数のunit/class識別子を持つ生存ユニットを全て文字変数に代入します。

:addTroop(&color(blue){ユニット}、x座標, y座標, 向き(0~7), (red/blue/on))|
指定ユニット部隊を戦場マップに登場させます。
xy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
向きは、0=北、1=北西、2=西、3=南西、4=南、5=南東、6=東、7=北東、です。
redだと赤陣営に、blueまたはonだと青陣営に追加されます。
操作部隊にするにはリーダーの構造体に&color(blue){handle = on}としてください。
ただし追加先がプレイヤー陣営でないと無効になります。ダンジョンのプレイヤーは赤陣営です。
:eraseTroop(&color(blue){ユニット})|
指定ユニット部隊を消去します。
:removeTroop(&color(blue){ユニット})|
指定ユニット部隊を消去します。より確実に消去します。

:moveTroop(&color(blue){ユニット}, x座標, y座標, 向き(0~7))|
:moveTroopFix(&color(blue){ユニット}, x座標, y座標, 向き(0~7))|
指定ユニット部隊を指定座標へ移動させます。
xy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
向きは、0=北、1=北西、2=西、3=南西、4=南、5=南東、6=東、7=北東、です。
moveTroopFixだと敵を攻撃しないで強行移動します。
:moveTroop(&color(blue){ユニット}, &color(blue){追尾ユニット})|
:moveTroopFix(&color(blue){ユニット}, &color(blue){追尾ユニット})|
指定ユニット部隊を追尾させます。
:smoveTroop(&color(blue){ユニット}, x座標, y座標, 向き(0~7))|
:smoveTroopFix(&color(blue){ユニット}, x座標, y座標, 向き(0~7))|
指定ユニット部隊を指定座標へ直線移動させます。
経路探索で行列になるのを回避してとにかく直進させたい時に使ってください。
:smoveTroop(&color(blue){ユニット}, &color(blue){目標ユニット})|
:smoveTroopFix(&color(blue){ユニット}, &color(blue){目標ユニット})|
指定ユニット部隊を目標ユニット位置へ直線移動させます。
:freeTroop(&color(blue){ユニット})|
指定ユニット部隊から&color(blue){moveTroop}で設定した目標座標ないし追尾ユニットをリセットします。
通常通り動くようになります。
:haltTroop(&color(blue){ユニット})|
指定ユニット部隊から&color(blue){moveTroop}で設定した目標座標ないし追尾ユニットをリセットします。
そして一時立ち止まらせます。
:stopTroop(&color(blue){ユニット})|
指定ユニット部隊からmoveTroopで設定した目標座標ないし追尾ユニットをリセットします。
そして追加で何かをするようですが、詳細は不明です。
:shiftTroop(&color(blue){ユニット}, xドット, yドット, (on))|
指定ユニット部隊を現在位置から指定ドット分移動させます。
xを負の値にすると左に、正の値にすると右に
yを負の値にすると上に、正の値にすると下に移動します。
第四引数をonにすると方向転換します。未指定だと現在向きのまま並行移動します。
:shiftTroop2(&color(blue){ユニット}, 移動ドット数, 移動角度(0~360), (on))|
指定ユニット部隊を現在位置から指定ドット分移動させます。
移動角度は0が真上、180が真下になります。

:unctrlTroop()|
全ての部隊を一時的に操作不能にします。
:unctrlTroop(&color(blue){ユニット})|
指定ユニット部隊を一時的に操作不能にします。
:ctrlTroop(&color(blue){ユニット})|
指定ユニット部隊を操作可能に戻します。
:activeTroop(&color(blue){ユニット})|
指定ユニット部隊をアクティブにします。アクティブとは部隊移動を行う稼働状態の事です。
:sleepTroop(&color(blue){ユニット})|
指定ユニット部隊をスリープにします。スリープだと部隊移動をしません。
スリープ状態からの条件付き稼働は、unit構造体でも設定できます。
:formTroop(&color(blue){ユニット}, 隊形(0~2))|
指定ユニット部隊の隊形を変更します。
隊形は、0=方陣、1=横列、2=縦列、です。
:retreatTroop(&color(blue){ユニット})|
指定ユニット部隊を退却モードにします。
:speedTroop(&color(blue){ユニット}, 数値)|
指定ユニット部隊の全ユニットのmoveを変更します。
:skillTroop(&color(blue){ユニット}, スキル名)|
指定ユニットから指定スキルを発射させます。
:skillTroop(&color(blue){ユニット}, スキル名, (on/dead_ok))|
指定ユニットから指定スキルを発射させます。
第三引数をonにすると部隊全員が発射します。dead_okだと死亡してても死亡位置から発射されます。
:aimTroop(&color(blue){ユニット}, x座標, y座標)|
:aimTroop(&color(blue){ユニット}, &color(blue){標的ユニット})|
指定ユニット部隊の発射スキルの標的位置を決めます。
xy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
:aimTroop(&color(blue){ユニット}, -1, -1)|
xy座標に-1を指定すると射撃標的設定が解除されます。

:addSkill(&color(blue){ユニット}, &color(blue){スキル}, &color(blue){スキル}, ‥)|
ユニットのスキルリストの末尾にスキルを追加します。
:addSkill2(&color(blue){ユニット}, &color(blue){スキル}, &color(blue){スキル}, ‥)|
ユニットのスキルリストの先頭にスキルを追加します。
:removeSkill(&color(blue){ユニット}, &color(blue){スキル})|
ユニットからスキルを消去します。

**&color(green){戦闘シーンで使われる条件式関数}
:inBattle(&color(red){ユニット/勢力}, &color(red){ユニット/勢力}, ‥)|
返値:&color(blue){1 = 全ている、0 = いない}
現在の戦闘シーンに列挙されたユニット、又は勢力が全部いるか調べる
:isSameArmy(&color(red){ユニットA}, &color(red){ユニットB})|
返値:&color(blue){1 = 同じ陣営、0 = そうじゃない}
現在の陣営で両ユニットの所属陣営(青か赤)が異なるか調べます。
:isNowSpot(&color(red){領地})|
返値:&color(blue){1 = この領地で現在戦闘中、0 = そうじゃない}

:getTime()|
返値:&color(blue){システム内の戦闘カウント}
戦闘カウントとは戦闘開始からの経過時間を示すシステム内の数値です。
画面左上ウィンドウの制限時間が1減ると戦闘カウントは10増えてます。
これは&color(blue){resetTime()}関数でゼロにできます。
:getLimit()|
返値:&color(blue){残り制限時間}
画面左上の制限時間ウィンドウの数値が返ります。
:isInterval(数値)|
返値:&color(blue){1 = 指定数値の間隔、0 = そうじゃない}
一定間隔毎に1が返る関数です。戦闘カウントが数値で割り切れたら1が返ります。
&color(blue){rif}の条件文で用いる必要があります。

:getLife(&color(red){ユニット})|
返値:&color(blue){残りHPの百分率(0~100)}
:isActive(&color(red){ユニット})|
返値:&color(blue){1 = アクティブ部隊、0 = そうじゃない}
そのユニットの部隊がアクティブか調べる
:isDead(&color(red){ユニット}, &color(red){ユニット}, ‥)|
返値:&color(blue){1 = 全部やられた、0 = そうじゃない}
列挙されたユニットが全部やられてるか調べる
:isAnyDead(&color(red){ユニット}, &color(red){ユニット}, ‥)|
返値:&color(blue){1 = 一人以上やられた、0 = そうじゃない}
列挙されたユニットの内、誰かがやられたか調べる
:isAllDead(&color(red){ユニット})|
返値:&color(blue){1 = 全滅した、0 = そうじゃない}
指定ユニットの所属陣営が全滅したか調べる
:isRedAlive()|
返値:&color(blue){1 = 「赤」陣営が生存、0 = 「赤」陣営が全滅}
:isBlueAlive()|
返値:&color(blue){1 = 「青」陣営が生存、0 = 「青」陣営が全滅}
:getRedCount()|
返値:&color(blue){「赤」陣営の生存ユニット数}
:getBlueCount()|
返値:&color(blue){「青」陣営の生存ユニット数}

:countUnit(&color(red){ユニット})|
返値:&color(blue){指定ユニットの生存数。一般兵士の識別子を指定してください。}
:countSkill(&color(red){スキル名})|
返値:&color(blue){戦場内に発射されてるスキルの数。ただしスキルはoffset=onでないとカウントされません。}
:countPost((red/blue), &color(red){ユニット名}, 左辺, 上辺, 右辺, 底辺)|
返値:&color(blue){指定四角形内の指定陣営の指定ユニットの数}

:getDistance(&color(red){ユニット}, &color(red){ユニット})|
返値:&color(blue){ユニットとユニットの距離ドット}
指定ユニット同士の距離ドットを返します。
:getDistance(&color(red){ユニット}, x座標, y座標)|
返値:&color(blue){ユニットと指定座標の距離ドット}
指定ユニットと指定座標の距離ドットを返します。
引数のxy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
:isPostIn((red/blue), &color(red){ユニット}, 数値)|
返値:&color(blue){1 = 指定ユニットの数値半径内にいる、0 = そうじゃない}
指定ユニットの数値半径ドット以内に「赤」「青」陣営のユニットが一人でもいるか調べます。
:isPostIn((red/blue), x座標, y座標, 数値)|
返値:&color(blue){1 = 座標の数値半径内にいる、0 = そうじゃない}
指定座標の数値半径ドット以内に「赤」「青」陣営のユニットが一人でもいるか調べます。
引数のxy座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。
:isPostIn((red/blue), left座標, top座標, right座標, bottom座標)|
返値:&color(blue){1 = 指定領域内にいる、0 = そうじゃない}
指定座標の四角形内に「赤」「青」陣営のユニットが一人でもいるか調べます。
引数の座標はMapMakerの座標を用いてください。内部でクォータービュー座標に変換されます。

:isDungeon()|
返値:&color(blue){1 = ダンジョンにいる、0 = そうじゃない}
:isDungeon(dungeon構造体の識別子)|
返値:&color(blue){1 = 指定ダンジョンにいる、0 = そうじゃない}
:isDungeon(dungeon構造体の識別子, 数値)|
返値:&color(blue){1 = 指定ダンジョンの(数値)階にいる、0 = そうじゃない}
:getClearFloor(dungeon構造体の識別子)|
返値:&color(blue){引数ダンジョンの到達階}

.