基本
MODを作成することでサキュバスデュエルに自作のイベントやカードを追加できます。
CSVフォルダの中身や公式ドキュメントが参考になります。
導入するもの
VisualStudioCode
高機能なコードエディタ。
メモ帳等でも作成できますが、下記の言語サポートを導入できるVScodeを推奨します。
MOD言語サポート
VSCodeにシンタックスハイライトを追加して編集しやすくする補助ツール。
コマンドが強調されて読みやすくなります。
注意事項
素材の利用について
フリー素材を利用してMODを作成する場合、必ず利用規約を確認してください。
サキュバスデュエルはれっきとしたR18アダルトゲームです。
利用規約にアダルト利用禁止の記載がある場合は使用できません。
カード画像の比率は6:10で詳細表示時の枠と丁度合います。
後編ネタバレについて
CSVフォルダ内にあるファイルのうち、以下は後編のネタバレが含まれています。
詳細
・Cardフォルダ
70028~70039
・StaticCardsフォルダ
StaticCards
・Languageフォルダ
上記の各フォルダと同じ場所のファイル
また、カード入手コマンド等で未実装のカードを入手すると後編のネタバレになる可能性があります。
VSCodeでよく使う操作
・[Ctrl]キー+[S]キー
保存機能。
今の状態を上書き保存します。
・[Tab]キー
字下げをすることができる。インデントと言う
テキストを見やすくするために使用される。
範囲選択されている場合、まとめて字下げしてくれる。
・[Shift]キー+[Tab]キー
字上げをする。
テキストを見やすくするために使用される。
字下げしすぎた行頭の空白を消してくれる。
範囲選択されている場合、まとめて字上げしてくれる。
・[Ctrl]キー+[/]キー
コメントアウト。
コードの一部分を無効化して、メモや文章を書き込むことができるようになる。
範囲選択されている場合、まとめてコメントアウトにしてくれる。
もう1度キーを押すとコメントアウト状態は解除される。
//メモを書けます。
アラート,表示される方のアラート
//アラート,表示され無い方のアラート
アラート,表示される方のアラート,//メモを書けます。
自作クエストの作成
基礎編
1.クエストの入り口を作る。
「テストMOD入口.txt」というファイルを作成。
以下のように記述する。
テストMODのイベント,Card/テストMODマスター,イベント
CSVフォルダ内のEventList/Questフォルダ内に配置する。
2.クエスト内容を作る
「テストMODマスター.txt」というファイルを作成。
CSVフォルダ内のCardフォルダ内に配置する。
このファイルは敵カードマスターになる。
以下の記述を追加する。
ペーストした後にTabキーで配置を揃えることを推奨。
@初期設定
&カード名,テストMODのマスター
&カード画像,EU01_maid.png
属性設定,闇属性
タイプ設定,悪魔
攻撃力設定,1300
最大HP設定,8000
性別,女
攻撃エフェクト設定,&&セクシーエフェクト
&フレーバーテキスト,MODのテストを担当しているサキュバスメイド。
@イベント
暗転,
背景変更,&&ギルド背景
明転,0.5
話者,自分,true,0.5
セリフ,ようこそお越しくださいました。{主人公}様。
セリフ,本日はいかがなさいますか?
選択肢,バトルする,やめる
$選択肢1,=,選択肢
switch,$選択肢1
case,1
{
セリフ,かしこまりました。それではバトル開始です!
}
case,2
{
セリフ,かしこまりました。またのお越しをお待ちしております。
イベント終了
}
デッキ設定,10001,10001,10001,10001,10001
デッキ報酬設定,9900,50,0
バトル開始,&&ギルド背景,&&戦闘BGM
3.動作チェック
ゲームを起動。
モルゲンの赤旗クエスト一覧から「テストMODのイベント」を選ぶ。
イベントが始まりバトルができれば成功。
4.より高度な実装
Cardフォルダ内の70001~70027が本編の敵マスターのファイルになっています。
これらを参考にすれば本編のイベントと同じ実装ができます。
自作カードの作成
MOD機能を使えばオリジナルの効果を持ったカードを作成できます。
しかし、現状はサンプル数が少なく、自力でカードを作るのは難しいです。
既に公開されているMODのカードを参考にしたり、
有志Discordで質問すればヒントを得られるかもしれません。
以下は参考程度に
場に出た時に相手にコントロールが移るモンスター
場に出た時に相手にコントロールが移る裏切り者
@初期設定
&カード名,ネガエル
&カード画像,Sp54.png
レベル設定,1,
攻撃力設定,100,
最大HP設定,100,
属性設定,水属性,
タイプ設定,水棲,
攻撃エフェクト設定,&&突き飛ばしエフェクト
性別設定,その他,
レアリティ設定,N,
効果設定,1,強制誘発,自分が場に出た時に、相手のモンスターの数が2体以下の時発動する。\nこのカードは相手のフィールドに移る。
誘発効果設定,1,場に出た時,
効果条件設定,1,相手モンスター.Count,<=,2
@効果
switch,効果ID
case,1
{
コントロール変更,自分,相手所属
}
@効果_街バトル
イベント実行,効果,
命乞いをするモンスター
戦闘で破壊されそうになると命乞いする兵士の風上にも置けない
@初期設定
&カード名,命乞い兵士
&カード画像,PU2.png
レベル設定,3,
攻撃力設定,700,
最大HP設定,1000,
属性設定,地属性,
タイプ設定,戦士,
性別設定,男,
レアリティ設定,N,
攻撃エフェクト設定,&&斬るエフェクト
&フレーバーテキスト,そこそこの実力を持つ一般通過兵士、命乞いを欠かさない。
@命乞い
if,相手.?性別:その他
{
命乞い失敗
イベント終了
}
話者変更,自分
画像表示,&カード画像
セリフ,俺にも家族がいるんだ。見逃してくれないか・・・?
選択肢生成,攻撃する,攻撃しない
if,選択肢,==,1
{
セリフ,くそっ すまない・・・みんな・・・。
命乞い失敗
イベント終了
}
SE,&&武器を構えるSE
セリフ,・・・。
状態異常付与,相手,寸止め
イベントダメージ,相手,9999
話者変更,相手
セリフ,あ・・・え・・・?
話者変更,自分
セリフ,ん?\n見逃してくれとは言ったが、攻撃しないとは言っていないぞ。
イベントダメージ,相手,1500
イベントダメージ,相手,1800
セリフ,まぁ次が有ったら、敵の戯言に耳を貸さないこったな。
とどめダメージ,相手,6666
@命乞い_街バトル
イベント実行,命乞い,
デッキからドローする通常魔法
通常魔法で効果により2枚デッキからドローする奴
@初期設定
&カード名,強欲な奴
&カード画像,Tr53.png
属性設定,闇属性,
タイプ設定,通常魔法
性別設定,その他,
レアリティ設定,N
効果設定,1,play,自分はデッキから2枚ドローする。
@効果
switch,効果ID
case,1
{
効果ドロー,自分プレイヤー
効果ドロー,自分プレイヤー
}
@効果_街バトル
イベント実行,効果,
デッキからカードを選び加える通常魔法
通常魔法でデッキから任意のカードを1枚持ってくる奴
@初期設定
&カード名,サーチ
&カード画像,Sp16.png
属性設定,地属性,
タイプ設定,通常魔法,
性別設定,その他,
レアリティ設定,N,
効果設定,1,play,自分はデッキからカードを1枚選び手札に加える。
効果条件設定,1,0,<,自分デッキ.Count,
@効果
switch,効果ID
case,1
{
カード選択,自分デッキ,1
効果サーチ,選択カード,自分所属
}
@効果_街バトル
イベント実行,効果,
自分を回復する通常魔法
通常魔法で効果により1000ポイント回復する奴
@初期設定
&カード名,治療の実
&カード画像,Sp41.png
属性設定,光属性,
タイプ設定,通常魔法
性別設定,その他,
レアリティ設定,N
効果設定,1,play,自分は1000LP回復する。
@効果
switch,効果ID
case,1
{
効果ヒール,自分プレイヤー,1000
}
@効果_街バトル
イベント実行,効果,
相手の手札を奪う通常魔法
全部持って行く奴
@初期設定
&カード名,強奪
&カード画像,Sp315.png
属性設定,闇属性,
タイプ設定,通常魔法,
性別設定,その他,
レアリティ設定,N,
効果設定,1,play,相手の手札を奪う。
誘発効果設定,1,効果発動時,
@効果
switch,効果ID
case,1
{
$繰返,=,相手手札.Count
%効果対象,=,相手手札
while,1,<=,$繰返
{
カード抜き出し,%効果対象,$繰返,%処理カード
効果サーチ,%処理カード,自分所属
$繰返,-=,1
}
}
@効果_街バトル
イベント実行,効果,
チャージする永続罠
発動した回数をわざわざ数える奴
@初期設定
&カード名,記録ノート
&カード画像,Sp42.png
属性設定,闇属性,
タイプ設定,永続罠,
性別設定,その他,
レアリティ設定,N,
効果設定,0,explain,発動したカードにこのカードは含まない予定。
効果設定,1,強制誘発,効果が発動した場合、このカードのチャージを+1する。
誘発効果設定,1,効果発動時,
@効果
switch,効果ID
case,1
{
$このターンの発動回数,+=,1
$チャージする数,=,ターン内発動カード.Count
if,$記憶したターン,==,現在ターン
{
$チャージする数,-=,$このターンの発動回数
$チャージする数,-=,$このターンチャージした数
}else{
$このターンチャージした数,=,0
$このターンの発動回数,=,1
$チャージする数,-=,$このターンの発動回数
}
効果チャージ,自分,$チャージする数
$このターンチャージした数,+=,$チャージする数
$記憶したターン,=,現在ターン
}
@効果_街バトル
イベント実行,効果,
召喚された時に発動できる罠
もろとも焼く奴
@初期設定
&カード名,焼き尽くす
&カード画像,Sp32.png
属性設定,炎属性,
タイプ設定,通常罠,
性別設定,その他,
レアリティ設定,N,
&エフェクト,Fire1
効果設定,1,誘発,モンスターが場に出た時発動できる。フィールド上のモンスターをすべて破壊する。
誘発効果設定,1,他者召喚時,
@効果
switch,効果ID
case,1
{
効果破壊,全モンスター,&エフェクト
}
@効果_街バトル
イベント実行,効果,
効果を無効にする罠
効果無効にしたあと除外してくる奴
@初期設定
&カード名,無効化
&カード画像,Tr4.png
属性設定,光属性,
タイプ設定,通常罠,
性別設定,その他,
レアリティ設定,N,
効果設定,1,誘発,カードの効果が発動した時発動できる。そのカードの効果を無効にする。
誘発効果設定,1,効果発動時,
@効果
switch,効果ID
case,1
{
効果無効化,トリガー能動カード,
効果除外,トリガー能動カード,
}
@効果_街バトル
イベント実行,効果,
自作カードパックの作成
公式ドキュメントから引用
CSV/Shop/Commodityの中のファイルを複製して一部改変してください。収録カードは「中身,」のところで規定されています。そのファイルをCSV/Shop/Commodityに入れたあと、CSV/EventList/Commodity/CardPackのファイルを複製して、
「CardPack,Shop/Commodity/{オリジナルパック名},CardPack,」
と記載すると、ショップにパックが追加されます。
収録カードのレアリティに抜けがあると購入できなくなる現象が確認されています。
N/R/SR/URのカードをそれぞれ1枚ずつ収録する必要があります。
自作街の作成
CSVフォルダのPlaceにあるファイルを参考にすれば街そのものを作ることも可能です。
複数のファイルを用意する大型MODになります。
その他
画像ファイルパスの指定に「¥」を使用すると、Android環境で表示されなくなります。
「/」を使用して、Testフォルダ/Test.png のように記述すれば正常になります。