口上作成について

必要なモノ

・Succubus Rhapsodia
・サクラエディタ(.rbファイルを編集できるものならなんでも可)
↑Ruby用の構文ハイライトを適用したい場合はこちら
構文ハイライトってなんぞ?って人への説明
・愛と根気と適度な休眠

作成に際して

最初に、Modフォルダ内にある”羊のメモ”を良く読んでおくこと。
特に口上記述用タグのとこ。

+  羊のメモ口上用タグ抜き出し

口上製作仕様書

平原と丘と檻MODに関する口上製作仕様書はこちら。(※2018/11/07更新)

各種ファイル説明

口上ファイルは\Succubus Rhapsodia\System\talkの中にあるので、そこから改変したいものをコピーして、\Succubus Rhapsodia\Mod\Mod_Talkフォルダに貼り付けて書き換えると良いです。あとでエラー起こした時に泣きます。

改変したいキャラクターのフォルダを開くと山のようにファイルがあると思います。
テキストファイル名にキャラクター名と性格、色(OFEか否か)が書いてあります。

C_BattleEvent.rb(ベッドイン時や空腹戦闘中、契約時など)
C_MapChat.rb(マップでZキーなどを使った時)
C_MapEvent.rb(精の献上、空腹戦闘開始など)
C_Talk.rb(戦闘中にスキル”トーク”を使った時の反応)
F_Attack.rb(戦闘中に追撃が発動した時)
F_Attack_bedin.rb(ホームのベッドでの戦闘中に追撃が発動した時)
F_Crisis.rb(クライシスに状態変化した時)
F_Ecstasy.rb(相手が絶頂した時)
F_Ecstasy_Hold.rb(ホールドスキル中に絶頂した時)
F_Ecstasy_Self.rb(絶頂させられた時)
F_Resist_hold.rb(ホールドスキルが発動した時)
F_Resist_undress.rb(服を脱がすスキルが発動した時)
M_Attack.rb
M_Attack_bedin.rb
M_Crisis.rb
M_Ecstasy.rb
M_Ecstasy_Hold.rb
M_Ecstasy_Self.rb
M_Resist_hold.rb
M_Resist_undress.rb

F_は女(夢魔)に対しての反応、M_は男(ロウラット)に対しての反応になります。

羊のメモに載っていなかった情報

+  ランダム表現タグの中身
+  ゲーム内での基本的な表現
+  性格ごとに口上書き換えるのめんどいし、コピペしちゃおうって人への注意点

制作するときのポイント

・サキュバス等の既に完成されているデータと比較しつつ作業をすると、色々と楽
・手間がかかるけど、一つのファイルを完成させる度に起動テストをしてみる
↑一気にまとめて作成した場合、SyntaxErrorが出た時に大変
・SyntaxError時はセリフをきちんと””で囲んでいるか、when 1等の条件式を間違えて消していないかなどを確認してみる。この時元のデータがあると楽。
・”大切な人”とか”寵愛”のところは完成度をより求めないかぎりはまるまるコピーで良いかも。
・attackとattack_bedinとかところどころコピーが効く。いちいち全部書いてるとすごい手間かかっちゃう。
・改行とか♡とかをいちいち一つずつ\nとか書くのは面倒だから、ユーザー辞書に登録するなり、一旦そのまま♡、とか○、とかに置き換えて最後に置換するって手もある。

文章が長すぎる場合などは、

#highlight(ruby){{
tx["tx1"] = "一文目"
tx["tx2"] = "二文目"
}}
のように記述すれば、会話ウィンドウを二回に分けて表示することができます。

同様の条件でもランダムで台詞を変化させたい場合は

#highlight(ruby){{
tx["tx1"] = "パターンA"
tx["tx1"] = "パターンB" if $game_variables[17] > 60
}}
のように記述することで可能です。
(上記の場合は60%でパターンA、40%でパターンBの台詞が表示されます)

一例

サキュバスのM_Attack.rbの最初の方の文章を例にいくつか説明を致します。

+  基礎口上

