DQ4 (DS) > 確率


会心の一撃の確率

条件 確率
「まじんのかなづち」を装備している 約 1/3
アリーナである (Lv+15)/512
(その他) 1/32

ソース

+ ...
020190C8 2051     movs    r0,51h
020190CA 0080     lsls    r0,r0,2h
020190CC 1828     adds    r0,r5,r0
020190CE 2113     movs    r1,13h
020190D0 F7F8FAFE bl      Lxx_20116D0h ; 0x13: まじんのかなづち
020190D4 2800     cmp     r0,0h
020190D6 D00C     beq     Lxx_20190F2h
020190D8 2003     movs    r0,3h
020190DA F065ECE6 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜2
020190DE 2800     cmp     r0,0h
020190E0 D103     bne     Lxx_20190EAh
020190E2 4824     ldr     r0,=Lxx_20CDFF0h
020190E4 2101     movs    r1,1h
020190E6 6281     str     r1,[r0,28h] ; 会心
020190E8 E01E     b       Lxx_2019128h
 
020190EA 4822     ldr     r0,=Lxx_20CDFF0h
020190EC 2101     movs    r1,1h
020190EE 61C1     str     r1,[r0,1Ch]
020190F0 E01A     b       Lxx_2019128h
 
; 通常武器
 
020190F2 1C28     adds    r0,r5,0
020190F4 304C     adds    r0,4Ch
020190F6 8800     ldrh    r0,[r0]
020190F8 2804     cmp     r0,4h
020190FA D10D     bne     Lxx_2019118h     ; 0x04: アリーナ ではない場合
 
020190FC 1C28     adds    r0,r5,0
020190FE 305A     adds    r0,5Ah
02019100 7804     ldrb    r4,[r0]          ; r4 ← Lv
02019102 2002     movs    r0,2h
02019104 0200     lsls    r0,r0,8h         
02019106 F065ECD0 blx     Lxx_207EAA8h     ; r0 ← 乱数 0〜511
0201910A 340F     adds    r4,0Fh           ; r4 ← Lv + 15
0201910C 42A0     cmp     r0,r4
0201910E DA0B     bge     Lxx_2019128h     ; (会心の一撃ではない)
 
; 乱数 0〜511 < (Lv + 15) の場合
 
02019110 4818     ldr     r0,=Lxx_20CDFF0h
02019112 2101     movs    r1,1h
02019114 6281     str     r1,[r0,28h]
02019116 E007     b       Lxx_2019128h
 
; アリーナ以外
 
02019118 2020     movs    r0,20h
0201911A F065ECC6 blx     Lxx_207EAA8h      ; r0 ← 乱数 0〜31
0201911E 2800     cmp     r0,0h
02019120 D102     bne     Lxx_2019128h      ; (会心の一撃ではない)
 
02019122 4814     ldr     r0,=Lxx_20CDFF0h
02019124 2101     movs    r1,1h
02019126 6281     str     r1,[r0,28h]
...
 

行動順を決定する値

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

ソース

+ ...
...
02122E56 586A     ldr     r2,[r5,r1]   ; すばやさ
02122E58 200A     movs    r0,0Ah
02122E5A 4350     muls    r0,r2
02122E5C 5068     str     r0,[r5,r1]   ; すばやさ × 10
02122E5E 5868     ldr     r0,[r5,r1]
02122E60 2132     movs    r1,32h
02122E62 2200     movs    r2,0h
02122E64 F6FAFC36 bl      Lxx_201D6D4h ; すばやさ × 10 × (乱数 50〜100) / 100
02122E68 4906     ldr     r1,=Lxx_51Ch
02122E6A 5068     str     r0,[r5,r1]
...
 

レベルアップ時の上昇幅

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

ソース

