Liminalia

コマンドリファレンス

シナリオの @ で始まる行に書けるコマンド 121 個です。ラベル、条件分岐、変数の書き方はシナリオの書き方にあります。

本文とメッセージウィンドウ

  • @windowメッセージウィンドウを表示、または非表示にする
  • @nvl画面全体に文章を重ねて表示する NVL モードにする、またはメッセージウィンドウに戻す(切り替えると文字は消える)
  • @vertical本文を縦書き(右から左へ行が進む)にする、または横書きに戻す(切り替えると文字は消える)。メッセージウィンドウと NVL モードに効く。既定は liminalia.json の ui.message.vertical
  • @balloon吹き出し表示にする(話しているキャラクターの立ち絵の上に本文を表示する)、またはメッセージウィンドウに戻す。話者の立ち絵が表示されていない台詞は、x と y を書けばその位置の吹き出し、書かなければメッセージウィンドウに表示する
  • @clearメッセージウィンドウの文字を消す(NVL モードでは表示した文章をすべて消す)
  • @text-speedテキスト速度を変える
  • @text-speed-resetテキスト速度をコンフィグの値に戻す
  • @text-sound本文の文字を表示するときに音を鳴らす(話者ごとに変えられる)
  • @text-sound-off文字を表示するときの音を止める
  • @wait-click本文を表示せずにクリックを待つ
  • @layer-text前景レイヤーに文字を置く(章題や場所の表示など)。@free-image で消すまで残る
  • @motion-text文字を一文字ずつアニメーションを付けて表示し、しばらく表示してから一文字ずつ消す
  • @chat-openチャットアプリ風の画面を開く(@chat で吹き出しを追加する。@chat-close で閉じる)
  • @chatチャットに吹き出しを追加し、クリックを待つ(バックログにも残す)
  • @chat-closeチャットアプリ風の画面を閉じる
  • @backlog-addバックログにテキストを追加する

背景と画像

  • @bg背景を切り替える
  • @image前景レイヤーに画像を置く(図版など)。@free-image で消すまで残る
  • @free-imageレイヤーに置いたものをすべて消す(name を書けばその名前の画像だけ)。base なら背景を消す
  • @layer前景レイヤーの表示、不透明度、位置を変える。メッセージウィンドウの表示、非表示は @window で書く
  • @bg-place背景を、位置と大きさを決めて切り替える(画面より大きい背景をあとで @anim で動かすときなど)
  • @plane奥行きのある背景の絵を重ねる(遠くの空、山、手前の草など)。@camera で動かすと、奥のものほど小さく動く。同じ名前は置き換え、@bg で外れる
  • @plane-hide@plane で重ねた絵を外す
  • @bg-movie動画を背景(背景画像の上、立ち絵の下)で再生する。再生中に次を指定すると、今の動画が終わってから切り替わる
  • @stop-bg-movie@bg-movie の動画を消す
  • @wait-bg-movie@bg-movie の動画の繰り返しをやめ、最後まで再生し終わるのを待つ

立ち絵と顔

  • @chara立ち絵を表示する、または差し替える。表示中のキャラクターは、書かなかった差分、立ち絵セット、位置、反転を今のまま保つ(表示していなければ既定)
  • @chara-hide立ち絵を消す
  • @chara-hide-all立ち絵をすべて消す
  • @chara-config立ち絵の振る舞いを設定する(話しているキャラクターを目立たせる、自動配置で並べ直す速さ)。書いた項目だけ変える
  • @chara-move表示中の立ち絵の位置と大きさを変える(次に @chara するまで)
  • @chara-shake立ち絵を揺らす(TyranoBuilder のキャラクター揺らし)。終わりを待たない
  • @face顔ウィンドウの表情を決める(立ち絵を表示していないキャラクターの分。表示中は立ち絵の差分を使う)。立ち絵を消したときは、消す前の差分を引き継ぐ
  • @tone立ち絵の色調を変える(時間帯や回想に合わせる)。キャラクターを書かなければすべての立ち絵(これから出すものも)。none で戻す

