DQ5 (DS) > 確率


行動順を決定する値

戦闘の行動順は (行動優先度) := floor((すばやさ) × (乱数 80〜120) / 10) の大きさの順で決定され、優先度が同一の場合、味方1, 味方2, ..., モンスター1, モンスター2, ... の順で優先されます。

ソース

+ ...
...
0212F466 586A     ldr     r2,[r5,r1]    ; すばやさ
0212F468 200A     movs    r0,0Ah
0212F46A 4350     muls    r0,r2
0212F46C 5068     str     r0,[r5,r1]
0212F46E 5868     ldr     r0,[r5,r1]    ; すばやさ × 10
0212F470 2114     movs    r1,14h
0212F472 1C0A     adds    r2,r1,0
0212F474 F6E3F996 bl      Lxx_20127A4h  ; すばやさ × 10 × (乱数 80〜120) / 100
0212F478 4906     ldr     r1,=Lxx_1524h
0212F47A 5068     str     r0,[r5,r1]
...
 

レベルアップ時の上昇幅

(上昇値) := max{(基本上昇値), ((基本上昇値) × (乱数 75〜124) + 50)/100}

ソース

+ ...
0200D238 B510     push    r4,r14
0200D23A 2032     movs    r0,32h
0200D23C 1C0C     adds    r4,r1,0
0200D23E F041EB00 blx     Lxx_204E840h ; r0 ← 乱数 0〜49
0200D242 304B     adds    r0,4Bh
0200D244 0400     lsls    r0,r0,10h
0200D246 0C00     lsrs    r0,r0,10h
0200D248 4360     muls    r0,r4
0200D24A 3032     adds    r0,32h       ; r0 ← (基本上昇値) × (乱数 75〜124) + 50
0200D24C 0400     lsls    r0,r0,10h
0200D24E 0C00     lsrs    r0,r0,10h
0200D250 2164     movs    r1,64h
0200D252 F7F8EEB0 blx     Lxx_2005FB4h ; r0 ← ((基本上昇値) × (乱数 75〜124) + 50) / 100
0200D256 0400     lsls    r0,r0,10h
0200D258 0C00     lsrs    r0,r0,10h
0200D25A 42A0     cmp     r0,r4
0200D25C D200     bcs     Lxx_200D260h
0200D25E 1C20     adds    r0,r4,0
0200D260 BD10     pop     r4,r15
 

モンスターが仲間になる確率

設定値 1 匹目 2 匹目 3 匹目
0 (仲間にならない) (仲間にならない) (仲間にならない)
1 1/256 1/1024 1/1024
2 1/64 1/128 1/256
3 1/32 1/64 1/128
4 1/16 1/64 1/64
5 1/4 1/64 1/64
6 1/2 1/64 1/64
7 1/2 1/32 1/16
8 (必ず仲間になる) (必ず仲間になる) (必ず仲間になる)

ソース

  • モンスターを仲間にする処理: $021274A0

エンカウント周り

仕様

1 歩移動する毎に(エンカウント用の)カウンタの値を減算し、カウンタの値が 0 未満になった際に戦闘が発生する方式です。
  • (カウンタの初期値) := 7680 + (0〜30 の範囲の乱数値に依存した補正値)
  • (1 歩移動した際の減算値) := (地形依存の減算値) × (エンカウントテーブル依存の乗数) × (地形依存の乗数)

地形依存の減算値・乗数

タイプ 地形 減算値 乗数 草原との比率
0 153 1.0 0.398
1 砂漠 576 1.0 1.500
2 960 1.0 2.500
3 岩山 960 1.0 2.500
4 毒の沼地 691 1.0 1.799
5 茂み 384 1.0 1.000
6 草原 384 1.0 1.000
7 460 1.0 1.198
8 353 1.5 1.379

エンカウントテーブル依存の乗数

設定値 乗数
0 0.25
1 0.50
2 0.75
3 1.00
4 1.25
5 1.50
6 1.75
7 2.00

ランダム補正値

乱数値 補正値 草原との比率
0 -1193 -3.107
1 -982 -2.557
2 -844 -2.198
3 -737 -1.919
4 -647 -1.685
5 -568 -1.479
6 -497 -1.294
7 -432 -1.125
8 -371 -0.966
9 -313 -0.815
10 -258 -0.672
11 -204 -0.531
12 -152 -0.396
13 -101 -0.263
14 -51 -0.133
15 -1 -0.003
16 50 0.130
17 100 0.260
18 151 0.393
19 203 0.529
20 257 0.669
21 312 0.812
22 370 0.964
23 431 1.122
24 496 1.292
25 567 1.477
26 646 1.682
27 736 1.917
28 843 2.195
29 981 2.555
30 1192 3.104

ソース

  • 「しのびあし」、「においぶくろ」の効果: $2015654
+ ...
02015654 4889     ldr     r0,=Lxx_209F42Ch
02015656 F001F847 bl      Lxx_20166E8h
0201565A 2800     cmp     r0,0h
0201565C D00D     beq     Lxx_201567Ah     ; 「しのびあし」状態ではない
 
0201565E 4887     ldr     r0,=Lxx_209F42Ch
02015660 79C0     ldrb    r0,[r0,7h]       ; 「しのびあし」状態での累計移動マス数(非負)
02015662 0FC2     lsrs    r2,r0,1Fh
02015664 0781     lsls    r1,r0,1Eh
02015666 1A89     subs    r1,r1,r2
02015668 201E     movs    r0,1Eh
0201566A 41C1     rors    r1,r0            ; r0 ← (累計移動マス数) % 4
0201566C 1850     adds    r0,r2,r1
0201566E D01E     beq     Lxx_20156AEh     ; (r0 が 0 の場合、何もしない)
02015670 F00EF8A0 bl      Lxx_20237B4h
02015674 F00EF946 bl      Lxx_2023904h
02015678 E019     b       Lxx_20156AEh
 
0201567A 4881     ldr     r0,=Lxx_209F444h
0201567C F001F834 bl      Lxx_20166E8h
02015680 2800     cmp     r0,0h
02015682 D010     beq     Lxx_20156A6h     ; 「においぶくろ」を使っていない場合
02015684 F00EF896 bl      Lxx_20237B4h
02015688 F00EF93C bl      Lxx_2023904h
0201568C F00EF892 bl      Lxx_20237B4h
02015690 F00EF938 bl      Lxx_2023904h
02015694 F00EF88E bl      Lxx_20237B4h
02015698 F00EF934 bl      Lxx_2023904h
0201569C F00EF88A bl      Lxx_20237B4h
020156A0 F00EF930 bl      Lxx_2023904h
020156A4 E003     b       Lxx_20156AEh
 
020156A6 F00EF885 bl      Lxx_20237B4h
020156AA F00EF92B bl      Lxx_2023904h
...
 
  • カウンタの初期値の決定: $2036858
  • 地形依存の減算値・乗数の決定: $2036898
  • カウンタの値の減算処理: $20368FC
最終更新:2024年05月31日 00:39