ファンクション＆オブジェクト

## DEBUG(text)

デバッグコンソールに引数textを表示できる（コンソール表示はF9）

初めてこれを使った時は自動でコンソールが表示される

変数を変動させている時に中身を確認することが出来るので便利

## SetGlobal(your\_variable\_name, value)

引数で指定したグローバル変数を設定できる

設定後はGetGlobalで取ってこれる

どこのスクリプトからでも取得可能

## GetGlobal(your\_variable\_name)

引数で指定したグローバル変数を取得できる

SetGlobalで設定されていないとエラーがでるので注意

## BattleDialog(list\_of\_strings)

引数で指定した文字列をダイアログとして表示できる

これが表示された後、敵の会話表示に入る

文字を入れる際は必ず{}で囲むこと

例：BattleDialog({"test"})

また、変数aの中身を表示したいといった場合は

BattleDialog({"a="..a})

## State(state\_to\_go\_to)

ゲームの状態を変更できる

これを使うといきなり敵の攻撃から始めたり会話から始めたりすることができる

* ACTIONSELECT - 戦闘メニュー選択画面（FIGHT/ACT/ITEM/MERCY選択画面）
* ENEMYDIALOGUE - 敵の会話開始（会話設定をしていない場合はrandomdialogueから表示される）
* DEFENDING - 敵の攻撃（waveを設定してから使うように！）
* DONE - ゲームが終了されてMOD選択画面（メニュー画面）に戻る

テキストコマンドのfuncと併用すればダイアログから変更することも可能

例：currentdialog = {"text", "[func:State,ACTIONSELECT]"}

※以下の状態も使えないことはないけどオススメはしないとのこと

ATTACKING, ENEMYSELECT, ACTMENU, ITEMMENU, MERCYMENU, RESETTING, DIALOGRESULT

## SetSprite(filename)

Monsterのみ

モンスターの画像をSpritesフォルダからfilenameで指定して変更・設定できる

.pngの前の名前を入力することで使える

[func]コマンドを使えば話している最中に顔を変更する等も可能

## SetActive(active)

Monsterのみ

trueかfalseのみを設定でき、falseにすることで画面には表示されるが選択が出来ない状態となる

これを使って仲間を呼んだ的なこともできる

true状態のモンスターがいなくなると戦闘は終了する

全員falseにしてしまうとエラーが起こる

## Kill()

Monsterのみ

~~エターナルフォースブリザード~~

~~相手は死ぬ~~

これを入力すると敵が死ぬ

OnDeath()を使った場合はこれを使わないと死なないので注意

## Spare()

Monsterのみ

Spareで終了する状態にSpareした時と同じ

## RandomEncounterText()

Encounterのみ

モンスターのcomments変数からランダムにダイアログを設定する

例

`function` `DefenseEnding() --This built-in function fires after the defense round ends.`

`encountertext = RandomEncounterText()`

`end`

## EndWave()

Waveのみ

敵の攻撃を終了させる

## Playerオブジェクト

プレイヤーの情報を取得することができる

* Player.sprite - プレイヤーのソウルの絵
* Player.hp - プレイヤーのHP
* Player.name - プレイヤーの名前　特に設定がない場合はランダム
* Player.lv - プレイヤーの~~LOVE~~レベル　1でHP20/ATK10　1上げる毎にHP4/ATK2増える　途中でレベルを増やしても体力が回復することはない
* Player.x (readonly) - arenaの中心からプレイヤーのX軸（横）位置を取得
* Player.y (readonly) - arenaの中心からプレイヤーのY軸（縦）位置を取得
* Player.absx (readonly) - 画面左下からプレイヤーのX軸（横）位置を取得
* Player.absy (readonly) - 画面左下からプレイヤーのY軸（縦）位置を取得
* Player.isHurting (readonly) - プレイヤーがダメージを受けて点滅している状態かどうかを取得　点滅している状態はtrue
* Player.isMoving (readonly) - 敵の攻撃時にプレイヤーが移動している状態かどうか取得　動いている場合はtrue
* Player.Hurt(damage) - プレイヤーにダメージを与える　デフォルトの無敵時間
* Player.Hurt(damage, invul\_time) - プレイヤーにダメージを与える　invul\_timeの無敵時間（秒）
* Player.Heal(value) - プレイヤーのHP回復
* Player.SetControlOverride(boolean) - 敵の攻撃時のみ　trueかfalseのみで設定　trueの状態にするとプレイヤーのソウルが操作できなくなる
* Player.MoveTo(x, y, ignoreWalls) - arenaを中心に指定した位置にプレイヤーを移動させる　ignoreWallsはtrueかfalseのみ指定可能　falseの場合はarenaの外に出ないように出来る　trueで外に出せるがPlayer.SetControlOverride(true)を使わないと外に保持できない
* Player.MoveToAbs(x, y, ignoreWalls) - 画面左下から指定した位置にプレイヤーを移動させる　ignoreWallsはtrueかfalseのみ指定可能　falseの場合はarenaの外に出ないように出来る　trueで外に出せるがPlayer.SetControlOverride(true)を使わないと外に保持できない

