パワポケ10では起動時間(時間:分:秒)によって初期乱数が生成され、それを元にランダム要素のあるイベント内容(練習でのケガ、ランダムイベント、裏サクセスの武器の強さ、etc)が決定されます。
つまり、起動時間と乱数消費回数(≒ゲーム内での行動)が同じならば常に、ランダム要素のあるイベント内容を同一にすることが可能であり、しあわせ草を使った時のステータス変化の内容も同様に再現可能です。
筆者は7年くらい前からパワポケシリーズの乱数を調べ続け、当時の技術で調整方法が簡単で有用な初期シードとステータス変化の内容を記録してきました。
7年前とはいえ、調整方法が手軽なものばかりなので価値はあると思います。
本記事では、起動時間とその直後のしあわせ草の仕様によるステータス変化の内容を記したレポート用紙を提示し、その中でも特に有用なものをピックアップしていきます。
前提
パワポケ10で、しあわせ草を所持している甲子園一直線編のデータをセーブしておきます。
また、しあわせ草使用によるステータス変化が所望のものになるためには、下のテータが示す条件もさらにクリアしている必要(たとえばやる気がMAX、仲間評価が59以下など)があります。
起動時間とステータス変化の内容データ、および読み方
手っ取り早く実機で役立てたい!という人は、先に後ろの方にある「有用な乱数まとめ」の項を読むことをおすすめします。
データ
約7年前のものです。
一番濃いモードでスキャンしていますが、一部見にくい部分もあると思います。ご了承ください。
少し話はそれますが、しあわせ草で体力がアップするような乱数シードでは、練習時のケガ率が異常に高い(というより、ケガ判定と体力アップ判定の乱数値が共通部分になっている?)です。ケガ率の高い総合練習は体力アップでなくてもケガすることがあり。
読み方およびやり方
例として、一番右上に
09.11 タフ149以下又は仲間59以下で
+(10, 10, 8) 闘志(チャンスメーカー)
とあります。
これは、DS初代かLiteでメニュー選択画面で待機し、DS本体の時間が09:11:10になったとき(秒の記載がないときは、秒針が10になったときとします)パワプロクンポケット10のところでAを押して起動し、そのまま甲子園一直線編のファイルを開き、上の条件を満たしているときにしあわせ草を使用すると、調子が普通かつ経験値アップ系の道具がないとき、
筋力+10、技術+10、変化球+8、特殊能力「闘志」が身につく
という意味です。(あと体力最大値もなんか上がったような気がする)
()内の数字は調子が普通かつ経験点アップ系の道具がないときに手に入る経験点を表し、左から筋力、技術、変化球(野手なら素早さ)。
経験点は、やる気が絶好調ならそれぞれ+2、さらにナイスなバットなどの道具があればさらに+2されます。
また、野手の場合は闘志の代わりにチャンスメーカーが手に入ることを意味します。
起動時間ですが、DS初代かLiteで10秒にメニュー画面でパワプロクンポケット10を起動すると、乱数シードが固定されるのはその1秒後の11秒になります。
DSiだと7-8秒後だったと思います(未検証)。
また、本記事に書いてある時間は、乱数シードが確定する時刻ではなくDS初代かLiteでメニュー画面でパワプロクンポケット10を起動する時刻であることに注意してください。(秒が書いていないときは、秒針が10秒のときです。理由は時刻設定後にリセットすればすぐだから)
有用な乱数まとめ
やる前にはテストデータで条件等を確認してみることをお勧めします。
経験点アップ系
しあわせ草を使うと、筋力、技術、変化球(野手:素早さ)のうち1種類が+1~30されるか、または全経験値がそれぞれ+1~10されることがあります。(調子普通時、経験点アップ系道具がないとき)
そのアップ幅が非常に高いときに乱数シードと内容を下記にまとめます。
筋力
やる気が10(MAX)のとき17:04:15に起動、しあわせ草を使うと筋力+30、さらに闘志(投手のとき)も手に入ります。
あるいは体力が最大でないときに17:03:12起動⇒体力+23、筋力+30、ポーカーフェイス取得。
技術
やる気が10のときに14:20:13で起動、しあわせ草を使うと技術+30
またはやる気10で12:40:10起動で技術+30
またはやる気10で14:00:11で起動時、体力最大値+2、仲間評価+4、技術+30
変化球(野手:素早さ)
07:48:10起動で変化球+30。書いていませんが、やる気は10である必要があると記憶しています。
16:29:20起動で仲間評価+10、変化球+30、やる気が10のときにケガ〇取得
全経験値
09:11:10起動、体力最大値がMAXでない又は仲間評価が59以下で+(10, 10, 8)、さらに闘志ももらえる
この乱数は正直かなりおいしいです。
02:56:10起動。やる気10のとき+(10, 6, 10)
投手の育成で筋力と変化球が大量に欲しいときに役立ちます。
あとは手順が少々特殊ですが、9:28:10起動でオート命名11回(佐々木、松井、菊地まで)行い、目的のデータ起動→しあわせ草使用で、やる気10のときフルスコアの+(10, 10, 10)ができます。
特殊能力系(投手)
投手のみ書きます。またこの表および取得可能特殊能力はσ軸さんの【パワポケ9 TAS】乱数解析を駆使してブギウギ商店街で暴れまわる #5を参考にしました。
0 | バント〇 | 7 | ムラッ気 | 14 | 打球反応〇 |
1 | ムード〇 | 8 | 回復〇 | 15 | 重い球 |
2 | センス〇 | 9 | ピンチ〇 | 16 | ポーカーフェイス |
3 | ケガ〇 | 10 | 勝ち運 | 17 | 低め〇 |
4 | 人気者 | 11 | 打たれ強い | 18 | 闘志 |
5 | 対左打者〇 | 12 | クイック〇 | 19 | フルカウント〇 |
6 | 安定感 | 13 | 逃げ球 | 20 | 対強打者〇 |
表の特殊能力に対応する番号を、最初のデータにつけました。参考にしてください。
一応すべての能力そろっていると思いますが、やる気や状態異常などにかかってなければならない等の条件が入っていたりします。
参考動画など
本記事を作成するにあたって、下の動画を参考にさせていただきました。
しあわせ草使用時の仕様や詳しいメカニズムが書いてありますので、興味のある人やもっと詳しいことを知りたい人は下の動画がおすすめです。
参考動画
ぬすやまさん:
TASさんがパワポケ10で能力カンスト+全特殊能力習得を目指すそうですpart2
σ軸さん:
【パワポケ9 TAS】乱数解析を駆使してブギウギ商店街で暴れまわる #5
以上となります。ありがとうございました。
おまけ:探索プログラム
上の参考動画をもとに組んだプログラム。
やる気10とそれ以外、病気なしとありの場合でしあわせ草を使用した時に、所望の結果が出る起動時間と乱数消費回数を出力します。
投手の特殊能力がパワポケ9とパワポケ10で若干違っている感じもしますが、ご参考に。
なお、プログラムの使用にあたって上の参考動画の理解はほぼ必須です。
基本のプログラム
A = 0x5d588b656c078965 C = 0x0000000000269ec3 M = 2 ** 64 b0=0 b1=0 b2=0 b3=0 b4=0 b5=0 b6=0 b7=0 b8=0 b9=0 b10=0 namelist = [ '佐藤','鈴木','高橋','田中','渡辺','伊藤','山本','中村','小林','加藤', '松尾','菊地','野村','新井','渡部','佐野','杉本','大西','桜井','古川', '吉田','山田','佐々木','斉藤','山口','松本','井上','木村','林','清水', '山崎','池田','阿部','橋本','森','石川','中嶋','前田','小川','藤田', '岡田','後藤','長谷川','石井','村上','近藤','坂本','遠藤','青木','藤井', '西村','福田','三浦','藤原','岡本','松田','中川','中野','原田','小野', '田村','竹内','金子','斉藤','和田','中山','石田','上田','森田','柴田', '原','酒井','工藤','宮崎','横山','宮本','内田','高木','谷口','高田', '丸山','今井','河野','小島','藤本','村田','武田','上野','杉山','増田', '小山','大塚','平野','菅原','久保','千葉','松井','岩崎','木下','野口' ] #2:攻撃判定 An1=A Cn1=C An2=A**2%M Cn2=Cn1*(A+1)%M for i in range(0,3): b3 += A**i % M An3=A**3% M Cn3=(C*b3)% M for i in range(0,4): b4 += A**i % M An4=A**4% M Cn4=(C*b4)% M for i in range(0,5): b5 += A**i % M An5=A**5% M Cn5=(C*b5)% M for i in range(0,6): b6 += A**i % M An6=A**6% M Cn6=(C*b6)% M for i in range(0,7): b7 += A**i % M An7=A**7% M Cn7=(C*b7)% M for i in range(0,8): b8 += A**i % M An8=A**8% M Cn8=(C*b8)% M for i in range(0,9): b9 += A**i % M An9=A**9% M Cn9=(C*b9)% M for i in range(0,10): b10 += A**i % M An10=A**10% M Cn10=(C*b10)% M N = 10 #乱数消費回数の上限 #やるき10、病気あり for h in range(0,24): #何時から何時を探索するか for m in range(0,60): for s in range(-1, 59): X = h * (2 ** 16) + m * (2 ** 8) + s + 1 for i in range(0, N): Y = X X = (X * A + C) % M if 2/3>((An1 * X + Cn1) % M)/M>1/3: #体力、やる気、タフ and 上昇度 if ((An2 * X + Cn2) % M)/M >0.4: #仲間評価不変 if 1>((An3 * X + Cn3) % M)/M: #病気。すべて0.1、体0.1、心0.1、最初0.7 #if 4/12>((An4 * X + Cn4) % M)/M > 3/12 and ((An5 * X + Cn5) % M)/M > 0.9 and ((An6 * X + Cn6) % M)/M > 0.9 and ((An7 * X + Cn7) % M)/M > 0.9:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 if 3/12>((An4 * X + Cn4) % M)/M > 2/12 and ((An5 * X + Cn5) % M)/M > 29/30:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 #if 1/95>((An8 * X + Cn8) % M)/M > 0/95:#投手特殊能力 #if 1/95>((An6 * X + Cn6) % M)/M > 0/95:#1ステータス + 投手特殊能力 if (100 * Y / M) // 1 != (100* X / M) // 1: print(10000 * h + 100 * m + s,"消費", i+1,"直前名",namelist[int(100*Y/M)],"→",namelist[int(100*X/M)]) break
場合分けプログラム
赤い部分をやる気、病気の有無で置き換えてください。
また、取りたい特殊能力や上げたい能力でプログラムの値をいじったり、#を外したりつけたりしてください。
投手特殊能力(95分割) 0バント○ 1ムード○ 2センス○ 3ケガ○ 4人気者 5対左打者○ 6安定感 7ムラッ気 8回復○ 9ピンチ○ 10勝ち運 11打たれ強い 12クイック○ 13逃げ玉 14打球反応○ 15重い球 16ポーカーフェイス 17低め○ 18闘志 19フルカウント○ 20対強打者○ #やるき10、病気なし for h in range(0,24): #何時から何時を探索するか for m in range(0,60): for s in range(-1, 59): X = h * (2 ** 16) + m * (2 ** 8) + s + 1 for i in range(0, N): Y = X X = (X * A + C) % M if 2/3>((An1 * X + Cn1) % M)/M>1/3: #体力、やる気、タフ and 上昇度 if ((An2 * X + Cn2) % M)/M >0.4: #仲間評価不変 if 1>((An3 * X + Cn3) % M)/M > 0.75 and ((An4 * X + Cn4) % M)/M > 0.9 and ((An5 * X + Cn5) % M)/M > 0.9 and ((An6 * X + Cn6) % M)/M > 0.9: #全経験点MAX #if 0.25>((An3 * X + Cn3) % M)/M > 0 and ((An4 * X + Cn4) % M)/M > 29/30: #筋力0.25、技術0.25、変化球0.25、全部0.25 if 1/95>((An7 * X + Cn7) % M)/M > 0/95:#投手特殊能力 #if 1/95>((An5 * X + Cn5) % M)/M > 0/95:#1ステータス + 投手特殊能力 if (100 * Y / M) // 1 != (100* X / M) // 1: print(10000 * h + 100 * m + s,"消費", i+1,"直前名",namelist[int(100*Y/M)],"→",namelist[int(100*X/M)]) break #やるき9以下、病気なし for h in range(0,24): #何時から何時を探索するか for m in range(0,60): for s in range(-1, 59): X = h * (2 ** 16) + m * (2 ** 8) + s + 1 for i in range(0, N): Y = X X = (X * A + C) % M if 2/3>((An1 * X + Cn1) % M)/M>1/3 and ((An2 * X + Cn2) % M)/M>0.8: #体力、やる気、タフ and 上昇度 if ((An3 * X + Cn3) % M)/M >0.4: #仲間評価不変 if 4/12>((An4 * X + Cn4) % M)/M > 3/12 and ((An5 * X + Cn5) % M)/M > 0.9 and ((An6 * X + Cn6) % M)/M > 0.9 and ((An7 * X + Cn7) % M)/M > 0.9:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 #if 1/12>((An4 * X + Cn4) % M)/M > 0/12 and ((An5 * X + Cn5) % M)/M > 29/30:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 #if 1/95>((An8 * X + Cn8) % M)/M > 0/95:#投手特殊能力 #if 1/95>((An6 * X + Cn6) % M)/M > 0/95:#1ステータス + 投手特殊能力 if (100 * Y / M) // 1 != (100* X / M) // 1: print(10000 * h + 100 * m + s,"消費", i+1,"直前名",namelist[int(100*Y/M)],"→",namelist[int(100*X/M)]) break #やるき10、病気あり for h in range(0,24): #何時から何時を探索するか for m in range(0,60): for s in range(-1, 59): X = h * (2 ** 16) + m * (2 ** 8) + s + 1 for i in range(0, N): Y = X X = (X * A + C) % M if 2/3>((An1 * X + Cn1) % M)/M>1/3: #体力、やる気、タフ and 上昇度 if ((An2 * X + Cn2) % M)/M >0.4: #仲間評価不変 if 1>((An3 * X + Cn3) % M)/M: #病気。すべて0.1、体0.1、心0.1、最初0.7 if 4/12>((An4 * X + Cn4) % M)/M > 3/12 and ((An5 * X + Cn5) % M)/M > 0.9 and ((An6 * X + Cn6) % M)/M > 0.9 and ((An7 * X + Cn7) % M)/M > 0.9:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 #if 1/12>((An4 * X + Cn4) % M)/M > 0/12 and ((An5 * X + Cn5) % M)/M > 29/30:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 #if 1/95>((An8 * X + Cn8) % M)/M > 0/95:#投手特殊能力 #if 1/95>((An6 * X + Cn6) % M)/M > 0/95:#1ステータス + 投手特殊能力 if (100 * Y / M) // 1 != (100* X / M) // 1: print(10000 * h + 100 * m + s,"消費", i+1,"直前名",namelist[int(100*Y/M)],"→",namelist[int(100*X/M)]) break #やるき9以下、病気あり for h in range(0,24): #何時から何時を探索するか for m in range(0,60): for s in range(-1, 59): X = h * (2 ** 16) + m * (2 ** 8) + s + 1 for i in range(0, N): Y = X X = (X * A + C) % M if 2/3>((An1 * X + Cn1) % M)/M>1/3 and ((An2 * X + Cn2) % M)/M > 0: #体力、やる気、タフ and 上昇度 if ((An3 * X + Cn3) % M)/M >0.4: #仲間評価不変 if 1>((An4 * X + Cn4) % M)/M: #病気。すべて0.1、体0.1、心0.1、最初0.7 if 4/12>((An5 * X + Cn5) % M)/M > 3/12 and ((An6 * X + Cn6) % M)/M > 0.9 and ((An7 * X + Cn7) % M)/M > 0.9 and ((An8 * X + Cn8) % M)/M > 0.9:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 #if 1/12>((An5 * X + Cn5) % M)/M > 0/12 and ((An6 * X + Cn6) % M)/M > 29/30:#筋力1/12、技術1/12、変化球1/12、全部1/12、なし8/12 #if 1/95>((An9 * X + Cn9) % M)/M > 0/95:#投手特殊能力 #if 1/95>((An7 * X + Cn7) % M)/M > 0/95:#1ステータス + 投手特殊能力 if (100 * Y / M) // 1 != (100* X / M) // 1: print(10000 * h + 100 * m + s,"消費", i+1,"直前名",namelist[int(100*Y/M)],"→",namelist[int(100*X/M)]) break オート命名なしでやる場合、Y=Xとその下に#
コメント