◆着信の種類について

　電話の着信には大別して２種類あります。

　一つは、シナリオ強制イベント着信です。
　シナリオ進行イベントの一環として、必ずユーザーに伝えなければならない情報を電話着信イベントとして
　フィールド強制イベントの中で起こしています。


　もう一つは、フィールドのメインループに仕込まれた電話の着信発生監視システムが
　諸々の条件に従って、シナリオイベントとは別に引き起こす着信です。
　これには、特定の条件が揃ったときに着信を発生させるカウンター着信と、候補の中からランダムで抽選をするランダム着信があります。


◆電話の着信発生監視について

　電話の着信制御ルーチンは、フィールド上でイベント等が発生していないときに
　毎ループ処理が行われています。

　そのなかで、「時間経過カウンター」と「着信までのインターバル」の２つの値を監視しており
　１分ごとにインクリメントされる「時間経過カウンター」が「インターバル」に設定された数値を超えた場合に
　誰から着信するのか、という「着信抽選」が行われる仕組みとなっています。

　　＊インターバルの設定値は現状１０分になっており、

　　　　１、着信を受けた場合
	２、着信を無視し、タイムアウト等で着信が終わった場合（マップチェンジ・他イベント起動等も含まれてます）
	３、そもそも着信候補がおらず、着信できなかった場合

	に、「時間経過カウンター」は０にクリアされます。


　　デバッグメニューの「でんわかんかく」で「着信までのインターバル」を操作できます。
　　「いきなりちゃくしん」では、実行することで「時間経過カウンター」を「インターバル」と同じ値に強制的に書き換えています。
　　よって、「いきなりちゃくしん」を実行しても、着信候補が居ない場合、電話は掛かってきません。


◆カウンター着信の基本
　
　カウンター発生の電話は「予約式」とでもいうべきシステムをとっており、
　ゲームシステム内の各箇所に、あるイベント着信の条件を満たしたかどうかをチェックするルーチンが仕込まれていて
　チェック関数が「条件を満たした」と判断した場合に、「誰から、どの内容の」カウンター着信を行わせるかの情報を
　電話関連のセーブデータ内に保存します。この状態を「予約」と呼んでいます。

　予約されただけでは、カウンター着信は発生しません。

　前述した着信発生監視の中で、時間経過を満たした場合に、　
　セーブデータ内の予約領域を参照し、予約されたカウンター着信データを見つけた場合に
　カウンター着信のイベントが起動します。

　ですので、カウンター着信の「予約」データが生成された後、実際に何分後にカウンター着信が発生するかどうかは
　次の「着信抽選」が何分後に行われるかに依存します。

　基本のインターバルが10分ですので、予約データが生成されてから、他になにもしなければ１０分前後でカウンター着信が発生します。

　カウンター着信の予約データは、実際にその着信をユーザーが受けるまで保持されます。

　カウンター着信のなかには、着信を受けることが強制でなく、無視できるタイプのものがありますが
　カウンター着信を無視しても、予約データ自体は破棄されないため、何度でもその内容のカウンター着信が発生します。

　タイミングはいつでも良いので、ユーザーに出来る限り聞いて欲しい内容の着信を、カウンター着信としています。


◆着信抽選の具体的アルゴリズムについて

　・着信抽選はいくつかの段階を経て行われます。

　除外ゾーンチェック
	まず、プレイヤーが現在いるゾーンの着信可不可フラグをチェックします、
	そのゾーンが着信不可ゾーンであったばあい、抽選はここで終了します


　第一抽選：
	第一抽選は、カウンター着信データのチェックです。
	セーブデータ内のカウンター着信予約データの全ての領域をチェックし、予約データが存在する場合に着信を発生させます。

	プレイヤーが予約した人物と同じゾーンに居る等の除外条件に該当してしまう予約データを除いた
	候補の中から、ランダムで着信ターゲットを抽選します。
	（候補が3つあれば、それぞれがターゲットになる確率は1/3）

	予約データの全てが除外条件に該当してしまった場合、
	抽選は第二抽選に移行するため、カウンター着信予約データがあるにも関わらず
	ランダム着信が発生するケースがあります。


　第二抽選：
	第二抽選以降は、ランダム着信のための抽選です

	第二抽選は、純粋な確率計算を行っています。
	デバッグメニュー→すうちにゅうりょく→でんわ→「でんわかくりつ（有効値0-100）」という項目がありますが

