調べてたら稀にフリーズする条件らしきものが判明したのでその解説らしきものをば。
条件が特殊なのもあって報告数は多くはないようだけれど。
バトルステージ乱数の仕組みについてはこちら。
らしきものなので実際この処理で行っているかは保証しません。
バトルステージでは基本的に同じ周でポケモンが重複しないように選ばれるが、出得るポケモンの種類は十分には多くないのでランク選択と出されたポケモンによっては重複せずに選ぶことができないことがある。
その場合、周内での重複を考慮せずに(プレイヤーと同じポケモンは出ないまま)ポケモンが選ばれる。
この重複なしでは選べないかの判定方法だが、出されるポケモンの決定方法が「最初に選ばれた番号から順番に範囲内で該当するまで調べる」という方法を採用している為か、最初に選ばれた番号に戻ってきたらそのように判定するという方法になっているよう。
これ自体にはバグの温床になり得る以外の問題はないのだが、バトルステージ乱数概要でも述べたがこの順番に調べる範囲の一番最後が欠けているのにも関わらず、最初に選ばれる番号はその欠けた最後になることもあるという不思議仕様となっている。
そのせいで最初にその欠けた一番最後の番号が選ばれた場合、範囲内をいくら調べても最初に選ばれた番号には最初以外調べられず、出得るポケモンが全て重複していると範囲内を1周してもループを抜けるための判定が行われないため延々とその範囲内を調べることになり処理が終わらなくなる。
というのがおそらくフリーズ現象の原因と思しきもの。
一応それっぽい図を下に載せておいたので参考程度にどうぞ。
意図的にやってみたい人(いるかはわからないけど)のために再現できるシード等の例をいくつか載せておく。
いずれも周の始め、ランクも最初からの前提。
・計算開始シード:0x000000A3
ドラゴンを最初から8連続で選択。
連打でいける。
7戦目までに出てくるタツベイ/フカマル/ハクリュー/ビブラーバ/コモルー/ガバイト/チルタリス以外を使用すること。
・計算開始シード:0x001B9E97
最初からエスパー→エスパー→はがね→はがね、と選択。
コイルを使用すること。
最短対戦数で実現できるものの1つ。
尚、これをしてもし何か不具合が起きたとかあっても私には責任は負いかねるのでそのつもりで。
多分ループしてるだけだし大丈夫な気はするけど。
条件が特殊なのもあって報告数は多くはないようだけれど。
バトルステージ乱数の仕組みについてはこちら。
らしきものなので実際この処理で行っているかは保証しません。
バトルステージでは基本的に同じ周でポケモンが重複しないように選ばれるが、出得るポケモンの種類は十分には多くないのでランク選択と出されたポケモンによっては重複せずに選ぶことができないことがある。
その場合、周内での重複を考慮せずに(プレイヤーと同じポケモンは出ないまま)ポケモンが選ばれる。
この重複なしでは選べないかの判定方法だが、出されるポケモンの決定方法が「最初に選ばれた番号から順番に範囲内で該当するまで調べる」という方法を採用している為か、最初に選ばれた番号に戻ってきたらそのように判定するという方法になっているよう。
これ自体には
そのせいで最初にその欠けた一番最後の番号が選ばれた場合、範囲内をいくら調べても最初に選ばれた番号には最初以外調べられず、出得るポケモンが全て重複していると範囲内を1周してもループを抜けるための判定が行われないため延々とその範囲内を調べることになり処理が終わらなくなる。
というのがおそらくフリーズ現象の原因と思しきもの。
一応それっぽい図を下に載せておいたので参考程度にどうぞ。
意図的にやってみたい人
いずれも周の始め、ランクも最初からの前提。
・計算開始シード:0x000000A3
ドラゴンを最初から8連続で選択。
連打でいける。
7戦目までに出てくるタツベイ/フカマル/ハクリュー/ビブラーバ/コモルー/ガバイト/チルタリス以外を使用すること。
・計算開始シード:0x001B9E97
最初からエスパー→エスパー→はがね→はがね、と選択。
コイルを使用すること。
最短対戦数で実現できるものの1つ。
尚、これをしてもし何か不具合が起きたとかあっても私には責任は負いかねるのでそのつもりで。
多分ループしてるだけだし大丈夫な気はするけど。