特殊ルールの追加・伝播・廃止


・現在PC版・Remastered版のデータのみの確認となっていますが、主なデータはPS1版に対応しています。

特殊ルールの追加(QoC)

カードクイーン(以下QoC)に30,000ギルを支払うと、新しい特殊ルールを現在のエリアに追加します。

追加順は以下の通りとなります。既に存在する特殊ルールの場合、スキップされます。

オープン
セイム
プラス
ランダムハンド
サドンデス
ウォールセイム
エレメンタル

特殊ルールの伝播・廃止

特殊ルールの伝播・廃止はとても複雑となっております。ここでは分かり易い様解説しますが、不明な点や改善点がありましたらX(旧Twitter)までよろしくお願いいたします。

解説するにあたり、複数の変数や用語(管理者命名)を使用するた為、一覧をまとめておきます。

各項目でも紹介します。

変数・用語一覧

QoC:カードクイーン

特殊ルール:各エリアに設定されている特殊ルール。オープンセイムプラスランダムハンドサドンデスウォールセイムエレメンタルの7種類がある。詳細はこちらで。

トレードルール:カードゲーム勝敗時のカード取得枚数のルール。ワンディフダイレクトフルの4種類がある。詳細はこちらで。

変数272バラムの特殊ルール

変数273ガルバディアの特殊ルール

変数274トラビアの特殊ルール

変数275セントラの特殊ルール

変数276ドールの特殊ルール

変数277F.H.の特殊ルール

変数278宇宙の特殊ルール

変数279エスタの特殊ルール

変数280バラムのトレードルール

変数281ガルバディアのトレードルール

変数282トラビアのトレードルール

変数283セントラのトレードルール

変数284ドールのトレードルール

変数285F.H.のトレードルール

変数286宇宙のトレードルール

変数287エスタのトレードルール

変数288最期にカードゲームを行ったエリアの特殊ルール

変数289最期から2つ目にカードゲームを行ったエリアの特殊ルール

変数290最期にカードゲームを行ったエリア

変数291最期から2つ目にカードゲームを行ったエリア

変数292今回のカードゲームで使用する特殊ルール

変数292今回のカードゲームで使用する特殊ルール

変数293今回のカードゲームで使用するトレードルール


変数に格納されている値について

特殊ルール

特殊ルールが格納されている変数には、1つの値しか格納されていませんが、各特殊ルールを8ビットに割り当て管理しています。

オープン1
セイム2
プラス4
ランダムハンド8
サドンデス16
オープン32
ウォールセイム64
エレメンタル128

例えばガルバディアの特殊ルールが、[オープンセイムエレメンタル]だとします。

この場合、変数273(ガルバディアの特殊ルール)に、[ 1 + 2 + 128 ]の131の値が格納されていることになります。


トレードルール

トレードルールは複数のルールが存在する事はありませんので、以下の表の値が格納されています。

ワン1
ディフ2
ダイレクト3
フル4

フィールド乱数について

特殊ルールの伝播・廃止について語るのであればこちらも知る必要があります。

乱数については、ほぼ全てゲームに含まれているかと思いますのでご存じかと思いますが、FF8では0~255の256通りが使用されます。

FF8では、エンカウント判定等に使用される「乱数テーブル」、主にカードゲームの内容に使用される「カード乱数」、フィールド中のNPCの動き等を決定する「フィールド乱数」があります。

今回使用する乱数は「フィールド乱数(以下乱数)」になります。

乱数ゲーム開始時 or セーブデータロード時に0から始まりますが、ゲームのハードにより異なります(下記参照)。

乱数の値は疑似乱数と呼ばれ、ほぼ全てのゲーム・ソフトウェアは疑似乱数です。

FF8のフィールド乱数は線形合同法が用いられている。

詳しい計算内容については資料を紛失した為、先駆者の内容を引用します。

フィールド乱数の元になる「乱数の状態」は、乱数の状態をXとおいてその初期値を1とする漸化式「Xn+1 = (Xn * 0x41c64e6d + 0x3039) mod 0x100000000」で計算される。

そしてこの乱数の状態Xから「((X / 0x10000) mod 0x8000) mod 0x100」として計算された0~255の値がフィールド乱数として用いられる。これは乱数の状態Xの上位9~16bitにあたる。

出典:pingval氏

乱数表(Remastered版)

乱数は上記計算式で決まっています。

PS版・PC版におけるフィールド乱数の扱い

PS版はハードの電源を切るハードリセット、PC版はゲームの再起動で乱数がリセットされ、ソフトリセットの場合は乱数がリセットされません。

ソフトリセット時に乱数がリセットされない事がかなり重要になります。


Remastered版におけるフィールド乱数の扱い

