イベントテクニック集

戦国史Ver1.10βで追加された条件イベント

普通にイベントを設定するのではなく、
あっと言わせるような使い方を紹介していきましょう。


例:元服してパワーアップ(テンプレ)

時期

  • 武将Aが15歳の年
  • 回数:一回

条件

  • 武将Aが存在している

効果

  • 武将Aを改名
  • 武将Bの能力を武将Aにコピー
  • Bは登場しない、Aよりも数段能力上


ミッション達成型シナリオ

自由度の高い戦国史のシステムを逆向きに活用する。
複数の条件イベントを使う。
特定の大名家でプレイすると、OP直後に最初の条件イベントが発生。
その際、達成すべき目標が言い渡される。
  (例、先祖の居城であった城Aを奪還せよ。)
この目標を達成すると、第二の条件イベントが発生し、さらに次の目
標が与えられる。そしてこの目標を達成するとさらに…。
という具合。
最新バージョンではマップ使用エリア変更・城情報閲覧可否・シナリオタイトル変更・経路を隠すまたは復活するといったイベントが使えるので、これらを使って演出するとさらに面白くなりそう。


一度しか表示されない選択肢

質問文表示イベントは、多少動きに癖があるので
良く使いそうなケースを書いてみました
(下記の「変数A」は
イベントごとにかぶらないように名前を変える必要があります)

時期

  • いつでも
  • 回数:一回

条件

  • 変数A=0
  • 変数Aに1を代入
  • 質問文を表示しYESが選択された

効果

  • 変数Aに2を代入(YESを選択した事による影響を追加)
なお、このイベントの後、変数Aには
  • 選択肢がYESの場合:2
  • 選択肢がNOの場合:1
が入ります。
このイベント自体では
「YESを選択した場合の効果」
しか記述できませんが、
これを利用して、
後続のイベントで「条件:変数A=1」
をうまく使ってやると
「NOを選択した場合の効果」も発生させることが出来ます。


開始時からの捕虜・人質武将

最初に捕虜・人質先の大名に武将を登録しておく(能力ALL0を推奨。もしくは移動しないように毎月所在地を監視し、月初めに強制移動させるのも有り)。
本来登場すべき武将はそれにあわせて通常で登場しないように登場年を変更しておく(9999年とか)。

以下、人質の例。

人質元服

時期

  • 人質武将(以下武将A)が15歳の年
  • 回数:一回

条件

  • 武将Aが存在している

効果

  • 武将Aを強制死亡
  • 本来の武将(武将B)を強制登場
もしくは、このページ上部の元服イベントと武将Aの所属変更を使ってやるのでも可能。
ただし、武将Aが当主候補の場合、相続権などもちゃんと変更すること。

人質処刑

時期

  • いつでも
  • 回数:一回

条件

  • 武将Aが大名A(武将Aが現在所属の家)に所属
  • 大名B(武将Aの本来の家)が大名Aの従属・臣従大名ではない

効果

  • 武将Aを強制死亡
なお、元服時に武将入れ替えを使わず、武将の能力を替えるだけならば、時期設定及び、条件設定を気をつけること。
ランダム関数を使って、処刑だけでなく、人質奪還イベントなんかを組み込むのも良いかもしれない。

人質強奪

時期

  • いつでも
  • 回数:一回

