====== 条件イベントまとめ ====== 戦国史Ver1.10βで追加された[[条件イベント概要|条件イベント]]。 この例を皆さんで投稿していきましょう。 ここでは汎用に用いれそうなサンプルを載せていきましょう! (史実ではなく設定例のみ) ===== 汎用 ===== ==== 例:改名イベント(テンプレ) ==== * **時期** * いつでも * 回数:一回 * **条件** * 大名Aが独立大名 * 武将Aが存在している * **効果** * 武将Aを○○○○に改名 ==== オープニング ==== * **時期** * いつでも * 回数:一回 * **条件** * 大名Aでプレー * **効果** * なし(特定大名でプレイするとOPメッセージ) * 共通OPならば、条件もはずせば開始時に自動的に始まる。 * 後、イベントの順番は上から下に起こるので、OPイベントはイベントの中で上の方に置いておく方が良い。 ==== 助っ人イベント ==== * **時期** * いつでも * 回数:一回 * **条件** * 大名Aの直轄城が5以下 * **効果** * 武将Aを強制登場 * 武将Aが大名A所属で登録してなければ、一度武将Aを大名Aに所属としてやる必要性がある。 * 初期兵は設定のままなので、同一イベントで武将Aの兵を増減させるのも良いかも。 ==== 敵大規模徴兵イベント ==== * **時期** * 設定する * 回数:一回 * **条件** * 大名Aが独立大名・大名Aでプレーでない * **効果** * 大名Aの全武将足軽+500 * なお、大名Aの兵数増加イベントで合計1000人増加させたい場合は大名Aの全武将足軽+ 1000/大名Aの直轄武将数としてやればよい。 ==== A家滅亡 ==== * **時期** * いつでも * 回数:一回 * **条件** * 大名Aが滅亡済 * **効果** * なし(特定大名(~幕府、~朝etc.)が滅亡するとメッセージ) ==== A家包囲網 ==== * **時期** * いつでも * 回数:一回 * **条件** * 種々 * 例: 大名B(政教経のトップなどなど ex.朝廷)が滅亡済 城A(大名Bの城)が大名Aの所有 Or 大名Aと大名Bが敵対 * 後は、大名Aの石高が一位なんかも条件になりやすいか。 * **効果** * 種々 * 例: 大名Aと他の全大名を宿敵化 ==== 元服パワーアップ ==== * **時期** * 武将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を宿敵解除 敵対関係にするという効果はないので、宿敵化+宿敵解除という手順を踏む。 全ての大名との関係を敵対にし、なおかつ本来の宿敵関係を残したい場合は違う手段が必要(宿敵解除を使わない方法)。 * **条件** * 大名Aが独立大名(全大名と敵対させたい大名) * 大名Bが独立大名(何でもOKか) * **効果** * 大名Aが大名Bに従属or臣従(大名Aの今までの同盟関係は大名Bの同盟関係に変更) * 大名Aが独立(独立によって、外交は完全に白紙化) としてやればよい。 ==== 城の石高を特定の値にする ==== * **時期** * いつでも * 回数:一回 * **効果** * 城1の石高にデータ1を加算(データ1に * 城1の石高にデータ1を加算(データ1に20000をセット) 1行目でいったん石高をゼロにして、2行目で石高を20000にする。 石高だけでなく、レベル・町経済・鉱山・民衆支持・守備兵数・兵糧・交易船数についても同様のことができる。 ==== 特定の月にイベントを発生させる ==== * **時期** * いつでも * 回数:何回でも * **条件** * データ1 = データ2 (データ1に#Month、データ2に5をセット) 特定の月(上記の例では5月)に条件イベントを発生させるには関数#Monthを使う。 ==== 統一時イベント ==== 統一すると、条件イベントを実行しないでエンディングとなってしまうので、次のようにする。 最新Ver.には統一時に1を、それ以外は0を返す関数「#統一成立」が存在するため、ただ特定の大名家による統一時に特別なメッセージを表示させたいだけならこのテクニックは不要。 ただし、「#統一成立」関数を使った場合はそのイベントで従属・臣従大名の独立や城の所属変更を行って統一状態でなくしてもそのままゲーム終了してしまうので、再び乱世に戻したい場合ならこのテクニックの応用が有用である。 * 統一処理用大名Aを作成する。 * マップ表示範囲外に城を一つ作成し、統一処理用大名Aの所属とする。ほかの城と経路は接続しない。石高・経済はゼロとする。 * **時期** * いつでも * 回数:1回 * **条件** * データ1 = データ2(データ1:#生存独立大名家数   データ2:2) * 変数(データ1)に演算式(データ2)を代入(条件には無関係)  (データ1:DaimyouNo  データ2:#石高順独立大名(1)) * **メッセージ** * 「%大名DaimyouNo%は統一した」 * **効果** * ゲーム終了(大名1の統一メッセージあり) 大名1:変数DaimyouNo ==== 数値の小数点以下の四捨五入や切捨てを行う ==== %%戦国史の変数は実数であるため、割り算等をおこなうと数値に小数点以下の数値が発生することがある。しかし、資金や兵数をメッセージで表示する場合、小数点以下の数値が表示されるのは不自然である。そこで、小数点以下の切捨てや四捨五入を行うためには次のようにする。%%最新Ver.には小数点以下を四捨五入する関数「#Round(数値)」・小数点以下を切り捨てる関数「#Floor(数値)」・小数点以下を切り上げる関数「#Ceil(数値)」が存在するため、このテクニックは不要。 * 数値処理用の大名Aを作成する。(城は持たせない) * 例として、小数点以下処理をしたい数値の変数名をShosutenとする(12.7という値が入っていると仮定する) * **時期** * いつでも * 回数:何回でも * **効果** * 切捨て処理を行う場合 * 大名1の資金をデータ1にする(大名1に数値処理用大名A、データ1にShosutenをセット) * データ1にデータ2を代入する(データ1にShosuten、データ2に#資金(数値処理用大名AのID)をセット) * 四捨五入処理を行う場合 * 大名1の資金をデータ1にする(大名1に数値処理用大名A、データ1にShosuten+0.5をセット) * データ1にデータ2を代入する(データ1にShosuten、データ2に#資金(数値処理用大名AのID)をセット) この結果、変数Shosutenには切捨ての場合は12、四捨五入の場合には13がセットされる。 ==== ある出来事から一定期間後にイベントを発生させる ==== 条件イベントを三つ使う。例として、織田家滅亡の3年後にメッセージを表示するイベントを作成する。 **'条件イベント1'** * **時期** * いつでも * 回数:1回 * **条件** * 大名Aが滅亡済み 大名A:織田家 * **効果** * データ1にデータ2を代入する(データ1:FLAG_A、データ2:1) **'条件イベント2'** * **時期** * いつでも * 回数:何回でも * **条件** * データA = データB(データA:FLAG_A   データB:1) * **効果** * データ1にデータ2を加算する(データ1:COUNT、データ2:1) **'条件イベント3'** * **時期** * いつでも * 回数:1回 * **条件** * データA = データB(データA:COUNT   データB:36) * **メッセージ** * 「織田家滅亡から3年経過した。」 36というのは、3年×12ヶ月のこと。 <別案> * **条件** * FLAG_A > 0 * FLAG_A = FLAG_A + 1(条件には無関係の代入文) * FLAG_A = 36 (FLAG_Aの値が35以下だったらイベントは発生しない為、またこの条件が繰り返される) としてやれば、変数COUNTを使わず、イベントも二つで済む(条件イベントに慣れている人向け)。 もしくは、最初のフラグイベントで、#Year,#Monthの関数を使って先に発生年月(か、フラグイベントが発生した年月)を記憶しておく手もある。分かりやすいけれど変数が増えるのが難点か。 また、「6ヵ月後」などの場合、年をまたぐと年と月の計算処理も必要になる。(2008年8月の6ヵ月後は2008年14月ではなく2009年2月。単純に月数を加算するだけではダメ) ==== 特定の城にいる全武将を移動させる ==== 特定の大名家A所属の武将のみ移動させる場合 * **ループ** * 武将 * **ループ変数** * LoopBushou * **時期** * いつでも * 回数:何回でも * **条件** * データA = データB(データA:#城(LoopBushou)   データB:#城番号(特定の城の城ID)) * データA = データB(データA:#包囲中(LoopBushou)   データB:0) * データA = データB(データA:#所属大名(LoopBushou)   データB:#大名番号(大名家Aの大名ID)) * **効果** * データ1にデータ2を代入する(データ1:Bushou1、データ2:LoopBushou) * 武将1を城1に強制移動(城1:移動先の城、武将1:Bushou1) ==== 条件にAnd文とOr文を含ませる(イベント補助) ==== 戦国史の条件イベントは、完全なOr文(一つでも成立したとき)と完全なAnd文(全てが成立したとき)しか使用できないため、And文とOr文を含んだ条件(Aは必須で、さらにBかCが満たされればよい)は、普通は二つ以上のイベントにまたがったイベントを作る必要がある。 イベント一つめ(A,Bが満たされた場合) * **条件** * A=1 * B=1 * flag=0 * **効果** * flag=1 イベント二つめ(A,Cが満たされた場合) * **条件** * A=1 * C=1 * flag=0 * **効果** * flag=1 これは、n次方程式を用いることで一つのイベントに置き換えることができる。 * **条件** * A=1 * (B * flag=0 * **効果** * flag=1 ちなみに、n次方程式の考え方を応用すると、n次不等式を用いることで条件の範囲指定も可能。 例えば、開墾が可能な月(1,2,9,10,11,12)は次の条件で表される。 * **条件** (#month-3)*(#month-8)>0 もっとも、これは * **条件** #month < 3 #month > 8 と同値である。 イベントの数制限(条件および、イベント数)に気をつかう必要がある人向けの話である。 ==== 空白地勢力を設定する ==== どの大名家にも所属しない空白地扱いの城を設定するには、空白地用の勢力を作る(名前の例として「空白地」「独立勢力」「中立地帯」など)。 しかしこのままだと大名家リストには表示されないが大名家一覧には表示されてしまい、さらに郎党や所属Free武将が登場してくると大名家リストにも表示されてしまう。それでは不恰好なので次のようにする。 * **時期** * いつでも * 回数:何度でも * **条件** * 大名Aが生存している(大名A:空白地) * **効果** * 大名1が大名2の城と武将を全て併呑(大名2は滅亡) 大名1:空白地 大名2:空白地 こうして自分自身を併呑した勢力は領地を持っていても滅亡扱いとなり、大名家一覧にも表示されず収入・支出も無くなり郎党も登場しなくなる。さらに「武将1を大名1の所属に変更」や所属Free武将登場で武将が増えても復活しない。ただし「城1を大名1の領地に変更」で城が増えると復活してしまうので(指定した城がすでにその勢力の領地になっている場合は復活しない)、空白地勢力が生存していると何度でも発生するようにしてこのイベントを一番下に配置する(復活してもその月のうちに再び滅亡扱いに戻る)と良い。 ===== サンプルシナリオ適用案 ===== [[サンプルシナリオ]]に組み込むことを例にした場合のイベント追加案です。 ==== 例:陶晴賢 改名(テンプレ) ==== * **時期** * いつでも * 回数:一回 * **条件** * 陶家が独立大名 * 陶隆房が存在している * **効果** * 陶 隆房を陶 晴賢に改名 ==== 井上一族粛清 ==== * **時期** * 1550年7月~ * 回数:一回 * **条件** * 毛利元就が毛利家の当主 * 井上元兼が毛利家所属 * 毛利家がプレイヤー担当ではない * **効果** * 井上元兼を強制死亡 ==== 浜松城 改名 ==== * **時期** * 1570年6月~ * 回数:一回 * **条件** * 松平家が独立大名 * 松平元康が松平家の当主 * 曳馬城が松平家(従属・臣従含まず)の所有 * **効果** * 曳馬城を浜松城に改名 ==== 美濃・遠江の乱 ==== * **時期** * 1553年4月~ * 回数:一回 * **条件** * 織田家が独立大名 * 斉藤家が独立大名 * 今川家が独立大名 * 斉藤家がプレーヤー担当でない * 今川家がプレーヤー担当でない * 斉藤家と織田家が不戦 * 上之郷城が織田家(従属・臣従含まず)の所有 * 吉田城が織田家(従属・臣従含まず)の所有 * **効果** * 土岐斎藤家が独立 * 斉藤家と土岐斎藤家が宿敵化 * 井伊家が独立 * 飯尾家が独立 * 松井家が独立 * **備考** * 過激すぎる? ---- 以下追記願います {{tag>条件イベント}}