風来のシレン外伝 女剣士アスカ見参! (Win) > 確率


乱数生成器

Mersenne twister を用いています。

内部状態の初期化は以下のコード中での init と同等の処理によって行われます。
乱数 0〜(n-1) は ((32-bit 乱数値) mod 65536) × n) / 65536 によって取得されます。

#include <random>
 
struct AsukaRng {
  static constexpr size_t N = std::mt19937::state_size;
 
  AsukaRng(uint32_t seed) {
    // 環境依存コード
    const auto* state = (uint_fast32_t*) &mt;
    if (!(state[0] == mt.default_seed && state[N] == N)) abort();
    init(seed);
  }
 
  void init(uint32_t seed) {
    if (seed == 0) seed = 6502; // NES CPU
    auto* state = (uint_fast32_t*) &mt;
    state[0] = seed;
    for (size_t i = 1; i < N; ++i) {
      state[i] = (state[i - 1] * 0x10dcd) & 0xffffffff;
    }
    state[N] = N; // index
  }
 
  uint_fast32_t next() {
    return mt();
  }
 
  uint16_t range(int32_t n) {
    return (uint32_t) ((int32_t) (next() & 0xffff) * n) >> 16;
  }
 
  std::mt19937 mt;
};
 

確率

攻撃命中率・ワナを踏む確率

項目 確率
アスカの攻撃命中率 95.00 % (19/20)
モンスターの攻撃命中率 87.50 % (7/8)
モンスターの攻撃命中率(見切りの盾 装備時) 43.75 % (7/16)
投擲命中率(一般) 91.67 % (11/12)
投擲命中率(ひまガッパ系・デブータ系からの投擲など) 87.50 % (7/8)
ワナを踏む確率(前) 75.25 % (76/101)
ワナを踏む確率(後) 25.74 % (26/101)

ソース

+ ...
;-------------------------------------------------
; アスカの攻撃命中率
;-------------------------------------------------
...
05989: 1f b0 08 00 13                            ; w8 = 19 
0598e: 1f b0 09 00 14                            ; w9 = 20
...
05c94: 1a b0 0a                                  ; 
05c97: 52 b0 09                                  ; w10 ← 乱数 0〜19
05c9a: 15 15 b0 0a b0 08 41 01 07 ff             ; w10 < w8 で命中
 
 
;-------------------------------------------------
; モンスターからの攻撃の回避率を返す
; (基本的に 1/8 の確率で 100 を返す)
;-------------------------------------------------
...
2b46a: 1f b0 01 00 00                            ; w1 = 0
 
...
2b4d1: 15 10 d0 04 97 ff 41 40 00 ff             ; jmpf 0x2b518
2b4db: 15 00 c1 20 41 29 00 ff                   ; jmpf 0x2b509
2b4e3: 1a 80 01                                  ; 
2b4e6: 33 00 56 2f 10 01 00 36                   ; tcall 0xce431
2b4ee: 1a 80 02                                  ; 
2b4f1: 33 00 56 2f 10 01 00 4f                   ; tcall 0xce431
2b4f9: 15 01 80 01 21 80 02 41 08 00 ff          ; jmpf 0x2b509
2b504: 1f b0 01 00 32                            ; w1 ← 50 (見切りの盾)
 
2b509: 15 11 f1 0d 00 00 41 08 00 ff             ; jmpf 0x2b518
2b513: 1f b0 01 00 32                            ; 
 
2b518: 15 00 c1 10 41 18 00 ff                   ; jmpf 0x2b535
 
2b520: 1a b0 02                                  ; 
2b523: 52 00 08                                  ; w2 ← 乱数 0〜7
2b526: 15 10 b0 02 00 00 41 08 00 ff             ; 
2b530: 1f b0 01 00 64                            ; if (w2 == 0) w1 ← 100
 
2b535: 1e b0 01                                  ; ret w1
 
;-------------------------------------------------
; モンスターからの攻撃の回避判定
;-------------------------------------------------
...
31eab: 1a b0 02                                  ; 
31eae: 35 9b 95 00                               ; call 0x2b44a ; w2 ← 回避率
31eb2: 1a b0 06                                  ; 
31eb5: 34 b8 00 f9 06 00                         ; w6 ← (不明な回避率補正)
31ebb: 20 b0 02 b0 06                            ; w2 += w6
31ec0: 1a b0 03                                  ; 
31ec3: 52 00 64                                  ; w3 ← 乱数 0〜99
31ec6: 15 15 b0 03 b0 02 41 36 00 ff             ; (w3 < w2) jmpf 0x31f03
 
;-------------------------------------------------
; 投擲命中率
;-------------------------------------------------
7ee3b: 1f b0 04 00 0b                            ; w4 = 11
7ee40: 1f b0 05 00 0c                            ; w5 = 12
...
7ef7f: 8d f1 25 00 15 b0 04                      ; 
7ef86: 8d f1 25 00 16 b0 05                      ; 
 
7efdf: 1a b0 04                                  ; 
7efe2: 8c f1 25 00 15                            ; 
7efe7: 1a b0 05                                  ; 
7efea: 8c f1 25 00 16                            ; 
...
7f38a: 33 00 01 de 05 0a b8 00 90 01 b0 06 b8 01 b0 02 b0 03 b0 04 b0 05 00 00 b8 03; tcall 0x248d
 
...
029f3: 35 91 ef 04 b8 00 90 01 b8 06 b8 07       ; call 0x1985
...
 
;
; 判定箇所
;
...
019d9: 1a b0 01                                  ; 
019dc: 52 b8 03                                  ; w1 ← 乱数 0〜(a3-1)
019df: 15 15 b0 01 b8 02 40 06 00 ff             ; w1 < a2 の場合に命中 
019e9: 1e 00 00                                  ; ret 0
 
019ec: 1e 00 01                                  ; ret 1
 
;-------------------------------------------------
; デブータ系から投石
;-------------------------------------------------
34e03: 1a b0 01                                  ; 
34e06: 52 00 08                                  ; w1 ← 乱数 0〜7
34e09: 15 10 b0 01 00 00 41 09 00 ff             ; w1 == 0 の場合、回避
34e13: 1e 00 00                                  ; ret 0
 
34e19: 1e 00 01                                  ; ret 1
 
;-------------------------------------------------
; ワナを踏むかどうか
;-------------------------------------------------
1309a: 1a 80 01                                  ; 
1309d: 34 90 01 07 13 00                         ; b1 ← チェック済みの場合 1
130a3: 15 01 80 01 41 0b 00 ff                   ;
130ab: 1f b0 04 00 19                            ; w4 ← 25
130b0: 12 07 00                                  ; jmp 0x130b8
 