Remastered版にソフトリセットはありません。

メニューの「しゅうりょう」は、ソフトリセットに見えても実際はハードリセットと同じ効果を持ちます。

ソフトリセットの手段が無い事が、既存の方法で特殊ルールを廃れさせる事は出来ません。


特殊ルールの廃れさせる条件

特殊ルールの廃れさせる方法には2種類の条件があります。

その条件とは、廃れさせたいエリアの特殊ルールが

全てあるか、一部ある場合です。

全てある状態はほとんど無いと思いますが、廃れさせるのはとても簡単です。

殆どの方は一部の特殊ルールから一部の特殊ルールを廃れさせたい方かと思いますが、伝播以上に複雑となります。


カードゲーム時に行われている処理

特殊ルールの廃れ方(フローチャート)

簡潔に作成したつもりですが、特殊ルールの伝播・廃れる処理のフローチャートになります。

廃れさせる為のフローチャート

処理内容

main_pre_process

まず、□ボタンにて話しかけた時、内部ではmain_pre_processと言う処理が行われます。

ここでは、最期・最後から2つ目にカードゲームを行ったエリアの特殊ルールの中に、現在のエリアの特殊ルールに含まれていない特殊ルールがあるか確認します。

確認し、現在のエリアの特殊ルールに含まれていない特殊ルールがあれば、特殊ルールを混ぜるよう提案してきます。

プログラム的には以下の通りになると思います。

(現在のエリアの特殊ルール | 最後・最後から2つ目にプレイしたエリアの特殊ルール) != 現在のエリアの特殊ルール


最期・最後から2つ目にカードゲームを行ったエリアの特殊ルールと言っていますが、本当は最後のエリア最後から2つ目のエリアのどちらかになります。

この部分は乱数1つ消費し、乱数の値が64未満かどうかで判断される為、ここでは最後・最後から2つ目と記載し、実際に特殊ルールを廃れさせる場合には、どちらも同エリアになるよう調整します。

ここをクリアしなければ、特殊ルールの伝播・廃れは発生しません。

また、プログラムの処理には、"乱数 < 255"の場合特殊ルールの伝播・廃れを発生させるとなっており、1/256(約0.39%)の確率で実行されない場合がありますが、今回は影響ありませんでした。


main_pre_processでは、乱数が最低1つ消費され、廃れさせたいエリアの特殊ルールが一部の場合、乱数2つ消費されます。


XXX_maesyori

まだカードゲームは行われません。

次はトレードルールの処理を行いますが、こちらは特殊ルールの廃れるさせる方法に影響しない為、無視します。

一応トレンド値の処理時に他のエリアに現在のエリアのトレードルールを伝播させるのに影響します。

今回は、現在のエリアにQoCがいる場合、乱数1つ消費します。QoCがいない場合は影響しません。


QoC

カードゲームまでもう少しです。

次はQoCとカードゲームを行う時にのみ発生します。

それはトレードルールの変更です。

乱数1つ消費し、現在のトレードルールを元に、別のトレードルールへ変化させたりさせなかったりします。

QoCとカードゲームを行う場合、乱数1つ消費します。QoC以外とカードゲームを行う場合、QoCが現在のエリアにいても影響しません。


カードゲームの選択肢

ここでついにカードゲームを行うかの選択肢が発生します。

ここで拒否すれば特殊ルールの変動は行われません。


main_rule_process

カードゲーム後には特殊ルールの変動があります。

main_rule_processと言う処理で実行されます。

まず最初に、現在のエリアの特殊ルールが全て存在するか確認し、全て存在する場合、特殊ルールを廃れさせる処理を行います。

乱数1つ消費し、どの特殊ルールが廃れるかを決定します。

乱数32で割ったを利用し特殊ルールを以下の表のとおり決定します。

オープン0
セイム1
プラス2
ランダムハンド3
サドンデス4
オープン5
ウォールセイム6
エレメンタル7

確率は均等に25.00%となっております。

ちなみに、プログラム上MOD関数と記載されていた為、余りを使用すると思っていましたが、実際はを使用していました。


現在のエリアの特殊ルールに全ての特殊ルールではなく、一部の特殊ルールのみの場合、次の処理となります。

廃れさせる為のフローチャート

カードゲーム挑戦前に、main_pre_processで特殊ルールを混ぜると言われている。

"乱数 < 255"の場合特殊ルールの伝播・廃れを発生させる処理の部分ですね。

次に乱数1つ消費し、余りから特殊ルールを決定します。上記の表を参照してください。

ここから分岐処理となりますが、決定された特殊ルールが、最期・最後から2つ目にカードゲームを行ったエリアの特殊ルールに含まれており、現在のエリアの特殊ルールに含まれていなければ、現在のエリアの特殊ルールに追加されます。