+ ...
02010CF4 B510     push    r4,r14
02010CF6 2032     movs    r0,32h
02010CF8 1C0C     adds    r4,r1,0
02010CFA F06DEED6 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜49
02010CFE 304B     adds    r0,4Bh
02010D00 0400     lsls    r0,r0,10h
02010D02 0C00     lsrs    r0,r0,10h    ; r0 ← 乱数 75〜124
02010D04 4360     muls    r0,r4
02010D06 3032     adds    r0,32h       ; r0 ← (基本上昇値) × (乱数 75〜124) + 50
02010D08 0400     lsls    r0,r0,10h
02010D0A 0C00     lsrs    r0,r0,10h
02010D0C 2164     movs    r1,64h
02010D0E F7F5E98E blx     Lxx_200602Ch
02010D12 0400     lsls    r0,r0,10h
02010D14 0C00     lsrs    r0,r0,10h
02010D16 42A0     cmp     r0,r4
02010D18 D200     bcs     Lxx_2010D1Ch
02010D1A 1C20     adds    r0,r4,0
 
02010D1C BD10     pop     r4,r15
 

エンカウント周り

戦闘が発生するまでの処理は、DQ5 エンカウント処理 と同じです。

DQ4 と DQ5 以降とでは(少なくとも)以下の項目が異なります:
  • 地形依存の減算値・乗数
  • エンカウントテーブル依存の乗数
  • 「しのびあし」の効果:
    • DQ4 では確率 1/4 でカウンタの減算処理をスキップするようです。「においぶくろ」の効果とも重複します。(参考: DQ5 では「しのびあし」中は「においぶくろ」の効果は無視されます)
  • 「においぶくろ」の効果:
    • DQ4 ではカウンタから減算する値を 5 倍(エンカウント率 5 倍)にします。

地形依存の減算値・乗数

タイプ 地形 減算値 乗数 草原との比率
0 353 1.5 2.068
1 海上 102 1.0 0.398
2 砂漠 384 1.0 1.500
3 640 1.0 2.500
4 毒の沼地 461 1.0 1.801
5 茂み 256 1.0 1.000
6 草原 256 1.0 1.000
7 307 1.0 1.199

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

設定値 乗数
0 0.375
1 0.625
2 0.750
3 1.000
4 1.875
5 2.250
6 2.625
7 3.000

ソース

+ ...
0200A7B8 8EA0     ldrh    r0,[r4,34h]
0200A7BA 2800     cmp     r0,0h
0200A7BC D00E     beq     Lxx_200A7DCh ; 「しのびあし」中ではない場合
 
0200A7BE 2000     movs    r0,0h
0200A7C0 6260     str     r0,[r4,24h]
 
0200A7C2 8EA0     ldrh    r0,[r4,34h]
0200A7C4 1E40     subs    r0,r0,1
0200A7C6 86A0     strh    r0,[r4,34h]
 
0200A7C8 8EA0     ldrh    r0,[r4,34h]
0200A7CA 2800     cmp     r0,0h
0200A7CC D101     bne     Lxx_200A7D2h
 
0200A7CE 2001     movs    r0,1h
0200A7D0 6260     str     r0,[r4,24h]
 
0200A7D2 2004     movs    r0,4h
0200A7D4 F074E968 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜3
0200A7D8 2800     cmp     r0,0h
0200A7DA D01B     beq     Lxx_200A814h ; 確率 1/4 でカウンタの減算処理をスキップ
 
 
 
0200A7DC 8DA0     ldrh    r0,[r4,2Ch]
0200A7DE 2800     cmp     r0,0h
0200A7E0 D015     beq     Lxx_200A80Eh ; 「においぶくろ」の効果がない場合
 
0200A7E2 2000     movs    r0,0h
0200A7E4 6320     str     r0,[r4,30h]
0200A7E6 8DA0     ldrh    r0,[r4,2Ch]
0200A7E8 1E40     subs    r0,r0,1
0200A7EA 85A0     strh    r0,[r4,2Ch]
0200A7EC 8DA0     ldrh    r0,[r4,2Ch]
0200A7EE 2800     cmp     r0,0h
0200A7F0 D101     bne     Lxx_200A7F6h
0200A7F2 2001     movs    r0,1h
0200A7F4 6320     str     r0,[r4,30h]
 
; 「においぶくろ」の効果中(合計 5 回処理)
 
