Title: 吉里吉里/KAGEXについて
Author: 合資会社ワムソフト 渡邊剛

●吉里吉里/KAGEX 概要

吉里吉里/KAG に対して主にレイヤ機能面で大きく拡張を行ったシステムです。

・レイヤの回転・拡大縮小処理
・レイヤの重ね合わせレベルの制御の処理
・レイヤの自動アクション処理

システムの基本概念は吉里吉里/KAG のままで、基本機能もそのまま
維持されています。本ドキュメントを読む前に、まず、KAG の全体を
把握してください。

KAG の詳細については

 http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/

を参照してください。

●注意事項

fadepausebgm/setbgmlabel/clearbgmlabel/setbgmstop/clearbgmstop 
timeout/ctimeout/click/cclick/wheel/cwheel は KAGに統合されました

Affine変形処理の原点ルールが変更になっています。
現在のシステムでは回転中心＝レイヤ原点です。
従来的な配置にする場合は、afx, afy を center
にした上で表示座標をその分ずらす必要があります。

●フォルダ構成

原則 KAG に準じます。

krkr.exe        吉里吉里実行ファイル本体
plugin/         プラグイン
tools/          関連ツール
savedata/       セーブデータ
data/           データ領域
    system/     システムファイル
    bgimage/    背景ファイル用
    bgm/        BGMファイル用
    fgimage/    前景ファイル用
    image/      その他画像
    others/     その他データ
    rule/       画面更新用ルール画像
    scenario/   シナリオファイル
    sound/      サウンドデータ
    video/      動画データ
    voice/      ボイスデータ
　　main/       システムスクリプト　※ KAGEX 側で追加

    startup.tjs 吉里吉里起動ファイル

基本的に素材のファイルを指定するときはパス名はつけず、
ファイル名のみの自動探索によって探します。

☆ KAGEX の追加機能

Storages.tjs に自動探索パス指定を別途追加することができます。
Initialize.tjs の記述に準じた記述を追加してください。

記述例
---------------------------------------------------------------
Storages.addAutoPath("thum/"); // サムネール画像用フォルダ
---------------------------------------------------------------

●拡張内容解説

◇制御系拡張

◆待ちコマンド全般 (拡張)

wait パラメータが指定された待ち命令は、規定の待ち動作のあと、
さらに追加で指定された「時間」分待ちます。
クリックで動作キャンセルされた場合はこの追加の待ちはありません。

属性
	wait	追加待ち指定 (ms単位)

※ wait, wd, waituntil ではこの拡張は無効です

◆待ちありコマンド全般(拡張)

動作に対して対応する待ちがあるコマンドに自動的に待ち動作を実行する
属性が追加されています。

属性
	sync	待ち実行
	wait	追加待ち指定(ms単位)

対応するコマンド

 quake, animstart, trans, move, action, 
 fadeinbgm, fadeoutbgm, fadepausebgm, fadebgm, xchgbgm, 
 fadeinse, fadeoutse, fadese,
 playvideo

◆コマンド全般 (拡張)

delayrun パラメータが指定されたコマンドは、待ち処理中に遅延実行されます。

属性
	delayrun    遅延パラメータ指定
				数値: 指定の時間(ms単位)以上遅延して実行されます
                文字列: BGM/SEの該当するラベルのタイミングで実行されます

lineModeによる改ページ処理前(クリック待ちの後)、
または [delaydone] コマンドで遅延実行はキャンセル(全部その時点で実行)されます

◆delaydone (新規)

実行が遅延しているコマンドをすべて強制実行します。

◆delaycancel (新規)

実行が遅延しているコマンドをすべてキャンセルします。

◆wd (新規)

遅延待ち。BGM/SEの該当するラベルを通過するまで待ちます。
ラベル通過済みの場合はスルーされます

属性
	name	待ちラベル
	canskip スキップ可能なら true

◆td (新規)

遅延実行ラベル登録。BGM/SEのラベルとは別に遅延処理用の
ラベルを手動登録します。

属性
	ラベル名=遅延時間	の形で任意のラベルを登録できます。

◆waituntil (新規)

機能的には waittag の until パラメータと等価。
ただし、一度でもクリックされると、resetwait の時間原点をクリアして
それ以降の waituntil を無効化します。

