DQ3 ストーリー変更(ラスボス6)

ラスボス編は若干やっつけ気味ですが今回で終わりです。初回ゾーマの城離脱後親父とのバトルが追加される部分の説明をしていませんが、大したこともしていないので省略します。次回からは未解説の各種ギミックの解説をします。

最後はゾーマに追加する戦闘行動「暗黒の波動」の実装です。ネオエクスデス(FF5)のグランドクロスと似たようなものですが、リボンなどの完全防御のアイテムがない分こっちのほうが脅威です。完全防御のアイテムを用意することも考えましたが、「完全に防ぐ手立てが無い」ほうが緊張感が保てると思ったので見送りました。暗黒の波動の効果は敵全体に対し、凍てつく波動+ラリホー+マホトーン+マヌーサ+メダパニとなります。凍てつく波動は必中ですが、残りは通常のそれぞれの呪文のオリジナルと同じ成功率を使用します。

  • SR: $02DEF4 暗黒の波動(新SR)
02DEF4JSL $C29E44SR: $029E44凍てつく波動
02DEF8PHAPush A
02DEF9STZ $260C$260C=#$00
02DEFCLDA #$0030A=#$0030戦闘行動を差し替え
02DEFFSTA $23EE$23EE=A
02DF02JSR $DD72SR: $02DD72暗黒の波動(ラリホー)
02DF05BCS #$06if(c==on) goto $02DF0D
02DF07LDA #$0001A=#$0001
02DF0ATSB $260CA or $260C
02DF0DLDA #$0032A=#$0032戦闘行動を差し替え
02DF10STA $23EE$23EE=A
02DF13JSR $DFFASR: $02DFFA暗黒の波動(マホトーン)
02DF16BCS #$06if(c==on) goto $02DF1E
02DF18LDA #$0002A=#$0002
02DF1BTSB $260CA or $260C
02DF1ELDA #$0033A=#$0033戦闘行動を差し替え
02DF21STA $23EE$23EE=A
02DF24JSR $E03DSR: $02E03D暗黒の波動(マヌーサ)
02DF27BCS #$06if(c==on) goto $02DF2F
02DF29LDA #$0004A=#$0004
02DF2CTSB $260CA or $260C
02DF2FLDA #$003FA=#$003F戦闘行動を差し替え
02DF32STA $23EE$23EE=A
02DF35JSR $E07BSR: $02E07B暗黒の波動(メダパニ)
02DF38BCS #$06if(c==on) goto $02DF40
02DF3ALDA #$0008A=#$0008
02DF3DTSB $260CA or $260C
02DF40LDA #$0120A=#$0120
02DF43STA $23EE$23EE=A
02DF46LDA $260CA=$260C
02DF49CMP #$000FA==#$000F?
02DF4CBNE #$08if(z==off) goto $02DF56
02DF4EJSL $C1A867SR: $01A867 引数:1#$000F戦闘メッセージ表示
02DF54BRA #$04goto $02DF5A
02DF56JSL $C2B977SR: $02B977パーティウィンドウ再描画?
02DF5ASTZ $260C$260C=#$00
02DF5DPLAPull A
02DF5ERTLreturn

  • SR: $02DD72 暗黒の波動(ラリホー)(新SR)
02DD72LDY $23E8Y=$23E8
02DD75STY $2428$2428=Y
02DD78JSL $C2BE8ASR: $02BE8A 引数:1#$16
02DD7DBCS #$1Bif(c==on) goto $02DD9A
02DD7FJSL $C2CAE0SR: $02CAE0 引数:1#$2047 引数:2#$00FF戦闘中PC情報取得
02DD87BNE #$11if(z==off) goto $02DD9A
02DD89JSR $A3EBSR: $02A3EB耐性を考慮して成否判定+PC側耐性計算?
02DD8CBCC #$0Cif(c==off) goto $02DD9A
02DD8EJSL $C2B5D8SR: $02B5D8
02DD92JSL $C1A867SR: $01A867 引数:1#$0041戦闘メッセージ表示
02DD98SECc=on
02DD99RTSreturn
02DD9ACLCc=off
02DD9BRTSreturn

  • SR: $02DFFA 暗黒の波動(マホトーン)(新SR)