0200A7F6 1C20     adds    r0,r4,0
0200A7F8 F7FFFF40 bl      Lxx_200A67Ch 
0200A7FC 1C20     adds    r0,r4,0
0200A7FE F7FFFF3D bl      Lxx_200A67Ch
0200A802 1C20     adds    r0,r4,0
0200A804 F7FFFF3A bl      Lxx_200A67Ch
0200A808 1C20     adds    r0,r4,0
0200A80A F7FFFF37 bl      Lxx_200A67Ch
 
; 通常の場合
 
0200A80E 1C20     adds    r0,r4,0
0200A810 F7FFFF34 bl      Lxx_200A67Ch
...
 

先制攻撃・不意打ち

非しのびあし状態

確率設定 先制攻撃の確率 不意打ちの確率
0 3.12 % (1/32) 3.03 % (31/1024)
1 3.12 % (1/32) 0.00 % (0)
2 25.00 % (1/4) 2.34 % (3/128)
3 25.00 % (1/4) 18.75 % (3/16)

しのびあし状態

確率設定 先制攻撃の確率 不意打ちの確率
0 2.34 % (3/128) 27.27 % (1117/4096)
1 2.34 % (3/128) 25.00 % (1/4)
2 18.75 % (3/16) 26.76 % (137/512)
3 18.75 % (3/16) 39.06 % (25/64)

ソース

+ ...
;---------------------------------------
; 先制攻撃・不意打ちの判定(しのびあし状態を考慮)
;---------------------------------------
0200A824 B510     push    r4,r14
0200A826 1C04     adds    r4,r0,0
0200A828 8EA0     ldrh    r0,[r4,34h] ; 1: しのびあし状態
0200A82A 2800     cmp     r0,0h
0200A82C D006     beq     Lxx_200A83Ch
 
0200A82E 2004     movs    r0,4h
0200A830 F074E93A blx     Lxx_207EAA8h ; r0 ← 乱数 0〜3
0200A834 2800     cmp     r0,0h
0200A836 D101     bne     Lxx_200A83Ch
0200A838 2002     movs    r0,2h        ; 2: 不意打ち
0200A83A BD10     pop     r4,r15
 
0200A83C 2043     movs    r0,43h
0200A83E 0080     lsls    r0,r0,2h
0200A840 1820     adds    r0,r4,r0
0200A842 F000FF37 bl      Lxx_200B6B4h ; r0 ← 非しのびあし状態での判定結果
0200A846 BD10     pop     r4,r15
 
0200B6B4 6900     ldr     r0,[r0,10h]
0200B6B6 4770     bx      r14
 
;-------------------------------------
; 先制攻撃・不意打ち判定
;-------------------------------------
0200B5E8 7800     ldrb    r0,[r0]
0200B5EA 2806     cmp     r0,6h
0200B5EC D85A     bhi     Lxx_200B6A4h
 
0200B5EE 1800     adds    r0,r0,r0
0200B5F0 4478     add     r0,r15
0200B5F2 88C0     ldrh    r0,[r0,6h]
0200B5F4 0400     lsls    r0,r0,10h
0200B5F6 1400     asrs    r0,r0,10h
0200B5F8 4487     add     r15,r0
 
0200B5FA 000C    
0200B5FC 0032    
0200B5FE 0058    
0200B600 007E    
0200B602 00A8     
0200B604 00A8     
0200B606 00A4   
 
; case 0
 
0200B608 2020     movs    r0,20h
0200B60A F073EA4E blx     Lxx_207EAA8h ; r0 ← 乱数 0〜31
0200B60E 2800     cmp     r0,0h
0200B610 D102     bne     Lxx_200B618h
0200B612 2001     movs    r0,1h
0200B614 6120     str     r0,[r4,10h]
0200B616 BD10     pop     r4,r15
 
0200B618 2020     movs    r0,20h
0200B61A F073EA46 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜31
0200B61E 2800     cmp     r0,0h
0200B620 D102     bne     Lxx_200B628h
0200B622 2002     movs    r0,2h
0200B624 6120     str     r0,[r4,10h]
0200B626 BD10     pop     r4,r15
 