◆showwait(新規）

テスト用コマンド。コマンド実行時の時間原点からの差分をログ表示します

◆set (新規)

変数を設定する

属性
	name	変数名 tf.* f.* sf.*
	value	値(文字列扱い)

◆func (新規)

TJS関数を呼び出す

属性
	name	グローバル関数名
	その他	パラメータが辞書として関数の第一引数に渡ります

◇レイヤ拡張

◆baseレイヤの非プライマリレイヤ化

KAGEX では、base レイヤは Window.primaryLayerではなくなって
います。ご注意ください。

◆前景レイヤへのレベル概念の導入

KAG 本来の前景レイヤは番号順の表示順をもっています。
KAGEX では、レベル」という概念を持ち、レベル単位で表示順が決定されます。

・レベルが小さいレイヤ群ほど下に表示されます
  →laylevel コマンドで制御可能

・同じレベルの中で「最前列」「最後列」の表示制御が可能です
  →layfront / layback コマンドで制御可能

◆image (拡張)

前景レイヤに対して、従来の image に加えて
以下の属性を追加で利用できるようになります。

color, storage, tile, flip は排他で、この順で有効です。
レイヤのサイズは自動的に読み込まれた素材のサイズになります。

属性
	storage	画像指定(拡張)
		・*.emf / *.wmf ベクタ画像も扱えます
		・*.psb 指定時はモーションデータを読み込みます
		  以下の追加パラメータを同時に指定します
			chara			キャラ指定
			motion			モーション指定
			stealthchara	キャラの隠し差し替え
			stealthmotion	モーションの隠し差し替え
			flags			モーション再生フラグ
			tickcount		モーションのtick値	
			speed			再生速度指定

    color   塗りつぶし色
    width   塗りつぶし時サイズ横幅
    height  塗りつぶし時サイズ縦幅

    tile    画像タイル敷き詰めファイル名。color, storageがあると無効
    tilex   タイル位置X
    tiley   タイル位置Y

	clipimage		クリッピング画像指定
	clipimageleft	クリッピング画像配置位置X
	clipimagetop	クリッピング画像配置位置Y
		実際に画面表示する際に指定した画像のα情報で切り抜いて表示します。
　　　	※クリップ画像の座標値は画面に対する絶対座標指定です

	flip		フリップ描画対象ファイル。color, storage, tile があると無効
	fliptype	フリップの種別を指定 
				※未指定時は flipで指定したファイルの拡張子も参照されます
				movie:  .mpeg .mpg .wmv
				flash:  .swf
				particle: .tjs
				fire: 未指定
    movie   flip指定＋fliptype:movie と等価　※互換用
    fire    flip指定＋fliptype:fire  と等価  ※互換用


	movie用オプションパラメータ
	    loop    動画がループ再生するかどうかを指定
	    alpha   0:通常の動画
    	        1:α動画。画面上半分をRGB、下半分をαとみなす
        	    2:α動画。画面左半分をRGB、右半分をαとみなす

	fire用オプションパラメータ
	    firecolor   炎エフェクトカラー指定 red, blue, white または 
    	        0xRRGGBB で色指定。色指定を 0xRRGGBB:0xRRGGBB と ":" で
	            連ねると、そのグラデーションになります。
        	    先に記述したほうが温度が高い部分の色です。
            	平均的に色配置されますが、":" を複数記述するとその
    	        部分の領域が長くなります。α値は線形になります
	    firegamma   firecolor で直接色指定した場合、それのα値の変動を
	            線形でなくする場合に指定します。
	    firelayer   256×1 サイズのレイヤで炎の色マップ画像を直接指定します
	    firewidth   炎エフェクト領域サイズ指定。省略時は元ファイルサイズ
	    fireheight  炎エフェクト領域サイズ指定。省略時は元ファイルサイズ
	    fireleft    炎エフェクト種画像配置位置
	    firetop     炎エフェクト種画像配置位置
	    firemargin  炎エフェクト画像領域を前後左右にこれだけ拡張
	    forceh  横方向フォース指定(-8〜8)
	    forcev  縦方向フォース指定(-8〜8)
	    boundRangeH 横方向バウンドレンジ 0〜16
	    boundRangeV 縦方向バウンドレンジ 0〜16
	    scalingCoeff    スケーリング係数 0〜0.01
	    numOfBlurForCoolMap ブラー適用回数 0〜
   		textureFilterType テクスチャフィルタ　0:ニアレスネイバー, 1:バイリニア
	    coolRange   強さの振れ幅を設定 0〜256
    	coolStrength    強さ 0〜255
	    coolParticleDensityDenominator  冷却粒子濃度分母 0>
    	coolParticleDensityNumerator    冷却粒子濃度分子 0>
	    edgeSmoothing　炎の端を目立ちにくくするかどうか

	flas用オプションパラメータ
		flashwidth
		flashheight

	particle用オプションパラメータ
		genratio
		ptidx

	flipx	横方向反転(true/false)
	flipy	縦方向反転(true/false)
	slantx	横方法傾斜率(%)
	slanty	縦方向傾斜率(%)
    zoomx   横方向拡大率(%)
    zoomy   縦方向拡大率(%)
    zoom    拡大率(%) XY同時指定
    rotate  回転角度(度)
    afx     回転・拡大原点X座標 center/left/right 
            または数値でレイヤの左上隅からの座標
    afy     回転・拡大原点Y座標 center/top/bottom
            または数値でレイヤの左上隅からの座標
    dafx    afx をデフォルトごと指定する(リセットでこの値に戻ります)
    dafy    afy をデフォルトごと指定する(リセットでこの値に戻ります)
    type    合成モード
            ※http://devdoc.kikyou.info/tvp/docs/kr2doc/contents/index.html
    reset   アクションと属性指定をすべて初期化する
            ※opacity と type は画像ロード時のものに初期化されます

	※アフィン変形は flip → slant → zoom → rotate の順に処理されます

◆layopt (拡張)

前景レイヤに対して、従来の layopt に加えて
以下の属性を追加で利用できるようになります。

属性
    type    合成モード
            ※http://devdoc.kikyou.info/tvp/docs/kr2doc/contents/index.html
    reset   アクションと属性指定をすべて初期化する
            ※opacity と type は画像ロード時のものに初期化されます
    time    指定時間で移動
    accel   移動のアクセラレーション
		負の数:減速
		0:リニア
		正の数:加速
		"acdec"：加減速運動（３次曲線）
		"accos"：加減速運動（コサイン移動）
    nowait  待ち処理時にキャンセルしない
　　left    time対応
    top     time対応
    afx     回転・拡大原点X座標 center/left/right 
            または数値でレイヤの左上隅からの座標
    afy     回転・拡大原点Y座標 center/top/bottom
            または数値でレイヤの左上隅からの座標
    rotate  回転角度
    zoomx   横方向拡大率
    zoomy   縦方向拡大率
    zoom    拡大率
    raster      ラスタースクロールの振幅量
    rasterlines ラスタースクロールの行数
    rastercycle ラスタースクロールの周期
    tilex   タイル位置X
    tiley   タイル位置Y
	clipimage		クリッピング画像指定
	clipimageleft	クリッピング画像配置位置X
	clipimagetop	クリッピング画像配置位置Y

　　＋各種flipエフェクトのパラメータも調整指定可能

	モーション再生時のみ有効なパラメータ

	chara			キャラ指定
	motion			モーション指定
	stealthchara	キャラの隠し差し替え
	stealthmotion	モーションの隠し差し替え
	flags			モーション再生フラグ
	tickcount		モーションのtick値	
	speed			再生速度指定

◆laylevel (新規)

前景レイヤの表示レベルを指定します。

属性
    layer   レイヤを指定(前景レイヤのみ)
    page    表裏画面の指定(省略時は fore)  
    level   表示レベル
            layfront/layback でのグルーピング対象です。
            表示レベルが大きいほど上に表示されます。

◆layfront (新規)

前景レイヤを同じ表示レベルの最前列に移動させます

属性
    layer   レイヤを指定(前景レイヤのみ)
    page    表裏画面の指定(省略時は fore)  

◆layback (新規)

前景レイヤを同じ表示レベルのレイヤの最後列に移動させます

属性
    layer   レイヤを指定(前景レイヤのみ)
    page    表裏画面の指定(省略時は fore)  

◆wv (拡張)

layer パラメータを指定すると、前景レイヤの動画再生完了を待ちます

属性
    layer   動画再生中のレイヤ。"all" だと全レイヤムービーを待つ
    canskip スキップ可能なら true


◆clearlayers (新規)

全レイヤの内容を消去して表示停止します。

属性
    page    表裏画面の指定

◆action (新規)

前景レイヤに対して、
レイヤに対する自動アクション駆動を指定します

属性
    layer   レイヤの指定（前景のみ)
    page    表裏画面の指定
    time    アクションが実行される時間を指定します。未指定時は無限ループ
    delay   アクション開始までの遅延時間を指定します
    nowait  アクションに対する wait を無効にする 
            (wact や wait のアクション解除処理に反応しなくなります)
    action  アクションの直接指定(グローバルな辞書または配列の名前)
    module  アクションのモジュール指定(旧スタイル)
    
