シナリオ/プロット改造ネタ


簡単なプロットの解説や便利な改変など。


Something Nice


デフォルトの簡単なプロット、Series/PLOT_SomethingNice.txt を例に解説する。
%で始まる行はコメント。
Thanks to 11号機 587。

Plot 0
% プロットの開始宣言。

name <PLOT: Something Nice>
% プロットの説明。

% プロットに登場する人,物。最大8個まで(element8 まで)。
element1 <Faction Criminal>
% 犯罪組織の派閥(デフォルトでは盗賊ギルドのみ)のIDをelement1に指定。
element2 <Character Citizen Renowned !X 1>
% 市民で有名かつElement1と友好的でないキャラクターをelement2に指定。
element3 <PREFAB>
% インベントリ(inv)に記述された項目を上から順に指定する。

Init_Start <ifPersona E2 else GoDelete if= V1 0 else GoCheckTime V= 1 ComTime V+ 1 17000 Compose GET E3 .get SetItemFudge E3 Reward Threat PCRep 6 100 2000>
% Init_Startトリガーはプロットが新しく読み込まれた時にスクリプトを実行する。
% もし(ifPersona)element2(E2)が無ければ(else) GoDelete にジャンプする。
% もし変数1(V1) が 0 でなければ GoCheckTime にジャンプする。
% 変数1に(V= 1) 現在時刻を入れる(ComTime)。
% 変数1に(V+ 1) 17000 を足す。
% element3(E3)を手に入れたときのトリガー(Get)を.getという名前をつけて作成する(Compose GET E3 .get)。
% SetItemFudge E3 Reward Threat PCRep 6 100 2000?

start <ifPersona E2 else GoDelete if= V1 0 else GoCheckTime V= 1 ComTime V+ 1 17000 Compose GET E3 .get SetItemFudge E3 Reward Threat PCRep 6 100 2000>
% Startトリガーはどこかのマップに入った直後にスクリプトを実行する。

GoCheckTime <ifG ComTime V1 DeleteKeyItem E3 AdvancePlot 0>
% もし現在時刻が変数1より大きければ(ifG ComTime V1)
% element3を消去し(DeleteKeyItem E3)
% プロットを消去する(AdvancePlot 0)。
% AdvancePlotコマンドはプロット中のサブプロットに処理を切り替えるコマンドだが、0を指定すると元のプロットを消去する。

GoDelete <DeleteKeyItem E3 AdvancePlot 0>
% element3を消去し(DeleteKeyItem E3)
% プロットを消去する(AdvancePlot 0)。

.get <FacXP+ E1 1 AdvancePlot 0>
% 上述したように、.getトリガーはelement3を手に入れたときにスクリプトを実行する。
% element1(盗賊ギルド)の派閥経験値に1を加算する(FacXP+ E1 1)。
% プロットを消去する(AdvancePlot 0)。

sub
% プロットのサブコンポーネント。

Persona 2
% ペルソナ。NPCの会話スクリプトを記述する。
% 番号はelementの番号に対応。

rumor <!2 が最近いい物を買った>
% ランダム会話で表示される噂。
% !2 は element2 の人物名に置き換えられる。

greeting <NewChat ifG React 59 else GoNormal ifG PCRep 1 d100 else GoNormal ifG PCRep 2 d200 else GoNormal Say 1 GiveKeyItem E3 AddReact -5 AdvancePlot 0>
% GreetingトリガーはこのNPCと会話した時にスクリプトを実行する。
% 会話を開始(NewChat)
% もし友好度が 59 より大きくなければ(ifG React 59 else) GoNormal にジャンプ。
% もし英雄度(PCRep 1)が100面ダイスを振った結果より大きくなければ(ifG PCRep 1 d100 else) GoNormal にジャンプ。
% もし遵法度(PCRep 2)が200面ダイス振った結果より大きくなければ(ifG PCRep 2 d200 else) GoNormal にジャンプ。
% Msg1に記述した台詞を話す(Say 1)。
% element3 を渡す(GiveKeyItem E3)。
% 友好度を5下げる(AddReact -5)。
% プロットを消去する(AdvancePlot 0)。

GoNormal <SayAnything DeleteKeyItem E3 AdvancePlot 0>
% なんかてきとーに言う(SayAnything)。
% element3を消去し(DeleteKeyItem E3)
% プロットを消去する(AdvancePlot 0)。

Msg1 <こんにちは、 \PC 。%JFは%JSへの贈り物にこの腕時計を買った%JG…。%JSが気に入ってくれればいいんだけど。>
% Say 1 で話す内容。
%  \PC はプレイヤー名、%JF は一人称、%JS は二人称、%JG は語尾。

end
% サブコンポーネントおわり。

inv
% プロットのインベントリ。

% アイテム。element の PREFAB で指定される。
Treasure 10
name_org <Gold Watch>
name <金の腕時計>
place <2>
% placeコマンドはそれをインベントリ内に置くelementを指定する。
% この場合、element 2(NPC E2)がこのアイテムを所持する。

end
% インベントリおわり。

使われていない画像を指定する


用意されているが使われていないスプライトを表示するために、各ファイルの記述を変更する。
以下の変更を行っても、該当するイベントが残っている間は反映されない。
同様に既に手に入れているメックの画像も変更されない。

メックまたはキャラクター ファイル 説明
Esher Design/Esher.txt "Desig <NEC-04>"の次の行に"SDL_Sprite <ara_esher.png>"を挿入する。
Fenris Design/Fenris.txt "Desig <TSD-1078>"の次の行に"SDL_Sprite <zoa_fenris.png>"を挿入する。
Gobuksan Design/Gobuksan.txt "Desig <KSP-12>"の次の行に"SDL_Sprite <ghu_gobuksan.png>"を挿入する。
Gladius Series/TS_Story_RobotWarriors.txt Gladius は型番から Savin の系統と判断できるので、
"desig <RIG-03a>"の次の行に"SDL_Sprite <btr_savin.png>"を挿入する。
GARU SuperSoldier Series/ADV_FederatedTerritories.txt "name <GARU SuperSoldier>"の次の行に"SDL_Sprite <monster_garu.png>"を挿入する(3箇所)。
石ドラゴン Series/WMONdefault.txt 石ドラゴンの体の部位はどうみても人間じゃないので、とりあえず海ドラゴンの画像とする。
"name <石ドラゴン>"の次の行に"SDL_Sprite <monster_seadragon.png>"を挿入する。

店の作り方


元ネタ:スレ5号機 702, 716, スレ6号機 87。
店主の会話に対応したPersonaの、Greetingコマンドから始まるスクリプトに"Shop Wares"を記述する。
"Wares"は単なるラベルなので名前は違うものでも良い。

商品の内容は
Wares <商品にするGearの番号のリスト>
という形で記述する。Gearの番号についてはこちらを参照。

さらに商品の内容には以下のコマンドを追加できる。

コマンド 説明
MECHA メックを売るようになる。
MEXTRA Gearの番号に対応したメック用の装備を売るようになる。
DELIVERY メックの運送を行う。