DQ3戦闘部分解説21

前回でダメージ系の解説は終わりです。ラリホーやマホトーンなど確率系については耐性改造のあたりで触れているので省略します。というわけでこれ以外のイレギュラーな戦闘行動(イレギュラーなものは遊び人の遊びに多いですが)についていくつか説明していきます。

  • SR: $029BAE ドラゴラム
029BAELDX $23E8X=$7E23E8
029BB1LDA #$0001A=#$0001
029BB4JSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0040ドラゴラムをON
029BBCLDA #$0000A=#$0000
029BBFJSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0001コマンド入力化をOFF?
029BC7LDA #$007EA=#$007EドラゴンのモンスターID
029BCAJSL $02CA98SR: $02CA98 引数:1#$204B
029BD0TAYY=A
029BD1JSL $02CC92SR: $02CC92 引数:1#$0006 引数:2#$0FFCモンスター情報取得(攻撃力)
029BD9JSL $02CA98SR: $02CA98 引数:1#$203F攻撃力セット
029BDFJSL $02CC92SR: $02CC92 引数:1#$0007 引数:2#$3FF0モンスター情報取得(守備力)
029BE7JSR $99F5SR: $0299F5守備力変更
029BEAJSL $02CC92SR: $02CC92 引数:1#$000A 引数:2#$00FFモンスター情報取得(素早さ)
029BF2JSL $02CA98SR: $02CA98 引数:1#$2043素早さセット
029BF8LDA #$0000A=#$0000
029BFBJSL $02CB70SR: $02CB70 引数:1#$2048 引数:2#$00FF行動パターン変更
029C03JSL $01A867SR: $01A867 引数:1#$0070戦闘メッセージ表示
029C09SECc=on
029C0ARTLreturn

  • SR: $0299F5 守備力変更
0299F5PHXPush X
0299F6PHYPush Y
0299F7LDX $2428X=$7E2428
0299FAPHAPush A
0299FBLDA #$0000A=#$0000
0299FEJSL $02CB70SR: $02CB70 引数:1#$2052 引数:2#$0008守備力MAX状態を解除?
029A06PLAPull A
029A07CMP #$03FFA>=#$03FF?変更後の守備力が1023以上か
029A0ABCC #$0Eif(c==off) goto $029A1A
029A0CLDA #$0001A=#$0001
029A0FJSL $02CB70SR: $02CB70 引数:1#$2052 引数:2#$0008守備力MAX状態をセット?
029A17LDA #$03FFA=#$03FF1023以上の場合は1023にクリップ
029A1AJSL $02CA98SR: $02CA98 引数:1#$2041守備力変更
029A20PLYPull Y
029A21PLXPull X
029A22RTSreturn

これを見ると、ドラゴラムとはドラゴンにモシャスすることとほぼ同値であることがわかります。ドラゴラムしたキャラクターは炎しか吐かないわけで攻撃力は意味がありませんが、守備力、素早さがドラゴンと同じになってしまうことがわかります。

  • SR: $0293E0 メガンテ
0293E0LDA #$0001A=#$0001
0293E3PEA $23AEPush $23AE
0293E6PEA $0004Push $0004
0293E9PEA $7E00Push $7E00
0293ECJSL $0902E9SR: $0902E9メガンテ実行フラグ
0293F0LDA $23E8A=$7E23E8
0293F3STA $2428$7E2428=A
0293F6JSR $A3EBSR: $02A3EB耐性を考慮して成否判定
0293F9BCS #$08if(c==on) goto $029403
0293FBJSL $01A867SR: $01A867 引数:1#$000F戦闘メッセージ表示:「きかなかった」
029401CLCc=off
029402RTLreturn
029403JSR $9372SR: $029372命の石所持を調べて持っていれば即死回避する
029406BCS #$2Bif(c==on) goto $029433
029408PEA $23ADPush $23AD
02940BPEA $0040Push $0040
02940EPEA $7E00Push $7E00
029411JSL $09029ESR: $09029Eメガンテ結果選択(即死かダメージか)
029415BNE #$1Eif(z==off) goto $029435
029417LDA #$FFFFA=#$FFFF
02941ASTA $00$000000=A
02941CJSL $02BE8ASR: $02BE8A 引数:1#$06HP減算処理
029421JSL $02B977SR: $02B977パーティウィンドウ再描画?
029425JSL $02CFCESR: $02CFCE消滅処理?
029429JSL $01A867SR: $01A867 引数:1#$0019戦闘メッセージ表示:「くだけちった」
02942FJSL $02B054SR: $02B054行動対象者を戦闘から離脱させる処理メイン
029433SECc=on
029434RTLreturn
029435LDA $247CA=$7E247C
029438CMP #$0158A>=#$0158?ここからダメージ値の計算?
02943BBCS #$12if(c==on) goto $02944F
02943DSECc=on
02943ESBC #$0004A-=#$0004
029441BCS #$03if(c==on) goto $029446
029443LDA #$0000A=#$0000
029446AND #$FFFCA&=#$FFFC
029449CLCc=off
02944AADC #$0005A+=#$0005
02944DBRA #$08goto $029457
02944FSECc=on
029450SBC #$0004A-=#$0004
029453AND #$FFFCA&=#$FFFC
029456INCA++
029457STA $00$000000=A
029459JSR $8E70SR: $028E70ダメージ確定メイン
02945CRTLreturn