※アクションの種類ごとに属性パラメータがあります。
　アクションの種別とその属性については action.txt を参照してください。

◆stopaction (新規)

指定されたレイヤのアクションを停止します。
指定を省略した場合は全レイヤのアクションを停止します。

属性
    layer   レイヤの指定（前景のみ)
    page    表裏画面の指定

◆wact (新規)

指定されたレイヤのアクションの終了を待ちます。
指定を省略した場合は全レイヤのアクションの終了を待ちます。
nowait 指定されたアクションは待つことができません。

属性
    layer   レイヤの指定（前景のみ)
    page    表裏の指定
    canskip 値 true(デフォルト) または false
            true を指定するとクリックで待ちをスキップできます

◆wat (新規)

指定されたレイヤのアクションおよびトランジションの終了を待ちます。
指定を省略した場合は全レイヤのアクションおよびトランジションの終了を待ちます。
nowait 指定されたアクションは待つことができません。

属性
    layer   レイヤの指定（前景のみ)
    page    表裏の指定
    canskip 値 true(デフォルト) または false
            true を指定するとクリックで待ちをスキップできます

◆ltbegin (新規)

レイヤを利用した画面切り替えの開始。
画面の最前面に配置したレイヤによるマスクでの画面切り替えを行う。

使い方
-------------------
[ltbegin]
画面切り替え用の命令を配置（トランジションなどを行わないこと！）
[ltend]
-------------------

属性
    type    切り替え種別
             trans   トランジション ※未指定時デフォルト
             wipeltor 左から右へのワイプ
             wipertol 右から左へのワイプ
             fade    クロスフェード
    time    切り替え時間（省略時は1000ms)
    color   画面暗転に利用する色（省略時は黒）
    wait    画面暗転後の待ち時間

◆ltend (新規)

レイヤを利用した画面切り替えの終了

属性
    ltbegin と同じ。省略時は以前の値そのままになる

◇メッセージ窓表示系拡張

◆拡張の概要

ADV スタイルのゲーム作成に都合が良いように、
記述ルールが拡張され、改行に対する自動処理をわりあてる
ことが可能になっています。

また、内部的に「名前レイヤ」「表情レイヤ」をサポート
する拡張が行われています。

◆linemode (新規)

KAG の改行に対するルールを切り替えます。
これを用いることで、メッセージ窓スタイルの作品の場合に
[l]や[cm]などを明示的に記述しなくてもよくなります。

※注意点 linemode が有効な場合は ignoreCR 指定が強制でONの状態になります

属性
    mode    line または page
            未指定の場合は通常の KAG の動作に戻ります。

用語解説
　改行: テキストに直接入力されている改行コードによる改行のことです
　空行: 改行のみの行が１行以上続いていることをさします

line の場合
    改行：[l] を実行する
    空行：無視
    [p] ：通常機能

page の場合
    改行：[p] ＋ページの自動消去
    空行：無視

vn の場合
    改行：[l] を実行する
    空行:[p] ＋ページの自動消去

tex の場合:
    改行:無視
    空行:[p] ＋ページの自動消去

free の場合:
    改行:改行
    空行:[p] ＋ページの自動消去

[r] タグによる改行は純粋にメッセージ窓への改行として機能します。
「自動消去」は「次の行のテキスト表示開始時」に [er] によって行われます。
※[p] 直後に行いたい場合には、erafterpage を有効にしてください。

さらに、ラインモードが有効な場合、行頭にある

【名前/表示名】

という記述に対して、
名前表示コマンド [dispname name=名前 disp=表示名] が自動的に呼び出されます。