基礎口上とは、後に出てくる tx["tx1"]="" などの、口上が設定されていない場合に使われるものです。出来る限り、どこの部位を攻めている等ではなく、応用が効くようなセリフにすることをおすすめします。

#highlight(ruby){{
tx["tx1"] = "「くすくす……抵抗しないのね。\n それとも……期待してたのかしら?\\H」"
tx["tx1"] = "「くすくす……♪\n #{myname}のカラダ、しっかり味わってね……\\H」" if $game_variables[17] > 50 #パターンB
}}
最初の2行は、「お互いのステータスが通常時」で「未設定口上を参照」の追撃時に用いられます。
if $game_variables[17] > 50 #パターンB という記述に関しては上のほうをご確認ください。

#highlight(ruby){{
# tx["tx1"] = "" if $msg.t_enemy.crisis? #自分がクライシス
}}
3行目のこの文章は「サキュバスがクライシス状態」で、「未設定口上を参照」されたときに使われるセリフです。しかし、この場合は行の最初に#マークが使われているため、読み込まれません。よってサキュバスがクライシスの時に未設定口上が参照された場合は、上の通常時と同じものが使用されます。多分。

#highlight(ruby){{
tx["tx1"] = "「ふふっ……気に入ってもらえてるようね\\H\n もっと自分に素直になっていいのよ……\\H」" if $msg.t_target.crisis? #対象がクライシス
tx["tx1"] = "「うふふっ……気持ちいい?\n もっと#{myname}に溺れて……\\H」" if $msg.t_target.crisis? and $game_variables[17] > 35 #対象がクライシス・パターンB
tx["tx1"] = "「ふふっ……気に入ってもらえてるようね\\H\n もっと自分に素直になっていいのよ……\\H」" if $msg.t_target.crisis? and $game_variables[17] > 70 #対象がクライシス・パターンC
}}

こちらも最初の2行と同じように、$game_variables[17]を使って文章が複数設定されていますが、今回は2つではなく3つに分けられています。おそらく、このように>○の数字を調整することで、最大99通りまで分けることが出来ます。(未検証+出来たとしても読み込みが重くなりそう)
また、「対象がクライシス」という条件と、「乱数が○以下」という2つの条件を一度に設定する場合、 if $msg.t_target.crisis? と if $game_variables[17] > ○ を重ねるのではなく、 if $msg.t_target.crisis? and $game_variables[17] > ○というように記述しましょう。

#highlight(ruby){{
#格納
ms.push(tx)
#==================================================================================================================
# ☆事前設定☆
#空ハッシュ挿入
tx={}
case $msg.at_type
}}

ここの文章については、理解できていない人は一切手を付けないようにしましょう。読み込み時の設定等を行っています。たぶん。

+  キス

基本的には基礎口上のところと一緒ですが、#○○等の説明がついてません。多分つけ忘れだと思います。
こういう場合は、文章最後の条件式を見比べながら、どの状態を指しているのか確認しましょう。
例えば「キス」で「サキュバスがクライシス」の場合は

#highlight(ruby){{
tx["tx1"] = "「ちゅっ…んっ……れろぉ……\\H\n うふっ……すっかり蕩けちゃって…可愛い\\H」" if $msg.t_enemy.crisis?
tx["tx1"] = "「…ちゅっ…ちゅぱっ…んっ……\\H\n ふふ、もっと蕩けさせてあげる……\\H」" if $msg.t_enemy.crisis? and $game_variables[17] > 50 #パターンB
}}
のどちらかになります。

+  手攻め

この場合、下4行は行頭に#がつけられているため、読み込まれません。そのため、手攻めの際は最初の2行のみが読み込まれます。自分で下4行を記述した場合は行頭の#を消しましょう。

#highlight(ruby){{
tx["tx1"] = ""
tx["tx1"] = "" unless $msg.t_target.nude? # 対象が着衣状態の時
}}

そして、最初の2行ですがセリフが一切記述されていません。
この場合、セリフは一番最初に設定した基礎口上から状況に応じて使用されます。
例えば「手攻め」で「対象が絶頂中」の場合は