なので、ここでは最期・最後から2つ目にカードゲームを行ったエリアの特殊ルールに含まれていない特殊ルールか、現在のエリアの特殊ルールに含まれている特殊ルールを選択する必要があります。

廃れる判定

この分岐処理を計3回行います。

ですので乱数3つ消費し、3回の伝播の判定を行います。

3回の伝播を乗り越えた上で、3回目の特殊ルールが廃れさせたい特殊ルールでなければいけません。

なおかつ次の乱数が128未満で廃れさせることが出来ます。


まとめ(全ての特殊ルールがある場合)

main_pre_process乱数 < 64で最期にプレイしたエリアと特殊ルール最後から2つ目にプレイしたエリアと特殊ルールにする
乱数:消費1
XXX_maesyori現在のエリアにQoCがいる場合、<90でトレードルールの処理
乱数:消費1
QoCQoCとカードゲームを行う時に発生。トレードルールの処理
乱数:消費1
カードゲーム
main_rule_process乱数 < 64で特殊ルールを廃れさせる処理へ
sub_get_bit_decide乱数÷32で廃れさせる特殊ルールを決定する

まとめ(一部の特殊ルールがある場合)

main_pre_process乱数 < 64で最期にプレイしたエリアと特殊ルール最後から2つ目にプレイしたエリアと特殊ルールにする
乱数:消費1
main_pre_process乱数 < 255で特殊ルールを混ぜるフラグを立て、特殊ルールを混ぜる発言をする。今回の乱数調整では問題なし
乱数:消費1
XXX_maesyori現在のエリアにQoCがいる場合、<90でトレードルールの処理
乱数:消費1
QoCQoCとカードゲームを行う時に発生。トレードルールの処理
乱数:消費1
カードゲーム
sub_get_bit_decide乱数÷32で廃れさせる特殊ルールを決定、伝播の確認を行う
sub_get_bit_decide乱数÷32で廃れさせる特殊ルールを決定、伝播の確認を行う
sub_get_bit_decide乱数÷32で廃れさせる特殊ルールを決定、伝播の確認を行う
main_rule_process最期に決定された特殊ルールを廃れさせる条件を満たしていれば、乱数 < 128で特殊ルールを廃れさせる

特殊ルールを廃れさせる
(Remastered版)

かなり長くなりますので、以下のリストより目的のページに飛んでください。

各エリアにおける条件について

全てのエリアにて、全ての期間内に特殊ルールを狙って廃れさせる方法は調査していません。

バラムバラムガーデンが移動してから、イデア(3回目)戦まで
ガルバディアティンバーに行けるようになってから、アデル戦まで
トラビアトラビアガーデンに出発するイベント後から、アデル戦まで
セントラウィンヒルに行けるようになってから、アデル戦まで
ドールドールに行けるようになってから、アデル戦まで
F.H.F.H.に行けるようになってから、アデル戦まで
宇宙QoCいる場合:エスタ到着後、宇宙に行く事になるまで。宇宙帰還後、アデル戦まで
QoCいない場合:宇宙帰還後、アデル戦まで
エスタ(月の涙前)エスタ到着後、月の涙発生まで
エスタ(月の涙後)月の涙発生後、アデル戦まで

セーブポイントの場所

セーブポイントは各エリアによって異なります。

特殊ルールに関係なく統一の場所ですのでここで一覧を記載します。

バラムワールドマップ(移動済バラムガーデンの近く)
ガルバディアティンバー・市街⑨(隠しポイント発見必要)
トラビアトラビアガーデン・教室①(トラビアガーデンイベント発生以降)
セントラウィンヒル・エルオーネの家2F
ドールドール・パブ2F(隠しポイント発見必要)
マスターにカードゲームで勝利し、ドール・プライベートルームに行く事ができる
F.H.F.H.②
宇宙ワールドマップ(ティアーズポイントの近く)
エスタ(月の涙前)エスタ・市街③
エスタ(月の涙後)ワールドマップ(ティアーズポイントの近く・ラグナロク必要)

最期・最後から2つ目にカードゲームを行ったエリアを特定のエリアにする方法

特殊ルールを廃れさせる為には、最期・最後から2つ目にカードゲームを行ったエリアを目的の特殊ルールがあるエリアにしなければなりませんが、迂闊にカードゲームを行うと、特殊ルールの伝播・廃止が発生してしまうかもしれません。

こちらの特殊ルールを変更せずにカードゲームを行うのページでは、乱数調整により特殊ルールを変更せずカードゲームを行う方法を記載しています。


各エリアのページへ




参考ページ