【パワポケ11】裏サクセスでSP1の良質な武器を粘るためのPythonコード例

パワポケ11 ハタ人間編でMP、攻撃力高め、命中高め、SP少ない武器を粘るためのPythonコードのサンプルです。

ご自由にお使いください。

 

合成時の乱数の使われ方や原理はパワポケ11 SP1の武器を作るための乱数まとめを参考にしてください。また、それを元にプログラム中のパラメータ(value12, value34など)を好きに変更してください。

 

出力結果には起動時間、(乱数消費回数 +1)の値が出てきます。実機でそれをもとに乱数調整すれば上で書いたような武器ができるはずです。

プログラム

#11裏でSPの少ない良質なMP武器のための乱数列を探索するプログラム
A = 0x5d588b656c078965
C = 0x0000000000269ec3
M = 2 ** 64

b=0
bb=0
bb2=0
b3=0
bb4=0
b5=0


#1:付加能力の乱数列の合計
n=6
nn=30

for i in range(0,n):
    b += A**i % M
An=A**n% M
Cn=(C*b)% M

for i in range(0,nn):
    bb += A**i % M
Ann=A**nn% M
Cnn=(C*bb)% M


#2:攻撃判定
An1=A
Cn1=C

for i in range(0,3):
    bb2 += A**i % M
Ann2=A**3% M
Cnn2=(C*bb2)% M


#3:命中判定
for i in range(0,3):
    b3 += A**i % M
An3=A**3% M
Cn3=(C*b3)% M

for i in range(0,5):
    bb4 += A**i % M
Ann4=A**5% M
Cnn4=(C*bb4)% M


#4:SP判定
for i in range(0,5):
    b5 += A**i % M
An5=A**5% M
Cn5=(C*b5)% M

#5:乱数探索部分。時間h、探索数N、攻撃のvalue12と命中のvalue34
for h in range(0,24): #何時から何時を探索するか
    for m in range(0,60):
        for s in range(-1, 59):
            N = 600
            X_n = 0
            X_nn = 0
            X = h * (2 ** 16) + m * (2 ** 8) + s + 1
            #(nn-n)個の乱数値の和をvalue、攻撃判定の2つの和がvalue12、命中判定の2つの和がvalue34
            value = 0
            value12=0
            value34=0
                for i in range(0, N):
                    X_n = (An * X + Cn) % M
                    X_nn = (Ann * X + Cnn) % M
                    value += (X_nn - X_n) / M
                    if i < nn-n:
                        value += X_n/M

                    X_n1 = (An1 * X + Cn1) % M
                    X_nn2 = (Ann2 * X + Cnn2) % M
                    value12 += (X_nn2 - X_n1) / M
                    if i < 2:
                        value12 += X_n1/M

                    X_n3 = (An3 * X + Cn3) % M
                    X_nn4 = (Ann4 * X + Cnn4) % M
                    value34 += (X_nn4 - X_n3) / M
                    if i < 2:
                        value34 += X_n3/M

                    X = (X * A + C) % M
                    #6:MP判定、攻撃判定、命中判定、SP判定、付加能力判定
                    if X/M < 0.005 and value12 > 1.6 and value34 < 0.5 and ((An5 * X + Cn5) % M)/M < 0.03 and value > 12 :
                        print(10000 * h + 100 * m + s, i+1, X/M)
                        print("★", value)
                        break

 

乱数消費方法

パワポケ11で乱数消費をする主な行動や方法は、以下の通りです。

ゲーム内の行動 消費回数 備考
オート命名1回 1 直前と同じ名前の場合は、違う名前になるまで消費する。この場合は2以上
ハタ人間編を再開 140-200くらい セーブデータによって違う。この値をオフセットという。調べ方は後述
ペナントのデータ新規作成 10000-15000くらい 大量に乱数を消費したい場合に。回によって結構ブレる。
ペナントのデータ消去 10000-13000くらい 大量に乱数を消費したい場合に。回によって結構ブレる。

 

オート命名はA押しっぱなしだと1秒に5回、つまり1分に300回できます。

 

パワポケ11では、12と違ってナマーズ編を起動したときに乱数は消費しません。

 

なお、ハタ人間編を再開したときに消費する乱数(=オフセット)の値は、ストーリーの進行度合いや持っている回復薬系アイテムの数によって変わります。

 

パワポケ11 強い虹色の指輪を作る方法と乱数調整方法の解説より

 

オフセットの調べ方については、パワポケ11 強い虹色の指輪を作る方法と乱数調整方法の解説をご覧ください。

 

乱数消費数を可視化する乱数観測器については【改良版】パワポケの内部乱数観測器をPythonで実装してみたをご覧ください。

コメント

タイトルとURLをコピーしました