0200B628 2000     movs    r0,0h
0200B62A 6120     str     r0,[r4,10h]
0200B62C BD10     pop     r4,r15
 
; case 1
 
0200B62E 2020     movs    r0,20h
0200B630 F073EA3A blx     Lxx_207EAA8h ; r0 ← 乱数 0〜31
0200B634 2800     cmp     r0,0h
0200B636 D102     bne     Lxx_200B63Eh
0200B638 2001     movs    r0,1h
0200B63A 6120     str     r0,[r4,10h]
0200B63C BD10     pop     r4,r15
 
0200B63E 2004     movs    r0,4h
0200B640 F073EA32 blx     Lxx_207EAA8h ;  r0 ← 乱数 0〜3
0200B644 2807     cmp     r0,7h
0200B646 D102     bne     Lxx_200B64Eh
0200B648 2002     movs    r0,2h
0200B64A 6120     str     r0,[r4,10h]
0200B64C BD10     pop     r4,r15
 
0200B64E 2000     movs    r0,0h
0200B650 6120     str     r0,[r4,10h]
0200B652 BD10     pop     r4,r15
 
; case 2
 
0200B654 2004     movs    r0,4h
0200B656 F073EA28 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜3
0200B65A 2800     cmp     r0,0h
0200B65C D102     bne     Lxx_200B664h
0200B65E 2001     movs    r0,1h
0200B660 6120     str     r0,[r4,10h]
0200B662 BD10     pop     r4,r15
;
0200B664 2020     movs    r0,20h
0200B666 F073EA20 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜31
0200B66A 2800     cmp     r0,0h
0200B66C D102     bne     Lxx_200B674h
0200B66E 2002     movs    r0,2h
0200B670 6120     str     r0,[r4,10h]
0200B672 BD10     pop     r4,r15
 
0200B674 2000     movs    r0,0h
0200B676 6120     str     r0,[r4,10h]
0200B678 BD10     pop     r4,r15
 
; case 3:
 
0200B67A 2004     movs    r0,4h
0200B67C F073EA14 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜3
0200B680 2800     cmp     r0,0h
0200B682 D102     bne     Lxx_200B68Ah
0200B684 2001     movs    r0,1h
0200B686 6120     str     r0,[r4,10h]
0200B688 BD10     pop     r4,r15
 
0200B68A 2004     movs    r0,4h
0200B68C F073EA0C blx     Lxx_207EAA8h ; r0 ← 乱数 0〜3
0200B690 2800     cmp     r0,0h
0200B692 D102     bne     Lxx_200B69Ah
0200B694 2002     movs    r0,2h
0200B696 6120     str     r0,[r4,10h]
0200B698 BD10     pop     r4,r15
 
0200B69A 2000     movs    r0,0h
0200B69C 6120     str     r0,[r4,10h]
0200B69E BD10     pop     r4,r15
 
; case 6:
 
0200B6A0 2000     movs    r0,0h
0200B6A2 6120     str     r0,[r4,10h]
 
; case 4: case 5
 
0200B6A4 BD10     pop     r4,r15
 

第三章 レイクナバの武器屋

客は確率 1/8 で武器の売却を希望します。提示される武器の確率は以下の通りです:

ID アイテム名称 確率
2 こんぼう 10/32
3 どうのつるぎ 9/32
10 せいなるナイフ 5/32
12 クロスボウ 4/32
5 くさりがま 2/32
36 はじゃのつるぎ 2/32

ソース

+ ...
;
; 客の種類を決める
;
021843BA 2008     movs    r0,8h
021843BC F6FAEB74 blx     Lxx_207EAA8h ; r0 ← 乱数 0〜7
021843C0 2800     cmp     r0,0h
021843C2 D101     bne     Lxx_21843C8h
 
021843C4 2000     movs    r0,0h
021843C6 E000     b       Lxx_21843CAh
 
021843C8 2001     movs    r0,1h
 