演出

  • @mask画面を一色で覆う(暗転)
  • @mask-off画面の覆いを外す(明転)
  • @quake画面を揺らす
  • @quake-decayメッセージウィンドウも含めた画面全体を、だんだん弱まるように揺らす
  • @camera画面全体をズーム、移動、回転させる
  • @reset-cameraカメラを元に戻す
  • @layer-camera一つのレイヤーだけをズーム、移動、回転させる(画面全体は @camera)
  • @reset-layer-camera@layer-camera で動かしたレイヤーを元に戻す
  • @wait-camera@camera と @layer-camera の動きが終わるまで待つ
  • @transition@freeze で止めた画面から、組み替えたあとの画面へ切り替える
  • @wait-transition@transition の切り替えが終わるまで待つ
  • @effect画面効果をかける(wave 揺らぎ / glitch 映像の乱れ / chromatic 色ずれ / noise 粒子 / vignette 周辺を暗く / scanlines 走査線 / radial-blur 回転のぼかし / zoom-blur ズームのぼかし / mosaic モザイク / ripple 波紋 / shader 作品のシェーダー)。@effect-off で解除する
  • @effect-off@effect でかけた画面効果を解除する
  • @filterレイヤーに CSS のフィルタをかける(前のフィルタは置き換える)。@filter-off で解除するまで残る
  • @filter-off@filter でかけたフィルタを解除する
  • @blend画面全体に色か画像を合成モードで重ねる(メッセージウィンドウの下)。@blend-off で消すまで残る
  • @blend-off@blend で重ねたものを消す。name を省くとすべて消す
  • @blend-movie動画を画面全体に合成モードで重ねる(メッセージウィンドウの下)。@blend-off で消す
  • @dof被写界深度。ピントを合わせるところを決め、ほかをぼかす(背景に合わせれば立ち絵と前景の画像、立ち絵に合わせれば背景と前景の画像)。none で戻す
  • @particles雨、雪、桜、光の粒、ちりを降らせる(画像を降らせることもできる)。@particles-off で止める
  • @particles-offパーティクルを止める
  • @anim名前かレイヤーで選んだものの位置、大きさ、不透明度、文字色をアニメーションさせる。終わりは @wait-anim で待てる
  • @stop-anim@anim のアニメーションをその場で止める(止めた位置のまま残る)
  • @wait-anim@anim、@kanim(ループを除く)、@quake-decay のアニメーションがすべて終わるまで待つ
  • @keyframe@kanim で使うアニメーションに名前を付けて定義する。キーフレームは「割合% 項目=値 …」を ; で区切って一行に並べる
  • @kanim@keyframe で定義したアニメーションで、名前かレイヤーで選んだものを動かす(変形や CSS のプロパティ)
  • @stop-kanim@kanim のアニメーションを止める。途中なら最後の状態にする
  • @freeze今の画面(背景、立ち絵、前景)を静止させて表示したまま、その下で組み替えられるようにする。@transition で切り替える
  • @vibrate端末を振動させる(Vibration API に対応した端末だけ。対応しなければ何もしない)。終わりを待たない
  • @vibrate-stop端末の振動を止める
  • @movie動画を全画面で再生し、終わるまで待つ
  • @peekメッセージウィンドウを一時的に消し、クリックで元に戻す(本文は消さない)

音とボイス

  • @bgmBGM を鳴らす
  • @stop-bgmBGM を止める
  • @pause-bgmBGM を一時停止する
  • @resume-bgm一時停止した BGM を再開する
  • @bgm-volume鳴っている BGM の音量を変える
  • @wait-bgmBGM が鳴り終わるまで待つ(繰り返す BGM は待たない)
  • @se効果音を鳴らす
  • @stop-se効果音を止める
  • @pause-se効果音を一時停止する
  • @resume-se一時停止した効果音を再開する
  • @se-volume鳴っている効果音の音量を変える
  • @wait-se効果音が鳴り終わるまで待つ(繰り返す効果音は待たない)
  • @voice台詞のボイスを鳴らす(本文の行の前に書けば次の台詞で、本文の中に書けばその場で鳴らす)
  • @voice-auto話者の台詞ごとに、連番のボイスを自動で再生する(@voice を書いた台詞はそちらが優先)。pattern を書くと設定し、書かなければ @voice-auto-off で止めたものを番号を保ったまま再開する(who も省略するとすべて)
  • @voice-auto-off連番のボイスの自動再生を止める(番号は保ち、@voice-auto で再開できる)
  • @stop-voice鳴っているボイスを止める
  • @wait-voiceボイスが鳴り終わるまで待つ

進行と時間

  • @wait指定した時間だけ待つ
  • @stopクリックでは進まない状態で止まる(ボタンや外部の操作を待つ)
  • @sleep-game今の状態を記録して別のシーンへ移る(@awake-game で、このコマンドの次に戻る)
  • @awake-game@sleep-game で記録した状態に戻る(記録した状態がなければ何もしない)
  • @break-game@sleep-game で記録した状態を破棄する
  • @checkpoint今の状態に名前を付けて記録する(@rollback でここへ戻れる)
  • @rollback@checkpoint で記録した状態に戻る
  • @clear-checkpoint@checkpoint で記録した状態を破棄する
  • @clear-stack@call の戻り先をすべて破棄する(サブルーチンの途中からタイトルへ戻るときなど)
  • @clear-vars変数をまとめて削除する

入力と持ち物

  • @text-input文字を入力してもらい、変数に入れる(決定するまで待つ)
  • @dialog確認のダイアログを表示し、答えるまで待つ
  • @item-add持ち物を足す(liminalia.json の items の名前)。式では item("名前") で数を読める
  • @item-remove持ち物を減らす(count を省くとすべて)
  • @item-select持ち物の画面を出して一つ選んでもらい、名前を変数に入れる(やめたら空の文字)。調べる場所で使う持ち物を選ばせるときに

システム画面

  • @autoオート(本文を自動で送る)を開始、または停止する
  • @skipスキップを開始、または停止する
  • @open-screenシステム画面を開き、閉じるまで待つ
  • @menu-buttonメニューを開くボタンを表示、または非表示にする
  • @shortcutsキーとマウスのショートカット(セーブ、スキップ、メニューなど)を有効、または無効にする
  • @configコンフィグの値を変える(書いたものだけ)
  • @fullscreenフルスクリーンとウィンドウを切り替える
  • @quitゲームを終了する
  • @title-screenプレイを終えてタイトル画面へ戻る(バッドエンドの後など)。ending を書くと、Studio のフローチャートにエンディングとして表示する
  • @window-titleウィンドウ(タブ)のタイトルを変える
  • @open-urlブラウザで URL を開く
  • @autosaveオートセーブする(このコマンドの次から再開する)
  • @autoloadオートセーブを読み込んで、そこから続ける
  • @backlogバックログに本文を残すかを切り替える
  • @presenceプレイ中の状況を Steam のリッチプレゼンスに表示する(デスクトップ版で Steam に接続しているとき)。空の文字列で消す

おまけと実績

  • @cg-unlockCG を解放する(おまけの CG で見られるようにする。表示はしない)
  • @replay-unlock回想を解放する(おまけの回想で見られるようにする。再生はしない)
  • @replay-end回想の再生をここで終えて、おまけへ戻る(回想の再生中でなければ何もしない)
  • @glossary-unlock用語集の用語を解放する(本文に出た用語は自動で解放する)
  • @achieve実績を解除する(はじめて解除したときだけ通知する。デスクトップ版は Steam の実績にも送る)

配布と購入

  • @check-updateアップデートを確認し、あればプレイヤーに尋ねて更新する(デスクトップ版で liminalia.json の build.update があるとき。ほかでは何もしない)
  • @purchase商品を買う(スマホ版のアプリ内課金、デスクトップ版の店の DLC など)。店の画面が閉じるまで待ち、買えたら system.purchases.<商品> が true になる
  • @restore-purchases購入を復元する(機種変更したときなど)。持っている商品の system.purchases.<商品> が true になる

選択肢

  • @choice選択肢。選択肢の行(- テキスト -> #ジャンプ先)を並べ、@end で閉じる

式で使える関数

関数パラメータ説明
random()0〜1 つrandom() は 0 以上 1 未満、random(n) は 0 以上 n 未満の整数
randint()2 つrandint(a, b) は a 以上 b 以下の整数
pick()1 つpick(配列) は配列から一つ選ぶ(空なら null)
shuffle()1 つshuffle(配列) は並びを混ぜた新しい配列
floor()1 つ切り捨て
ceil()1 つ切り上げ
round()1〜2 つround(x) は四捨五入、round(x, 桁) は小数第何位までにする
min()1 つ以上いちばん小さい数
max()1 つ以上いちばん大きい数
abs()1 つ絶対値
clamp()3 つclamp(x, 下限, 上限) は範囲に収める
sum()1 つsum(配列) は数の合計
len()1 つ文字列の文字数、配列の長さ
includes()2 つincludes(文字列か配列, 値) は含むか
index()2 つindex(文字列か配列, 値) は最初の位置(無ければ -1)
slice()2〜3 つslice(文字列か配列, 始め, 終わり) は一部(終わりは含まない。省くと最後まで。負の数は後ろから)
replace()3 つreplace(文字列, 探す文字列, 置き換える文字列) はすべて置き換える
upper()1 つ英字を大文字に
lower()1 つ英字を小文字に
trim()1 つ前後の空白を取る
split()2 つsplit(文字列, 区切り) は配列に分ける
join()1〜2 つjoin(配列, 区切り) は文字列につなぐ(区切りを省くと空)
pad()2〜3 つpad(値, 桁, 埋める文字) は前を埋める(埋める文字を省くと 0)
str()1 つ文字列にする
num()1 つ数にする(数として読めなければ null)
push()2 つpush(配列, 値) は末尾に足した新しい配列
remove()2 つremove(配列, 値) はその値を除いた新しい配列
sort()1 つ並べ替えた新しい配列(数は小さい順、文字列は辞書の順)
reverse()1 つ逆にした新しい配列
unique()1 つ重なりを除いた新しい配列
keys()1 つkeys(オブジェクト) は名前の配列
has()2 つhas(オブジェクト, 名前) はその名前があるか
year()0 つ今の年(遊んでいる端末の時計)
month()0 つ今の月(1〜12)
day()0 つ今日の日(1〜31)
hour()0 つ今の時(0〜23)
minute()0 つ今の分(0〜59)
weekday()0 つ今日の曜日(0 が日曜、6 が土曜)
now()0 つ今の時刻(1970 年からのミリ秒)
item()1 つ持ち物の数(item("key")。liminalia.json の items の名前。持っていなければ 0)