　		（生成した乱数を100で割った余り） ＜ 「でんわかくりつ」

	を満たした場合に、第二抽選を通過します。
	第二抽選に外れた場合、その回の着信はキャンセルされ、時間経過カウンターは０に戻ります


　第三抽選：
	第二抽選を通過後、第三抽選として、着信を発生させるグループの抽選を行います。

	グループはもっともプライオリティの高いＡからＣまでの３つがあり、全ての登録相手はいずれかのグループに属しています。

	グループの抽選は単純な確率計算です。
		グループＡ：50％
		グループＢ：30％
		グループＣ：20％
	
	デバッグメニューの「でんわグループこてい」を利用すると、第三抽選の結果を上書きすることができます

		指定が０なら確率どおりのランダム
		１を指定すると強制でＡ，２の場合はＢ，３の場合はＣグループに当選したことにします


　第四抽選：
	第三抽選で着信対象のグループを確定させ、最後にターゲットとなったグループに属するトレーナーから
	実際に誰からの着信を発生させるかを決定します。

	ランダム着信のターゲットになるのは、「再戦型トレーナー」「リーダー」「サポート」「アオイ」「マイク」です。

	この段階で、抽選ターゲットになったグループに属するトレーナーが一人も登録されていない場合
	抽選はここで終了します。

		
	各グループに属する候補のなかから、着信フラグチェック、近接ゾーンチェック、
	人物固有の条件チェック(アオイの場合、ラジオの時間帯は掛からないなど)を行い
	現時点で着信可能候補を全てリストします。

	ここで、現在着信可能な相手が０人になってしまった場合、抽選は終了します。

	候補が一人以上見つかった場合、候補になった人物からランダムで着信相手が決定されます。
	ランダムの確率は見つかった候補数の人数割りです。候補が３人なら、ある人に着信する確率は1/3です。


	　＊特定の人物固有の特殊条件については、電話関連仕様書をご参照ください



◆カウンター着信の特異性について

　カウンター着信には、全部で３つのパターンがあります
　ユーザーに対する強制力の順に説明します

　パターン１：強制着信

	そのカウンター着信が発生すると、ユーザーの操作に関わらず強制的にポケギアの電話画面が起動します。
	シナリオ進行との兼ね合いなどで、必ずユーザーに受けて欲しいデータを強制着信にしています。

	強制着信を予約する際に、できるだけ早くユーザにその着信を受けて欲しいため
	「時間経過カウンター」が（「インターバル」ー１）以下の値の場合に、カウンター を （「インターバル」−１）の値に強制的に書き換えています。

	このことにより、強制着信予約発生時点から、基本的には１分前後でカウンター着信が発生するようにしています。

	ただし、実際に着信が発生するまでの時間について、他のカウンター着信予約とかぶらせた場合等は
	この限りではありません。


　パターン２：非強制着信その１

	このパターンのカウンター着信は、受けることが強制ではなく、無視も可能です。
	ただし、会話内容の意味合いなどから、予約データ生成時点からできるだけ早いタイミングで
	着信を受けて欲しいという要求から、強制着信パターンと同じように「時間経過カウンター」の操作を行っています。

	ただし、実際に着信が発生するまでの時間について、他のカウンター着信予約とかぶらせた場合等は
	この限りではありません。


　パターン３：非強制着信その２

	カウンター着信のなかでは、もっともプライオリティの低いパターンです。
	パターン２とは異なり、「時間経過カウンター」の書換えも行わないため、
	着信発生のタイミングは、次の着信抽選が起ったときとなります。

	強制力は低いけれども、ユーザーにできるだけ伝えたい内容のものをこのパターンに分類しています。



 パターン１の強制着信以外のカウンター着信については、ユーザーが受けなくともシナリオ進行及び
 重要なイベント進行（サファリ等、クリアには関係ないがゲーム内の大きな要素であるもの）に不具合がないようにデータ設定してあります。


◆グループカウンターのデバッグモードについて

　前述した、着信抽選の第三抽選で、どのグループのメンバーに着信するかの抽選を行っていますが
　実際に各グループに当選する確率が、仕様どおりになっているかどうかを確認するために
　各グループに当選した回数を、ゲームロード時から数えて確認できるようにしてあります。

　デバッグメニュー→すうちにゅうりょく→でんわ→グループカウンターA/B/C

　あくまで、どのグループに何回当選したかを確認するためのモードですので
　あの値が、電話システムの何かに影響を及ぼすことはありません