## Scriptオブジェクト (もしくはEncounterオブジェクト) [varies]

他のスクリプトの変数を設定したりファンクションをしたりできる

* script.GetVar("variable\_name") - variable\_nameの中身を取得
* script["variable\_name"] - 上と同じ.
* script.SetVar("variable\_name", value) - variable\_nameにvalueを設定
* script["variable\_name"] = value - 上と同じ.
* script.Call("function\_name") - function\_nameのファンクションを使用

例：enemies[1].SetVar('currentdialogue', {"It's\nworking."})　--敵1の会話でIt's\nworking.と表示させる

enemies[1].Call("Kill")　-- 敵1にKill()を使用

## Audioオブジェクト

ゲーム内の音楽や効果音を制御できる

* Audio.Play() - LoadFileで読み込んだ曲を再生（MOD起動時はmusic変数に入れた曲が自動で再生される）
* Audio.Stop() - 曲を止める　MOD起動時に曲を流したくないならEncounterStarting()で使用
* Audio.Pause() - 曲を一時停止する
* Audio.Unpause() - 一時停止した所から再生する
* Audio.Volume(value) - 音量を設定 　0.0でミュート 1.0が最大　デフォルトは0.75
* Audio.Pitch(value) - 曲の速さを変える　デフォルトは1.0 2.0で2倍速 マイナス値で逆再生 値は-3.0～3.0まで
* Audio.LoadFile(filename) - 指定したfilenameの.oggか.wavをロードし自動で再生する　すぐに再生したくない場合はAudio.Stop()を使うこと
* Audio.PlaySound(filename) - 効果音を鳴らす　.oggか.wavで用意すること
* Audio.playtime - 現在の再生位置を秒数で取得する.
* Audio.totaltime - 曲の長さを秒数で取得する

ちなみに文章の途中で効果音を鳴らしたり曲を止めたりする場合は独自のファンクションを作成して[func]を使うことで出来る

例

`currentdialogue = {"but then I realized...\n[w:30][func:drama]the butler did it!!!"}`

`function` `drama()`

`Audio.Stop()`

`Audio.PlaySound(dramatic_sound_effect)`

`end`

## Inputオブジェクト

入力ステータスを取得できる　数値が返ってくるので使う際は注意

0：押していない状態

1：押した瞬間

2：押している状態

-1：離した瞬間

* Input.Confirm - Z もしくは Enterキー
* Input.Cancel - X もしくは 左のShiftキー
* Input.Menu - C もしくは 左のControlキー
* Input.Up - ↑キー
* Input.Down - ↓キー
* Input.Left - ←キー
* Input.Right - →キー

UIに使わないようにとのこと（右押すとUIが動く等をしないようにすれば良いという意味だと思われます）

## Timeオブジェクト

時間に関係することを取得できる

* Time.time - ゲームが開始してからの秒数を取得　特定の時間にイベントを起こしたい場合は「変数 = Time.time」と数え始める時間を取得しておき、変数 - Time.timeで差を出して時間を計算させる
* Time.dt - 画面の更新時間を取得　基本的に1秒しか返ってこないので秒ごとに動きをさせたい時便利　unitaleの場合は基本60FPSなので60回の更新に1回だけ動くような形を作れる
* Time.mult - 全てのフレームレート（FPS）間で均等に動かす際に使用　Time.dtを毎フレームやるようにした物と考えれば分かりやすい？　例えば60FPSと30FPSのゲームで毎フレーム1を足す処理がある場合、1秒経つと60FPSは60 30FPSは30だがこれを一緒に使用することで両方共60にすることができる

## Arenaオブジェクト

Arenaの情報を取得したりサイズを変更したりできる

* Arena.width (readonly) - 広がりきった状態のArenaの横幅をピクセル単位で取得　左右の端を知りたい場合は2で割ればいい
* Arena.height (readonly) - 広がりきった状態のArenaの縦幅をピクセル単位で取得　上下の端を知りたい場合は2で割ればいい
* Arena.currentwidth (readonly) - Arenaの現在の横幅をピクセル単位で取得　広がっている最中も取得可能
* Arena.currentheight (readonly) - Arenaの現在の縦幅をピクセル単位で取得　広がっている最中も取得可能
* Arena.Resize(width, height) - Arenaのサイズを変更できる　アニメーション有り
* Arena.ResizeImmediate(width, height) - Arenaのサイズを変更できる　アニメーション無し