術者が死亡する処理は「戦闘後追加処理を行う戦闘行動群」で実行されるので、ここではメガンテの対象に対する処理のみです。(このブログの最初期のあたりに記事を書いていますね。覚えてますか?)

  • SR: $029372 命の石所持を調べて持っていれば即死回避する
029372LDA #$00A8A=#$00A8命の石のアイテムID
029375STA $242C$7E242C=A
029378JSL $02B87ASR: $02B87Aアイテム装備チェック(保持のみならc=on)
02937CBCC #$10if(c==off) goto $02938E
02937EJSL $02B904SR: $02B904戦闘中アイテム消費
029382BCC #$0Aif(c==off) goto $02938E
029384JSL $01A867SR: $01A867 引数:1#$0153戦闘メッセージ:「いのちのいしは くだけちった」
02938AJSR $938FSR: $02938F
02938DSECc=on
02938ERTSreturn

  • SR: $02938F 使用するアイテムが命の石の場合の処理?
02938FLDX $2428X=$7E2428
029392JSL $02CAD9SR: $02CAD9 引数:1#$2052 引数:2#$0020コマンド実行済み?
02939ABEQ #$21if(z==on) goto $0293BD
02939CJSL $02CAD9SR: $02CAD9 引数:1#$203D 引数:2#$00FF使用するアイテムID取得
0293A4CMP #$00A8A==#$00A8?使用するアイテムが命の石か
0293A7BNE #$14if(z==off) goto $0293BD
0293A9STA $242C$7E242C=A
0293ACJSL $02B87ASR: $02B87Aアイテム装備チェック(保持のみならc=on)
0293B0BCC #$0Cif(c==off) goto $0293BE
0293B2LDA $242EA=$7E242E
0293B5JSL $02CB70SR: $02CB70 引数:1#$203E 引数:2#$00FF
0293BDRTSreturn
0293BELDA #$0000A=#$0000コマンドを実行済みにする?
0293C1JSL $02CB70SR: $02CB70 引数:1#$2052 引数:2#$0020
0293C9LDA #$00ABA=#$00AB戦闘行動をいのちのいしにする
0293CCJSL $02CB70SR: $02CB70 引数:1#$2034 引数:2#$01FF
0293D4LDA #$0040A=#$0040ターゲット情報セット
0293D7JSL $02CB70SR: $02CB70 引数:1#$2035 引数:2#$00FE
0293DFRTSreturn

いまいち意味がわかりませんが、行動対象キャラクターの行動が命の石使用である場合、すでに命の石が砕けてしまっているので、持っていない場合にも「命の石を使った!」というメッセージが表示されるという矛盾をなくすための処理であるようです。

  • SR: $029E44 凍てつく波動
