台本、と言うかゴースト間コミュ

少しだけゴースト仕様について語っちゃおう?
月夜のおとぎばなし⇔白夜の月には、ちょっと特殊なコミュニケートが実装されてるわけで。知ってる人も多いかもしれないけど、ここはとにかく「バグが多い」。へぷー。
バグはフラグ管理がヘボイというのもあるけど、コミュ失敗と言う事態が多いことにも起因してる、かも、とか。
例えば月夜のおとぎばなし⇔白昼の猫でも同様の件がちらほらと。「おねえちゃんのおさがり」イベントとかね。
で、解決策とかを考えてみるわけですよ。

1 台本コミュニケート

コミュニケートの仕様を理解してなかった……、それこそ、欠片も。何でか知らないけど、どうもあたしはゴースト作成関連になるとせっかく持ってる(?)プログラム系の知識を捨ててしまうらしい。何でやねん。
まぁ細かい話しはさっぴくとして、コミュを通して変数値を受け渡せるなら上の「コミュ未発動」が防げる。いやぁ、これは盲点だったわ。知っとけあたし。
まだテストした程度で実装まではやってないけど、これをうまく使うと「後章モード」がかなり楽になってバグを減らせるかも。
台本コミュ上じゃ載ってないけど、値が複数渡せるなら相手側のフラグ影響とか出来ると思うし……。

2 強制トーク送信

変な名前……いや、これあたしが勝手に呼んでるだけだからね?w
ぶっちゃけ、片方のゴーストからDirectSSTPのSend(Notifyが正しいのかなぁ)でトークを送りつけてやる。コミュじゃなくてね。
これの特徴は、コミュニケートと違い「処理が相手に渡されない」こと。実際には渡されてるんだろうけど、インターフェイスとして。
コミュニケートは前提として「ゴーストAのトーク→ゴーストBのトーク→ゴーストAのトーク」、と言う風に相互に処理が受け渡される。まぁ、じゃなきゃコミュとは言わないしw
Sendでトークを送りつける方法だと、処理はゴーストAにあり続ける。これを使って別ゴーストを操作する、と言うやりかた。

上の二つの差

何のためにそんなこと考えてるのよと言われれば、勿論「一つのトークの中に、他ゴーストのキャラを交えて普通に会話させるため」。主に後章モードで実装してる内容だけど……、あれ、ぶっちゃけメンテがやたら大変で他に実装しようって気にならないんだもん。
ローカルでちまちまテストしてた内容だけど(handutilを使わせてもらいました)、朝妃が喋る、月夜(黒)が反応する、あーさまが茶々入れる、月夜(黒)が受ける、るーくんが突っ込みいれる……と、台詞が入り混じれる。
これをコミュでやろうとすると、
 ・朝靄の遠望:朝妃が喋る
 ・白夜の月:朝妃の台詞を拾って月夜(黒)が喋る
 ・朝靄の遠望:月夜(黒)の台詞を拾ってあーさまが喋る
 ・白夜の月:あーさまの台詞を拾って月夜(黒)が喋る
 ・朝靄の遠望:月夜(黒)の台詞を拾ってるーくんが喋る
……と、まぁ何回も往復しなきゃいけない。2のトーク送信だと、一応それは避けられて、しかもひとつのゴースト上でのトークのように振舞える。何よりreplaceとか使えば辞書の記述もかなり普通っぽくかけるしね。
ただ、問題も多い。
トーク中で発動させいたいわけだからSyncを使うのは前提として(里々前提ね?)、トークを受け取ったほうはその場で喋り始める。だけど、当たり前だけど「処理が渡らない」から送信元はその渡しちゃったトークが途中なのか終わったのかわからない。
しかも里々だとトークのウェイトが自動で挿入されるんで、トーク分のウェイトを入れるのはちょっと面倒なんだよね。さらっとウェイトカウント(文字数+内部のウェイトを加算)組み立ててみたけど、何かイマイチ。でもそれしかないのかなぁ……。

結局のところ台本コミュの方が楽かもとか。うーん。
やっぱり変数渡して「相手の発動トークを指定する」が一番やりやすいのかなぁ……。