;
; 提示されるアイテムを決める
;
0218434C B510     push    r4,r14
0218434E 1C04     adds    r4,r0,0
02184350 2020     movs    r0,20h
02184352 F6FAEBAA blx     Lxx_207EAA8h ; r0 ← 乱数 0〜31
 
02184356 281D     cmp     r0,1Dh
02184358 DD04     ble     Lxx_2184364h
0218435A 2024     movs    r0,24h
0218435C 6220     str     r0,[r4,20h]
0218435E 2005     movs    r0,5h
02184360 6260     str     r0,[r4,24h]
02184362 BD10     pop     r4,r15
 
02184364 281B     cmp     r0,1Bh
02184366 DD04     ble     Lxx_2184372h
02184368 2005     movs    r0,5h
0218436A 6220     str     r0,[r4,20h]
0218436C 2004     movs    r0,4h
0218436E 6260     str     r0,[r4,24h]
02184370 BD10     pop     r4,r15
 
02184372 2817     cmp     r0,17h
02184374 DD04     ble     Lxx_2184380h
02184376 200C     movs    r0,0Ch
02184378 6220     str     r0,[r4,20h]
0218437A 2003     movs    r0,3h
0218437C 6260     str     r0,[r4,24h]
0218437E BD10     pop     r4,r15
 
02184380 2812     cmp     r0,12h
02184382 DD04     ble     Lxx_218438Eh
02184384 200A     movs    r0,0Ah
02184386 6220     str     r0,[r4,20h]
02184388 2002     movs    r0,2h
0218438A 6260     str     r0,[r4,24h]
0218438C BD10     pop     r4,r15
 
0218438E 2809     cmp     r0,9h
02184390 DD04     ble     Lxx_218439Ch
02184392 2003     movs    r0,3h
02184394 6220     str     r0,[r4,20h]
02184396 2001     movs    r0,1h
02184398 6260     str     r0,[r4,24h]
0218439A BD10     pop     r4,r15
 
0218439C 2002     movs    r0,2h
0218439E 6220     str     r0,[r4,20h]
021843A0 2000     movs    r0,0h
021843A2 6260     str     r0,[r4,24h]
021843A4 BD10     pop     r4,r15
 

第三章でのアイテムドロップ処理

モンスターが通常のアイテムドロップ処理で何も落とさなかった場合、第三章では追加のアイテムドロップ処理があります。手順は次のようになっています:

1. 0〜15 の範囲の乱数値を取得し初期番号とする。
2. 以下で示した表について、初期番号から連番で 16 回アイテム入手処理を行う(途中で番号が 16 になった場合、0 に戻る)。途中で何らかのアイテムを入手できた場合、その時点で判定は打ち切る。

: 初期番号が 9 であった場合、9, 10, ..., 15, 0, ..., 8 の順でアイテム入手判定を行います。
番号 アイテム名 入手確率
0 こんぼう 1/64
1 どうのつるぎ 1/64
2 くさりがま 1/128
3 てつのやり 1/128
4 はがねのつるぎ 約(トルネコのLv)/80
5 たびびとのふく 1/64
6 かわのよろい 1/64
7 くさりかたびら 1/128
8 てつのよろい 約(トルネコのLv)/80
9 かわのたて 1/64
10 うろこのたて 1/64
11 かわのぼうし 1/64
12 きのぼうし 1/64
13 やくそう 1/64
14 どくけしそう 1/128
15 キメラのつばさ 1/64

ソース