#highlight(ruby){{
tx["tx1"] = "「もう何も考えられないかしら……?\n もっと#{myname}に溺れて……\\H」" if $msg.t_target.weaken? #対象が絶頂中
}}
が使用されます。

+  ホールドに関して

Ecstasy口上の"怒"について

Ecstasy口上にはif $msg.t_enemy.ecstasy_emotion == "怒"という表現が文末についていることがあります。
これらは夢魔が絶頂する、させる時にどのような感情を持つか?という分岐で、スクリプトTalk_Sys Baseによって決められており、性格、種族によって傾向が変わります。

+  絶頂時感情の傾向

例:"虚勢"の"ワーウルフ"の場合、"虚勢"なので"怒"が3つ、"喜"が1つ配置され、"ワーウルフ"なので"喜"が1つ、"怒"が5つ配置されます。
この中からランダムで絶頂時の感情が選ばれるので、"虚勢"の"ワーウルフ"は10回中2回は"喜"、8回は"怒"となります。

先述のif $game_variables[17] >XX でも確率での分岐は可能ですが、これを使う利点は
1.夢魔毎にすでに設定されているので、XXの割合を考える必要がない。
2.ホールドしているアクターが他の夢魔に絶頂させられる際、感情によって地の分が変わるので、それに連動した口上を作れる。
の二つです。

2について例を出すと、その夢魔がアクセプト状態の主人公が別の夢魔に絶頂させられる際、"喜"なら地の文は「#{coop_leader}に微笑み」"怒"なら「#{coop_leader}に負けじと」のような文が表示されますので、"喜"ならその夢魔と協調するような、"怒"ならその夢魔に対抗するような口上にすると、よりよいものになるかと思います。

相手の胸のサイズや年齢によってのセリフ変更

ミミックのF_Attackを開くと

#highlight(ruby){{
tx["tx1"] = "「んふふ、揉み応え充分って感じですねぇ♪\n なんだかずっと\n 揉んでいたくなっちゃいますよぉ\\H」" if $data_SDB[$msg.t_target.class_id].bust_size >= 4
tx["tx1"] = "「おっぱいをおっきくするには\n マッサージするのがいいらしいですよ?\n んふふ、#{myname}がお手伝いしてあげますねぇ\\H」" if $data_SDB[$msg.t_target.class_id].bust_size <= 2
}}
といった記述があるのがわかります。
これは、相手の胸のサイズによって応じたセリフを用いる、というものです。
各キャラクターごとに固有の胸のサイズと、年齢の数値を持っています。
胸のサイズを利用する場合は $data_SDB[$msg.t_target.class_id].bust_size <= ○(<=が付いているのでこのサイズ以下、ということになります)
年齢を利用する場合は $data_SDB[$msg.t_target.class_id].years_type <= ○
となります。

+  各キャラクターの胸のサイズと年齢

ちなみに、
・years_type:目安 1:12以下, 2:15以下, 3:20以下, 4:29以下, 5:30以上
・bust_size :目安 1:A以下, 2:B, 3:C, 4:D, 5:E以上
だそうです。

各キャラクターの一人称、二人称変更

・サキュバスの例
キャラクターの一人称、二人称は全てSuccubus_Rhapsodia\System\talk\00_System内のBase_○○.rbで決められています。
今回はサキュバスなので、Base_10を開きます。

+  Base_10

対味方戦闘時でないとき、というのがエネミーとして出てきた時。対味方戦の場合、というのがベッドの時になります。

改めて見てみると対味方戦闘時出ない場合のところに
@target = "キミ" #主人公への二人称
という記述があるのがわかると思います。これはそのまま、戦闘時の主人公の呼び方になります。
主人公の呼び方を「君」にしたい場合は @target = "キミ" #主人公への二人称 から @target = "君" #主人公への二人称 に書き換えます。