◆nor (新規）

ラインモード処理における「改行文字(CR)」による動作を一回だけ抑制します。
vn モードなどで長すぎるので改行したいが効果としては使いたくない場合などに
行末に配置します。

◆afterline (新規)

・line モードの場合の改行時の[l] 待ちの終了後
・vn モードの場合の改行時の[l] 待ちの終了後

に実行される特殊内部タグです。
KAGEX では空の命令になっています。
ワールド拡張ではヒストリのボイスの区切り処理用につかわれています。

◆afterpage (新規)

[p] 処理の後に自動的に実行される特殊内部タグです。
KAGEX では空の命令になっています。
ワールド拡張ではヒストリのボイスの区切り処理用につかわれています。

◆dispname（新規）

名前を表示するための特殊内部タグです。

属性
    name    名前を指定します
    disp    表示名を指定します

KAGEX では単純にテキストで名前をそのまま表示するだけです。
ワールド拡張では名前窓をつかった処理が呼び出されます

◆craftername（新規）

line モードの名前表記【名前/表示名】の直後の改行の挙動を変更します

属性
    mode    true なら名前直後の改行を無視する。false なら通常の改行扱い

--------------------------------------
【瑠璃子】くすくす

【瑠璃子】
くすくす
--------------------------------------

true の場合はいずれの表記も等価になります

◆erafterpage（新規）

[p] 直後に自動的に [er] 動作を行うかどうかを指定します。

属性
    mode    true なら [p] の処理の直後に [er] 動作を行うようになる。

注意点
　これが有効な場合、line モードの自動消去
　（次のテキスト表示直前に消去）は行われません。

◆autoindent (新規)

有効にすると、名前直後に “「”　または　“『”があった場合
に自動的にインデント処理します。

属性
    mode    true または false

◆autolabelmode (deplecated)

※※ 廃止しました。Config.tjs で記述してください

◇メッセージ窓 UI 拡張

◆概要

メッセージ窓に配置されたボタンなどのＵＩ諸機能が拡張されています。
また、配置された各オブジェクトは、レイヤ.names[] プロパティ経由で
名前ベースで参照することができます。

例
-------------------------------------------------
[current page=fore name=message0]
[button name=auto normal="auto"] // ボタンを登録

tjs から以下の記述で参照可能
kag.fore.messages[0].names["auto"]
-------------------------------------------------

全般に対する拡張

属性
    name    ＵＩパーツの名前を指定する

◆button (拡張)

画像ボタンのファイルを個別指定できるよう拡張してあります。

属性
    normal  通常時画像
    over    マウスオーバー時画像    省略時は normalと同じ
    on      押し下げ時画像          省略時は over と同じ
    focus   フォーカス時画像        省略時は focus と同じ
    animcount   ぱたぱたアニメパターン数を指定
    animtime    ぱたぱたアニメのインターバル時間を指定  省略時は 1000/animcount

※ボタンのアニメーション機能について

ボタンを単純なぱたぱたアニメーションさせることができます。

・パターンの表示インターバルは固定
・単純ループのみ
・縦方向に連結した画像ファイルを次々きりかえる表示になります。
  graphic/normal/over/on/focus などで指定する画像をあらかじめそういったデータに
　指定しておきます。ボタンの表示上の縦幅は、
　画像ファイルの縦幅 /  animcount になります。

※ラジオボタン、トリガボタンの対応についての標記を追加する必要あり XXX

◆slider (新規)

メッセージレイヤにスライドバーを配置します。

属性
    exp         commit 時の代入先
    bgcolor     背景の色
    opacity     背景の透明度
    value       連動変数名。指定されると、
                (1)指定された変数を初期値として参照
                (2)変更時に指定された変数に値を代入
                を行う。これを指定すると onchange, onchangefunc は無効
    position    初期値
    onchange    変更値を代入する変数名
    onchangefunc 変更したとき呼び出される関数を指定
                 func(position, dragging); の形で呼び出される
　　　　　　　　 指定すると onchange は無効

    base        背景画像名。
                指定した場合は width と height は背景画像のサイズになる
    width       背景幅
    height      背景高さ
    tab         タブ画像（一括) normal / on / over の順で横に並んだ画像を指定
    normal      タブ画像通常（分離）
    over        タブ画像マウスオーバー（分離）
    on          タブ画像プッシュダウン時（分離）

    nohighlicht ハイライトしない
    jumpmode    ジャンプモード（スライダーのベースをクリックするとそこに移動）

◆sysbutton (新規)

メッセージレイヤにシステムボタンを配置します。
システムボタンは ct でも消去されません。

属性
     button に準じます

◆csysbutton (新規)

システムボタンを消去します

◆uiload （新規）

ユーザインターフェース定義ファイルからデータを
読み出してボタンなどのパーツを自動配置します

属性
    page        対象ページ（表裏）
    layer       対象メッセージレイヤ
    storage     読み出す定義ファイル
    partremove  除外part対象
    partexcept  指定以外除外part対象

    ベース名.csv とベース名.funcの二種類のファイルが読み込まれます。
    ※機能はどちらも同じですが、.csv は配置のみを記述、.func には
    機能用の定義を記述することを想定してあります

◇選択肢機能拡張（新規）

Link とは異なる専用の選択肢機能です。

◆selopt (新規)

選択肢用条件初期化

属性
    normal  ボタンノーマル画像
    over    ボタンオーバー画像
    left    ボタン配置領域左上
    top     ボタン配置領域右上
    width   ボタン配置領域サイズ
    height  ボタン配置領域サイズ

◆seladd (新規)

選択肢を登録します

属性
  text    表示するテキスト
　storage 選択した場合にジャンプする先のファイル指定
  target  選択した場合にジャンプする先のラベル指定
  exp     選択した時に実行するコード
  eval    選択肢表示条件
  onceflag 一度きり表示用フラグ指定(自動的にONになる)

  変数処理などを行わせる場合は exp を、直接分岐する場合は
  storage/target を使ってください

◆select (新規)

  選択処理実行

  storage/target が指定してあった場合は、選択処理のあと、
  その先にジャンプします。exp の場合はそのまま [select] の
  次の行から継続実行になります。

属性
  storage   選択分岐のあと seldone コマンドで合流する先のファイル指定
  target    選択分岐のあと seldone コマンドで合流する先のラベル指定

◆seldone (新規)

  選択後合流処理
  seladd で足した選択肢で storage/target を指定した場合に、
　このコマンドがあると、select で指定した storage/target に合流します

◆mselinit (新規)

マップ選択肢を初期化します。登録された情報は消去されます。

◆mselbutton (新規)

マップ選択用のボタンを登録します

属性
    image       画像指定。
    width       画像横幅指定(省略可能)
    height      画像縦幅指定(省略可能)
    count       画像中のアニメパターン指定(heightと排他で省略可能)

    マップ選択用の画像は　
     縦方向：アニメパターン　