条件

  • 武将Aが捕虜(余談だが、捕虜かどうかを確かめるには、#捕虜大名(武将ID)>0を使えば良い)

効果

  • 捕虜にした大名(大名C)を変数に記憶
  • 大名Aを大名Cの従属(臣従)に


大名の資金増加

例として資金を10000増やす場合。減らす場合はマイナスするようにすればよい。

時期

  • いつでも
  • 回数:一回

条件

  • 大名Aが生存している

効果

  • 大名1の資金をデータ1にする(データ1に #資金(大名ID)+10000 をセット)


不戦同盟破棄

時期

  • いつでも
  • 回数:一回

条件

  • 大名Aが独立大名
  • 大名Bが独立大名
  • 大名Aと大名Bが非敵対(不戦同盟・従属・臣従)

効果

  • 大名1と大名2を宿敵化
  • 大名1と大名2を宿敵解除
敵対関係にするという効果はないので、宿敵化+宿敵解除という手順を踏む。


城の石高を特定の値にする

時期

  • いつでも
  • 回数:一回

効果

  • 城1の石高にデータ1を加算(データ1に-99999999をセット)
  • 城1の石高にデータ1を加算(データ1に20000をセット)
1行目でいったん石高をゼロにして、2行目で石高を20000にする。
石高だけでなく、レベル・町経済・鉱山・民衆支持・守備兵数・兵糧・交易船数についても同様のことができる。


特定の月にイベントを発生させる

時期

  • いつでも
  • 回数:何回でも

条件

  • データ1 = データ2 (データ1に#Month、データ2に5をセット)
特定の月(上記の例では5月)に条件イベントを発生させるには関数#Monthを使う。


一定期間ごとにイベントを発生させる

時期

  • いつでも
  • 回数:何回でも

条件

  • データ1 = データ2 (データ1に#Month-#Floor(#Month/3)*3、データ2に1をセット)
戦国史では剰余算が使えないが、「x-#Floor(x/y)*y」という計算式で、xをyで割った余りを求められる。
これにより、一定期間ごと(上記の例では1月・4月・7月・10月と3ヶ月ごと)に条件イベントを発生させたい時に、「一つでも成立した時」でフラグを立ててから別のイベントでその他の条件を設定しなくても1個のイベント内で条件を設定できる。

ランダムに城を選択する

#Floor(#Random*城数を代入した変数)+1 でいいように思えるが、#Random関数は0~1.0までの数値を返すため、極稀に1が返されて城数+1が代入されてしまい、その場合にエラーとなってしまう。そこで上記の応用で以下のようにする。

条件

  • 変数(データ1)に演算式(データ2)を代入(データ1:a データ2:#Floor(#Random*shirosuu) )
  • 変数(データ1)に演算式(データ2)を代入(データ1:Shiro1 データ2:a-#Floor(a/shirosuu)+1 )
これで1.0が返された時には1が引かれ、Shiro1に城数を超える値が代入される事は無くなる。


「一つでも成立した時」と「全て成立した時」で分けずに1つのイベント内でOR調査を行う

2つの大名家のうちどちらかが石高一位である時にイベントを発生させる

条件(全て成立した時)

  • データA ≧ データB(データA:#石高順独立大名(1) データB:125)
  • データA ≦ データB(データA:#石高順独立大名(1) データB:140)
  • データA = データB(データA:#Floor((#石高順独立大名(1)-5)/15) データB:(#石高順独立大名(1)-5)/15)
  • その他の条件
この例では、石高一位の独立大名の番号が125以上140以下、かつ5を引いてから15で割った数が整数になる場合、つまり125と140のどちらかである場合にイベントが発生する。
武将や城の所属大名・武将のいる城などにも応用可能。

2つの値を比較して、差の絶対値・大きいまたは小さい方の値を取り出す

条件(全て成立した時)

  • データA ≧ データB(データA:#石高順独立大名(1) データB:125)//サンプル2.0の松平家の番号
  • データA ≦ データB(データA:#石高順独立大名(1) データB:140)//サンプル2.0の織田家の番号
  • データA = データB(データA:#Floor((#石高順独立大名(1)-5)/15) データB:(#石高順独立大名(1)-5)/15)
  • 大名Aと大名Bが非敵対(不戦同盟・従属・臣従)(大名A:織田家 大名B:徳川家)
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:変数x データB:#足軽兵数(織田家の大名ID) )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:変数y データB:#足軽兵数(徳川家の大名ID) )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:変数a データB:#Round(x/(x+y))-0.5 )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:変数a データB:a*2*(x-y) )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:変数a データB:(x+y+a)/2 )
  • データA ≦ データB(データA:変数a データB:200000)
  • 発生時メッセージ「織田・徳川同盟の勢いはとどまるところを知りませぬ」
x/(x+y)を四捨五入することにより、xがy以上の時は1が、xがy未満の時は0が返され、その後0.5を引く事で変数aは0.5 or -0.5になる。
aに2を掛けて1 or -1に。さらに(x-y)を掛ける事で、xがy以上の時はx-yが、xがy未満の時は-(x-y) = y-xがaに代入される。
この時点でaの値にはxとyの差の絶対値が代入されている。
ここで(x+y+a)/2とすることで、xとyのうち大きい方の値が求められる。
最後を(x+y-a)/2に変えればxとyのうち小さい方の値が求められる。


空白地扱いの勢力を設定する

時期

  • いつでも
  • 回数:何回でも

条件

  • 大名Aが生存している

効果

  • 大名1が大名2の城と武将を全て併呑(大名2は滅亡)(大名1と大名2に同一の大名家をセット)
自分自身を併呑した大名家は城や武将がいても滅亡扱いになって一切行動しなくなり、郎党も登場せず、勢力リストにも勢力一覧にも表示されなくなる(武将がいないだけだと勢力リストからは消えるが勢力一覧には表示される)。収入も支出も各種パラメータに関係なく0になる。
これを利用することでどこの勢力にも所属しない城を擬似的に設定可能。ただし所属Freeの武将は登場してきてしまう。
なお、空白地勢力に城を追加すると復活(活動開始)してしまうので、特定の条件を満たすと城が空白地化するイベントを組み込む場合には、このイベントをリストの最後尾に置いて復活しても即空白地状態に戻すようにすると良い。


ゲーム内の武将番号とシナリオエディタ上の武将番号を関連付ける

大名と城はシナリオエディタで表示される番号がそのままゲーム中の大名番号・城番号となり、変動することは無い。
しかし武将は登場済みの武将にのみ番号が割り振られるためエディタ上の番号とは食い違い、番号の小さい武将が死亡するとそれより大きい番号が繰り上がるため同一武将の番号がゲーム中に変動してしまう。
そこで配列変数を使って2つの武将番号を関連付ける。

時期

  • いつでも
  • 回数:何回でも

ループ

  • 武将(BushouA)

条件(一つでも成立した時)

  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:1 )
  • データA = データB(データA:BushouA データB:#武将番号(B_00000) )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:2 )
  • データA = データB(データA:BushouA データB:#武将番号(B_00001) )
  • (中略)
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:24 )
  • データA = データB(データA:BushouA データB:#武将番号(B_00023) )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:65535 )

時期

  • いつでも
  • 回数:何回でも

ループ

  • 武将(BushouA)

条件(一つでも成立した時)

  • データA < データB(データA:BushouID[BushouA] データB:25 )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:25 )
  • データA = データB(データA:BushouA データB:#武将番号(B_00024) )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:26 )
  • データA = データB(データA:BushouA データB:#武将番号(B_00025) )
  • (中略)
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:48 )
  • データA = データB(データA:BushouA データB:#武将番号(B_00047) )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:65535 )

時期

  • いつでも
  • 回数:何回でも

ループ

  • 武将(BushouA)

条件(一つでも成立した時)

  • データA < データB(データA:BushouID[BushouA] データB:49 )
  • 変数(データA)に演算式(データB)を代入(条件には無関係)(データA:BushouID[BushouA] データB:49 )
  • データA = データB(データA:BushouA データB:#武将番号(B_00048) )
  • (以下略)
これを登録された武将の数だけ繰り返す(能力変化イベント用の登場しない武将の分は省いてもよい)。
こうすることで、例えばエディタ上の武将番号が大名番号と同じ武将が死亡するとその大名家が滅亡してしまう、といったイベントをループで簡単に作れる(大名家の数だけ作らずに済む。)
また、既存武将と自動生成武将の区別もできるので、郎党の能力値や名前を変化させる(例えば長宗我部家郎党を武勇の高い「一領具足」にする)イベントを作る際にも便利。
ただし、郎党と元服し客将として取り立てられた元人質の世嗣の区別はできないので注意。


統一時に条件イベントを実行する

統一すると、条件イベントを実行しないでエンディングとなってしまうので、次のようにする。
Version 1.13h以降は#統一成立があるため、メッセージを表示させたいだけなら条件を#統一成立=1にすればよい。
ただし、一旦統一成立すると独立・新勢力登場などのイベントで統一状態を解消してもそのままエンディングになってしまうため、ゲームを続行させたければこのイベントの応用が有効。
  • 統一処理用大名Aを作成する。
  • マップ表示範囲外に城を一つ作成し、統一処理用大名Aの所属とする。ほかの城と経路は接続しない。石高・経済はゼロとする。
  • 空白地処理(自分自身を併呑)もしておけば一覧に表示されなくなる。

時期

  • いつでも
  • 回数:1回

条件

  • データ1 = データ2(データ1:#生存独立大名数   データ2:2)※空白地処理をした場合はデータ2:1
  • 変数(データ1)に演算式(データ2)を代入(条件には無関係)  (データ1:Daimyou1  データ2:#石高順独立大名(1))

メッセージ

  • 「%大名Daimyou1%は統一した」

効果

  • ゲーム終了(大名1の統一メッセージあり) 大名1:変数Daimyou1

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2018年02月28日 18:16