そして一人称ですが、ここには一切の記載がありません。そこで、自分で付け足しましょう。今回は一人称を「アタシ」にさせようと思います。
先ほど書き換えたところの上の行にでも
@myname = "アタシ"
と書き足して下さい。これで、#{myname}を読み上げる時に「アタシ」と言うようになります。

特殊な記法として、"夢魔名""主人公名"はそれぞれその夢魔の名前、主人公の名前に置換されます。
例えば主人公の名前がロウラットの時、@target = "主人公名様"とすると、その夢魔は主人公のことを"ロウラット様"と呼ぶようになります。

これで、敵対戦闘時の一人称及び二人称の書き換えが終了しました。
次にベッドでの呼称を書き換えようと思います。
こちらには、一切記載がないので同じく書き足すことになります。

#highlight(ruby){{
#★対味方戦の場合、パートナー夢魔の呼称のみを決める
else
#▼会話対象が主人公の場合
if $msg.t_target == $game_actors[101]
#パートナーが存在する場合別途設定
}}
から

#highlight(ruby){{
#★対味方戦の場合、パートナー夢魔の呼称のみを決める
else
#▼会話対象が主人公の場合
if $msg.t_target == $game_actors[101]
   @target = "君"
   @myname = "アタシ"
#パートナーが存在する場合別途設定
}}
にします。これでベッドの時も同じように「君」「アタシ」と言うようになります。お疲れ様でした。

また、RPGツクールXPをお持ちの方はゲーム内スクリプトRPG::SDB(種族値・設定用)からでも
夢魔の一人称および仲間になった後の主人公への二人称を設定することが可能です。

現在不具合報告がある箇所

・各キャラクターの睾丸愛撫セリフが出ない

  • 「if $msg.tag == "対象:睾丸" #袋攻め」から「if $msg.at_parts == "対象:睾丸" #袋攻め」に書き換えたら動作確認

・主人公追撃時(パートナー追撃は未確認)のキス、ヒップ等の専用口上が使われない

  • Ver1.10にて修正済み

・絶頂時のセリフが専用以外が出る場合がある

  • 汎用の中身をif文で分岐させることで可 when 1 #初撃 if $msg.at_type == "キッス" tx["tx1"] = "口上" else tx["tx1"] = "口上" end

・undress(脱衣)で「if $game_variables[17] > 50 #パターンB」での追加口上が使われない

  • Ver1.10にて修正済み?(ただ未確認だっただけかもしれないです・・・)

・MapEvent(精の献上)で「if $game_variables[17] > 50 #パターンB」での追加口上が使われない

  • 戦闘以外では$game_variables[17]は使用できないようです。MapChatの汎用口上と同様に間にms.push(tx)を挟んで格納していくことでパターンを増やすことが可能です。

公式更新履歴(口上のみ)

Ver1.12
・アルラウネ、ナイトメアの一部口上の記述ミスを修正。
・ギャングコマンダーの口上の記述ミスなどを修正、一部口上を追加。
・多数の夢魔の口上ファイルの脱字を修正。
・羊のメモを更新。

#highlight(end)

コメント

最新の10件を表示しています。 コメントページを参照

  • 口上を"TALKTEXT"で地の文に出来るのをいい事に自分用に改造して精密な描写を追加してるんですが、対峙している夢魔Aが主人公のパートナーBに攻撃する口上で「AはBに○○した!」って書けない…#{servant}タグが使えるかと思ったら夢魔A→夢魔Bの口上では夢魔Bを地の文で表現するタグが見当たらないんですね。使えるのは#{target}と#{partner}辺りですが、何かいいアイデアありませんかね? -- 2020-02-13 (木) 00:42:18
    • 記憶が曖昧ですが #{$msg.t_target.name} はどうでしょうか -- 2020-02-13 (木) 09:41:26
    • 回答ありがとうございます。 #{$msg.t_target.name} で受け側夢魔の名前が表示されることを確認いたしました。これで表現できる幅が広がります! タグが紹介されてなかったのでてっきり無いものかと思っておりました。 -- 2020-02-13 (木) 21:01:58
お名前:

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-11-08 (木) 00:07:22 (954d)