130b3: 1f b0 04 00 4b                            ; w4 ← 75
 
130b8: 1a b0 03                                  ; w3 ← 乱数 0〜100
130bb: 52 00 65                                  ; 
130be: 15 01 c1 10 41 08 00 ff                   ; if ((ワナを必ず発動させる場合)) {
130c6: 1f b0 03 00 00                            ;   w3 ← 0 
                                                 ; }
130cb: 15 13 b0 03 b0 04 41 13 00 ff             ; w3 <= w4 の場合、ワナを踏む
...
 

ダメージ計算

(基本ダメージ量) := floor(round((攻撃力) × (乱数 875〜1125) / 1000.0 - (対象の防御力)) × (種族 ダメージ乗数) / 1000)

ただし、ダメージ量が 0 以下となった場合は、確率 1/4 で 2 ダメージ、確率 3/4 で 1 ダメージとします。(乱数 0〜3 を取得し、乱数値が 2 であった場合のみ 2 ダメージ)

アスカの攻撃力・防御力は以下のコードと(ほぼ)同等の処理によって計算されています。

def f(v):
    """
    約 log_{1.6}(v)^2 を返す
    """
    v = log10(v)
    v /= 0.20412 # log10(1.6) ~= 0.20411998...
    return v * v
 
def attack(lv, st, wp, upv, kigny=False, cheered=False):
    """
    lv:  Lv
    st:  ちから
    wp:  武器の基本値(補正込み)
    upv: 修正値
    """
    v_wp = 0
    if wp > 0:
        v_wp = f(wp / 5.0 + 1.0)
        if upv >= 0:
            v_wp += f(wp + 1.0) * upv / 50.0
        elif wp >= -upv:
            v_wp *= (wp + upv) / wp
    v_st = f((max(8, st) - 2.0) / 2.0) * (min(8, st) / 8.0)
    v_lv = f((lv + 2) / 2.0)
    v = v_wp + v_st + v_lv
    if kigny:
        v *= 1.5 # キグニ族状態
    if cheered:
        v *= 1.5 # ファイトの巻物
    return v
 
def defense(df, upv):
    """
    df:  盾の基本値(補正込み)
    upv: 修正値
    """
    v = 0
    if df > 0:
        v = f(df / 3.0 + 1.0)
        if upv >= 0:
            v += f(df + 1.0) * upv / 50.0
            v += upv // 2
        elif df >= -upv:
            v *= (df + upv) / df
    return v
 

ソース

+ ...
;-------------------------------------------------
; 約 log_{1.6}(a0)^2 を返す
;-------------------------------------------------
160ba: 1f 88 01 b8 00                            ; d1 = a0;
160bf: 8e 88 01 01 08 88 01 00                   ; f1 = log_10(d1)
160c7: 8e 88 02 01 09 01 4f bc 00                ; f2 = 20412.0
160d0: 8e 88 02 01 09 88 02                      ;
                04 09 02 01 86 a0 00             ; f2 /= 100000.0
160de: 8e 88 01 01 09 88 01                      ;
                04 09 88 02 00                   ; f1 /= f2
160ea: 8e 88 01 01 09 88 01                      ;
                05 09 88 01 00                   ; f1 *= f1
160f6: 1e 88 01                                  ; return f1
 
;-------------------------------------------------
; 攻撃力の計算
;-------------------------------------------------
...
2c394: 1f 88 02 00 00                            ; 
2c399: 1a b0 01                                  ; 
2c39c: 33 00 56 44 10 00                         ; tcall 0xcd41a ; w1 ← 基本値
2c3a2: 1a b0 02                                  ; 
2c3a5: 33 00 56 45 10 00                         ; tcall 0xcd41d ; w2 ← 修正値
2c3ab: 1a b0 03                                  ; 
2c3ae: 33 00 56 46 10 00                         ; tcall 0xcd420 ; w3 ← 基本値補正
 
2c3b4: 1a 88 02                                  ; 
2c3b7: 33 00 01 8e 04 03 b0 01 b0 02 b0 03       ; tcall 0x162cd ; f2 ← 武器の攻撃力
 
2c3c3: 1a 88 04                                  ; 
2c3c6: 35 38 ff 00                               ; call 0x2c2ff ; f4 ← ちから依存の攻撃力
 
2c3ca: 8e 88 01 01 09 70 09                      ;
                02 09 00 02 00                   ; f1 ← (Lv + 2)
2c3d6: 8e 88 01 01 09 88 01                      ;
                04 09 00 02 00                   ; f1 /= 2.0
 
2c3e2: 1a 88 05                                  ; 
2c3e5: 33 00 01 8d 04 01 88 01                   ; tcall 0x160ba ; f5 ← (log_{1.6}(f1))^2
 
2c3ed: 15 01 40 03 41 08 00 ff                   ; jmpf 0x2c3fa
2c3f5: 22 88 05 00 02                            ; 
 
2c3fa: 8e 88 01 01 09 88 02                      ;
                02 09 88 04                      ;
                02 09 88 05 00                   ; f1 ← f2 + f4 + f5
2c40a: 12 98 00                                  ; jmp 0x2c4a3
 
...
 
2c4a3: 15 11 70 2b 00 00 41 13 00 ff             ; if (!キグニ族状態) jmp 0x2c4bd
2c4ad: 8e 88 01 01 09 88 01                      ;
                05 09 00 03                      ;
                04 09 00 02 00                   ; f1 = f1 * 3.0 / 2.0 
 
2c4bd: 15 11 70 31 00 00 41 13 00 ff             ; if (!ファイトの巻物の効果中) jmp 0x2c4d7
2c4c7: 8e 88 01 01 09 88 01                      ;
                05 09 00 03                      ;
                04 09 00 02 00                   ; f1 = f1 * 3.0 / 2.0
 
2c4d7: 1e 88 01                                  ; ret f1
 