　　 横方向：normal over の順に並べる
　　といった形の画像にします。アニメパターン数を count で指定します。

◆mselpos (新規)

マップ選択用のボタンの配置位置を登録します

属性
    name        位置の名前
    left        X方向座標
    top         Y報告座標

複数の選択が同じ場所に指定された場合は、
座標位置を中心にして左右方向に配置されます。

◆mseladd (新規)

選択肢を登録します。

属性
  text    表示するターゲット (mselopt で登録したもの)
  pos     表示する位置 (mse で登録したもの)
　storage 選択した場合にジャンプする先のファイル指定
  target  選択した場合にジャンプする先のラベル指定
  exp     選択した時に実行するコード

◆mselopt (新規)

マップ選択肢用のオプションを指定します

属性
    interval        配置選択肢のアニメーションのインターバル
    buttonWidth     ボタンを複数配置するときのボタン間の幅
    enterse         enter 時 SE 指定
    leavese         leave 時 SE 指定
    clickse         click 時 SE 指定
    frame           背景画像指定
    frameKey
    frameColor
    frameOpacity

◆mselect (新規)

  選択処理実行

◆bradd (新規)

シーン内分岐を登録します。機能的には jump でくむのと等価です。
select 系と同じスタイルで記述するために準備されてます。

属性
  target  分岐する場合にジャンプする先のラベル指定
  exp     分岐した時に実行するコード
  eval    分岐条件

◆branch (新規)

  分岐実行

  storage/target が指定してあった場合は、選択処理のあと、
  その先にジャンプします。exp の場合はそのまま [select] の
  次の行から継続実行になります。

属性
  target    選択分岐のあと brdone コマンドで合流する先のラベル指定

◆brdone (新規)

  分岐後合流処理
  bradd での分岐の後、このコマンドがあると、
  branch で指定した target に合流します

◆next (新規)

機能的には jump と等価ですが既読カウンタのアップ処理を
含むので、基本はこちらを使ってください。
※jump前にラベルを配置すれば問題はありません

属性
　storage ジャンプする先のファイル指定
  target  ジャンプする先のラベル指定
  eval    分岐条件

◇シーン回想機能（新規）

「シーン回想」を実現するための補助機能です。

A: シナリオ中指定の場合

1. シーン回想したい部分を 
-------------------
*kaisouBegin番号
......
*kaisouEnd番号
-------------------
のラベルで囲んでおきます。

2. recollection 命令で no 指定でシーン回想を呼び出すことができます。

この方式の場合は、セーブデータを利用して回想処理を行います。
このため、セーブデータの不整合の影響をうけるので注意が必要です

B: 回想用シナリオを別途準備する場合

1. 回想用のシナリオを本来の本文とは別に準備します
   そのシナリオの末尾には endrecollection  命令をいれておきます
2. recoillection 命令で storage/target 指定でシーン回想シナリオを呼び出します

◆recollection (新規)

回想処理を呼び出す。 (kag.startRecollection(elm) と等価)
呼び出しに成功した場合に処理は戻ってこないので注意が必要です。

no での呼び出しが成功するためには *kaisouBegin番号　のラベルを
通過しておく必要ががあります。システムフラグの 
trail_シナリオ_*kaisouBegin番号を参照することで通過を確認できます。
この場合は、*kaisouEnd番号 のラベルで処理が終了します

no 指定でなく storage/target での指定も可能です。この場合は、
endrecollection 命令で回想を終了させることができます。

属性
    no 回想番号
    storage 回想用シナリオ
    target  回想用ターゲット
    doneStorage 回想終了後に呼び出されるシナリオ
    doneTarget  回想終了後に呼び出されるラベル


回想処理中は…
・kag.isRecollection が true になります
・栞の保存関連の処理が禁止されます
・常に既読扱いになります

◆endrecollection (新規)

回想処理を終了させます。
recollection で登録済みの終了処理に遷移します。

◆stoprecollection (新規)

回想処理を強制終了します。
回想状態が解除されます。

◆clearplaytime (新規)

プレイ時間情報を消去します。
プレイ時間は栞に保存され、kag.getBookMarkPlayTime(num) 
で取得することができます。

◇その他命令拡張

◆trace (拡張)

配列や辞書を渡した場合に個別の要素の情報が表示されます

◆beginskip (新規)

クリックされた場合に endskip まで強制スキップ処理します。
beginskip から endskip までのあいだにスキップ関連の
処理を基本的にいれないでください。誤動作する可能性があります。

※ジャンプなどで別シナリオに遷移した場合は強制解除されます
※beginskip は入れ子にすることができません。

◆endskip (新規)

特殊スキップモードの終了を示すタグです

● 特殊な仕様変更について

◇ askYesNo 関数の仕様変更

askYesNo 関係の挙動が大幅な仕様変更となっています。
KAG で独自に使用していた場合はコードを全面的に改定する
必要があるため注意してください。

