DQ3戦闘部分解説15

前回に引き続き、戦闘行動実行の部分を見ていきます。今回は行動主体が戦闘行動を実行出来るかどうかの判定部分です。ここで条件に該当した場合は戦闘行動が実行されません。

  • SR: $027C41 戦闘行動を実行可能か判定
027C41JSR $7C68SR: $027C68MP切れ・マホトーン・呪いで行動できないか決定する
027C44BCS #$12if(c==on) goto $027C58
027C46LDA #$0001A=#$0001
027C49PEA #$23AEPush #$23AE
027C4CPEA #$0001Push #$0001
027C4FPEA #$7E00Push #$7E00
027C52JSL $C902E9SR: $0902E9RAM上情報変更
027C56CLCc=off
027C57RTSreturn
027C58LDX $23E4X=$23E4
027C5BLDA #$0001A=#$0001
027C5EJSL $C2CB70SR: $02CB70 引数:1#$2052 引数:2#$0004戦闘中キャラクター情報変更
027C66SECc=on
027C67RTSreturn

  • SR: $027C68 MP切れ・マホトーン・呪いで行動できないか決定する
027C68LDX $23EEX=$23EE
027C6BSTX $242A$242A=X
027C6ELDY $23E4Y=$23E4
027C71STY $2428$2428=Y
027C74LDA #$0052A=#$0052
027C77PHAPush A
027C78JSL $C2B466SR: $02B466現MPが選択呪文の消費MPより上か?
027C7CBCC #$45if(c==off) goto $027CC3
027C7ESTA $23FC$23FC=A
027C81JSR $7D30SR: $027D30理力の杖装備時の直接攻撃消費MP計算
027C84LDA $23FCA=$23FC
027C87STA $00DP($00)=A
027C89JSL $C2BE8ASR: $02BE8A 引数:1#$0EMP減算処理
027C8EJSL $C2B977SR: $02B977
027C92JSL $C2CC47SR: $02CC47 引数:1#$0078 引数:2#$0040戦闘行動がマホトーンに依存するか
027C9ABEQ #$1Aif(z==on) goto $027CB6
027C9CLDA #$0054A=#$0054戦闘メッセージID:しかし じゅもんは ふうじこめられている!
027C9FSTA $01,SStack($01)=A
027CA1JSL $C2CB32SR: $02CB32 引数:1#$2051 引数:2#$0002行動主体がマホトーン中か調べる?
027CA9BNE #$23if(z==off) goto $027CCE
027CABLDA #$0053A=#$0053戦闘メッセージID:しかし じゅもんは かきけされた!
027CAESTA $01,SStack($01)=A
027CB0JSL $C2B3F7SR: $02B3F7戦闘中呪文無効環境チェック(無効c=on)
027CB4BCS #$18if(c==on) goto $027CCE
027CB6LDA #$0050A=#$0050戦闘メッセージID:のろいで からだが うごかない!
027CB9STA $01,SStack($01)=A
027CBBJSR $7CD5SR: $027CD5呪いで行動不能になるか決定する
027CBEBCS #$0Eif(c==on) goto $027CCE
027CC0PLAPull A
027CC1CLCc=off
027CC2RTSreturn
027CC3LDA #$0001A=#$0001
027CC6JSL $C2CB79SR: $02CB79 引数:1#$2052 引数:2#$0040
027CCEPLAPull A
027CCFJSL $C1A87ASR: $01A87A上記#51,53,54の戦闘メッセージ表示
027CD3SECc=on
027CD4RTSreturn

  • SR: $027CD5 呪いで行動不能になるか決定する
027CD5LDA $23F2A=$23F2
027CD8CLCc=off
027CD9BNE #$16if(z==off) goto $027CF1
027CDBLDY $23EEY=$23EE
027CDEJSL $C2CC4ESR: $02CC4E 引数:1#$007A 引数:2#$0008まじんのオノで空振りする行動か?
027CE6CLCc=off
027CE7BEQ #$08if(z==on) goto $027CF1
027CE9JSR $7CF2SR: $027CF2はかいのつるぎ装備時に行動不能になるかを決定する
027CECBCS #$03if(c==on) goto $027CF1
027CEEJSR $7D11SR: $027D11じごくのよろい装備時に行動不能になるかを決定する
027CF1RTSreturn

  • SR: $027CF2 はかいのつるぎ装備時に行動不能になるかを決定する(行動不能c=on)
027CF2LDA $23E4A=$23E4
027CF5STA $2428$2428=A
027CF8LDA #$0014A=#$0014はかいのつるぎのアイテムID
027CFBSTA $242C$242C=A
027CFEJSL $C2B87ASR: $02B87Aアイテム装備チェック
027D02CLCc=off
027D03BVC #$0Bif(v==off) goto $027D10
027D05JSL $C012D1SR: $0012D1乱数発生 $00-FF
027D09AND #$0003A&=#$00031/4の確率
027D0CCLCc=off
027D0DBNE #$01if(z==off) goto $027D10
027D0FSECc=on
027D10RTSreturn

  • SR: $027D11 じごくのよろい装備時に行動不能になるかを決定する(行動不能c=on)
027D11LDA $23E4A=$23E4
027D14STA $2428$2428=A
027D17LDA #$004AA=#$004AじごくのよろいのアイテムID
027D1ASTA $242C$242C=A
027D1DJSL $C2B87ASR: $02B87Aアイテム装備チェック
027D21CLCc=off
027D22BVC #$0Bif(v==off) goto $027D2F
027D24LDA #$0002A=#$00021/3の確率
027D27JSL $C0133ESR: $00133E乱数発生 00-A A(1B)
027D2BCLCc=off
027D2CBNE #$01if(z==off) goto $027D2F
027D2ESECc=on
027D2FRTSreturn

$027CF2, $027D11は確率計算の部分が少し異なりますが、基本的にやってることは同じはず。プログラマーの好みの差だったのでは、と思います。基本的にはこれといって特別なことはしていません。

コメント

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