トーク定義

湊のスクリプトの基本単位はトークです。 イベント名と処理ブロックを => でつなげて書きます。

基本的な書き方

OnBoot => {
    湊: こんにちは。
}

OnBoot はSSPがゴーストを起動したときに呼ばれるイベントです。 {} の中に処理を書きます。

同じイベントを複数定義する

同じイベント名で複数のトークを定義できます。 ランダムに選ばれて実行されます。

OnRandomTalk => {
    湊: 今日もいい天気ですね。
}

OnRandomTalk => {
    湊: 何か用ですか?
}

OnRandomTalk => {
    湊: ……。
}

ドット付きのイベント名

SSPのイベントには、OnUpdate.OnDownloadBegin のようにドットを含むIDがあります。 湊では、イベント名をそのままドット付きで書けます。

OnUpdate.OnDownloadBegin => {
    湊: 更新ファイルをダウンロードしています。
}

OnUpdate.OnMD5CompareBegin => {
    湊: ファイルを確認しています。
}

条件フィルタ(if(...))も、ドット無しのトークと同じように付けられます。

OnUpdate.OnDownloadBegin if(save.verbose) => {
    湊: 少し時間がかかるかもしれません。
}

ドット付きのトークは call OnUpdate.OnDownloadBegin のように呼び出すこともできます。 ドット付きにできるのはトーク名だけです。func の名前にはドットを使えません。

主なイベント一覧

イベント名タイミング
OnBoot起動時
OnClose終了時
OnRandomTalk定期的なランダムトーク、およびユーザーが手動でトークを要求したとき
OnMouseDoubleClickダブルクリック時
OnChoiceSelectOn で始まらないIDの選択肢が選ばれたとき(選択肢とウェイト)

SSPが送るイベントはSSPのドキュメントを参照してください。

湊が読み替える・内部で使うイベント

次の3つはSSPから届いたあと湊が内部で処理するため、OnAITalk => { ... }、 OnMinuteChange => { ... }、OnGotVirtualTime => { ... } と書いても呼ばれません。

SSPのイベント湊での扱い
OnAITalkOnRandomTalk に読み替えて実行されます。手動トークも定期トークも OnRandomTalk => { ... } に書いてください
OnMinuteChange湊が時刻の取得とランダムトークの発火判定に内部で使います。間隔が経過していて、かつSSPがトークを再生できる状態(Reference3 が 1)であれば OnRandomTalk が実行されます。OnMinuteChange 自体を台本で受け取ることはできません
OnGotVirtualTime湊が現在時刻(SSPの仮想時刻)を受け取るために内部で使います。受け取った時刻は now に反映されます。台本で受け取ることはできません

湊は、OnBoot と OnMinuteChange への応答の末尾に、SSPへ時刻を問い合わせる \![get,property,OnGotVirtualTime,...] を自動で付け足します。 そのSSPからの返事が OnGotVirtualTime です。台本に書く必要はありません。

SSPのリソース要求(version / craftman)

SSPは、イベントのほかに、On で始まらないID(リソース)でSHIORIに問い合わせることがあります。 湊は、次の2つにだけ、台本とは関係なく固定の値で答えます。

リソースID湊の応答
version湊のバージョン(例: 0.1.0)
craftmanmizuki

これらはゴーストの読み込み前後でも答えます。台本で version => { ... } のように書いても、値を変えることはできません。 それ以外の On で始まらないリソース(homeurl や sakura.name など)には、何も返しません(204)。