従来のもの： 

  askYesNo(メッセージ, タイトル)

　ダイアログが処理が終わるまで TJS の実行がブロックされ、YES/NO の結果が
　返される

新規のもの：

  askYesNo(メッセージ, タイトル, yesFunc, noFunc, param, doneFunc);

  yesFunc  : YES のときに実行する処理
  noFunc   : NO の場合に実行する処理
  param    : それぞれのファンクションに渡すパラメータ
  doneFunc : yes の場合、no の場合いずれの場合にも実行される処理

  帰り値：なし
　　
　注意点：
　　ただちに実行復帰する「可能性」があるので、それを想定した
　　実装を行う必要があります。

◇ダイアログレイヤ拡張


◇squirrel拡張

squirrel スクリプトをKAGとは別にバックグラウンドでスレッド実行可能です

◆sq (新規)

squirrelスクリプトのスレッド実行。
指定された squirrel スクリプトをバックグラウンド実行します。
スクリプトに起動時引数として、kag と渡されたパラメータがそのまま引き渡されます。

属性
	name	スクリプト識別名
	storage	スクリプトファイル(.nut)

◆wsq (新規)

squirrelスクリプトの終了待ち

属性
	name	スクリプト識別名
	canskip	trueならクリックでキャンセル可能  デフォルト:false

◇モーション拡張

前景レイヤ
　image タグで、画像データとして *.psb を指定することでモーションを
　動画として表示できます。
  layopt タグで再生モーションの切り替えが可能です

メッセージレイヤ
　モーションをUIとして使うための専用拡張があります

◆motionload (新規)

現在のメッセージレイヤにモーションを読み込みます。

属性
	storage		モーションファイル名
	separate	モーション分離指定(default true)
	width		レイヤ横幅
	height		レイヤ縦幅
	left		レイヤ座標X
	top			レイヤ座標Y
	motionleft	モーション配置位置X(省略するとセンター)
	motiontop	モーション配置位置Y(省略するとセンター)

※motionopt のパラメータも合わせて指定可能です
※sync/wait でカレントに対する wmotion が呼び出されます

◆motionopt (新規)

現在のメッセージレイヤのモーションを制御します

属性
	stealthchara
	chara
	stealthmotion
	motion
	tickcount
	speed

※sync/wait でカレントに対する wmotion が呼び出されます

◆wmotion (新規)

指定されたレイヤのアクションの終了を待ちます。
指定を省略した場合は全レイヤのアクションの終了を待ちます。

属性
	layer	レイヤの指定(前景またはメッセージレイヤ)
	page	表裏の指定
	canskip	true(デフォルト) を指定するとクリックで待ちをスキップできます

● KAGEX の操作系