+ ...
;--------------------------------------
; アイテムドロップ処理
;--------------------------------------
...
0212AE2C F7F5F802 bl      Lxx_211FE34h   ; 通常のアイテムドロップ処理
0212AE30 4909     ldr     r1,=Lxx_3C98h
0212AE32 5068     str     r0,[r5,r1]     ; アイテム ID
0212AE34 1C28     adds    r0,r5,0
0212AE36 1C21     adds    r1,r4,0
0212AE38 F7FFFD6A bl      Lxx_212A910h
0212AE3C 4907     ldr     r1,=Lxx_4D4h
0212AE3E 5841     ldr     r1,[r0,r1]
0212AE40 4807     ldr     r0,=Lxx_3C9Ch
0212AE42 5029     str     r1,[r5,r0] 
0212AE44 1F00     subs    r0,r0,4
0212AE46 5828     ldr     r0,[r5,r0]
0212AE48 2800     cmp     r0,0h
0212AE4A D104     bne     Lxx_212AE56h   ; アイテムを落としていた場合
;
0212AE4C 1C28     adds    r0,r5,0
0212AE4E F000F821 bl      Lxx_212AE94h   ; 第三章の追加アイテムドロップ処理
0212AE52 4901     ldr     r1,=Lxx_3C98h
0212AE54 5068     str     r0,[r5,r1]
;
0212AE56 BD38     pop     r3-r5,r15
 
;--------------------------------------
; 第三章でのアイテムドロップ処理
;--------------------------------------
0212AE94 B5F8     push    r3-r7,r14
0212AE96 4817     ldr     r0,=Lxx_20EB9A4h
0212AE98 6840     ldr     r0,[r0,4h]
0212AE9A 2803     cmp     r0,3h
0212AE9C D001     beq     Lxx_212AEA2h     ; 3章の場合
0212AE9E 2000     movs    r0,0h
0212AEA0 BDF8     pop     r3-r7,r15
 
 
0212AEA2 2010     movs    r0,10h
0212AEA4 F753EE00 blx     Lxx_207EAA8h
0212AEA8 2400     movs    r4,0h
0212AEAA 1C07     adds    r7,r0,0          ; r7 ← 乱数 0〜15
0212AEAC 9400     str     r4,[sp]
 
0212AEAE 1938     adds    r0,r7,r4
0212AEB0 0700     lsls    r0,r0,1Ch
0212AEB2 0EC1     lsrs    r1,r0,1Bh
0212AEB4 4810     ldr     r0,=Lxx_2138938h
0212AEB6 1846     adds    r6,r0,r1
0212AEB8 7870     ldrb    r0,[r6,1h]
0212AEBA 2850     cmp     r0,50h
0212AEBC D10D     bne     Lxx_212AEDAh     ; 分母が 80 でない場合
 
0212AEBE 2007     movs    r0,7h
0212AEC0 F6E3FE78 bl      Lxx_200EBB4h
0212AEC4 305A     adds    r0,5Ah
0212AEC6 7805     ldrb    r5,[r0]          ; r5 ← トルネコのLv
0212AEC8 7870     ldrb    r0,[r6,1h]       ;
0212AECA F753EDEE blx     Lxx_207EAA8h     ; r0 ← 乱数 0〜79
0212AECE 1E69     subs    r1,r5,1          ; r1 ← (トルネコのLv)-1
0212AED0 4288     cmp     r0,r1            
0212AED2 DC09     bgt     Lxx_212AEE8h
 
0212AED4 7830     ldrb    r0,[r6]          ; (乱数 0〜79) < (トルネコの Lv) の場合
0212AED6 9000     str     r0,[sp]
0212AED8 E009     b       Lxx_212AEEEh
 
0212AEDA F753EDE6 blx     Lxx_207EAA8h     ; r0 ← 0〜(分母-1)
0212AEDE 2800     cmp     r0,0h
0212AEE0 D102     bne     Lxx_212AEE8h 
0212AEE2 7830     ldrb    r0,[r6]
0212AEE4 9000     str     r0,[sp]
0212AEE6 E002     b       Lxx_212AEEEh
 
0212AEE8 1C64     adds    r4,r4,1
0212AEEA 2C10     cmp     r4,10h
0212AEEC DBDF     blt     Lxx_212AEAEh
 
0212AEEE 9800     ldr     r0,[sp]
0212AEF0 BDF8     pop     r3-r7,r15
 
02138938 02 40 03 40 05 80 06 80 
         07 50 2C 40 2D 40 2E 80 
         2F 50 49 40 4A 40 53 40 
         55 40 6F 40 70 80 72 40
 
最終更新:2024年05月31日 18:15