Skip to content

Instantly share code, notes, and snippets.

@nikolat
Last active December 11, 2022 03:23
Show Gist options
  • Save nikolat/f780a3ca32475343043d3391f9d9f401 to your computer and use it in GitHub Desktop.
Save nikolat/f780a3ca32475343043d3391f9d9f401 to your computer and use it in GitHub Desktop.
伺的 Advent Calendar 2022 12月10日の記事

追加shellでghostをハックする

伺的 Advent Calendar 2022 10日の記事です。
昨日の小戸らでくさんの記事に続きましてDonがお送りします。

この記事で言いたいこと

テキサスホールデムって何?

ゴースト「卓上誘技」で遊べるゲームです。

私も初めて知ったゲームですが10分もあれば覚えられる程度の簡易なルールでしたのでみなさんもやってみましょう。
運よりも駆け引きが重要なゲームでなかなか奥が深くて楽しいです。

もし気に入ったらYAYA、華和梨、里々でゲームに参加するテンプレート辞書を作ってみたのでお使いください。

IMAGE01

MAKOTOを使った追加shellとは?

MAKOTOって何?

太古のトランスレータの仕様ですが、追加shellで利用できるためその価値が見直されていたりします。
追加shell作者がghost側の挙動に干渉できる、という点で画期的な仕様である思います。

ゴースト「卓上誘技」用追加shell

卓上誘技で遊んでいて、「トランプのカード画像を表示するとカッコイイのでは?」と思ったので表示させようと考えました。
そこでMAKOTOを使ってSakuraScriptを置換することでカード画像を表示する追加shellを作ることにしました。
個人的にYAYAが使い慣れているのでYAYA as MAKOTOを採用しました。

卓上誘技はballoonをshellに重ねてカードを文字列で表示する手法を取っているので逆にやり易いです。
難解なsurfaces.txtを書く必要がありません。
\_b[ファイルパス]を挿入するようmakoto.lstを編集します。

'♠A','\_b[..\..\shell\cultural-festival\cards\s01.png,inline,opaque]♠A'
'♠2','\_b[..\..\shell\cultural-festival\cards\s02.png,inline,opaque]♠2'
'♠3','\_b[..\..\shell\cultural-festival\cards\s03.png,inline,opaque]♠3'
...

最初は元々の記号+数字は消していましたが、実際にプレイしてみると画像が小さすぎて判別できないことがわかりました。なので記号+数字を残しています。
完成した追加shellがこちらです。

IMAGE02

ゴースト「simultaneous-interpreter」用追加シェル

「卓上誘技」はsurfaces.txtが無いghostですが、「文化祭」もsurfaces.txtの無い追加shellとなりました。かなり特殊なパターンと思われます。
卓上誘技はSakuraScriptを置換するだけでshellの見た目を変えることができましたが、通常はshellとballoonは分離しています。
追加shellなら見た目をガッツリ変えてアニメーションをゴテゴテ付けたいでしょう。元々存在しないアニメーションを任意のタイミングで発動したりしたいはずです。
そういうことをする追加shellのサンプルとしてゴースト「simultaneous-interpreter」用追加シェルを公開したいと思います。

IMAGE03

makoto.lstは以下のようになっています。

//トーク開始
'\\0','\0\i[90]'
//トーク終了
'\\e','\i[99]\e'
//起動
'\\0\\i\[90\]\\s\[0\]\\i\[99\]\\e','\0\s[0]\i[70]\e'
//終了
'\\-\\i\[99\]\\e','\0\i[80]\-\e'
//他のゴーストへ交代
'\\i\[99\]\\e\\i\[99\]\\e','\0\i[80]\_w[500]\e'

元々のghostの構成がシンプルでSakuraScriptから状況が推測し易いのでSHIORIイベントそのものが取得できなくても狙ったタイミングで任意のアニメーションを発動させられます。

  • \i[70]: 起動時アニメーション
  • \i[80]: 終了時アニメーション
  • \i[90]: トーク時アニメーション(ループ)
  • \i[99]: トーク時アニメーションストップ

上記アニメーションはもちろんsurfaces.txtに定義してあります。
MAKOTOも頑張れは色々できるんだぞ、ということを示せたかと思います。

※今回はYAYA as MAKOTOを使用しましたが、やっていることはSakuraScriptを置換するだけなので標準的なMAKOTOでも同じことが可能です。

ライセンス

この記事はCC0 1.0 Universalの下で公開するものとします。

次回予告

明日11日はろすえんさんが担当されます。よろしくお願いします。→記事

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment