MOD作成指南

Last-modified: 2025-07-15 (火) 19:33:09

MOD作成指南

MOD製作環境の構築

  • サキュラプのフォルダは通常プレイ用とMOD開発用で分けておくことを推奨。

必要なソフトウェア

  • テキストエディタ
    • 最もおすすめなのはVisual Studio Code。
    • こちらの記事が導入の参考になる→https://qiita.com/TD12734/items/0bf9e9b3e97038ebbb24
      • 記事を参考にプラグインを導入すれば自動でエラーを発見してくれるなど、非常に便利なツール。
      • ただし、記事を参考にする場合はRGSS Script Editorの導入はしてはいけない(Modのファイル構造が壊れます)
    • 初心者の場合はサクラエディタがおすすめ。
      • フリーでGrep(ファイルを中身ごと検索&リストアップ&置換)やDiff(差分の比較)、スクリプトを色分け・強調表示などの機能が揃っている。
    • スクリプトは基本的にRubyで記述されるため、こちらの言語の知識が有ると開発がスムーズ。
    • 以下の編集についてはテキストエディタのみで大体事足りるため、ツクールの導入は不要。
      • 夢魔の口上
      • ダメージ計算、スキルの効果、画像読み込みなどのバトル中の挙動
      • メニュー画面の挙動
      • アビリティ・スキル・アイテムの挙動(新規スキル・アイテムの追加はツクールが必要。新規アビリティは可能。)
      • 夢魔の種族値・習得スキル
      • その他スクリプトを組めば何とかなりそうなこと
  • 画像編集ソフト
    • 夢魔画像の改変・新規夢魔画像など。
  • RPGツクールXP
    • 以下の内容を弄りたい場合は必須。
      • アニメーション・サウンドの挙動
      • 既存もしくは新しいアイテム・スキル(スキルの属性、スキルと対応するステート変化、参照する能力値はテキストエディタのみでは編集不可)
      • マップ全般
      • イベント全般
      • 敵データ(トループやイベント戦・ボス戦などの敵の特殊行動パターンもこちら)

RPGツクールXPの導入

  • RPGツクールXPの購入・インストール
    RPGツクールXPは今だと3,000円ほどでDL版を買うことができる。
    RPGツクールXP VALUE!+ ダウンロード版 – KOMODO Plaza (JP)
    なお、Steam版のRPG Maker XPはたびたびセールが行われており上記より廉価で手に入る可能性があるが、日本語化することができないので注意(イベントデータが文字化けして表示されるため編集が困難になる)。
    参考:https://qiita.com/TD12734/items/0bf9e9b3e97038ebbb24
  • サキュラプフォルダの準備
    1. 当WikiもしくはMOD製作スレに上がっている最新のMOD環境を構築しておく
    2. Mod/Mod_Dataフォルダ内の中身を全てDataフォルダに移動&上書きする(コピーではない)
      • ツクールXPではテストプレイ時を除きMODフォルダの中身が読み込まれない。これを忘れた場合、編集・保存したはずなのにテストプレイで(Mod_Dataを優先して読み込むため)変更が反映されていないという事態が起こる。

以上でツクールXPは導入完了。以後、サキュラプフォルダ直下の「Game.rxproj」を開けば編集できるようになる。

注意事項

  • MODフォルダの扱いとファイルの頒布について
    基本的にサキュラプはModフォルダ以外のファイル→Modフォルダの順にファイルを読み込み、MODフォルダ外とMODフォルダ内で重複するファイルやスクリプト(特に夢魔の口上やスクリプト内のクラスとメソッド)がある場合はModフォルダの中身を優先する。
    なので、MODデータは(GraphicsフォルダとAudioフォルダを除き)基本的にModフォルダ内の中身を編集・追加するだけで完結させられる。
    制作したファイルを頒布する時は元からあったファイル(特にDataフォルダとSystemフォルダ)には手を出さず、Graphic, Audio, Modフォルダの上書きのみで済むようにするのが望ましい。
    例えば以下のようにする。
    • ツクールでDataフォルダの中身を編集した場合、更新されたファイルをMod_Dataに移動した上で頒布する。
    • Mod_TalkもしくはSystem/talkフォルダ以下の夢魔の口上ファイルを編集した場合、Mod_Talkフォルダ内に同じディレクトリを作って頒布する。
      例えばレッサーサキュバス(橙)の口上C_BattleEvent.rbを頒布する場合、
      Mod/Mod_Talk/05_LesserSuccubus_00フォルダ内のファイルを編集した場合はそのままのフォルダの階層で頒布可能。
      System/talk/05_LesserSuccubus_00フォルダ内のファイルを編集した場合は、Mod/Mod_Talk/05_LesserSuccubus_00フォルダにファイルを移動してから頒布。
  • スクリプトファイル
    • スクリプトのファイルの形式はrbファイル。文字コードはUTF-8とすること
    • 有志が作成した構文チェッカーがあるので、こちらを使うとミスの修正が楽かもしれない。

どこを編集すればいいの?

夢魔の口上を編集したい

  • 夢魔の口上ファイルはMod/Mod_Talkフォルダ(無ければSystem/talkフォルダ)に夢魔の種類・性格ごとに格納されています。例えば、レッサーサキュバス(橙)の口上はそのフォルダ直下の05_LesserSuccubus_00内にあるrbファイルが該当します。

マップチップ・イベントを編集したい

  • ツクールを開くとマップのツリーが表示されるので、該当するマップ・イベントを探して編集しましょう。変更を保存したらDataフォルダのMap○○○.rxdataというファイルが更新されているはずです。

バトル中の挙動・メッセージの挙動を変えたい

  • Mod/Mod_scriptsフォルダ内で該当する処理を行うスクリプトが無いか探してみましょう。(バトル中の挙動を改造するのであれば、既に有志の方が作成したMod_Scriptsフォルダ内のrbファイルを編集すればほとんどの場合可能だと思います。)

夢魔の画像の差分を追加したい

  • ここを書いた筆者に絵のセンスは無いので描き方はお任せします。
  • 画像ファイルの形式、寸法などを確認しておくこと。
  • 使用する箇所・夢魔の種族・脱衣・ホールドなどによってファイルの命名規則があるので注意すること。
  • 単に画像を差し替える場合は該当するファイルを見つけて上書きすればOK。

  • 既存の夢魔の差分を追加個性として実装する場合
    • おっぱいコスプレ差分が適用済みであること推奨。
    • Graphics/Battlers/O_MODフォルダ内に該当する夢魔用のフォルダが無いか確認する。例えばレッサーサキュバス(橙)の追加個性であれば、lesser_succubus1-1フォルダが該当する。
    • アルファベット1文字のフォルダを作成し、そのフォルダに差分画像をコピーする。ただし、以下のアルファベットは用途が決まっている、またはスクリプト上で特殊な判定をする場合があるので差分を更新する際は注意すること。
      アルファベット内容
      G褐色差分として利用されることが多い
      Tデザイン変更などにより、古いデザインのイラストが置かれることが多い
      U・V・Wロリ化差分。設定で幼児化をオンにしていなければ出現しない
      X・Yその他特殊な差分。特定の条件を満たすことで出現する
      Zシスター、イマジナリーフレンドなどにあるような、特定の条件を満たすことで出現する個性
    • ボーナス取得画面で追加の説明(例えば「追加差分」「褐色」など)をする場合、Ability.rbというファイルを作成し、中に数文字(10文字程度以内?)の説明を書けば反映される。
    • 現状、フォルダ内に通常時の立ち絵の画像がないと差分が読み込まれないので注意。(着衣、着衣時クライシス、脱衣、脱衣時クライシス、着衣時精液、脱衣時精液の6つ?)無い場合はBattlersフォルダからコピーしてこよう。

その他よくありそうな質問

ツクールXP持ってないけどバニラ版のスクリプトを見たい

DataフォルダのScripts.rxdataにひとまとめになっています。「RGSS Editor」などのフリーウェアを使えば中身を確認できます。ただし上記の注意事項にある通り、編集するのは避けたほうが良いでしょう。

テストプレイ中にエラー吐いた/思い通りの挙動にならない

筆者の経験上、以下が原因であることが多い気がします。どうしても原因が分からない場合はMOD製作スレで質問してみましょう。

  • スクリプトの記述ミス(構文エラー、スペルミス、文字コードが違う、クラス外のメソッドや変数を呼び出した、など)
  • フォルダの構造かファイルの場所が間違っている
    • サキュラプのスクリプトにはファイルのパスを判定するものが含まれるので、新しいファイルやフォルダを作成する必要がある場合は注意。

エラー吐いたけどerror_log.txtが更新されてない

以下が原因であることが多い。

  • スクリプトの構文が間違っている(endや括弧の数・位置がおかしい)
    • 直近の編集を見直してみよう。
  • ディレクトリの構成が間違っている、何らかのファイルが欠落・破損している
    • ファイルの位置が正しいか確認してみよう。
    • MODをうまく導入できなかった時によく起こる。
  • プラグインやソフトウェア自体に不具合があるorサキュラプの環境と対応していない
    • 外部から持ってきた、あるいはバニラ版では使用されていないプラグインやスクリプトを用いる場合に発生し得る。

エラー報告があったけどログの見方がわからない

以下例文

エラー報告です。

追憶シスター戦中に脱衣済みのサーヴァント(敵)が行動するときに落ちました。
味方側は主人公とヴァルキュリアで、主人公がカームブレス、ヴァルキュリアがイリスコロナをしようとした時だったのですが・・・
バージョン :
200530
パッチ :
200912f
エラーの種類 :
NoMethodError
メッセージ :
undefined method `holding?' for "":String
マップ:
ID:523
トループ
ID: 966
Enemies: [672,670,671]
ステータス状況/エネミー側がアクション
クラスID:
241
コモン呼び出し履歴:
[]
バックトレース :
./Mod/Mod_Scripts/O_MOD_Scene_Battle_5.rb : 1125行目 : in `make_skill_action_result'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_5.rb : 1064行目 : in `loop'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_5.rb : 2326行目 : in `make_skill_action_result'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_4.rb : 692行目 : in `update_phase4_step2'
./Mod/Mod_Scripts/O_MOD_Scene_Battle_4.rb : 29行目 : in `update_phase4'
./Mod/Mod_Scripts/PR_基本設定強化.rb : 812行目 : in `update'
./Mod/Mod_Scripts/PR_MOD_Scene_Battle_1.rb : 400行目 : in `main'
./Mod/Mod_Scripts/PR_MOD_Scene_Battle_1.rb : 394行目 : in `loop'
./Mod/Mod_Scripts/PR_MOD_Scene_Battle_1.rb : 405行目 : in `main'
Main : 16行目
--------------------------------
  • バージョン
    • MODメインデータのバージョンです。
  • パッチ
    • パッチのバージョンです。Mod/Mod_Scripts/エラーログ.rbで確認・編集できます。
  • エラーの種類・メッセージ
    • 何のエラーが起きたのか記載されています。特に、「メッセージ」はプログラムがエラーを起こしたときに表示されるメッセージボックスの内容と同一です。
  • マップ・トループ
    • どのマップで、どの敵トループと戦闘していた時にエラーが起きたかを示しています。対応するIDについてはツクールで確認する必要があります。
  • ステータス状況
    • 戦闘中に起きたエラーの場合に記載されます。
    • 味方の行動時に起きたエラーであれば「アクター側がアクション」、敵の行動時あるいはそれ以外のエラーについては「エネミー側がアクション」と記載されます。
    • エラー出力用の変数が更新されるタイミングとエラーログが出力されるタイミングが異なるため、稀に当てにならないことがあります。
  • クラスID
    • 行動したキャラのクラスIDです。ツクールで確認できます。
    • ステータス状況と同じく、稀に当てにならないことがあります。
  • コモン呼び出し履歴
  • バックトレース
    • スクリプトの呼び出し履歴で、上から新しい順に記載されています。特に、1行目はエラーが発生した箇所を示しているのでまずはここを確認してみましょう。
エラーの詳細(参考までに)

このエラーについてはランダム性が強いらしく、報告者様の状況と同様の操作を行っても再現できませんでしたが、O_MOD_Scene_Battle_5.rbのメソッドmake_skill_action_resultにおいて値が""(文字数0のString型)の変数を用いてholding?メソッドを実行しようとしたためにエラーが起きているので、直前の行あたりに値が""の場合はifで弾くように文を追加したところ、以降エラー報告が無くなった記憶があります。
戦闘中(現在の戦闘とは限らない)にONとなった強ヘイトフラグがそれ以降更新されていないために発生したエラーでした。

キャラ追加方法

データベース

ツクールXPの編集箇所を記載します。

クラス・データベース

  • クラスの作成★必須★
    • 空いているクラスIDの場所に追加したいキャラの名前を"名前/色"という形式で入れる
      (例:ID:94 名前を"ジュエルスライム/黄"として追加)
      • 色は既に使われているもの、例えばサキュバスでは『橙』や『桃』などは新しく使用できません

p.png

  • このように記述します

エネミー・データベース【data】

  • 【data】の作成★必須★
    • 【data】はエネミーの行動パターンを決定する項目
    • 適当な場所に「【data】追加キャラ名と色/追加キャラのクラスID/1」の項目を作り、グラフィックを決定する(例:1176:【data】メア黄/70/1)
      • 色違いを作るなら原色のものをコピーして使用するのがラク

pp.png

  • 『---行動1回目------------』の下にはエネミーが行う行動パターンを記述します
    • 条件の『レベル』はそのレベル以上のエネミーが使ってくる行動になります
    • 条件の『スイッチ』は状況に応じて行動を選択してきます
      • 今回のメアの『パラライズ』の場合、EPが80%以上の時のみ『パラライズ』を使ってくることがあります
    • 条件の『ターン』は指定されたターンにのみその行動を行うことがあります
      • 今回のメアの『ペイド・スリープ』の場合、7ターン後に使ってくることがあるほか、以降8ターン毎にペイド・スリープを放つことがあります
    • 条件の『レーティング』は使用率の高さを決める項目です。そのターンに取れる行動のうち、レーティングが最も高いものを基準に使用スキルが選定されます
      • 今回のメアの場合『ペイド・スリープ』のレーティングが最も高いので、『ペイド・スリープ』が使える条件がそろっている場合は最優先で『ペイド・スリープ』を放とうとしてきます
      • レートが1下がると使用率が1/3低下します。例えばメアの場合『ペイド・スリープ』が使える条件がそろっているとき、レーティングが4のスキルがある場合、ペイド・スリープの2/3程度の確率でレーティング4のスキルを使う可能性があります。レートが3のスキルの場合、確率は1/3にまで落ち込みます
      • レートが3以上低い場合は使用しなくなります。例えばメアの場合『ペイド・スリープ』と『パラライズ』両方の使える条件がそろっている場合、『ペイド・スリープ』はレーティングが5、『パラライズ』はレーティングが2で3の差があるため、『パラライズ』は使用しません
  • 『---行動2回目------------』の下にはエネミーが追加攻撃を行う場合の行動パターンを記述します
    • 『---確率条件---』は『その行動を何%の確率で行ってくるか』を記述します
      • 今回のメアの場合『---確率条件---』の項目が『レベル15以上』となっていますが、この場合は『15%の確率で以下に記述された行動を行う』となります
      • そのため今回のメアの場合、メアのレベルが35以上のとき、15%の確率で『スイートウィスパー』による追撃を行う…となります
    • 『---確率条件---』を設定しない場合、ほぼ確実に追撃を行うようになります

エネミー・データベース

  • エネミー本体の作成★必須★
    • 上記以外の空いている場所に「追加キャラ名/追加キャラのクラスID/レベル」の項目を作り、グラフィックを決定する
      • 色違いを作るなら原色のものをコピーして使用するのがラク

ppp.png

  • このように記述します
    • この時、属性有効度 No.124【イベント】No.125【OFE】No.126【BOSS】のいずれかを『A』にすると、敵として出てきたときのステータスが強化されます
      • 【イベント】は強化幅が最も小さく、【BOSS】は最も強化幅が大きいです
    • 能力はあくまで『RPG::SDB(種族値・設定用).rb』に記載された『種族値』を基に決定されますが、そこに補正がかかる形になります
      • データベース上のステータスは一切使用しません


  • 更に夢魔を強化する設定もあります
    • 属性有効度 No.315 最高の姿 No.316 能力覚醒 を設定すると出現する夢魔がより強力な種族値を参照して出現するようになります

ppppp.png

  • このように記述します
    • 最高の姿を『A』にするとその夢魔が『最高ランク』のステータスを持つようになります
      • 『最高ランク』の定義は曖昧で、例えば『レッサーサキュバス』であれば能力がサキュバスロード相当に引き上げられますが、元のステータスが低い『ウィッチ』などはより高いステータスに引き上げられます
      • スレイヴなどの『ランクアップ』を持たない夢魔でも『最高の姿』を習得可能な夢魔は強化されます。逆にボーナスやルーンで『最高の姿』を習得できない夢魔はこの項目を付けても強化されません
    • 能力覚醒を『B』にするとその夢魔は『目覚め』状態で出現するようになります。また『A』にすると、その夢魔は『能力覚醒』状態で出現するようになります
      • 『能力覚醒』はその夢魔が『最高ランク』のとき、ステータスを『能力覚醒』用の非常に高いステータスに置き換えます。殆ど全ての夢魔に対して個別に設定されており、そのすべてが隠しボスクラス並の非常に高いステータスを得ます
      • 『目覚め』は『最高ランク』のステータスと『能力覚醒』のステータスの中間をとったステータスになります。殆どの夢魔はこれでも大幅に強化されますが、一部の夢魔はステータスの傾向が変動することもあるため、中途半端なステータスになってしまう事も
    • 『目覚め』『能力覚醒』ともに『最高ランク』のステータスの時でないと効果を発揮しないため、よくわからない場合はとりあえず『最高の姿』の項目を同時に『A』にしておくと確実です
      • ヴィズリルなど、元のステータスがあまりにも強力すぎるが故に『能力覚醒』を持たない夢魔もごく一部ながら存在します。これらの夢魔はこちらの項目では強化できません


  • ステートの有効度もステート毎に設定できます
    • A~Fまで変更でき、Aに行くほど耐性が弱体化し、Fであれば逆に無効となります

pppppp.png

  • このように記述します
    • この『ルクスリア』の場合、『欲情』に弱く、そのほかの状態異常には多少強い状態になっています
      • ただし、これらの能力はあくまでエネミーとして出現したときのものです。空腹戦やベッド戦の場合は素質のみを参照し、耐性が決定されます

トループ・データベース

  • トループデータの作成★敵として登場させる場合は必須★
    • 空いている場所にEnemyで追加したキャラを追加する。(例:10("ヒラルス/193/88"という名前のenemy1400が一体入ったボストループ))
      • トループ名を設定する際、以下の命名規則を推奨。特に、OFEやBOSSは冒頭に【OFE】【BOSS】とつける事で、キャラが戦闘開始時口上を喋るようになる。
        OFE戦の場合【OFE】名前
        ボス戦の場合【BOSS】名前
        それ以外の場合「名前の自動作成」をクリックして生成したものを設定

スクリプト

テキストエディタの編集箇所を記載します。
文頭に#がついているものはメモ
ゲームには影響を与えない

RPG::SDB(種族値・設定用)★必須★

  • 追加したいキャラのデータのところのwhen条件文にそれぞれのdataのClassで追加した番号を追加。
    • 例:プリーステス・紫なら
      when 118,161
      とすればいい。
      #------------------------------------------
          when 118 # 白
           @graphics = "priestess1-1"
           @default_name_self = "私"
           @default_name_hero = "貴公"
          when 161 # 紫
           @graphics = "priestess1-2"
           @default_name_self = "私"
           @default_name_hero = "少年"
          end

      #-------------------------------------------
  • 各パラメータの意味は以下の通り。
名称説明名称説明
exp_type夢魔の成長の早さ ※1digest移動時の満腹減少度
contract_level初期友好度 ※2absorb精献上時の消費VP量
maxhp最大EPyears_type年齢層。1が最も低く、5が最も高い
maxsp最大VPbust_size胸の大きさ。1が最も小さく、7が最も大きい
str精力tail尻尾の有無。true:有 false:無し
dex器用さwing羽の有無。true:有 false:無し
agi素早さmaxruneルーンの装備可能数
int精神力graphicsグラフィックのファイル名
atk魅力default_name_self一人称
pdef忍耐力default_name_hero主人公への二人称
mdefサキュラプでは使用しないdictionary_phase夢魔図鑑登録のタイミング ※3

※1.数値が1に近いほど成長が早く、5に近づくほど成長が遅くなる
※2.数値が高いほど初期友好度が低くなり、契約難易度が上がる
※3.ストーリー進行に合わせて出現場所など一部の情報が開示されていく。0の場合はスイッチなどでのみ情報が開示される。ただし、情報の完全な開示は契約でのみ行われる

RPG::Class(習得スキル)★任意★

  • 習得スキルを追加する場合
    • 『when ""』の項に名前を入れることで、その夢魔の習得するスキルを設定できるようになる
#------------------------------------------------------------------------
# ■■エテルヌス種
#------------------------------------------------------------------------
when "エテルヌス"
  # Lv1.【元型種】
  group.push([1, 1, 785])
  # Lv1.【経験活用力】
  group.push([1, 1, 220])
  # Lv1.【EPヒーリング】
  group.push([1, 1, 210])


  • 習得可能なスキルの意味は
# 習得レベル.スキルか素質の名前
group.push([習得レベル, スキルか素質か?, スキルか素質のID])
  • となっている。例を挙げると…
# Lv10.チェック
group.push([10, 0, 126])
  • この場合『チェック』はレベル10で習得し、チェックは『スキル』なのでスキルか素質かの判定は『0』で、チェックはツクールのデータベースにおいてID『126』に設定されているため、そう記述したものとなる

pppp.png



  • 2種類以上の夢魔に同じスキルを習得させる場合は『,』を間に挟んで区切る
    • 『when "",""』と記述し、それぞれの夢魔の名前を入れることで、別々の夢魔が同じスキルを習得するようになる。ランクアップなどで習得スキルを揃えたい場合に便利
when "エテルヌス","トリニティ"


  • 色で分ける場合
    • 『case self.color』と入力し、その下に『when ""』と色を記述することで夢魔の色毎に習得スキルを分けることができる
      • 色毎の習得可能スキルを記述し終えたら『end』と入れておかないとエラーでゲームが起動できなくなってしまうため注意!
#------------------------------------------------------------------------
# ■■エテルヌス種
#------------------------------------------------------------------------
when "エテルヌス","トリニティ"
  # 色
  case self.color
  when "白"
    # Lv1.【キススイッチ】
    group.push([1, 1, 160])
  when "青"
    # Lv1.【雪国人】
    group.push([1, 1, 388])
  when "緋"
    # Lv1.【わがままボディ】
    group.push([1, 1, 498])
  end
  # Lv1.【元型種】
  group.push([1, 1, 785])
  # Lv1.【経験活用力】
  group.push([1, 1, 220])
  # Lv1.【EPヒーリング】
  group.push([1, 1, 210])


  • 夢魔の種類で分ける場合
    • ランクアップ前とランクアップ後などにおいて、一部のスキルだけ分けたい場合は『case self.name』と入力し、その下に『when ""』と色を記述することで夢魔の名前毎に習得スキルを分けることができる
      • 名前毎の習得可能スキルを記述し終えたら『end』と入れておかないとエラーでゲームが起動できなくなってしまうため注意!
#------------------------------------------------------------------------
# ■■エテルヌス種
#------------------------------------------------------------------------
when "エテルヌス","トリニティ"
  # 種族
  case self.name
  when "エテルヌス"
    # Lv40.ランクアップ(エテルヌス)
    group.push([40, 0, 249])
  when "トリニティ"
    # Lv50.ヘヴィスクラッチ
    group.push([50, 0, 53])
  end
  # Lv1.【元型種】
  group.push([1, 1, 785])
  # Lv1.【経験活用力】
  group.push([1, 1, 220])
  # Lv1.【EPヒーリング】
  group.push([1, 1, 210])


  • 初期習得スキルを削除したい場合は『group.delete』と入力し、()内にスキルのデータを記述する。例えば…
#------------------------------------------------------------------------
# ■■エテルヌス種
#------------------------------------------------------------------------
when "エテルヌス","トリニティ"
  # 種族
  case self.name
  when "エテルヌス"
    # ☆シェルマッチ、スクラッチ、【アクセプト】は習得しない
    group.delete([1, 0, 5])
    group.delete([1, 0, 52])
    group.delete([1, 1, 302])
    # Lv40.ランクアップ(エテルヌス)
    group.push([40, 0, 249])
  when "トリニティ"
    # Lv50.ヘヴィスクラッチ
    group.push([50, 0, 53])
  end
  # Lv1.【元型種】
  group.push([1, 1, 785])
  # Lv1.【経験活用力】
  group.push([1, 1, 220])
  # Lv1.【EPヒーリング】
  group.push([1, 1, 210])
  • と記述する。今回の場合はエテルヌスが『シェルマッチ』『スクラッチ』【アクセプト】を初期習得できなくなる


  • これらすべてを併用することもできる。例えば…
#------------------------------------------------------------------------
# ■■エテルヌス種
#------------------------------------------------------------------------
when "エテルヌス","トリニティ"
  # 色
  case self.color
  when "白"
    # 種族
    case self.name
    when "エテルヌス"
      # ☆シェルマッチ、スクラッチ、【アクセプト】は習得しない
      group.delete([1, 0, 5])
      group.delete([1, 0, 52])
      group.delete([1, 1, 302])
      # Lv10.シェルマッチ
      group.push([10, 0, 5])
      # Lv10.スクラッチ
      group.push([10, 0, 52])
    end
    # Lv1.【キススイッチ】
    group.push([1, 1, 160])
  when "青"
    # Lv1.【雪国人】
    group.push([1, 1, 388])
  when "緋"
    # Lv1.【わがままボディ】
    group.push([1, 1, 498])
    # Lv20.パッションビート
    group.push([20, 0, 613])
  end
  # 種族
  case self.name
  when "エテルヌス"
    # Lv40.ランクアップ(エテルヌス)
    group.push([40, 0, 249])
  when "トリニティ"
    # Lv50.ヘヴィスクラッチ
    group.push([50, 0, 53])
  end
  # Lv1.【元型種】
  group.push([1, 1, 785])
  # Lv1.【経験活用力】
  group.push([1, 1, 220])
  # Lv1.【EPヒーリング】
  group.push([1, 1, 210])
  # Lv15.エンブレイス
  group.push([15, 0, 17])
  • …と記述した場合、以下のようになる
    • エテルヌス(白)のみ『シェルマッチ』『スクラッチ』【アクセプト】を初期習得できない
    • エテルヌス(白)はLv10で『シェルマッチ』『スクラッチ』を習得する
    • エテルヌスはLv40で『ランクアップ』が可能になる。トリニティは習得できない
    • トリニティはLv50で『ヘヴィスクラッチ』を習得する。エテルヌスは習得しない
    • エテルヌス(白)とトリニティ(白)は【キススイッチ】を初期習得している。他の色は習得しない
    • エテルヌス(青)とトリニティ(青)は【雪国人】を初期習得している。他の色は習得しない
    • エテルヌス(緋)とトリニティ(緋)は【わがままボディ】を初期習得している。他の色は習得しない
    • エテルヌス(緋)とトリニティ(緋)はLv20で『パッションビート』を習得する。他の色は習得しない
    • 【元型種】【経験活用力】【EPヒーリング】はエテルヌス、トリニティ共に初期習得している
    • エテルヌス、トリニティ共にLv15で『エンブレイス』を習得する


  • 一部の素質にはレベルがあり、レベルが上がるほどその効果が増す
    • 『スキルか素質か?』を判定する欄に2以上の数値を設定すると、その素質にレベルが付くようになる
    • たとえば自身のレベルが上がるたびに【EPヒーリング】の効果を強化したい場合
      #------------------------------------------------------------------------
      # ■■キャスト種
      #------------------------------------------------------------------------
      when "キャスト"
        # Lv1.【人間種】
        group.push([1, 1, 780])
        # Lv1.【EPヒーリング】
        group.push([1, 1, 210])
        # Lv27.【EPヒーリング LV2】
        group.push([27, 2, 210])
        # Lv45.【EPヒーリング LV3】
        group.push([45, 3, 210])
        # Lv65.【EPヒーリング LV4】
        group.push([65, 4, 210])
        # Lv85.【EPヒーリング LV5】
        group.push([85, 5, 210])
  • …といった感じに記述すると段階的にEPヒーリングが強化されていくように設定できる
  • これらのレベルは合算されず、常に高いものが優先される。
    • たとえば【EPヒーリング LV2】と【EPヒーリング LV5】を同時に取得している場合、【EPヒーリング LV5】の効果は発揮され、素質一覧にも載るが、【EPヒーリング LV2】の効果は発揮されず、素質一覧にも表示されない

RPG::Class(ボーナス)★任意★

  • ここでは契約の珠で習得できるスキルを変更できる
    • 基本的には習得スキルの記述の仕方と変わりないが、微妙にルールが異なる。例えばこちらは習得レベルを記述する項目の部分に必要な契約の珠の数値を入力する
      例えば『アピール』を契約の珠500で習得させたい場合は
# アピール
group.push([500, 0, 148])
  • となる

  • ボーナスの場合習得可能なスキルの意味は
# スキルか素質の名前
group.push([習得に必要な契約の珠の数, スキルか素質か?, スキルか素質のID])
  • だが、さらに細かく習得条件を設定することも可能。例えば
# スキルか素質の名前(習得レベル)
group.push([契約の珠の数, スキルか素質か?, ID, 習得レベル, 必要な好感度, 習得に必要な素質, nil, 素質のレベル])
  • と細かく条件を設定できる
    例えば
  #------------------------------------------------------------------------
  # ■■バニー種
  #------------------------------------------------------------------------
when "アルミラージ"
  #【ラピッドファイア】(Lv30)
  group.push([1500, 1, 1274, 30])
  #【ラピッドファイア LV2】(Lv90)
  group.push([7000, 1, 1274, 90, 100, 大切な人, nil, 2])
  • と設定した場合、
    • 『アルミラージ』のレベルが30の時、契約の珠1500を消費して【ラピッドファイア】を習得できる
    • 『アルミラージ』のレベルが90かつ好感度が100以上で【大切な人】になっている時、契約の珠7000を消費して【ラピッドファイア】のLvを2まで進めることができる…となる

MODモジュール_Enemy

  • 敵対時行動パターンの定義★必須★
    def self.get_enemydataid(class_id)のところにそれぞれのクラスを追記。
    例:それぞれ
when 193 ; data_id = 1138  # ヒラルス・黄

とすればOK

  • 戦闘勝利時トレジャードロップの定義★任意★
    • def self.alter_enemy_treasure(enemy)関数内に以下を追記。
when 161 # プリーステス紫
treasure_box += [[0, 301, 5]] # 真夜の華 5%
treasure_box += [[0, 314, 1]] # 小さな悪魔像 1%

O_MOD_Game_Enemy _設定用

  • 敵対時処女出現率の設定★任意★
    • virgin_setup関数内で設定する。
      • ある程度ルールに従って処女率が決定されるため、よほどの思い入れがなければ追記不要。
  • 性格の設定★必須★
    • def personality_setup(record_flag = false)関数内に以下を追記。
      それぞれの
      case self.class_color
      から
      end
      の間に
      when "色" ; [1, "性格", "性格", "性格"]
      を追加
      色はClassで設定したもので、性格は新しく追加も可能ですが、標準設定された下表から{ 好色、上品、高慢、淡泊、柔和、勝ち気、内気、陽気、意地悪、天然、従順、虚勢、倒錯、甘え性、不思議 }から選ぶといいでしょう。
性格ID名称性格ID名称性格ID名称性格ID名称
0好色4柔和8意地悪12倒錯
1上品5勝ち気9天然13甘え性
2高慢6内気10従順14不思議
3淡泊7陽気11虚勢

口上データの性格IDも元のものからコピーしている場合、忘れずに変更しましょう
上品→甘え性に変更するなら各口上の def msg_XXX_01 を def msg_XXX_13 に変更します
(この場合"_01"を"_13"に置換するとミスなく早いです)
例:プリーステス・紫なら

when "紫" ; [1, "好色", "好色", "好色"]
を追加
性格IDを00に変更

P_H_MOD_Game_Map_設定用★モブ敵として出現させる場合は強く推奨★

  • シンボル出現するエネミーのランダムエンカウントを設定する項目。
    • 『when 〇』がランダムトループ(地域)、『case number』下の『when 〇』がランダムトループ(タイプ)に対応しています
    • 『common = []』の[]の中には実際に出現するトループのIDを指定します。複数のトループがランダムで出現するようにしたい場合は『common = [152,152,152,155,156]』といった感じに区切ります
    • 『rare = []』の[]内にはレアトループを指定します。レアトループは、シンボル接触時に低確率で出現するトループで、出現時に特殊な効果音とエフェクトが発生します。

例えば密教会にファミリアを出現させる場合は

   #--------------------------------------------------------------------------
   # ■パルフィス密教会 Lv16
   #--------------------------------------------------------------------------
   when 11
     case number
     # ファミリア
     when 4
       common = [226,226,226,227,227,228,228]
       rare = [232]
     end


と設定します
同じIDを多く並べるほど、そのIDのトループが出現しやすくなります
エネミーシンボルのイベントの方では



ppppppp.png

と設定します



pppppppp.png

指定したトループの内容とトループの出現パターンに相違がないか、ちゃんと確認するようにしましょう

PR_Geme_Troop

  • 特定マップのランダムエンカウントのトループ設定 ★任意★
    ※夢魔の遊技場など、特定マップのランダムエンカウントを想定していなければ不要。

ゲームトループの改変のところに

when クラスID; member.enemy_id = 1

を追加、クラスIDはClassで設定したものを。

例:プリーステス・紫の場合

when 161; member.enemy_id = 1

を追加。

O_MOD_口上メソッド_基本 ★必須★

クラス番号 => クラス番号_クラス名_',を追加

例:ヒラルス・黄の場合
それっぽいのが並んでいるところに

193 => '193_Hilarus_',

を追加。

O_MOD_Talk_Sys_Base ★必須★

@msg[クラス番号] = Db_種族名_アルファベット.newを追加

色変えの場合は元の奴をコピー、クラス番号をClassで設定したものに変更、アルファベットを使われていないものに変更すると早いです

例:プリーステス・紫の場合
それっぽいのが並んでいるところに

@msg[161] = Db_Priestess_B.new

を追加。

(追加した口上データ内の表記もMsgPriestess_A⇒MsgPriestess_Bにすること)

追加した夢魔に使用したクラスIDが『MSG_LENGTH = 〇〇〇』よりも大きい場合はこれも書き換える事
例えばクラスID555に『メデイア/青』などを追加した場合はクラスID+1である 556 と記述する

 MSG_LENGTH = 556

と書き換える

P_H_MOD_口上メソッド_全夢魔用のDb ★必須★

他のclassの中以外であればどこでもいいので
例;プリーステス/紫なら

#プリーステス/紫
class Db_Priestess_B
 attr_accessor   : personality
 def initialize
  @personality = Array.new(50)
  per_max = 50 # 性格数
  for i in 0...per_max #
   @personality[i] = MsgPriestess_B.new(i)
  end
 end
end

を追加
元のものをコピー、アルファベット二か所を変更するのが早いです
新OFE追加modではそれぞれの元の色の後ろに追加しています。

P_H_MOD_口上メソッド_全夢魔用のMsg空箱 ★必須★

他のclassの中以外であればどこでもいいので
例;プリーステス/紫なら

# プリーステス/紫
class MsgPriestess_B < MsgBase
end

を追加。
元のをコピーしてアルファベットを変更するのが早いです
 
 

Mod_Talkフォルダの編集

00_SystemへのクラスIDファイル追加 ★必須★

・ファイル「Base_[classid].rb」の作成(classidはツクール内ClassのIDと同じもの、紫プリーステスなら161を使っています)
主人公以外への二人称や、敵として出てきた際の主人公への二人称を設定できます
元のキャラからコピーしてファイル名とクラスのアルファベットを変更(紫プリーステスなら MsgPriestess_Aを MsgPriestess_Bに)し、呼び方を変更したいところのみ変更するのが確実です。

「00_System/Talk_Sys_Defaultname.rb」の編集 ★任意★

レアな一人称、二人称を設定できます
それぞれの種族のところに、一人称ならば
b_name = "一人称" if battler.personality == "性格"
二人称ならば
b_name = "二人称" if battler.personality == "性格"
を追加しましょう(性格は上述のGame_Enemy (設定用)で設定したもの)

例;紫プリーステスなら
a_name = "わたくし" if battler.personality == "好色" #OFE
b_name = "坊や" if battler.personality == "好色" #OFE
の二つを追加しています

クラスNo_夢魔名_性格Noの変更 ★必須★

  • 色違いを作る場合原色のものをコピーしフォルダ名を変更。
    • rbファイル内のclassをTalk_Sys Baseで設定したものに変更
      ひとつのファイルに複数個所存在するものもあるので注意
    • rbフォルダ内のdef ~ _数字(好色の場合00)の数字を
      設定した性格に合わせ変更する。こちらは各ファイルにつき1か所のみ。

スキル追加方法

データベース

ツクールXPの編集箇所を記載します。

スキル・データベース

  • スキルの作成★必須★
    • 空いているスキルIDの場所に追加したいスキルの名前を"名前/ダメージ倍率/クールタイム"という形式で入れる
      ダメージ倍率はダメージが無いときは省略可能
      クールタイムはクールタイムが無いときは省略可能で、999にしたら奥義スキル扱いになる
      • ID:302 キッス/100
        ID:033 ヘヴィスウィング/105
        ID:171 ラナンブルム
        ID:1577 母なる大地/300/999
        ID:2120 メタルガード//13

skill.png

  • このように記述します
  • また、それぞれの項目には以下の意味があります
    • 消費SP
      • 消費VPを設定できます。
    • 威力
      • レベル差補正に影響します。
        たとえば、威力が5のスキルがあった時、相手よりレベルが3高い場合は5×3となり、ダメージが15増えます。
        ただし、レベル差補正は5が最大値となるため、威力が5のスキルで相手とのレベル差が10あったとしても、この場合はダメージが5×5の25までしか増えません。
    • 攻撃力 F:
      • 数値が高いほど魅力の影響が大きくなります。
        魅力は必ずダメージ計算に関わるため、あまり影響値を下げないようにしましょう。
    • 回避 F:
      • サキュラプでは使用しません。
    • 腕力 F:
      • 数値が高いほどダメージ計算における精力の影響が大きくなります。
        ほぼすべてのホールドスキルはこの値を参照にするので、特別な事情がない限りはホールド系スキルに設定しましょう。
    • 器用さ F:
      • 数値が高いほどダメージ計算における器用さの影響が大きくなります。
        殆どの前戯系スキルはこの値を参照します。また、エンブレイスなどごく一部のホールドスキルもこの値を参照する場合があります。
    • 素早さ F:
      • 数値が高いほどダメージ計算における素早さの影響が大きくなります。
        殆どのスキルにおいて、この値を参照することはありません。
    • 魔力 F:
      • 数値が高いほどダメージ計算における精神力の影響が大きくなります。
        風のささやきなど、魔法による快感ダメージはこの値を参照します。
        属性で『魔法スキル』にチェックを入れておくと、相手の忍耐力によるダメージ軽減率が下がり、相手の精神力によるダメージ軽減率が上がるため、これも併用するようにしましょう。
    • 命中率:
      • サキュラプでは使用しません。
    • 物理防御 F:
      • 忍耐力によるダメージ軽減の比率を調整できます。
        この値を下げるほど、相手の忍耐力や精神力によるダメージ軽減効果を無視できます。
    • 魔法防御 F:
      • 状態異常の基礎付与確率を設定します。
        基礎の確率に加え、属性で『BS付与』を設定すると、そのステータスに応じて付与確率をアップできます。
        例えば『BS付与:魅力依存』を設定すると、自身の魅力に応じて状態異常付与率がアップし、相手の精神力によって付与率がダウンします。
        基本的には相手の状態異常耐性と精神力の高さによって付与率が軽減されます。
        属性のBS付与を設定していない場合、付与率を上げることはできません。
        スキルによる追加効果は10
        低命中の魔法は30
        全体に効果が及ぶものは50
        単体に効果が及ぶものは70
        くらいに設定しておくのが一般的です。
        また、スタンなどの耐性を持つ相手がほとんどいないスキルに関しては、ハメ殺しなどの危険があるため可能な限り低く設定しておくのが無難です。
    • 分散度:
      • この値が高いほど、ダメージや回復量などがランダムで大きく変化するようになります。

スクリプト

テキストエディタの編集箇所を記載します。
文頭に#がついているものはメモ
ゲームには影響を与えない

Mod/Mod_Scripts/O_MOD_RPG_Skilltext.rb★必須★

  • message関数に追加したスキルのidのwhen条件を追加し、そのスキルが使用された時のテキストを設定する。
    • 例:誘惑・挿入の場合
when 1591   # 誘惑・挿入
  action = premess + "股を開き、\n\m#{targetname}を誘った!"

Mod/Mod_Scripts/O_MOD_Game_Battler_3.rb★任意★

  • スキルに使用条件を追加する場合、skill_can_use関数で使用条件を設定する。
    falseが返されるときはそのスキルを使用できない。
    • 例:リリースラッシュの場合
     # ■リリースラッシュは蓄積ダメージが300以上の相手がいる場合可
     if skill.id == 1205
       a = []
       for actor in $game_temp.battle_target_battler
         if actor.exist? and actor.states.include?(90)
           a.push(actor) if actor.time_damage > 300
         end
       end
       return false if a == []
     end

Mod/Mod_Scripts/O_MOD_Game_Battler_4.rb★任意★

  • スキルに追加効果を設定する場合、skill_effect関数で設定する。
    • 例:サディストカレスの場合
       # サディストカレスは、相手が畏怖だと追加効果のドキドキ付与率が上がる
       # マゾだと快感に変更される
       # 200905 通常時は畏怖付与、畏怖時はドキドキ付与に変更。
       if skill.name == "サディストカレス"
         unless self.maso?
           n = rand(100)
           if n < 50
             if self.state?(38)
               # 耐性考慮 MOD/230211修正
               self.state_plus(32, 100, user, skill)
             else
               # 耐性考慮 MOD/230211修正
               self.state_plus(38, 100, user, skill)
             end
           end
         else
           f_damage_rate += 20
         end
       end

装備、ルーン追加方法

データベース

ツクールXPの編集箇所を記載します。

防具・データベース

  • 装備、ルーンの作成★必須★
    • 空いている防具IDの場所に追加したい装備の名前を"名前/上昇する魅力の値/上昇する忍耐力の値"という形式で入れる
      ルーンの場合は名前だけ入れる。
      • ID:046 蜻蛉のブローチ/10/2
        ID:200 イリスシード

equip.png

  • このように記述します

クラス・データベース

  • 装備、ルーンの装備条件の設定★必須★
    • クラスのID271~274の「装備できる防具」のチェックを操作する。
      271は男主人公、272と273は仲間の夢魔、274は女主人公の装備の設定である。

equip_class.png

スクリプト

装備やルーンの特殊効果の実装にはスクリプトを触る必要があるが、効果によってはあらゆるスクリプトを触る必要がある。
Visual Studio Codeを使用して開発を行う場合は検索機能が役立つ。
実装したい物と同じまたは似た効果の装備やルーンの名前を検索すれば、以下のような実装がヒットするはずなので、それらを参考にすれば良い。

  • 例:おひつじさまの場合
     #--------------------------------------------------------------------------
     # ● パーティ全体EP回復
     #--------------------------------------------------------------------------
     def all_hp_autoheal
       n = 0
       for actor in $game_party.party_actors
         n += 10 * actor.get_ability_level("溢れる回復力")
         n += 10 if actor.equip?("おひつじさま")
         n += 10 if actor.equip?("思い出のミサンガ")
       end
       # 食事効果
       n += 5 * rivise_rate_dish("EP")
       # 金色の記憶/回復量増加
       if $game_switches[984] == true
         n *= 2
       end
       return n
     end

MOD開発者向けツール

拡張マップ開発環境構築バッチ

  • サブフォルダで管理されているマップをツクールで編集できるようにするバッチファイルです。
    • ダウンロードはこちら
      • ①batファイルをModフォルダにコピー
      • ②batファイルを右クリックして「管理者として実行」
      • ③tkool\各マップフォルダの下でGame.rxprojを開いて作業開始

フェイス画像切り抜き

  • Battlers等の画像から、顔面周辺を切り抜いてFaces画像を作成するための支援ファイルです。