戦国ランス/MOD作成/武将追加

Last-modified: 2024-02-12 (月) 13:51:46

概要

戦国ランス全国版&本編に武将を追加する方法を解説。
原則として、日本語パッケージ版ver1.04を例とする。

実際に武将を追加する流れで記す。例として追加する武将はランスの盟友としておなじみ''バーナード''。
使用素材・改造例等の諸ファイルをまとめたものがこちら

画像

画像素材の用意(※必須)

画像素材のぺージを参考にしたり、インターネット上で探したりして画像を用意する。

(バーナード例:
バーナードはランス01/ランス03/ランス6/ランスクエスト/ランス10に出演している。
この内ランス01はテキストで出ているだけなので、他4作から画像素材を集めた。

画像の加工(※必須)

使用ツール:透過情報を保存できる任意の画像編集ソフト
指定のpxサイズにトリミングし、PNGに変換して保存する。

(バーナード例:
Windows付属の3Dペイント(通常のペイントだと透過情報が保存されないので不可)を使用。
なおバーナードの素材は背景透過済のため楽だったが、非透過の場合は切り抜き作業を行わないと自然に仕上がらない。

※ルドラサウム版ではサイズ拡大が行われているため、当該MODに変更を加える場合は以下の条件に注意。
立ち絵(イベント用) - 1280x720
顔(登用・解雇・イベント顔枠) - 186x220
小顔(一覧、戦闘) - 100x94
戦闘スプライトは変更無し

1.立ち絵

800*600px
イベント時に使用。
イベントに出さない武将には不要。

(バーナード例:
ランス10の立ち絵(1920*1080)から、絵柄の外の部分をトリミングしてサイズを合わせた。

01 立ち絵.png

2.顔(※必須)

186*220px
捕虜からの登用・一覧からの解雇時や、イベントの顔枠に使用

(バーナード例:
ランス10の立ち絵(1920*1080)から顔部分をトリミング→縮小。

02 顔.png

3.小顔(※必須)

65*72px*1
一覧表示等に使用。
橙色の枠線(太さ1px)を付加したほうが自然に仕上がる。

枠線加工用画像。サイズ合わせした画像に上から重ねるだけで使える。

小顔枠.png

(バーナード例:
2.顔(186*220)を縮小するだけでは縦に長いので上下をトリミング。
枠線を重ねた関係、わずかに左右上下が隠れた。

03 小顔.png

4.戦闘スプライト基本

270*270px または 480*370px
合戦画面で上部に表示されるドット絵。

(バーナード例:
ランス6の戦闘スプライト基本(130*172)をそのまま流用。
バニラの諸画像を参考に立ち位置・サイズ感を調整し配置。

04 戦闘スプライト基本.png

5.戦闘スプライト攻撃

340*290px または 480*370px
合戦画面で上部に表示されるドット絵の攻撃時のもの。

(バーナード例:
ランス6の戦闘スプライト攻撃(300*240)をそのまま流用。
バニラの諸画像を参考に立ち位置・サイズ感を調整し配置。

05 戦闘スプライト攻撃.png

ALD入力(※必須)

使用ツール:ALDExplorer2(パッケージ版の場合)
使用ツール:System4SDK NL5.exe(ダウンロード版&パッケージ廉価版の場合)
ツールの基本的な使い方は、戦国ランス/MOD作成/基本#ALDExplorer2を参照。
任意の空き番号へ「Import」し、各画像ごとの番号をメモしておく。

(バーナード例:
各画像のファイル名を、上から「cg03701」「cg03702」「cg03703」「cg03704」「cg03705」に変更。
ALDExplorer2で「戦国ランスGA.ald」を開き、「Import and add new files」から一つずつ格納。File Formatのダイアログは.qntのままでOK。
「Save as」で「戦国ランスGA.ald」を上書き保存。

ALD入力例.png

武将設定(基本)

使用ツール:AinDecompiler(※以下は一貫してAinDecompilerを使用
ツールの基本的な使い方は、戦国ランス/MOD作成/基本#AinDecompilerを参照。

固有武将登録.jaf(※必須)

武将の基本情報を設定する。

ここで設定した武将番号は今後も使うのでメモしておく。武将番号の空きは戦国ランス/MOD作成/各種番号#charaを参照。
各画像設定の部分は、ALD入力時にメモした画像番号を入れる。

	if (武将番号 == 番号)
	{
		CHA(ii, iic, 番号, 国力コスト, 険悪2普通3信頼4愛情5, 男性0女性1, 探索, 交渉, 建設, "名前", 重要有0重要無1, 普通化イベ汎用0固有1なし9, 信頼化イベ汎用0固有1なし9, 愛情化イベ汎用0固有1なし9);
		CHB(ii, iic, 兵種番号, 初期兵数or初期兵数倍率, 攻, 防, 知, 速, 技, 技能番号, 技能番号, 技能番号, 技能番号, 技能番号);
		CHC(ii, iic, 立ち絵番号, 顔番号, 小顔番号, 戦闘スプライト基本番号, 副官スプライト番号, 0, 0);
		CHS(ii, iic, 34, レベル, レベル上限);
	}
  • 兵種番号は戦国ランス/MOD作成/各種番号#typeを参照。
  • 技能番号は戦国ランス/MOD作成/各種番号#skillを参照。
  • 初期兵数はn*2以上の場合は数字そのまま兵数で、n未満の場合は勢力の平均兵数に乗算する倍率*3
  • 立ち絵番号~スプライト番号は0で汎用画像が表示される
  • 副官スプライト番号はランスにおけるシィルのように二人のキャラクターを並べる場合に使用するが、そうでない場合は0で非表示。

(バーナード例:
以下、バーナード例では武将番号101を用いる。

	if (101 == 番号)
	{
		CHA(ii, iic, 番号, 1, 3, 0, 3, 5, 2, "バーナード", 0, 9, 0, 9);
		CHB(ii, iic, 1, 300, 4, 3, 3, 7, 4, 0, 0, 0, 0, 0);
		CHC(ii, iic, 3701, 3702, 3703, 3704, 0, 0, 0);
		CHS(ii, iic, 34, 25, 25);
	}

武将出現(※いずれか必須)

ここまでに正しく処理できているかの確認も兼ねて、いずれかの方法でゲーム内に出現させてみよう。
なお、一つのモード(本編or全国版)に対し、同時に複数の方法で登録→加入させると画像のように分裂するので注意。
(バーナード例:

分裂.png

初期兵力.jaf

本編開始時の勢力に登録する場合の処理。
if (ii2 == 勢力ID)以下に記入する。

		武将強制登録(1, 武将番号, 0);

(バーナード例:

		武将強制登録(1, 101, 0);

正しく処理できていれば、画像のようになる。
一覧表の武将順は記入箇所に則る。

本編初期.png

全国版初期化.jaf

全国版開始時の勢力に登録する場合の処理。

	iic = 武将強制登録(ii, 武将番号, 0);
	名有り武将登録(ii, iic, 110);

上か下のどちらかを、所属させたい勢力(※例としては織田)の行に記入する。
下だと(開始時の勢力への所属中は)解雇・捕獲・討死が不可能な重要武将となる。

	iic = 武将強制登録(ii, 武将番号,, 0);
	重要武将登録(ii, iic, 130);

(バーナード例:

	iic = 武将強制登録(ii, 101, 0);
	名有り武将登録(ii, iic, 110);

正しく処理できていれば、画像のようになる。
一覧表の武将順は記入箇所に則る。

全国版追加.png

織田選択グループ.jaf

本編選択イベントで仕官する場合の処理。

  • ch = n; の用途は不明(要加筆)
  • tt = n; の用途は不明(要加筆)だが、他イベントと値が被っていると選択できなくなる

(バーナード例:

	tt = 9999;
	if (キャラ確認(101, 0, 0, 0) == 0 && 武将追加確認(2) == 1)
	{
		if (織田選択(ff, tt, "バーナード 仕官", 0, 0) == 1)
		{
			武将強制登録(1, 101, 0);
			return 1;
		}
	}

上のif文でバーナードが既に所属していない&武将枠と国力の空き2を確認し、下のif文のイベント名「バーナード 仕官」を発生させる。
if文に「lim = n」の指定が存在しないため、すべての国で選択可能。
イベントの効果は武将登録のみで、固有のイベントテキストは追加していない。

正しく処理できていれば、画像のようになる。

織田選択グループ.png

全国選択グループ.jaf

全国版選択イベントで仕官する場合の処理。
織田選択グループ.jafとまったく同じ表記となるため省略。

ゲーム初期化.jaf

本編探索可能在野に登録する場合の処理。探索を行うと織田家に加入する。
既存のものと合わせて末尾に記入すると良い。

在野 (固有ID、州番号、武将番号、探索必要値)

(バーナード例:
尾張に探索必要値3で配置。

	在野(4, 15, 101, 3);

正しく処理できていれば、画像のようになる。

武将探索.png

モード選択.jaf

本編周回ボーナスに登録する場合の処理。
(バーナード例:
三箇所に加筆し、1ポイントでバーナードが追加されるようにした。

	lint ▲武士0 = 0;
				if (▲武士0 == 0)
				{
					選択肢(79, "□ バーナード(武士) 要01P");
				}
				if (▲武士0 == 1)
				{
					選択肢(80, "■ バーナード(武士) ----");
				}
				if (rr == 79 && GF[141] > 0)
				{
					▲武士0 = 1;
					GF[141] -= 1;
					武将強制登録(1, 101, 0);
					フラグ調整();
					マップ_情報更新(true);
				}
				if (rr == 80)
				{
					▲武士0 = 0;
					GF[141] += 1;
					キャラ消去(101, 999);
					フラグ調整();
					マップ_情報更新(true);
				}

正しく処理できていれば、画像のようになる。

周回ボーナス.png

武将設定(スプライト)

tagUnitCharaManager@0.jaf

	this.add(武将番号, 戦闘スプライト基本, 不明);

上の記法で入力する場合、戦闘スプライト攻撃の管理で他のjafを参照する必要があるが、大量の追加武将を管理する際に有用。
下の記法で入力するほうが分かりやすいため、バーナード例はこちらで記述する。

	this.addEx(武将番号, 戦闘スプライト基本, 戦闘スプライト攻撃, 戦闘スプライト攻撃特殊, 0);

戦闘スプライト攻撃特殊が使用されるのは、「技能データ初期化.jaf」で行動技数が99(=全消費)に設定されている技能のみ。

なお「this.add」「this.addEx」どちらの設定も無い武将は、「固有武将登録.jaf」で設定した戦闘スプライト基本の値から+10した値が、戦闘スプライト攻撃として使用される。
仮に戦闘スプライト基本が5001の場合、戦闘スプライト攻撃は5011になる。

(バーナード例:
ここでは戦闘スプライト攻撃と戦闘スプライト攻撃特殊に同じ画像を用いている。

	this.addEx(101, 3704, 3705, 3705, 0);

正しく処理できていれば、画像のようになる。

戦闘スプライト例.png

tagUnitChara@set.jaf

上の「tagUnitCharaManager@0.jaf」で「this.add」で設定している場合のみ用いられる。

仮に戦闘スプライト基本が5001の場合、戦闘スプライト攻撃は5001+300=5301、戦闘スプライト攻撃特殊は5001+600=5601を使用する。
この値(300/600)を変更すると、既存のスプライトもズレて大変なことになるので注意。

	this.m_nAttackCgNo = nCgNo + 300;
	this.m_nSpecialCgNo = nCgNo + 600;

(バーナード例:
なし。

tagUnitCharaManager::getAttackCgNo.jaf

戦闘スプライト攻撃特殊は技全消費でのみ用いられると二つ上の項に書いたが、例外も設定できる。

「武将番号」が「技能番号」を使うときのみ、行動技数に関わらず戦闘スプライト攻撃特殊が用いられるようになる。

       case 武将番号:
           bSpecial = nActionNo == 技能番号;
           break;

(バーナード例:
なし。

tagEffectDataManager.jaf

エフェクトアニメーションを変更する場合に必須。
エフェクトは戦闘画面上部(800*314)への表示と、各部隊欄(152*78)への表示の二種類がある。
なお16:9化されているルドラサウム大陸MOD等では、戦闘画面上部が1280*314に拡大されている。

add1/add2/add3で対象が異なるため個別に解説する。
共通してアニメーションの基本の表示枚数は30枚だが、仮に60枚で設定すると30枚と比べて倍速でフレームが切り替わる形で再生される仕様。

(バーナード例:
なし。

add1(技能)

	this.add1(開始スプライト番号, 使用スプライト数, 開始スプライト番号2, 使用スプライト数2, 対応技能番号1, 対応技能番号2, 対応技能番号3, 対応技能番号4);

下はランスアタック/90、ランスアタックS/172の例。

	this.add1(40500, 30, 0, 0, 90, 172, 0, 0);

40500~40529の30枚の画像を利用してアニメーションを作成する。
なお開始スプライト番号2は全体を対象とする技能で入力する。番号1が全体の中の最初の対象に使用され、番号2は2~6番目の対象に使用される。

厳密には技能番号以外の値を使用することも可能で、それらは「tagEffectDataManager@checkAction.jaf」で定義されている。
たとえば991は回復全般、993はバリア全般。

add2(武将)

	this.add2(開始スプライト番号, 使用スプライト数, 武将番号);

下はフリーダム/1208の例。

	this.add2(46200, 15, 1208);

46200~46214の15枚の画像を利用してアニメーションを作成する。
武将番号の攻撃時に使用される。

add3(兵種)

	this.add3(開始スプライト番号, 使用スプライト数, 開始スプライト番号2, 使用スプライト数2, 対応兵種1, 対応兵種2, 対応兵種3, 対応兵種4);

下は武士/1、魔物武士/27、魔物足軽/28の例。

	this.add3(40000, 30, 0, 0, 1, 27, 28, 0);

40000~40029の30枚の画像を利用してアニメーションを作成する。
兵種の攻撃時にアニメーションが使用される。
なお開始スプライト番号2は全体を対象とする技能で入力する。番号1が全体の中の最初の対象に使用され、番号2は2~6番目の対象に使用される。

特殊な使い方

スプライトを透過画像に指定*4し、アニメーションさせるエフェクトに武将を登場させることで、縦横無尽に動きまわるようなアニメーションを作成できる。
武将は本来なら基本1+攻撃2の三種類のスプライトしか持たないが、この方法では技能ごとにエフェクトを設定し様々なアニメーションを表示できる。
アニメーションが終わっても行動処理が終わるまで画像はそのままで止まるため、違和感の無いように作成せねばならない点は要注意。
また、動きに対応した効果音を作成してタイミングよく鳴らせれば更に自然になる。

tagBattleSoundManager@0.jaf

  tagBattleSoundManager::tagBattleSoundManager()
  {
     this.add(40000, 2001);
  }

スプライト番号40000が再生された際、2001番のサウンドも再生される。

tagBattleEffect@getTime.jaf

前述したようにエフェクトは基本30フレームかつ限られた時間しか動かせないため自由度を欠いている。
ここではエフェクトの再生速度を調整する。

       if (nSpeed == 0)
       {
           // 新規追加
           if(this.m_nCgCount >= 31 || this.m_nCgNo >= 51000)
           {
               return this.m_nCgCount * 60;
           }
           else
           {
               return 750;
           }
           // 新規追加ここまで
       }

エフェクトに用いるスプライトの使用枚数が増えるごとに、もしくは指定したスプライト番号以上のとき、再生時間を増加させている。
これによりスプライトを60枚使ったとしても倍速にならない。
上記にある指定数値は大雑把なので、使いたいエフェクトに応じた調整は必須。

tagBattleEffect@create.jaf

戦闘エフェクトは元画像に関係なく半透明化されており、黒(0,0,0)はアルファチャンネル不要で完全透過されている。
元画像が透過されていたとしても、黒/白以外では半透明に戻されるので注意。

作成するエフェクトによっては上記の透過の仕様が邪魔になるので調整する。
戦闘エフェクトの透過処理を行っているのは「setDrawMethod(n)」の箇所。
デフォルトの1を0に変更すると透過されなくなる。

    this.m_asSp[0].create(nCgNo, nCount, bReverse);
    // 新規追加
    if (nCount >= 31 || nCgNo >= 51000)
    {
        this.m_asSp[0].setDrawMethod(0);
    }
    else
    {
        this.m_asSp[0].setDrawMethod(1);
    }
    // 新規追加ここまで
    this.m_nCgNo = nCgNo;

上記では、既存エフェクトに影響が出ないようにスプライト枚数が31以上、もしくは指定したスプライト番号以上のみに変更を適用している。

武将設定(技能)

技能データ初期化.jaf

技能を新規追加する場合の処理。
実際に武将に技能を保持させるため、「固有武将登録.jaf」の技能番号の変更が必要。
複雑な処理を行う場合は「合戦/戦闘計算.jaf」などの変更が必要。

	aa = 技能番号;
	行動名前[aa] = "技名";
	行動説明[aa] = "説明";
	行動タイプ[aa] = 数字;
	行動ターゲット[aa] = 数字;
	行動ダメージ率[aa] = 数字;
	行動ダメージ率敵[aa] = 数字;
	行動待ち時間[aa] = 数字;
	行動戦果[aa] = 数字;
	行動技数[aa] = 数字;
	行動タメ[aa] = 数字;
	行動タメ耐性[aa] = 数字;
	行動TX[aa] = 1;
  • 技能番号の空き番号は24/176/183/221~300で、301以上を使おうとするとエラー。
  • 行動名前はn文字まで。
  • 行動説明はn文字まで。
  • 行動タイプは戦国ランス/MOD作成/各種番号#skill_typeを参照。パッシブ技能のみ行ごと省略。
  • 行動ターゲットは戦国ランス/MOD作成/各種番号#skill_targetを参照。パッシブ技能のみ行ごと省略。
  • 行動ダメージ率は100で1.0倍/50で0.5倍/200で2.0倍。ダメージを持たない技能では行ごと省略可。
  • 行動ダメージ率敵は反撃の発生ダメージ。反撃されない技能では行ごと省略可。
  • 行動待ち時間は小さいほど次の行動までの間隔が狭まる。パッシブ技能のみ行ごと省略。
  • 行動戦果は戦果上昇を伴う技能(戦果アップ・大声突撃など)に設定。戦果操作が無い技能では行ごと省略可。
  • 行動技数は技消費数で、99で全消費技。パッシブ技能のみ行ごと省略。
  • 行動タメは行動を行うまでに要する行動回し数(式神が典型)。タメが無い技能では行ごと省略可。
  • 行動タメ耐性は準備を解除するのに必要な解除攻撃数。1なら1回の手裏剣、2なら2回の手裏剣で解除される。タメが無い技能では行ごと省略可。
  • 行動TXは詳細不明。原則として行ごと省略可。

(バーナード例:
固有武将登録の技能番号の四つ目に追加する例。なお三つ目に追加すると「武士攻撃」を上書きする形になる。
性能としては「武士攻撃」のダメージが1.02倍になっただけ。

	aa = 221;
	行動名前[aa] = "Bスラッシュ";
	行動説明[aa] = "我流の連続切り。あまりの速さに常人には単発攻撃にしか見えない。";
	行動タイプ[aa] = 1;
	行動ターゲット[aa] = 1;
 	行動ダメージ率[aa] = 102;
	行動ダメージ率敵[aa] = 25;
	行動待ち時間[aa] = 15;
	行動技数[aa] = 1;

正しく処理できていれば、画像のようになる。

技能追加例.png

合戦/戦闘計算.jaf

武将/兵種/技能/アイテムなどで特殊なダメージ処理を行う場合に必須。
例としては使徒玄武の被ダメ半減陰陽の対鬼ダメージ4倍巫女の舞の割合10%ダメージ謎のムラサメ装備時のダメージ1.2倍がここで定義されている。

バニラの記述例(陰陽の対鬼ダメージ4倍)。

		if (gs[ii][iic].兵種 == 8 && (gs[ii][iic2].番号 == 1236 || gs[ii][iic2].番号 == 1237 || gs[ii][iic2].番号 == 1086 || gs[ii][iic2].番号 == 1087))
		{
			aa1 = aa1 * 4;
			if (◆DBV == 1)
			{
				LOG_TADA(" 戦闘計算 " + string(aa1) + " 陰陽>鬼の有利処理\n");
			}
		}
  • gs[ii][iic].兵種 == 8が、自分が兵種番号8(陰陽)
  • gs[ii][iic2].番号 == 1236が、攻撃対象が武将番号1236(前鬼)
  • gs[ii][iic2].番号 == 1236が、攻撃対象が武将番号1237(後鬼)
  • gs[ii][iic2].番号 == 1086が、攻撃対象が武将番号1086(赤鬼)
  • gs[ii][iic2].番号 == 1087が、攻撃対象が武将番号1087(青鬼)
  • aa1 = aa1 * 4;が、ダメージ4倍
  • if (◆DBV == 1)が、解説文で省略可。

(バーナード例:
使用する技能が221/Bスラッシュで、攻撃対象が3/足軽のとき、ダメージが5倍になる処理。Bスラッシュとしては信じがたい効果だが、変化を分かりやすくするため極端な値にしている。

		if (bb == 221 && gs[ii][iic2].兵種 == 3)
		{
			aa1 = aa1 * 5;
		}

正しく処理できていれば、画像のようになる。

戦闘計算.png

合戦/行動後処理.jaf

武将/兵種/技能/アイテムなどで付与・戦果・ターン操作などの処理を行う場合に必須。
読み方は「合戦/戦闘計算.jaf」と同じ。

(バーナード例:
なし。

合戦/初期化.jaf

武将/兵種/技能/アイテムなどで戦闘開始時の付与などの処理を行う場合に必須。
読み方は「合戦/戦闘計算.jaf」と同じ。

(バーナード例:
なし。

技能n処理.jaf

nは全角数字の1・3・4・5。
好感度7/7時の取得可能技能を変更する場合の処理。
兵種or武将のどちらかをトリガーとする。

(バーナード例:
「技能4処理.jaf」の武士の部分に加筆。
技能4が0/なしのすべての武士がBスラッシュを取得できるようになる。

		if (gs[ii][iic].技4 == 0)
		{
			ck = 能力UP技能(fg, ii, iic, 221);
		}

正しく処理できていれば、画像のようになる。

技能取得.png
技能取得2.png

武将設定(討死)

基本の設定項目では討死有無捕獲有無は共通して重要有無として括られている。
このため、討死するが捕獲されないor討死しないが捕獲されるような武将を作る際は別の設定が必要。

(バーナード例:
なし。

固有武将登録.jaf

重要無=討死有・捕獲有の明智光秀/1115に対し、
if文の最後に「gs[ii][iic].戦場生死確率 = 0;」を追加することで、討死無とした変更例。

	if (1115 == 番号)
	{
	 	CHA(ii, iic, 番号, 2, 3, 0, 4, 6, 4, "明智光秀", 0, 0, 0, 9);
	 	CHB(ii, iic, 13, 250, 3, 4, 4, 3, 2, 0, 0, 0, 0, 0);
	 	CHC(ii, iic, 0, 912, 0, 0, 0, 0, 0);
	 	CHS(ii, iic, 0, 22, 32);
	 	// 新規追加
	 	gs[ii][iic].戦場生死確率 = 0;
	}

P合戦/戦闘結果.jaf

重要有=討死無・捕獲無の山本五十六/1115を、捕獲有とするバニラの処理。

					if (gs[ii][iic].番号 == 1026)
					{
						aa = 1;
					}

P合戦/戦闘結果.jaf(オマケ)

ランス/1000、香姫/1078が確実に討死するバニラの処理。

	 	 	 	if (gs[ii][iic].番号 == 1000 || gs[ii][iic].番号 == 1078)
	 	 	 	{
	 	 	 	 	gs[ii][iic].F戦闘結果 = 1000;
	 	 	 	 	break;
	 	 	 	}

不死身稲荷の御守り/49装備で討死無効化するバニラの処理。

	 	 	 	if (gs[ii][iic].アイテム == 49)
	 	 	 	{
	 	 	 	 	break;
	 	 	 	}

「合戦/戦闘結果実行.jaf」と合わせ、戦闘で討死にした武将を勢力から除去するバニラの処理。

	 	 	 	gs[ii][iic].F戦闘結果 = 1000;
	 	 	 	break;

なお、戦場生死確率のfor文直下に「break;」を記述する最低限の変更で、全武将の討死を無効化できる。

武将設定(台詞)

TX.jaf

固有の台詞を追加する場合の処理。

武将番号を記入し、全体を括る
if (キャラ == 1066 || キャラ == 1067 || キャラ == 1069 || キャラ == 1070)のように記入すれば、複数の武将に同じ台詞を設定できる。

	if (キャラ == 武将番号)
	{
	}

if (キャラ == 武将番号)以下に記入。

		if (aa == 数字)
		{
			return "台詞";
		}

1:合戦攻撃(味方)
2:合戦攻撃(敵)
20:アイテム消費
21:内政(建設など)成功
22:解雇&内政失敗
5008:?
5051:?
rr = RAND(分岐);で囲えば、複数の台詞がランダムに表示されるよう設定できる。

if (aa == 1or2)以下に記入。

			if (FG[数字] == false)
			{
				FG[数字] = true;
				P合戦会話(0or1, CGX, "台詞");
				return "";
			}

この記述が有る場合、条件を満たすとき一度だけ台詞が出るよう。
この記述が無い場合、条件を満たす度に何度でも同じ台詞が出る。
FG[数字]は他のFGと被らないようにする。

if (aa == 1or2)以下に記入。

			if (ターゲット == 武将番号)

この記述が有る場合、武将番号の武将を攻撃した場合のみ台詞が出る。

if (aa == 1or2)以下に記入。

			if (bb == 技能番号)

指定した技能番号が使われたときのみ台詞が出る。

if (aa == 1or2)以下または各if条件以下に記入

			P合戦会話(0, CGX, "台詞");。

0だと顔グラの位置が左、1だと右に出る。
CGXはどの顔絵を表示させるかの指定。CGXのままなら指定武将の標準の顔絵を自動で使用。
特定の顔絵を表示させる場合は「固有武将登録.jaf」のCHCのint cg1の数字*5を入力。

(バーナード例:

	if (キャラ == 101)
	{
		if (aa == 1)
		{
			if (bb == 221)
			{
				P合戦会話(0, CGX, "蝶のように舞い、蜂のように刺す!");
				return "";
			}
		}
		if (aa == 20)
		{
			return "………………ふっ";
		}
		if (aa == 21)
		{
			return "俺が来たからにはもう安心だ";
		}
		if (aa == 22)
		{
			return "フランチェスカー!";
		}
		if (aa == 5008)
		{
			return "……フランチェスカなのか?";
		}
		if (aa == 5051)
		{
			return "膝に矢を受けてしまってな";
		}
	}

正しく処理できていれば、画像のようになる。

台詞追加.png
台詞追加2.png
台詞追加3.png

コメント欄

  • 画像のALD格納って4521~4525使う場合顔が4521で小顔が4522でいいんですか? -- 2023-01-16 (月) 12:02:21
    • どこでどの画像番号を読み込むかはainの側で指定するので任意の番号で良い。自分が管理しやすいように番号を使うと良いと思う。 -- 2023-01-20 (金) 21:19:28
  • AinDecompilerで編集した後の保存方法がよくわからん -- 2023-01-21 (土) 15:51:53
  • 固有武将登録分かりやすくなってますね お疲れ様です -- 2023-01-21 (土) 00:49:40
  • 画像をQNTへConvertは出来たんですがCGの戦国ランス.ALD格納は戦国ランスGA.aldと戦国ランスGB.aldどちらを開けばいいんでしょうか?また開いた先もどうすればいいかわかりません -- 2023-01-14 (土) 01:00:13
    • GAが基本のファイルで、GBのほうは1.03アプデで追加されたキャラ(志津香/月光)を収納しているファイルだが、どちらを開いても動く -- 2023-01-20 (金) 20:39:14
    • 開いた後は「Import and add new files」から画像ファイル(事前にcg数字に改名)を格納していって、「Save as」で「戦国ランスGA.ald」を上書き保存。 -- 2023-01-22 (日) 03:20:35
  • 再コンパイルって弄って出来たjafをainにクイックコンパイルとかすることであってます? -- 2023-01-16 (月) 18:53:16
    • それでOK -- 2023-01-22 (日) 03:20:55
  • CHBとCHB2の違いってなんですか?CHBだと反映されなくて2だと反映されたりしてて違いが分かりません -- 2023-01-20 (金) 04:04:50
    • CHBが通常合戦、CHB2が個人戦に対応してる -- 2023-01-22 (日) 03:21:09
  • 武将追加は出来たけど新しい自作の技を追加するとかは難しそうですね -- 2023-01-21 (土) 19:29:16
    • 簡単ですよ。技能データ初期化.jafの既存の奴パクって技番号だけ変えてそれを武将に追加してみてください。 -- 2023-01-22 (日) 00:22:37
    • それで追加出来てたら後は名前の部分変えたりとか効果の細かい所を変えたりとかする感じです。付与系などは合戦/初期化や合戦/戦闘計算を参照してみてください。 -- 2023-01-22 (日) 00:28:46
    • 技能データ初期化.jafの説明のところに書き加えても良いかもしれないですね -- 2023-01-22 (日) 01:00:58
    • 付与系も技能コピペして技番号技名変えて合戦/初期化見て4種50%バフの部分見つけてコピペして3種70%バフみたいな弄り方だったら簡単に出来ました ありがとうございます -- 2023-01-22 (日) 03:07:26
  • 戦闘画面で武将の後ろに随伴してる部隊の画像ってどうやって変えるんでしょうか?兵種毎に決まってるみたいですが武将ごとに設定って出来ますか? -- 2023-01-19 (木) 22:46:22
  • ALDファイルにどんどんファイル追加していくと、ファイル番号順に並ばないから大変。なにか解決策はありますか? -- 2023-01-19 (木) 16:41:58
  • tagEffectDataManager.jaf一番左のCG番号以外の数字は何を指してるのかわからないなあ 技番号っぽいのもあるけど -- 2023-01-21 (土) 11:57:21
    • ようわかってないから既存をコピペでやってるけど、その内解明したいね。 -- 2023-01-23 (月) 15:38:04
    • 一応わかる範囲で追記しておきました -- 2023-02-06 (月) 22:22:58
      • 重複部を削りつつ分別しておきました -- 2023-02-07 (火) 21:19:04
  • 大型MOD作るのは厳しいけど武将追加とオリジナル技とか作って遊びたいって人は改造の取っ掛かりとして多そうだからここのページ充実させたいね -- 2023-01-22 (日) 01:06:23
  • 技能データ初期化.jafとか合戦/戦闘計算辺りもなんか説明補足とか例欲しいな最低限で良いから -- 2023-01-23 (月) 19:49:57
  • 戦闘開始時に付与が付く技能は作れたけど付与+自動回復とか付与+バリアみたいな場合はどうすればいいんだろう -- 2023-01-23 (月) 21:47:40
    • 自己解決しましたすみません バリアとかもコピペで大丈夫でした -- 2023-01-23 (月) 22:22:07
    • ルドMODに付与+回復も付与+バリアもあるから、それらを参照してみては。「技能データ初期化.jaf」と「合戦/戦闘計算」 -- 2023-01-23 (月) 22:22:55
      • ありがとうございます -- 2023-01-23 (月) 22:37:58
  • まだ途中ですが、解説の下に実例も追加してみました。 -- 2023-01-25 (水) 23:10:39
    • イベント・技能関係以外は一通り追加できました。 -- 2023-01-26 (木) 01:35:06
    • バーナード例分かりやすいしほんと草 -- 2023-01-26 (木) 12:14:19
  • 地域探索の場所って多田¥■初期化.jafの中のゲーム初期化の下の方だと思うけど書き加える内容だけ書いてあって場所が書いてないの分かりづらいよね 自分も詳しくないから変なこと言ってるかもしれないけど -- 2023-01-25 (水) 23:31:49
    • 修正しておきました。 -- 2023-01-26 (木) 01:34:35
    • お疲れ様です -- 2023-01-26 (木) 02:49:03
  • 固有武将の空き番号が少なすぎるんですが、増やすことってできないんでしょうか? -- 2023-01-27 (金) 06:26:12
    • 1~999(36除)で足りない感じ? -- 2023-01-27 (金) 06:44:48
      • すみません。間違えました。在野の固有IDです。4/5/14/16/17/18/19しかないとのことなので7人しか登録できません -- 2023-01-27 (金) 18:38:47
  • 周回特典に新規武将追加する方法とかあってもいいかもね モード選択.jafちょっと弄るだけだけど -- 2023-02-07 (火) 01:38:18
    • 加筆しといた -- 2023-02-08 (水) 19:02:02
  • 追加した項目の調整ありがとうございます~ -- 2023-02-07 (火) 21:21:59
  • 技能番号301以降を追加したいんですが、行動名前等の要素数は増やせないんでしょうか?0.jafの当該箇所を300→400にしてみましたが、ain作成時にエラーで止まってしまいます。 -- 2023-04-22 (土) 23:29:37
  • 武将追加で小顔だけ何をしてもゲームに反映されず名前の書かれた画像になってしまうんですが何が間違ってるのかわかりませんどなたか解決策をご存じの方いませんか? -- 2024-02-12 (月) 13:51:46

*1 ルドラサウム大陸MODでは16:9化の関係で異なる。
*2 具体的な閾値は不明。
*3 バニラの援軍のかなみは14、マリアは7、レイラは10と設定されている。
*4 指定しないと汎用武将のスプライトが表示されてしまう。
*5 ランスの場合、数字が6と表示されている箇所。