;-------------------------------------------------
; ちから 依存の攻撃力
;-------------------------------------------------
2c2ff: 1f b0 01 70 0e                            ; 
2c304: 15 10 d0 04 97 ff 41 18 00 ff             ; jmpf 0x2c323
2c30e: 1a b0 03                                  ; 
2c311: 33 00 56 66 10 01 00 60                   ; tcall 0xcd57e
2c319: 22 b0 03 00 03                            ; 
2c31e: 20 b0 01 b0 03                            ; += (ちから補正 #1)
 
2c323: 1a b0 04                                  ; 
2c326: 35 c8 f3 01 00 0a                         ; call 0x2b6ef
2c32c: 22 b0 04 00 0a                            ; 
2c331: 20 b0 01 b0 04                            ; += (ちから補正 #2)
 
2c336: 1f b0 02 b0 01                            ; w2 ← (ちから)
2c33b: 15 15 b0 02 00 08 41 08 00 ff             ; if (!(w2 < 8)) jmp 0x2c34a
2c345: 1f b0 02 00 08                            ; w2 ← 8
 
2c34a: 8e 88 01 01 09 b0 02                      ;
                03 09 00 02 00                   ; f1 ← (w2 - 2.0) 
2c356: 8e 88 01 01 09 88 01                      ; 
                04 09 00 02 00                   ; f1 /= 2.0
2c362: 1a 88 02                                  ; 
2c365: 33 00 01 8d 04 01 88 01                   ; tcall 0x160ba ; f2 ← (log_{1.6}(f1))^2
2c36d: 15 15 b0 01 00 08 41 13 00 ff             ; if (!((ちから) < 8)) jmp 0x2c387
2c377: 8e 88 02 01 09 88 02                      ;
                05 09 b0 01                      ;
                04 09 00 08 00                   ; f2 = f2 * (ちから) / 8.0
 
2c387: 1e 88 02                                  ; ret f2
 
;-------------------------------------------------
; 武器の攻撃力
;-------------------------------------------------
; a0: 基本値, a1: 修正値, a2: 基本値補正
;-------------------------------------------------
162cd: 1f 88 02 00 00                            ; 
162d2: 20 b8 00 b8 02                            ; 
162d7: 15 13 b8 00 00 00 40 85 00 ff             ; jmpt 0x16363
162e1: 1f b0 01 b8 00                            ; 
162e6: 15 15 b8 01 00 00 41 1c 00 ff             ; jmpf 0x16309
162f0: 20 b0 01 b8 01                            ; 
162f5: 15 15 b0 01 00 00 41 08 00 ff             ; jmpf 0x16304
162ff: 1f b0 01 00 00                            ; 
16304: 1f b8 01 00 00                            ; 
16309: 8e 88 01 01 09 b8 00                      ;
                02 09 00 01 00                   ; 
16315: 1a 88 02                                  ; 
16318: 35 a1 fd 01 88 01                         ; call 0x160ba
1631e: 8e 88 02 01 09 88 02                      ;
                05 09 b8 01                      ;
                04 09 00 32 00                   ;
1632e: 8e 88 01 01 09 b8 00                      ;
                04 09 00 05                      ;
                02 09 00 01 00                   ; 
1633e: 1a 88 03                                  ; 
16341: 35 78 fd 01 88 01                         ; call 0x160ba
16347: 8e 88 02 01 09 88 02                      ;
                02 09 88 03 00                   ; 
16353: 8e 88 02 01 09 88 02                      ;
                05 09 b0 01                      ;
                04 09 b8 00 00                   ;  
16363: 1e 88 02                                  ; ret (88 02)
 
;-------------------------------------------------
; 盾の防御力
;-------------------------------------------------
; a0: 基本値, a1: 修正値, a2: 基本値補正
;-------------------------------------------------
16366: 1f 88 02 00 00                            ; 
1636b: 20 b8 00 b8 02                            ; 
16370: 15 13 b8 00 00 00 40 89 00 ff             ; jmpt 0x16400
 
1637a: 1f b0 01 b8 00                            ; 
1637f: 15 15 b8 01 00 00 41 1c 00 ff             ; jmpf 0x163a2
 
16389: 20 b0 01 b8 01                            ; 
1638e: 15 15 b0 01 00 00 41 08 00 ff             ; jmpf 0x1639d
 
16398: 1f b0 01 00 00                            ; 
 
1639d: 1f b8 01 00 00                            ; 
 
163a2: 8e 88 01 01 09 b8 00                      ; 
                02 09 00 01 00                   ;
163ae: 1a 88 02                                  ; 
163b1: 33 00 01 8d 04 01 88 01                   ; tcall 0x160ba
163b9: 8e 88 02 01 09 88 02                      ; 
                05 09 b8 01                      ; 
                04 09 00 32 00                   ; 
163c9: 8e 88 01 01 09 b8 00                      ;
                04 09 00 03                      ;
                02 09 00 01 00                   ; 
163d9: 1a 88 03                                  ; 
163dc: 33 00 01 8d 04 01 88 01                   ; tcall 0x160ba 
163e4: 8e 88 02 01 09 88 02                      ; 
                02 09 88 03 00                   ; 
163f0: 8e 88 02 01 09 88 02                      ; 
                05 09 b0 01                      ; 
                04 09 b8 00 00                   ; 
 
16400: 15 15 b8 01 00 00 41 08 00 ff             ; if (!(修正値 < 0)) jmp 0x1640f
1640a: 1f b8 01 00 00                            ; (修正値) ← 0
 
1640f: 23 b8 01 00 02                            ; 
16414: 8e 88 02 01 09                            ; 
          88 02 02 09 b8 01 00                   ; f2 += (修正値) // 2
16420: 1e 88 02                                  ; ret f2
 
;-------------------------------------------------
; ダメージ計算
;-------------------------------------------------
...
2c275: 8e 88 01 01 09 88 02                      ; f1 ← (攻撃力)
                00                               ; 
2c27d: 1a b0 01                                  ; w1 ← (乱数 0〜250)
2c280: 52 01 00 fb                               ; 
2c284: 21 b0 01 00 7d                            ; w1 -= 125 (w1: 乱数 -125〜125)
2c289: 8e 88 01 01 09 88 01                      ; 
                05 09 b0 01                      ; 
                04 09 01 03 e8 00                ; f1 ← (攻撃力) × w1 / 1000.0
2c29a: 8e 88 01 01 09 88 01                      ;
                02 09 88 02                      ;
                03 09 88 03 00                   ; f1 ← f1 + (攻撃力) - (防御力)
2c2aa: 1a b0 01                                  ; 
2c2ad: 90 88 01                                  ; w1 ← round(f1)
2c2b0: 1a 88 01                                  ; 
2c2b3: 33 00 01 1c 06 02 b8 00 97 ff             ; tcall 0xb093 ; d1 ← (ダメージ乗数)
2c2bd: 22 88 01 b0 01                            ; d1 *= w1
2c2c2: 23 88 01 01 03 e8                         ; d1 //= 1000
2c2c8: 1f b0 01 88 01                            ; w1 = d1
2c2cd: 15 13 b0 01 00 00 41 28 00 ff             ; (!(w1 <= 0)) jmp 0x2c2fc
 
2c2d7: 15 01 c1 10 41 0b 00 ff                   ; if (通常のダンジョン) jmp 0x2c2e7
2c2df: 1f b0 01 00 01                            ; w1 ← 1
2c2e4: 12 17 00                                  ; jmp 0x2c2fc
 
2c2e7: 1a b0 01                                  ; 
2c2ea: 52 00 04                                  ; w1 ← 乱数 0〜3
2c2ed: 15 11 b0 01 00 02 41 08 00 ff             ; (!(w1 != 2)) jmp 0x2c2fc
2c2f7: 1f b0 01 00 01                            ; w1 ← 1
 
2c2fc: 1e b0 01                                  ; ret w1
 
;-------------------------------------------------
; ダメージ乗数
;-------------------------------------------------
0b093: 1f 88 01 01 03 e8                         ; d1 ← 1000
0b099: 1a b0 01                                  ; 
0b09c: 34 b8 01 b6 06 00                         ; 
0b0a2: 15 18 b0 01 00 08 41 22 00 ff             ; jmpf 0x0b0cb
0b0ac: 1a b0 02                                  ; 
0b0af: 34 b8 00 01 07 01 00 01                   ; w2 ← 分子
0b0b7: 1f 88 02 88 01                            ; d2 = d1
0b0bc: 22 88 02 b0 02                            ; d2 *= w2
0b0c1: 28 88 02 00 01                            ; d2 >>= 1
0b0c6: 20 88 01 88 02                            ; d1 += d2
 
0b0cb: 15 18 b0 01 00 02 41 22 00 ff             ; jmpf 0x0b0f4
0b0d5: 1a b0 02                                  ; 
0b0d8: 34 b8 00 01 07 01 00 02                   ; 
0b0e0: 1f 88 02 88 01                            ; 
0b0e5: 22 88 02 b0 02                            ; 
0b0ea: 28 88 02 00 01                            ; 
0b0ef: 20 88 01 88 02                            ; 
 
0b0f4: 15 18 b0 01 00 01 41 22 00 ff             ; jmpf 0x0b11d
0b0fe: 1a b0 02                                  ; 
0b101: 34 b8 00 01 07 01 00 03                   ; 
0b109: 1f 88 02 88 01                            ; 
0b10e: 22 88 02 b0 02                            ; 
0b113: 28 88 02 00 01                            ; 
0b118: 20 88 01 88 02                            ; 
 
0b11d: 15 18 b0 01 00 04 41 22 00 ff             ; jmpf 0x0b146
0b127: 1a b0 02                                  ; 
0b12a: 34 b8 00 01 07 01 00 04                   ; 
0b132: 1f 88 02 88 01                            ; 
0b137: 22 88 02 b0 02                            ; 
0b13c: 28 88 02 00 01                            ; 
0b141: 20 88 01 88 02                            ; 
 
0b146: 15 18 b0 01 00 10 41 22 00 ff             ; jmpf 0x0b16f
0b150: 1a b0 02                                  ; 
0b153: 34 b8 00 01 07 01 00 05                   ; 
0b15b: 1f 88 02 88 01                            ; 
0b160: 22 88 02 b0 02                            ; 
0b165: 28 88 02 00 01                            ; 
0b16a: 20 88 01 88 02                            ; 
 
0b16f: 1e 88 01                                  ; ret d1
 

アイテム(武器/盾の修正値・矢の本数・弾の個数・杖の回数・壺の容量)

ID 該当するアイテム +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14
0 武器(鍛えた木刀以外) 53.7 %
(51/95)
31.6 %
(30/95)
10.5 %
(10/95)
4.2 %
(4/95)
1 鍛えた木刀 53.7 %
(51/95)
31.6 %
(30/95)
10.5 %
(10/95)
4.2 %
(4/95)
2 盾(鍛えた木の盾以外) 53.7 %
(51/95)
31.6 %
(30/95)
10.5 %
(10/95)
4.2 %
(4/95)
3 鍛えた木の盾 53.7 %
(51/95)
31.6 %
(30/95)
10.5 %
(10/95)
4.2 %
(4/95)
4 木の矢・鉄の矢・デブータの石 31.9 %
(51/160)
31.2 %
(50/160)
6.2 %
(10/160)
6.2 %
(10/160)
6.2 %
(10/160)
6.2 %
(10/160)
3.1 %
(5/160)
3.1 %
(5/160)
3.1 %
(5/160)
2.5 %
(4/160)
5 銀の矢・毒矢 28.3 %
(51/180)
27.8 %
(50/180)
16.7 %
(30/180)
16.7 %
(30/180)
5.6 %
(10/180)
5.0 %
(9/180)
6 会心の矢・かまいたちの矢 51.0 %
(51/100)
30.0 %
(30/100)
19.0 %
(19/100)
7 大砲の弾 46.4 %
(51/110)
27.3 %
(30/110)
18.2 %
(20/110)
8.2 %
(9/110)
8 30.0 %
(51/170)
29.4 %
(50/170)
17.6 %
(30/170)
17.6 %
(30/170)
5.3 %
(9/170)
9 (未使用) 34.0 %
(51/150)
33.3 %
(50/150)
20.0 %
(30/150)
6.7 %
(10/150)
6.0 %
(9/150)
10 壺(合成の壺以外) 36.4 %
(51/140)
35.7 %
(50/140)
21.4 %
(30/140)
6.4 %
(9/140)
11 合成の壺 34.0 %
(51/150)
33.3 %
(50/150)
32.7 %
(49/150)

ソース

+ ...
7c8a9: 18 00 20 00 30 00 38 00 48 00 66 00 78 00 84 00 
       92 00 A2 00 B4 00 C2 00 
 
       32 00 1E 00 0A 00 05 00 FF FF 
       00 00 00 00 00 00 00 00 32 00 1E 00 0A 00 05 00 FF FF 
       32 00 1E 00 0A 00 05 00 FF FF 
       00 00 00 00 00 00 00 00 32 00 1E 00 0A 00 05 00 FF FF 
       00 00 00 00 00 00 00 00 00 00 32 00 32 00 0A 00 0A 00 0A 00 0A 00 05 00 05 00 05 00 05 00 FF FF 
       00 00 00 00 00 00 32 00 32 00 1E 00 1E 00 0A 00 0A 00 FF FF 
       00 00 00 00 00 00 32 00 1E 00 14 00 FF FF 
       00 00 00 00 00 00 32 00 1E 00 14 00 0A 00 FF FF 
       00 00 00 00 00 00 32 00 32 00 1E 00 1E 00 0A 00 FF FF 
       00 00 00 00 00 00 00 00 32 00 32 00 1E 00 0A 00 0A 00 FF FF 
       00 00 00 00 00 00 32 00 32 00 1E 00 0A 00 FF FF 
       00 00 00 00 32 00 32 00 32 00 FF FF
 
;----------------------
; 判定箇所
;----------------------
7ca97: 1f b0 02 00 00                            ; 
7ca9c: 1f b0 01 00 00                            ; 
7caa1: 12 0c 00                                  ; jmp 0x7caae
 
7caa4: 20 b0 02 b0 04                            ; w2 += w4
7caa9: 20 b0 01 00 01                            ; w1 += 1
 
7caae: 1a b0 04                                  ; 
7cab1: 74 b8 00 b0 01                            ; w4 ← weight
7cab6: 15 12 b0 04 00 00 40 e7 ff ff             ; if (w4 >= 0) jmp 0x7caa4
7cac0: 15 13 b0 02 00 00 40 3f 00 ff             ; if (w2 == 0) jmp 0x7cb06
 
7caca: 1a b0 03                                  ; 
7cacd: 52 b0 02                                  ; w3 ← 乱数 0〜(w2-1)
7cad0: 1f b0 02 00 00                            ; w2 = 0
7cad5: 1f b0 01 00 00                            ; w1 = 0
7cada: 1a b0 04                                  ; 
7cadd: 74 b8 00 b0 01                            ; w4 ← weight
7cae2: 15 10 b0 04 00 00 40 15 00 ff             ; if (w4 == 0) jmp 0x7cafe
7caec: 20 b0 02 b0 04                            ; w2 += w4
7caf1: 15 12 b0 02 b0 03 41 06 00 ff             ; (!(w2 >= w3)) jmp 0x7cafe
 
; (和) >= (乱数値) の場合(注意: ">" ではない)
 
7cafb: 1e b0 01                                  ; ret w1
 
7cafe: 20 b0 01 00 01                            ; w1 += 1
7cb03: 12 d6 ff                                  ; jmp 0x7cada
 
7cb06: 1e 00 00                                  ; ret 0
 

鋼賀の隠し穴 43F の店の出現率

43F に店が出現する確率は約 45/2968 (≈ 1.52 %) です。
(店フラグが on となる確率が約 1/53(0x35 で "巫女" ?)、店を設置可能なマップが選択される確率が約 45/56 です)

店が出現する時刻 [PC 表示用]

店の出現の有無(ダンジョンの乱数値)は、「ダンジョンに入る前にセーブを行います」の画面で「はい」を押した時刻によって決まります。

43F に店が出現する(15 分先までの)時刻一覧:

ソース

+ ...
;--------------------------------------
; script: 0xc8394 から呼ばれる
;--------------------------------------
; a0 ← (48 04)
; a1 〜 a15 ← 0 (x86: 0x4de2bd (0x4dc550) 内で初期化される)
;--------------------------------------
caac0: 1f b0 03 00 00                ; w3 = 0
caac5: 15 10 70 05 00 05 
          10 70 02 00 2b 41 2e 00 ff ; if ((ダンジョン ID) == 5 && (階層) == 43) {
caad4: 15 14 b8 01 00 00 41 0c 00 ff ;   if (a1 > 0) {
caade: 1a b0 02                      ;     dest = w2
caae1: 52 b8 01                      ;     w2 = 乱数 0〜(a1-1)
caae4: 12 08 00                      ;   } else {
caae7: 1a b0 02                      ;     dest = w2
caaea: 52 00 35                      ;     w2 = 乱数 0〜52
                                     ;   }
 
caaed: 15 10 b0 02 00 00 41 0b 00 ff ;   if (w2 == 0) {
caaf7: 1f b0 03 00 20                ;     w3 = 0x20        // 店フラグ
caafc: 44 40 06                      ;     set flag (40 06)
                                     ;   }
                                     ; }
 
...
c8394: 35 2b 27 01 48 04             ; call 0xcaac0 (a0: (48 04))
 
;--------------------------------------
; 鋼賀の隠し穴 43F 店処理
;--------------------------------------
...
c9bfa: 1a b0 0a                      ; dest = w10
c9bfd: 52 00 02                      ; w10 = 乱数 0〜1
c9c00: 15 10 b0 0a 00 00 41 09 00 ff ; 
 
c9c0a: 45 80 01                      ; clear flag (80 01)
c9c0d: 12 05 00                      ; jmp 0xc9c13
 
c9c10: 44 80 01                      ; set flag (80 01)
...
c9c3f: 15 01 80 01 41 0b 00 ff 
       1f b0 0c 00 26                ; w12 ← 0x26 (黄泉水底ノ鎖)
       12 07 00
 
c9c4f: 1f b0 0c 00 4a                ; w12 ← 0x4a (黄泉巫女神ノ盾)
...
c9c7f: 15 01 80 01 41 0b 00 ff 
       1f b0 0c 00 4a                ; w12 ← 0x4a (黄泉巫女神ノ盾)
       12 07 00
 
c9c8f: 1f b0 0c 00 26                ; w12 ← 0x26 (黄泉水底ノ鎖)
 

店主焼き 成功確率

店主焼き実行時にアプリケーションが終了する(アクセス違反が起きる)かどうかは、(主に)以下の 3 つの要素に依存しています:
  • アスカの向き
  • 実行時に取得される 0〜4 の範囲の乱数値
  • プロセス AsfPc.exe の仮想アドレス 0x03e003e4 が読み取り可能かどうか(基本的に、起動時に決定します)

店主焼き 成功表

補足:
  • (不定) はプロセス AsfPc.exe の仮想アドレス 0x03e003e4 が読み取り可能であった場合に限り成功します。
方向 ID アスカの向き 乱数値 0 乱数値 1 乱数値 2 乱数値 3 乱数値 4 成功確率
0 (不定) × × × 20 % or 40 %
1 右上 × × × ×? 20 %
2 × × 60 %
3 右下 × × × 40 %
4 × × × 40 %
5 左下 × 80 %
6 (不定) × × 40 % or 60 %
7 左上 (不定) × 60 % or 80 %

店主焼き 内部処理結果

+ ...
方向 ID 乱数値 オフセット 画像 (?) 処理数 結果 Exception
0 0 0x000548 2
0 1 0x00056c 1 ? アクセス違反: 0x03e003e4
0 2 0x000580 160 × アクセス違反: 0xffd9000c
0 3 0x000f84 9 × アクセス違反: 0x00060009
0 4 0x001018 9 × アクセス違反: 0x00300414
1 0 0x000574 2
1 1 0x000598 1 × アクセス違反: 0xbc28bc2c
1 2 0x0005ac 160 × アクセス違反: 0xfd73f115
1 3 0x000fb0 4294954189 × アクセス違反: (予測不能)
1 4 -0x03237c (不定) ×? アクセス違反: (予測不能)
2 0 0x0005a0 2
2 1 0x0005c4 1 × アクセス違反: 0xfd73f115
2 2 0x0005d8 160 × アクセス違反: 0x00000004
2 3 0x000fdc 0
2 4 0x000fe0 0
3 0 0x0005cc 2
3 1 0x0005f0 1 × アクセス違反: 0xfd73f115
3 2 0x000604 160 × アクセス違反: 0x000c000b
3 3 0x001008 4294967288 × アクセス違反: 0x00300414
3 4 0x000f8c 0
4 0 0x0005f8 2
4 1 0x00061c 1 × アクセス違反: 0xfd73f115
4 2 0x000630 160 × アクセス違反: 0x00000004
4 3 0x001034 1791 × アクセス違反: (予測不能)
4 4 0x008028 0
5 0 0x000624 2
5 1 0x000648 1
5 2 0x00065c 160 × アクセス違反: 0xfffcfff6
5 3 0x001060 0
5 4 0x001064 0
6 0 0x000650 2
6 1 0x000674 1 ? アクセス違反: 0x03e003e4
6 2 0x000688 160 × アクセス違反: 0xfff2fff5
6 3 0x00108c 8 × アクセス違反: 0x00060009
6 4 0x001110 5
7 0 0x00067c 2
7 1 0x0006a0 4 ? アクセス違反: 0x03e003e4
7 2 0x0006e4 0
7 3 0x0006e8 1791 × アクセス違反: 0xfff90007
7 4 0x0076dc 0

ソース

  • DATA016.BIN (0x126800-0x2db78b): 店主焼きの際に参照されるデータ
    • : アドレス: 0x126ee8 (0x126800 + 0x06e8) の値 (0xff 0x06 ...) を int16_t として解釈した場合、1791 となります。
  • script:
+ ...
...
4caed: 1a b0 03
4caf0: 52 00 05          ; w3 ← 乱数 0〜4
4caf3: 4f 56 00 ff b0 03
4caf9: 00
 
  • x86:
+ ...
;------------------------------------------------------------------
; edx の値(店主焼きの場合、乱数値 0〜4)に応じて、ポインタ(オフセット)を求める
;------------------------------------------------------------------
...
4e3186: 85 d2                 test   edx,edx
4e3188: 74 14                 je     0x4e319e
 
4e318a: 55                    push   ebp
4e318b: eb 03                 jmp    0x4e3190
4e318d: 8d 49 00              lea    ecx,[ecx+0x0]
 
4e3190: 0f bf 29              movsx  ebp,WORD PTR [ecx]
4e3193: c1 e5 04              shl    ebp,0x4
4e3196: 4a                    dec    edx
4e3197: 8d 4c 29 04           lea    ecx,[ecx+ebp*1+0x4]
4e319b: 75 f3                 jne    0x4e3190
 
4e319d: 5d                    pop    ebp
...
4e31d3: 0f bf 49 02           movsx  ecx,WORD PTR [ecx+0x2] ; (向き, 乱数値) == (右上, 4) の場合、アクセス違反を生じうる
...
 
;------------------------------------------------------------------
; 画像周りの処理?
;------------------------------------------------------------------
414782: 8b 45 48              mov    eax,DWORD PTR [ebp+0x48] ; eax: オフセット
414785: 8d 50 04              lea    edx,[eax+0x4]            
414788: 0f bf 00              movsx  eax,WORD PTR [eax]
41478b: 85 c0                 test   eax,eax
41478d: 56                    push   esi
41478e: 57                    push   edi
41478f: 89 54 24 10           mov    DWORD PTR [esp+0x10],edx ; edx: オフセット+4
414793: 89 44 24 2c           mov    DWORD PTR [esp+0x2c],eax ; eax: 処理数
414797: 0f 84 08 01 00 00     je     0x4148a5
...
 
...
4148e0: 8b 4c 24 10           mov    ecx,DWORD PTR [esp+0x10] ; ecx: オフセット
4148e4: 0f bf 79 02           movsx  edi,WORD PTR [ecx+0x2]   ; edi: 画像 ID?
4148e8: 8b 55 44              mov    edx,DWORD PTR [ebp+0x44]
4148eb: 8b 4a 14              mov    ecx,DWORD PTR [edx+0x14]
4148ee: 8a 45 0a              mov    al,BYTE PTR [ebp+0xa]
4148f1: c1 e7 04              shl    edi,0x4
4148f4: 03 f9                 add    edi,ecx                  ; 
...
 
...
414973: 8b 57 0c              mov    edx,DWORD PTR [edi+0xc]
414976: 8b 42 04              mov    eax,DWORD PTR [edx+0x4] ; (アクセス違反を生じる箇所)
...
 
...
414df0: 8b 4c 24 10           mov    ecx,DWORD PTR [esp+0x10]
414df4: 8b 44 24 2c           mov    eax,DWORD PTR [esp+0x2c]
414df8: 83 c1 10              add    ecx,0x10                 ; (オフセット) += 16
414dfb: 48                    dec    eax                      ; (処理数) -= 1
414dfc: 89 4c 24 10           mov    DWORD PTR [esp+0x10],ecx
414e00: 89 44 24 2c           mov    DWORD PTR [esp+0x2c],eax
414e04: 0f 85 d6 fa ff ff     jne    0x4148e0
 

その他(未整理)

+ (処理一覧 [一部のみ] および ソース)
ファイルオフセット
(復号化された DATA020.BIN)
バイトコード 乱数の範囲 用途
0x019dc 52 b8 03 0〜 投げ物の命中判定
0x05199 52 00 08 0〜7 武器「ケ」印の武器はじき判定
0x05c97 52 b0 09 0〜 アスカの攻撃の命中判定
0x05f51 52 00 20 0〜31 武器「飯」, 「に」印のドロップ判定(補足: 「おにぎり」のドロップ確率: 1/32 × (「飯」印の個数) + 6/32 × (「に」印の個数) )
0x05f71 52 00 10 0〜15 武器「銭」印のドロップ判定
0x0601e 52 00 08 0〜7 武器「会」印 + 「会心の腕輪」 での会心判定
0x0603c 52 00 04 0〜3 武器「会」印 または 「会心の腕輪」 単独での会心判定
0x06127 52 00 08 0〜7 武器「眠」印の睡眠状態化判定
0x0759a 52 00 10 0〜15 盾「眠」印の睡眠状態化判定
0x077ff 52 00 10 0〜15 盾「飯」印のおにぎり状態化判定
0x0789b 52 00 04 0〜3 「たかとびの腕輪」の高飛び判定
0x09530 52 00 02 0〜1 アイテムの祝福状態の消失判定
0x10016 52 00 0a 0〜9 モンスターの出現判定(前回の出現から一定ターン数経過後、毎ターン判定)
0x130bb 52 00 65 0〜100 ワナの発動判定(補足: (乱数値) ≤ (境界値) の場合にワナが発動する)
0x28b46 52 01 00 ff 0〜254 モンスターの起床判定(出現時)
0x28be2 52 01 00 ff 0〜254 モンスターの固定アイテム所持判定(出現時?)
0x2b523 52 00 08 0〜7 モンスターからの攻撃の回避判定 #1(乱数値が 0 であった場合、回避率を 100 % に設定する)
0x2c280 52 01 00 fb 0〜250 ダメージ計算
0x2f844 52 01 00 ff 0〜254 モンスターのアイテムドロップ判定(固定アイテムは除く)
0x2f947 52 01 00 ff 0〜254 モンスターの起床判定(部屋出入り時)
0x2f98a 52 01 00 ff 0〜254 モンスターの起床判定(隣接時)
0x309ab 52 00 07 0〜6 レベルアップ時の最大 HP 上昇量の計算
0x31ec3 52 00 64 0〜99 モンスターの痛恨判定
0x3308c 52 00 64 0〜99 モンスターの分裂判定(補足: (乱数値) ≤ (境界値) の場合に分裂するため、分裂確率は設定確率よりも 1 % 高い)
0x34cd5 52 00 64 0〜99 モンスターからの攻撃の回避判定 #2
0x77ad5 52 00 06 0〜5 「困った巻物」の効果の選択
0x797a2 52 00 20 0〜31 「識別の巻物」の特殊効果判定(0: 全識別)
0x7cacd 52 b0 02 0〜 武器・盾の修正値、壺の容量、杖の回数、矢・石の数の計算など
0x8225a 52 00 06 0〜5 「ねがいの腕輪」の効果の選択
0x8697f 52 00 06 0〜5 「まずそうなおにぎり」の効果の選択
0x86b38 52 00 07 0〜6 「特製おにぎり」の効果の選択
0x86dfb 52 00 03 0〜2 「コヨリのおにぎり」の効果の選択
0x86f48 52 00 28 0〜39 「奇妙なおにぎり」の効果の選択
0x8a235 52 00 64 0〜99 ワナの消滅判定
0x95c6a 52 01 7f ff 0〜32766 救助用の冒険の識別子
0xc7046 52 01 7f ff 0〜32766 ダンジョン生成用の乱数値の計算
0xc7612 52 00 64 0〜99 アイテムの(初期状態での)未識別状態の判定
0xc767c 52 00 64 0〜99 アイテムの呪い状態の判定
0xc769b 52 00 64 0〜99 アイテムの祝福状態の判定
0xc7e23 52 b8 02 0〜 出現アイテムの種類の選択
0xc7eb8 52 b0 03 0〜 (種類を固定した状態での)アイテムの選択
0xca880 52 b8 03 0〜 出現モンスター・ワナの選択
0xcaa24 52 b8 02 0〜 BGM・地形グラフィックの選択

共鳴バグ(ドラゴンセットバグ)

このバグは(おそらく)条件分岐に用いるレジスタの指定ミスに因るものです。
指定されたレジスタは(おそらく)初期化されていないため、基本値が加算されるかどうかは不定(または、それまでの行動依存)と考えられます。

少なくとも、以下のタイミングで共鳴バグは発生 または 解消します:
  • アスカの攻撃後
  • 装備の変更時
  • やりすごしの壺からの復帰時
  • モンスターの出現時
  • 階層変更時

このバグは、以下のようにスクリプトを変更することで解消します。

+ ...
; 共鳴効果による基本値の加算の有無
;
  ...
  cd293: 1a 70 0c
  cd296: 35 7e 25 00                   ; (70 0c) ← 共鳴セット番号
 
- cd29a: 15 11 b0 06 00 00 41 0e 00 ff ; (b0 06) が 0 の場合、基本値の加算を行わない(元の処理)
+ cd29a: 15 11 70 0c 00 00 41 0e 00 ff ; (70 0c) が 0 の場合、基本値の加算を行わない(変更後)
 
  cd2a4: 1a 88 00
  cd2a7: 35 33 26 02 70 0c 00 01       ; 基本値 加算量の設定
 

未識別名の選択手順

種類 k(0: 腕輪, 1: 草, 2: 巻物, 3: 杖, 4: 壺) の i 番目のアイテムの未識別名番号 uk, i は以下の関数と同等の処理によって決定されます。
補足: 偏りが生じないシャッフルではありません。例えば、(初期状態で全ての壺が未識別となるダンジョンにおいて)「保存の壺」の未識別名が「四角い壺」となる確率は約 10.2 %、「重厚な壺」となる確率は約 1.0 % です)

constexpr size_t K = 5;
constexpr size_t sizes[5] = {46, 33, 64, 35, 25};
 
auto unidentified_name_indices(AsukaRng& rng, const size_t ratios[K]) {
  std::vector<std::vector<uint8_t>> ret(K);
  for (size_t k = 0; k < K; ++k) {
    const size_t n = sizes[k];
    size_t m = n * ratios[k] / 100; // 約 ratios[k] % のアイテムを未識別とする
    if (m > n) m = n;
    auto& u_k = ret[k]; u_k.assign(n, 0xff); // 初期状態は識別済み(0xff)とする
    for (size_t u = 0; u < m; ++u) {
      int r = rng.range(n);
      for (size_t i = 0; ; i = (i + 1) % n) {
        if (u_k[i] != 0xff) continue;
        if (--r >= 1) continue;
        u_k[i] = u; // 種類 k の i 番目のアイテムの未識別名番号を u とする
        break;
      }
    }
  }
  return ret;
}
 

ダンジョンデータ

各ダンジョンのデータは DATA019.BIN 中に圧縮データとして格納されています。
また、各(圧縮)データの (格納位置, バイト数) は DATA000.BIN 中に記述されています。

ダンジョン生成

ダンジョン生成用の乱数値

日本標準時 (JST) h 時 m 分 s 秒に(「大きいおにぎり」のみが自動的に追加される)ダンジョンに入った場合、ダンジョン生成用の乱数値は以下の関数 dungeon_seed と同等の処理によって計算されます。

ここで、c は食料を呪い状態にするための確率設定値で、直前の場所(「すぐにやり直す」を選択した場合はダンジョン)での設定値を入力します。

:
  • 「十六夜の里」「鋼賀村」「八神楽の森」の場合: 0
  • 「白蛇島」「裏白蛇島」の場合: 5

uint16_t dungeon_seed(size_t h, size_t m, size_t s, size_t c) {
  h = (h + 15) % 24; // JST -> UTC
  AsukaRng rng(h * 3600 + m * 60 + s);
  rng.range(29999);
  rng.range(30000);
  rng.range(30000);
 
  // 自動的に追加されるアイテムに対する乱数消費
  // 「大きいおにぎり」用
  size_t r = rng.range(100);  // 呪い状態判定用 乱数値
  if (r >= c) rng.range(100); // 祝福状態判定用 乱数値
 
  return rng.range(0x7fff);
}
 

階層別 乱数値

乱数値 s のダンジョンの(内部)階層値 f に移動した際、乱数生成器は以下の関数 floor_seed が返す値と同一の値によって初期化されます。

uint16_t floor_seed(uint16_t s, uint16_t f) {
  static constexpr uint16_t consts[128] = {
    0x015a, 0x6a44, 0x56e1, 0x5c6b, 0x6b9c, 0x46b9, 0x20de, 0x7fde, 
    0x660e, 0x0276, 0x35fe, 0x73be, 0x048e, 0x722e, 0x7348, 0x6210, 
    0x7bdb, 0x670c, 0x621d, 0x7995, 0x3f5b, 0x2365, 0x4245, 0x01c4, 
    0x20e3, 0x0697, 0x315a, 0x40ca, 0x1b7f, 0x45ed, 0x0df7, 0x35ea, 
    0x2924, 0x0b6d, 0x4152, 0x679a, 0x5760, 0x7357, 0x334f, 0x2aef, 
    0x66e0, 0x1bda, 0x6d1a, 0x01d4, 0x31d4, 0x7502, 0x3d5d, 0x58a2, 
    0x73b5, 0x2333, 0x3e99, 0x1131, 0x6774, 0x3d43, 0x592b, 0x049c, 
    0x3721, 0x608e, 0x4c95, 0x4cda, 0x367b, 0x115e, 0x155c, 0x715a, 
    0x4c9f, 0x0d0d, 0x1e29, 0x3266, 0x0d83, 0x66d4, 0x251d, 0x5667, 
    0x5cca, 0x29b2, 0x3175, 0x4e26, 0x1cd3, 0x708b, 0x25c1, 0x566e, 
    0x2967, 0x2095, 0x66e6, 0x206d, 0x295e, 0x4c9e, 0x550a, 0x7215, 
    0x3314, 0x00e6, 0x162b, 0x51ba, 0x3c74, 0x4e85, 0x5eab, 0x0f90, 
    0x7c4c, 0x5012, 0x659e, 0x675f, 0x29ab, 0x75df, 0x6e1c, 0x0986, 
    0x1aaf, 0x465c, 0x62f0, 0x137c, 0x6953, 0x1679, 0x1216, 0x5feb, 
    0x2c6e, 0x6c38, 0x120d, 0x6298, 0x5236, 0x467b, 0x73b6, 0x09da, 
    0x7a53, 0x1388, 0x10b5, 0x29ed, 0x7936, 0x0350, 0x7fbc, 0x21ee
  };
  if (s == 0) s = 1234;
  return (s + consts[f & 0x7f]) & 0x7fff;
}
 

初期未識別名

乱数値 s のダンジョンでの各アイテムの初期未識別名は、以下の関数と同等の処理によって決定されます。

auto initial_unidentified_name_indices(uint16_t s, const size_t ratios[K]) {
  auto rng = AsukaRng(floor_seed(s, 0));
  return unidentified_name_indices(rng, ratios);
}
 

計算機(時刻検索・乱数値列挙)[PC 表示用]

呪い状態 確率設定値 (0〜100)
時刻検索: ダンジョン乱数値 (0〜32766)
乱数値列挙: 開始時刻 (JST) ::

時刻検索結果

乱数値列挙



レアアイテム

注意: 到達可能かどうかは未調査です。

白蛇島

プチフェニックスの箱(祝福)

ダンジョンの乱数値 SOS の呪文(42F) 詳細
0x480c すいおは ておふこ ちう 41F 店: 1 個
0x6e92 ねづねど びほなも やが 41F 店: 1 個
0x7ca7 とおずべ ふつてづ せを 41F 店: 1 個
非推奨です。39F の階段で中断し 40F から再開した場合、出現しやすいようです。(出現しない場合もあります)

裏白蛇島

ケンゴウのカタナ

ダンジョンの乱数値 SOS の呪文(99F) 詳細
0x56c0 みけげむ ばらそた えひ 72F 店: 1 個
74F 店: 1 個

ドラゴンキラー(龍神剣)

ダンジョンの乱数値 SOS の呪文(99F) 詳細
0x0bc3 すんくむ ぐんくど なお 42F 店: 1 個
49F 店: 3 個
0x162d ぶるゆか わまたた だづ 24F 店: 3 個
45F 店: 1 個
0x2d22 ぐだてづ びつかゆ ねば 43F 店: 3 個
46F 店: 1 個
0x5654 ぞにもう のぢすた ゆめ 47F 店: 3 個
70F 店: 1 個
76F 店: 1 個
0x7f55 つみらえ とあせを せゆ 22F 店: 1 個
38F 店: 2 個
43F 店: 1 個
補足: 記載していない階層にも出現する可能性があります。
最終更新:2025年02月25日 19:53