太閤立志伝5イベントソース //========================================================================== //弱小大名救済イベントの概要(2006.10.22) //○発生条件 // 存在する大名家が6以上あり、 // 大名家を所有城数で昇順(少ない順)ソートし、 // 一番上に来た大名家の所有城数が3以下の場合に発生する // なお主人公の所属大名家は救済対象外とする // (主人公が大名家所属なら存在大名家数7以上ということになる) //○救済の受ける大名家 // 弱小大名家2家から、ランダムでどちらか大名家を選び、 // その大名家の城数が3以下なら救済が行われる // さらに3分の1の確率で、もう一方の大名家も救済される // 物質的な力量の底上げが目的なので、支配力は参照しない //○救済の種類(以下の6項目の内、いずれか1項目が上昇する) //■城の規模(1or2)、現石高(5)、現鉱山(5)■城の規模(1)、軍資金(10000)■兵士数(800)、現石高(10)、現鉱山(10) //■防御度(15)、軍資金(5000)■兵士数(200)、訓練(10)、士気(10)、住民安定度(10)■軍馬(50)、鉄砲(25)、最低武士勲功(100) // 256分の1をみたすと、ボーナスとしてすべての値が上昇 // 城の場合、すべての城が一揆や戦闘中だと救済は行われない // 武士勲功も同様に、対称武将がイベント参加可能でないと救済は行われない //○NOTE/TODO //・初め城数でソートし4大名を選抜して、その内ランダム選択したスクリプトだったが、 // あまりにも偏った大名選びだったため3城以下をすべて対象とした //・ゲーム終盤までデバッグしていないので、発生条件の存在大名家6以上というのが的確かどうか? // この判定が甘ければ、終盤かなり偏った大名が強くなる可能性あり //・現段階で、年に重複する大名家は2家あるかないかのバランス //・5年進めた段階で、イベント有り無し関わらず滅亡数は16… // イベント有では若干、3城保有で救済を受けた大名家が生き残ってる印象 // 特に関東で伸びる北条、東北の伊達を凌ぐ大名家があった // 7〜8年以降に威力を発揮してればいいなって感じ // 256分の1を導き出す算出法がよくわからなかった //更新 //2006.12.12 //・鉱山・石高が最高値を越えて上昇していたので最高値を参照するようにした //・救済対象の上限を設けた(防御度、訓練度、士気、住民安定度) //・変な演算式があったので修正 //2006.10.29 //・兵数が増えると金がかかり大名家の経済破綻が起きてしまうおそれがあるため、石高鉱山値も上昇の対象とした //・城規模上昇は規模21以下を対象とした //・極力バグ回避のため調査を入念に //・それに伴い、大名家選びの手順を簡略化 //・ボーナスを追加(256分の1を満たすと、すべての値が上昇) //・バランス調整(上方修正) //・誤字訂正 //========================================================================== チャプター:{ イベント:弱小大名救済{ 属性:何度でも 発生契機:毎月処理の最後絶対 発生条件:{ //調査:(人物::主人公.人物番号)>(800)//イベント導入・未導入の比較用専用調査 条件ブロック:(主人公.所属勢力タイプ)==(大名家){ 代入大名家E:(人物::主人公.所属大名家) } コンテナ設定:(大名家,無効,無効) コンテナ絞り込み:(大名家,存在,真) 条件ブロック:(主人公.所属勢力タイプ)==(大名家){ コンテナ除外:(大名家,大名家番号,大名家E) } 調査:(コンテナカウンタ)>=(6) コンテナソート:(大名家,城数,昇順) コンテナ選択:(大名家A,先頭) 調査:(大名家::大名家A.城数)<=(3) }//発生条件〆 スクリプト{ 代入z:(0) //大名家Aを選ぶ コンテナソート:(無効,シャッフル,降順) コンテナソート:(無効,シャッフル,昇順)//よく混ぜる ループ:{ コンテナ選択:(大名家A,先頭) ブロック脱出:(偽)//ありえないが一応 条件ブロック:(大名家::大名家A.城数)<=(3){ 代入z:(1) } コンテナ選抜:(削る,1) 調査:(z)==(1) ブロック脱出:(真) } //大名家Bを選ぶ 条件ブロック:(z)==(1){//ありえないがバグ回避のため ループ:{ コンテナ選択:(大名家B,先頭) ブロック脱出:(偽) 調査:(大名家::大名家B.城数)<=(3) ブロック脱出:(真) コンテナ選抜:(削る,1) } } //A家、B家のどちらか選ぶ変数 代入r:(Rnd)%(2) 代入s:(Rnd)%(3) //ここからA家の判定と救済ブロック--------------------------- AND調査:{ OR調査:{ 調査:(r)==(0) 調査:(s)==(1) } 調査:(大名家::大名家A.城数)<=(3)//ループ脱出しても変なのが入ってると困るので念のためチェック } 分岐:(真){//大名家Aの救済ブロック //何を救済するかの変数 代入t:(Rnd)%(6) //ボーナスの変数 代入v:(Rnd100) 代入x:(Rnd100) コンテナ設定:(城,無効,無効) コンテナ絞り込み:(城,所属大名家,大名家A) コンテナ除外:(城,一揆フラグ,真) コンテナ除外:(城,戦闘フラグ,戦闘中) コンテナソート:(無効,シャッフル,昇順) コンテナソート:(無効,シャッフル,降順) コンテナ選択:(城A,先頭) 調査:(コンテナカウンタ)==(0) ブロック脱出:(真) //城一つもないということはないが、 //一揆、戦闘を省くと0の可能性はあるので、 //ブロック脱出をおいておく AND調査:{ 調査:(v)<(16)//これが256分の1の確率? 調査:(x)<(16) } 分岐:(真){ コンテナ設定:(人物,所属勢力タイプ,大名家) コンテナ絞り込み:(人物,所属大名家,大名家A) コンテナ除外:(人物,死亡フラグ,死亡) コンテナ絞り込み:(人物,出現フラグ,出現済み) コンテナ絞り込み:(人物,イベント参加可能,真) 条件ブロック:(城::城A.規模)<(22){ 調査:(城::城A.規模)<(10) 分岐:(真){ 代入a:(城::城A.規模)+(2) 更新:(城::城A.規模)(a) } 分岐:(偽){ 代入a:(城::城A.規模)+(1) 更新:(城::城A.規模)(a) } } 条件ブロック:(城::城A.防御度)<(200){ 代入b:(城::城A.防御度)+(10) 更新:(城::城A.防御度)(b) } 代入c:(城::城A.軍資金)+(10000) 更新:(城::城A.軍資金)(c) 代入d:(城::城A.兵士数)+(1000) 更新:(城::城A.兵士数)(d) 代入p:(城::城A.基準石高)-(10) 条件ブロック:(城::城A.現石高)<=(p){ 代入e:(城::城A.現石高)+(10) 更新:(城::城A.現石高)(e) } 代入p:(城::城A.鉱山最高値)-(10) AND調査:{ 調査:(城::城A.現鉱山)<=(p) 調査:(城::城A.鉱山最高値)!=(0) } 分岐:(真){ 代入f:(城::城A.現鉱山)+(10) 更新:(城::城A.現鉱山)(f) } 条件ブロック:(城::城A.訓練度)<=(90){ 代入g:(城::城A.訓練度)+(10) 更新:(城::城A.訓練度)(g) } 条件ブロック:(城::城A.士気)<=(90){ 代入h:(城::城A.士気)+(10) 更新:(城::城A.士気)(h) } 条件ブロック:(城::城A.住民安定度)<=(90){ 代入i:(城::城A.住民安定度)+(10) 更新:(城::城A.住民安定度)(i) } 代入j:(城::城A.軍馬)+(100) 更新:(城::城A.軍馬)(j) 代入k:(城::城A.鉄砲)+(100) 更新:(城::城A.鉄砲)(k) 条件ブロック:(コンテナカウンタ)>(0){ コンテナソート:(人物,武士勲功,昇順) コンテナ選択:(人物A,先頭) 条件ブロック:(人物::人物A.武士勲功)<(6000){ 代入l:(人物::人物A.武士勲功)+(100) 更新:(人物::人物A.武士勲功)(l) } } //ナレーション:[[弱小大名救済します\n対象<<大名家A>・<城A>城>\nボーナスです]] } 分岐:(偽){ 条件ブロック:(t)==(0){ 条件ブロック:(城::城A.規模)<(22){ 調査:(城::城A.規模)<(10) 分岐:(真){ 代入a:(城::城A.規模)+(2) 更新:(城::城A.規模)(a) } 分岐:(偽){ 代入a:(城::城A.規模)+(1) 更新:(城::城A.規模)(a) } } 代入p:(城::城A.基準石高)-(5) 条件ブロック:(城::城A.現石高)<=(p){ 代入b:(城::城A.現石高)+(5) 更新:(城::城A.現石高)(b) } 代入p:(城::城A.鉱山最高値)-(5) AND調査:{ 調査:(城::城A.現鉱山)<=(p) 調査:(城::城A.鉱山最高値)!=(0) } 分岐:(真){ 代入c:(城::城A.現鉱山)+(5) 更新:(城::城A.現鉱山)(c) } //ナレーション:[[弱小大名救済します\n対象<<大名家A>・<城A>城>\n規模・現石高・現鉱山を上昇]] } 条件ブロック:(t)==(1){ 条件ブロック:(城::城A.規模)<(22){ 代入a:(城::城A.規模)+(1) 更新:(城::城A.規模)(a) } 代入b:(城::城A.軍資金)+(10000) 更新:(城::城A.軍資金)(b) //ナレーション:[[弱小大名救済します\n対象<<大名家A>・<城A>城>\n規模・軍資金を上昇]] } 条件ブロック:(t)==(2){ 代入a:(城::城A.兵士数)+(1000) 更新:(城::城A.兵士数)(a) 代入p:(城::城A.基準石高)-(10) 条件ブロック:(城::城A.現石高)<=(p){ 代入b:(城::城A.現石高)+(10) 更新:(城::城A.現石高)(b) } 代入p:(城::城A.鉱山最高値)-(10) AND調査:{ 調査:(城::城A.現鉱山)<=(p) 調査:(城::城A.鉱山最高値)!=(0) } 分岐:(真){ 代入c:(城::城A.現鉱山)+(10) 更新:(城::城A.現鉱山)(c) } //ナレーション:[[弱小大名救済します\n対象<<大名家A>・<城A>城>\n兵士数・現石高・現鉱山を上昇]] } 条件ブロック:(t)==(3){ 条件ブロック:(城::城A.防御度)<(200){ 代入a:(城::城A.防御度)+(15) 更新:(城::城A.防御度)(a) } 代入b:(城::城A.軍資金)+(5000) 更新:(城::城A.軍資金)(b) //ナレーション:[[弱小大名救済します\n対象<<大名家A>・<城A>城>\n防御度・軍資金を上昇]] } 条件ブロック:(t)==(4){ 代入a:(城::城A.兵士数)+(200) 更新:(城::城A.兵士数)(a) 代入b:(城::城A.訓練度)+(10) 更新:(城::城A.訓練度)(b) 代入c:(城::城A.士気)+(10) 更新:(城::城A.士気)(c) 代入d:(城::城A.住民安定度)+(10) 更新:(城::城A.住民安定度)(d) //ナレーション:[[弱小大名救済します\n対象<<大名家A>・<城A>城>\n兵士数・訓練度・士気・住民安定度を上昇]] } 条件ブロック:(t)==(5){ コンテナ設定:(人物,所属勢力タイプ,大名家) コンテナ絞り込み:(人物,所属大名家,大名家A) コンテナ除外:(人物,死亡フラグ,死亡) コンテナ絞り込み:(人物,出現フラグ,出現済み) コンテナ絞り込み:(人物,イベント参加可能,真) 代入a:(城::城A.軍馬)+(50) 更新:(城::城A.軍馬)(a) 代入b:(城::城A.鉄砲)+(25) 更新:(城::城A.鉄砲)(b) 条件ブロック:(コンテナカウンタ)>(0){ コンテナソート:(人物,武士勲功,昇順) コンテナ選択:(人物A,先頭) 条件ブロック:(人物::人物A.武士勲功)<(6000){ 代入c:(人物::人物A.武士勲功)+(100) 更新:(人物::人物A.武士勲功)(c) } } //ナレーション:[[弱小大名救済します\n対象<<大名家A>・<城A>城>\n軍馬・鉄砲・(人物A)の武士勲功を上昇]] } } }//大名家Aの救済ブロック〆 //ここからB家の判定と救済ブロック--------------------------- AND調査:{ OR調査:{ 調査:(r)==(1) 調査:(s)==(2) } 調査:(大名家::大名家B.城数)<=(3)//ループ脱出しても変なのが入ってると困るので念のためチェック } 分岐:(真){//大名家Bの救済ブロック //何を救済するかの変数 代入t:(Rnd)%(6) //ボーナスの変数 代入v:(Rnd100) 代入x:(Rnd100) コンテナ設定:(城,無効,無効) コンテナ絞り込み:(城,所属大名家,大名家B) コンテナ除外:(城,一揆フラグ,真) コンテナ除外:(城,戦闘フラグ,戦闘中) コンテナソート:(無効,シャッフル,昇順) コンテナソート:(無効,シャッフル,降順) コンテナ選択:(城A,先頭) 調査:(コンテナカウンタ)==(0) ブロック脱出:(真) //城一つもないということはないが、 //一揆、戦闘を省くと0の可能性はあるので、 //ブロック脱出をおいておく AND調査:{ 調査:(v)<(16)//これが256分の1の確率? 調査:(x)<(16) } 分岐:(真){ コンテナ設定:(人物,所属勢力タイプ,大名家) コンテナ絞り込み:(人物,所属大名家,大名家B) コンテナ除外:(人物,死亡フラグ,死亡) コンテナ絞り込み:(人物,出現フラグ,出現済み) コンテナ絞り込み:(人物,イベント参加可能,真) 条件ブロック:(城::城A.規模)<(22){ 調査:(城::城A.規模)<(10) 分岐:(真){ 代入a:(城::城A.規模)+(2) 更新:(城::城A.規模)(a) } 分岐:(偽){ 代入a:(城::城A.規模)+(1) 更新:(城::城A.規模)(a) } } 条件ブロック:(城::城A.防御度)<(200){ 代入b:(城::城A.防御度)+(10) 更新:(城::城A.防御度)(b) } 代入c:(城::城A.軍資金)+(10000) 更新:(城::城A.軍資金)(c) 代入d:(城::城A.兵士数)+(1000) 更新:(城::城A.兵士数)(d) 代入p:(城::城A.基準石高)-(10) 条件ブロック:(城::城A.現石高)<=(p){ 代入e:(城::城A.現石高)+(10) 更新:(城::城A.現石高)(e) } 代入p:(城::城A.鉱山最高値)-(10) AND調査:{ 調査:(城::城A.現鉱山)<=(p) 調査:(城::城A.鉱山最高値)!=(0) } 分岐:(真){ 代入f:(城::城A.現鉱山)+(10) 更新:(城::城A.現鉱山)(f) } 条件ブロック:(城::城A.訓練度)<=(90){ 代入g:(城::城A.訓練度)+(10) 更新:(城::城A.訓練度)(g) } 条件ブロック:(城::城A.士気)<=(90){ 代入h:(城::城A.士気)+(10) 更新:(城::城A.士気)(h) } 条件ブロック:(城::城A.住民安定度)<=(90){ 代入i:(城::城A.住民安定度)+(10) 更新:(城::城A.住民安定度)(i) } 代入j:(城::城A.軍馬)+(100) 更新:(城::城A.軍馬)(j) 代入k:(城::城A.鉄砲)+(100) 更新:(城::城A.鉄砲)(k) 条件ブロック:(コンテナカウンタ)>(0){ コンテナソート:(人物,武士勲功,昇順) コンテナ選択:(人物A,先頭) 条件ブロック:(人物::人物A.武士勲功)<(6000){ 代入l:(人物::人物A.武士勲功)+(100) 更新:(人物::人物A.武士勲功)(l) } } //ナレーション:[[弱小大名救済します\n対象<<大名家B>・<城A>城>\nボーナスです]] } 分岐:(偽){ 条件ブロック:(t)==(0){ 条件ブロック:(城::城A.規模)<(22){ 調査:(城::城A.規模)<(10) 分岐:(真){ 代入a:(城::城A.規模)+(2) 更新:(城::城A.規模)(a) } 分岐:(偽){ 代入a:(城::城A.規模)+(1) 更新:(城::城A.規模)(a) } } 代入p:(城::城A.基準石高)-(5) 条件ブロック:(城::城A.現石高)<=(p){ 代入b:(城::城A.現石高)+(5) 更新:(城::城A.現石高)(b) } 代入p:(城::城A.鉱山最高値)-(5) AND調査:{ 調査:(城::城A.現鉱山)<=(p) 調査:(城::城A.鉱山最高値)!=(0) } 分岐:(真){ 代入c:(城::城A.現鉱山)+(5) 更新:(城::城A.現鉱山)(c) } //ナレーション:[[弱小大名救済します\n対象<<大名家B>・<城A>城>\n規模・現石高・現鉱山を上昇]] } 条件ブロック:(t)==(1){ 条件ブロック:(城::城A.規模)<(22){ 代入a:(城::城A.規模)+(1) 更新:(城::城A.規模)(a) } 代入b:(城::城A.軍資金)+(10000) 更新:(城::城A.軍資金)(b) //ナレーション:[[弱小大名救済します\n対象<<大名家B>・<城A>城>\n規模・軍資金を上昇]] } 条件ブロック:(t)==(2){ 代入a:(城::城A.兵士数)+(1000) 更新:(城::城A.兵士数)(a) 代入p:(城::城A.基準石高)-(10) 条件ブロック:(城::城A.現石高)<=(p){ 代入b:(城::城A.現石高)+(10) 更新:(城::城A.現石高)(b) } 代入p:(城::城A.鉱山最高値)-(10) AND調査:{ 調査:(城::城A.現鉱山)<=(p) 調査:(城::城A.鉱山最高値)!=(0) } 分岐:(真){ 代入c:(城::城A.現鉱山)+(10) 更新:(城::城A.現鉱山)(c) } //ナレーション:[[弱小大名救済します\n対象<<大名家B>・<城A>城>\n兵士数・現石高・現鉱山を上昇]] } 条件ブロック:(t)==(3){ 条件ブロック:(城::城A.防御度)<(200){ 代入a:(城::城A.防御度)+(15) 更新:(城::城A.防御度)(a) } 代入b:(城::城A.軍資金)+(5000) 更新:(城::城A.軍資金)(b) //ナレーション:[[弱小大名救済します\n対象<<大名家B>・<城A>城>\n防御度・軍資金を上昇]] } 条件ブロック:(t)==(4){ 代入a:(城::城A.兵士数)+(200) 更新:(城::城A.兵士数)(a) 代入b:(城::城A.訓練度)+(10) 更新:(城::城A.訓練度)(b) 代入c:(城::城A.士気)+(10) 更新:(城::城A.士気)(c) 代入d:(城::城A.住民安定度)+(10) 更新:(城::城A.住民安定度)(d) //ナレーション:[[弱小大名救済します\n対象<<大名家B>・<城A>城>\n兵士数・訓練度・士気・住民安定度を上昇]] } 条件ブロック:(t)==(5){ コンテナ設定:(人物,所属勢力タイプ,大名家) コンテナ絞り込み:(人物,所属大名家,大名家B) コンテナ除外:(人物,死亡フラグ,死亡) コンテナ絞り込み:(人物,出現フラグ,出現済み) コンテナ絞り込み:(人物,イベント参加可能,真) 代入a:(城::城A.軍馬)+(50) 更新:(城::城A.軍馬)(a) 代入b:(城::城A.鉄砲)+(25) 更新:(城::城A.鉄砲)(b) 条件ブロック:(コンテナカウンタ)>(0){ コンテナソート:(人物,武士勲功,昇順) コンテナ選択:(人物A,先頭) 条件ブロック:(人物::人物A.武士勲功)<(6000){ 代入c:(人物::人物A.武士勲功)+(100) 更新:(人物::人物A.武士勲功)(c) } } //ナレーション:[[弱小大名救済します\n対象<<大名家B>・<城A>城>\n軍馬・鉄砲・(人物A)の武士勲功を上昇]] } } }//大名家Bの救済ブロック〆 }//スクリプト〆 }//イベント〆 }//チャプター〆