KAGEX ショートカット一覧 (基本的に KAG とおなじです）

 CONTROL        強制スキップ ※これのみ KAGEX で追加
 RETURN/SPACE   左クリックと等価
 ESCAPE 　      右クリックと等価（通常メッセージ消去）

 F 次の選択肢/未読まで進む
 B 前に戻る
 A 自動的に読み進める（ＡＵＴＯ起動）
 S 栞をはさむ（セーブ起動）
 L 栞をたどる（ロード起動）
 R または SHIFT+↑ メッセージ履歴表示

 TAB        ボタンフォーカス移動
 カーソル   ボタンフォーカス移動

●システムプロパティ拡張

MainWindow (ksg) に以下のような特殊なシステムパラメータが拡張されています

◆動作制御用変数

allskip     false: 既読のみスキップ true: 全てスキップ
afterauto   false: 選択肢でAUTO解除 true: 選択後もAUTO継続
afterskip   false: 選択肢でSKIP解除 true: 選択後もSKIP継続
nosewhenskip false: スキップ時にSEをならさない true: スキップ時でもSEをならす
             ※ワールド拡張でのみ有効

◆ボイス動作制御用変数

※これらは KAGEX 単体では意味をもちません。変数に値を格納しているだけです。
  WORLD 拡張のボイス機能が値として参照しています

voicecut    true: 次のボイス再生前に全ボイスを消去する
voicecutpage    true: voicecut の効果をページ終了後（次の演出より前）にする
        false: voicecut の効果を名前表示前にする
bgmdown     true: ボイス再生時にBGMの音量を下げる

◆コンビニエントプロパティ

textspeed       テキスト速度指定 0〜10　(10だと瞬間表示)
autospeed       自動再生待ち時間 0〜10
drawspeed       エフェクト系の描画速度調整 1.0:通常 0:瞬間
noeffect        drawspeed に対するコンビニエント指定 true/false で指定

wavevolume		マスターボリューム 0〜100
bgmenable       BGM が有効
bgmvolume       BGM のボリューム 0〜100
seenable        SE が有効
sevolume        SE のボリューム  0〜100
sysseenable		システムSEが有効
syssevolume		システムSEのボリューム 0〜100

◆ボイス関連プロパティ・メソッド

※これらは KAGEX 単体では意味をもちません。変数に値を格納しているだけです。
  WORLD 拡張のボイス機能が値として参照しています

voiceenable                 ボイスが有効
voicevolume                 ボイスのボリューム 0〜100
getVoiceOn(name)            指定された名前のキャラのボイスが有効かどうか
getVoiceVolume(name)        指定された名前のキャラのボイスのボリュームの取得
setVoiceVolume(name,vol)    指定された名前のキャラのボイスのボリュームの指定

bgvenable                   バックグラウンドボイスが有効
bgvvolume                   バックグラウンドボイスのボリューム 0〜100
getBGVVolume(name)          指定された名前のキャラのBGVのボリュームの取得

●自動ラベル処理について

◇概要

KAG での「保存」は、ユーザが明示的につけた「ラベル」単位で行われます。

参考：
  http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/SaveLoad.html

これは ADV 系のゲームにおいては保存箇所が制限されることになり、
かなりユーザにとって不便です。

KAGEX では、「自動ラベルモード」があり、これを有効にすると [p] 毎に
栞への保存が可能になります。ラインモードが有効な場合は仮想的な
[p] 毎でこれが有効になります。

あわせて既読管理も通常の単純なラベル単位ではなく、
ラベル＋ラベルからの行カウント単位になり、細かい制御が
行われるようになります。

以下の変数を指定します。Config.tjs で指定可能です

 kag.autoLabelMode      自動ラベルモード。true で有効
 kag.autoLabelType      自動ラベルモードの制御種別指定 0:call 方式 1:行番号方式
 
◇call 方式

　古いKAGEX での autoLabelMode です。
  [p] 毎にcall 処理を呼び出すことでラベルづけする方法です。

　このモードで記録された call から戻る処理の関係で、復帰処理の
　チェックが厳しく、シナリオデータが書き換わった場合の保存データの
　復帰がラベルよりも保障されづらくなります。ご注意ください。

◇行番号方式

  新しい方式です。KAG のロード処理と実行系に手をいれることで、
　近傍のラベルおよびそこからの行カウントでのスキップ処理で
　情報を記録しています。

　・call を介してないので情報がずれたときも復帰できる可能性が高い
　・スクリプト作業時にファイル改変によるエラー発生がおこらない
　
　などの特徴があります。基本的には新規ではこれを利用することを
　お勧めします。

　なお、このモードを使う場合は、ラベルとしてのセーブは autoLabelMode = false
  の場合と同じになるので、シナリオファイル中の要所に保存可能ラベルを
　手動でうつことで、デバッグメニューの「自動ラベルセーブ」による
　「前のラベルに戻る」「次のラベルにすすむ」を利用することが可能です。

●ボイスパース機能について

◇概要

ラインモード拡張の応用で、ボイス番号割り当てを、シナリオの流れによるの
ではなく、ファイル中の絶対位置に応じて処理できるようにすることができます。
シナリオ中で分岐してもファイル番号指定が変わらないというメリットがあります。

◇指定方法

[parse voice=1]

この命令以降のコマンドをすべて先行でパース処理し、
専用のボイス処理を埋め込みます。ボイスの扱いが異なります。

・キャラクタのボイス指定機能は常に上書きされるため無意味になります
・以下の特殊なボイス指定を使います

// ボイス番号指定
[voice name=キャラ名 voice=123]

// ボイス完全停止（負の数を指定）
[voice name=キャラ名 voice=-1]

// ボイス単発無視
[voice name=キャラ名 ignore]

// ボイス単発無視差し替え
[voice name=キャラ名 ignore replace]

// ボイス単発わりこみ
[voice name=キャラ名 voice=VOICE123]

// ボイス単発わりこみ（数値の場合）
[voice name=キャラ名 voice=123 once]

// ボイス単発さしかえ
[voice name=キャラ名 voice=VOICE123 replace]

// ボイス単発わりこみ（数値の場合）
[voice name=キャラ名 voice=123 replace]

●デバッグメニュー拡張

KAGEX ではデバッグメニューが従来の KAG から拡張されています

◇デバッグレベル

コンソールに表示されるログの出力レベルを制御します
なし/シンプル/詳細 から選べます

◇デバッグ窓表示

画面下側に

・現在実行中の　行番号:シナリオ名 ラベル
・実行中の行の内容

が常に表示されるようになります。

◇KAGEXログモード

有効にすると、KAGEX ワールド拡張の素材関係のエラーログが、
全部別々に記録されるようになります。

記録されたログは、「KAGEXログを出力する」で、デバッグログフォルダ
（通常 savedata 以下）にそれぞれ出力されます。
素材関係の動作チェックに利用できます