029E44JSL $02BAE8SR: $02BAE8倒したモンスターがあやしいかげの場合の処理
029E48LDX $23E8X=$7E23E8行動対象者のIDセット
029E4BSTX $2428$7E2428=X
029E4EJSL $02CAD9SR: $02CAD9 引数:1#$2051 引数:2#$0080行動対象がモシャス中か
029E56BNE #$0Aif(z==off) goto $029E62
029E58JSL $02CAD9SR: $02CAD9 引数:1#$2051 引数:2#$0040行動対象がドラゴラム中か
029E60BEQ #$04if(z==on) goto $029E66
029E62JSL $02B52DSR: $02B52D戦闘中キャラクター行動情報初期化
029E66LDY $23E4Y=$7E23E4行動主体者のIDセット
029E69JSL $02CAE0SR: $02CAE0 引数:1#$203C 引数:2#$00FF行動主体のグループID取得
029E71CMP #$0004A>=#$0004?PCor格闘場で賭けたモンスターか
029E74BCS #$12if(c==on) goto $029E88
029E76JSL $02CAD9SR: $02CAD9 引数:1#$203C 引数:2#$00FF行動対象のグループID取得
029E7ECMP #$0004A>=#$0004?PCor格闘場で賭けたモンスターか
029E81BCS #$12if(c==on) goto $029E95
029E83JSR $9E9ESR: $029E9E凍てつく波動による不利ステータスリセット処理
029E86BRA #$10goto $029E98
029E88JSL $02CAD9SR: $02CAD9 引数:1#$203C 引数:2#$00FF行動対象のグループID取得
029E90CMP #$0004A>=#$0004?PCor格闘場で賭けたモンスターか
029E93BCS #$EEif(c==on) goto $029E83
029E95JSR $9EE8SR: $029EE8凍てつく波動による有利ステータスリセット処理
029E98JSL $02B977SR: $02B977パーティウィンドウ再描画?
029E9CSECc=on
029E9DRTLreturn

ちょっとややこしいですが、A)PCor格闘場で賭けたモンスター、B)それ以外とすると、

行動主体行動対象リセットするステータス
AA不利ステータス
AB有利ステータス
BA有利ステータス
BB不利ステータス

ということです。

  • SR: $029E9E 凍てつく波動による不利ステータスリセット処理
029E9ELDA #$0000A=#$0000
029EA1JSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0002マホトーン状態リセット
029EA9JSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0004マヌーサ状態リセット
029EB1JSL $02C240SR: $02C240 引数:1#$04(素の)攻撃力取得
029EB6JSL $02CA98SR: $02CA98 引数:1#$203F攻撃力変更
029EBCJSL $02C240SR: $02C240 引数:1#$06(素の)守備力取得
029EC1JSR $99F5SR: $0299F5守備力変更
029EC4JSL $02C240SR: $02C240 引数:1#$08(素の)すばやさ取得
029EC9JSL $02CA98SR: $02CA98 引数:1#$2043すばやさ変更
029ECFJSL $02BE8ASR: $02BE8A 引数:1#$00現HP取得
029ED4STA $00$000000=A
029ED6JSL $02BE8ASR: $02BE8A 引数:1#$02現HP変更
029EDBJSL $02BE8ASR: $02BE8A 引数:1#$08現MP取得
029EE0STA $00$000000=A
029EE2JSL $02BE8ASR: $02BE8A 引数:1#$0A現MP変更
029EE7RTSreturn

眠り状態はリセットされないようです。オリジナルでは使用するのはゾーマ、神龍だけなので、使用時に他の仲間の不利ステータスをリセットする必要はない、ということのようです。

  • SR: $029EE8 凍てつく波動による有利ステータスリセット処理
029EE8LDA #$0000A=#$0000
029EEBJSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0010マホカンタ状態リセット
029EF3JSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0020フバーハ状態リセット
029EFBJSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0008バイキルト状態リセット
029F03JSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0040ドラゴラム状態リセット
029F0BJSL $02CB70SR: $02CB70 引数:1#$2051 引数:2#$0080モシャス状態リセット
029F13JSL $02C240SR: $02C240 引数:1#$04(素の)攻撃力取得
029F18JSL $02CA98SR: $02CA98 引数:1#$203F攻撃力変更
029F1EJSL $02C240SR: $02C240 引数:1#$06(素の)守備力取得
029F23JSR $99F5SR: $0299F5守備力変更
029F26JSL $02C240SR: $02C240 引数:1#$08(素の)すばやさ取得
029F2BJSL $02CA98SR: $02CA98 引数:1#$2043すばやさ変更
029F31JSL $02BE8ASR: $02BE8A 引数:1#$00現HP取得
029F36STA $00DP($00)=A
029F38JSL $02BE8ASR: $02BE8A 引数:1#$02現HP変更
029F3DJSL $02BE8ASR: $02BE8A 引数:1#$08現MP取得
029F42STA $00DP($00)=A
029F44JSL $02BE8ASR: $02BE8A 引数:1#$0A現MP変更
029F49RTSreturn

コメント

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