02DFFALDX $23E8X=$23E8
02DFFDJSL $C2CAD9SR: $02CAD9 引数:1#$2051 引数:2#$0002戦闘中PC情報取得
02E005BEQ #$02if(z==on) goto $02E009
02E007CLCc=off
02E008RTSreturn
02E009JSR $989BSR: $02989B行動対象者のMPが0か?
02E00CBCS #$05if(c==on) goto $02E013
02E00EJSR $A3EBSR: $02A3EB耐性を考慮して成否判定+PC側耐性計算?
02E011BCS #$02if(c==on) goto $02E015
02E013CLCc=off
02E014RTSreturn
02E015LDA #$0001A=#$0001
02E018JSL $C2CB70SR: $02CB70 引数:1#$2051 引数:2#$0002戦闘中PC情報変更
02E020JSR $DD9CSR: $02DD9C暗黒の波動効果メッセージ切り替え(味方,マホトーン)
02E023PHAPush A
02E024JSL $C2CAD9SR: $02CAD9 引数:1#$203C 引数:2#$00FF戦闘中PC情報取得
02E02CCMP #$0004A>=#$0004?
02E02FBCS #$05if(c==on) goto $02E036
02E031JSR $DDB0SR: $02DDB0暗黒の波動効果メッセージ切り替え(敵,マホトーン)
02E034STA $01,SStack($01)=A
02E036PLAPull A
02E037JSL $C1A87ASR: $01A87A戦闘メッセージ表示
02E03BSECc=on
02E03CRTSreturn

  • SR: $02E03D 暗黒の波動(マヌーサ)(新SR)
02E03DLDX $23E8X=$23E8
02E040JSL $C2CAD9SR: $02CAD9 引数:1#$2051 引数:2#$0004戦闘中PC情報取得
02E048BEQ #$02if(z==on) goto $02E04C
02E04ACLCc=off
02E04BRTSreturn
02E04CJSR $A3EBSR: $02A3EB耐性を考慮して成否判定+PC側耐性計算?
02E04FBCS #$02if(c==on) goto $02E053
02E051CLCc=off
02E052RTSreturn
02E053LDA #$0001A=#$0001
02E056JSL $C2CB70SR: $02CB70 引数:1#$2051 引数:2#$0004戦闘中PC情報変更
02E05EJSR $E067SR: $02E067暗黒の波動効果メッセージ切り替え(マヌーサ)
02E061JSL $C1A87ASR: $01A87A戦闘メッセージ表示
02E065SECc=on
02E066RTSreturn

  • SR: $02E07B 暗黒の波動(メダパニ)(新SR)
02E07BLDY $23E8Y=$23E8
02E07ESTY $2428$2428=Y
02E081JSL $C2BE8ASR: $02BE8A 引数:1#$28
02E086BCC #$09if(c==off) goto $02E091
02E088JSR $E0C3SR: $02E0C3暗黒の波動効果メッセージ切り替え(メダパニ2)
02E08BJSL $C1A87ASR: $01A87A戦闘メッセージ表示
02E08FSECc=on
02E090RTSreturn
02E091JSL $C2CAE0SR: $02CAE0 引数:1#$2051 引数:2#$0040戦闘中PC情報取得
02E099BNE #$05if(z==off) goto $02E0A0
02E09BJSR $A3EBSR: $02A3EB耐性を考慮して成否判定+PC側耐性計算?
02E09EBCS #$02if(c==on) goto $02E0A2
02E0A0CLCc=off
02E0A1RTSreturn
02E0A2JSL $C2B673SR: $02B673混乱直後の処理(戦闘行動変更?)
02E0A6JSR $E0AFSR: $02E0AF暗黒の波動効果メッセージ切り替え(メダパニ)
02E0A9JSL $C1A87ASR: $01A87A戦闘メッセージ表示
02E0ADSECc=on
02E0AERTSreturn

  • SR: $02DD9C 暗黒の波動効果メッセージ切り替え(味方,マホトーン)(新SR)
02DD9CLDA $260CA=$260C
02DD9FAND #$0001A&=#$0001
02DDA2CMP #$0001A==#$0001?
02DDA5BNE #$05if(z==off) goto $02DDAC
02DDA7LDA #$0067A=#$0067
02DDAABRA #$03goto $02DDAF
02DDACLDA #$0193A=#$0193
02DDAFRTSreturn

取り立ててこれといって難しいことはしていないのですが、ポイントは「対象1人に着目したときに、メッセージ表示時に画面切り替えをする/しないのコントロールをする」というところです。オリジナルのメッセージを使用すると、メッセージの先頭に画面切り替え?のコントロール文字列[BD]が付加されているため、

○○は ねむってしまった!

画面切り替え

○○は まぼろしに つつまれた!

となってしまい、非常に見づらくなります。理想は

○○は ねむってしまった!

○○は まぼろしに つつまれた!

のように1人分は1画面に続けて表示したいところです。従って、面倒ですが「効果発生時に対象キャラクターの最初の効果発動の場合は[BD]付きのメッセージを表示し、すでに別の効果が発生している場合は[BD]なしのメッセージを表示する」という処理をすることで対応します。その切り替え処理をしているのがSR: $02DD9Cなどです(ラリホーは最初の効果なので必ず[BD]付きのメッセージを使用する)。同様にマヌーサ、メダパニにもメッセージ切り替えの処理をはさむことになります。

コメント

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