DQ3 ストーリー変更(光の鎧入手8)

だらだらと続いたこのシリーズも今回で最後…のつもりだったんですが、残りのバラモス城バラモスの間のイベントの部分が長くなってしまったので、光の鎧入手後のガライ離脱部分は次回に回します。

まず準備として、「条件を満たしている場合は隠し部屋への階段を表示した状態でマップを初期化する」部分を実装します。

  • SR: $0AA1E2 バラモス城B1Fバラモスの間移動・宝箱・ドア・NPC情報設定
0AA209JSL $CDE763SR: $0DE763バラモスの間NPC設定+追加イベント用各種設定
  • SR: $0DE763 バラモスの間NPC設定+追加イベント用各種設定(新SR)
0DE763JSL $CCC8A2SR: $0CC8A2バラモスの間NPC情報設定
0DE767JSL $CDF23FSR: $0DF23Fバラモスの間追加イベント用設定
0DE76BRTLreturn
  • SR: $0CC8A2 バラモスの間NPC情報設定
0CC8A2JSR $F22ESR: $0CF22Eバラモスの間NPC設定(サブ)
  • SR: $0CF22E バラモスの間NPC設定(サブ)(新SR)
0CF22EJSL $CDE55CSR: $0DE55Cバラモス城追加ボスを倒したか(該当c=on)
0CF232BCS #$24if(c==on) goto $0CF258
0CF234JSL $CCFF1CSR: $0CFF1Cガライが仲間になっているか(該当c=on)
0CF238BCC #$17if(c==off) goto $0CF251
0CF23ALDA #$059AA=#$059Aモンスター1体目のNPC
0CF23DJSL $C75828SR: $075828NPC1設定
0CF241LDA #$059BA=#$059Bモンスター2体目のNPC
0CF244JSL $C75828SR: $075828NPC1設定
0CF248LDA #$05A2A=#$05A2ガライのNPC
0CF24BJSL $C75828SR: $075828NPC1設定
0CF24FBRA #$07goto $0CF258

  • SR: $0DF23F バラモスの間追加イベント用設定
0DF23FJSL $CDF2F0SR: $0DF2F0バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定(処理済c=on)
0DF243BCS #$0Fif(c==on) goto $0DF254
0DF245LDA $35B4A=$35B4
0DF248AND #$0001A&=#$0001エルフの女王に光の鎧の隠し場所のアタリを聞いた
0DF24BBEQ #$07if(z==on) goto $0DF254
0DF24DLDX #$0097X=#$0097
0DF250JSL $C666FASR: $0666FAしらべるイベント設定
0DF254RTLreturn

  • SR: $0DF2F0 バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定(処理済c=on)(新SR)
0DF2F0LDA $35B4A=$35B4
0DF2F3AND #$0010A&=#$0010
0DF2F6BEQ #$07if(z==on) goto $0DF2FF
0DF2F8JSL $CDF301SR: $0DF301
0DF2FCSECc=on
0DF2FDBRA #$01goto $0DF300
0DF2FFCLCc=off
0DF300RTLreturn
  • SR: $0DF301 バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定(新SR)
0DF301LDA #$0980A=#$0980
0DF304STA $9680$9680=A階段マップパーツX座標指定
0DF307LDA #$0910A=#$0910
0DF30ASTA $9682$9682=A階段マップパーツY座標指定
0DF30DLDX #$03A3X=#$03A3
0DF310LDY #$0000Y=#$0000
0DF313JSL $C734B3SR: $0734B3マップパーツ差し替え?
0DF317LDX #$01B4X=#$01B4
0DF31AJSL $C614BBSR: $0614BB階段移動データ設定
0DF31ERTLreturn

次にイベントを実装します。例によってまずイベントの設計を行います。今回は結構長いです。

カウンタ処理内容
1000ガライのNPCを表示する
2000PC再描画を行い、5人目を透明にする
3000ガライを指定座標に移動する
4000竪琴のSE再生+画面エフェクト+マップパーツ差し替え
5000モンスターNPC1出現+指定座標に移動
6000モンスターNPC2出現+指定座標に移動
7000モンスターNPC1指定座標に移動
8000イベント戦闘
9000ガライの台詞+5人目の座標に移動
10000PC再描画を行い、5人目を実体化する
11000ガライのNPC消滅
12000イベント終了時のPC表示処理

  • SR: $0DF32A バラモスの間追加イベント処理2(新SR)
0DF32ACOPgoto $00FFE4
0DF32BJSL $CCD276SR: $0CD276
0DF32FLDA #$0960A=#$0960
0DF332LDX #$09A0X=#$09A0
0DF335LDY #$09B0Y=#$09B0
0DF338JSL $C75365SR: $075365PCが指定座標(X座標は範囲指定)に到達しているか?(しているc=on)
0DF33CBCS #$02if(c==on) goto $0DF340
0DF33EBRA #$EBgoto $0DF32B
0DF340JSL $CDD687SR: $0DD687PC先頭キャラクターを移動対象にする?
0DF344JSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0DF348JSL $CCD346SR: $0CD346移動速度1倍速セット?
0DF34CLDX #$0030X=#$0030
0DF34FLDA #$002CA=#$002C
0DF352JSL $C75474SR: $075474キャラクター移動先座標指定
0DF356JSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DF35AJSL $CDADD8SR: $0DADD8カウンタに1000をセット
0DF35EJSL $CDAED1SR: $0DAED1カウンタが2000になるまで待機
0DF362LDA #$0008A=#$0008
0DF365TSB $3638A or $3638
0DF368JSL $CDD682SR: $0DD682PC再描画?
0DF36CJSL $CDADEDSR: $0DADEDカウンタに3000をセット
0DF370JSL $CDAEF1SR: $0DAEF1カウンタが4000になるまで待機
0DF374LDA #$0020A=#$0020
0DF377JSL $C74B39SR: $074B39処理にインターバルを置く?
0DF37BJSL $C737BESR: $0737BE 引数:1#$1053メッセージ表示
0DF381JSL $C1E32ESR: $01E32E 引数:1#$003C再生BGM設定?
0DF387JSL $C028B4SR: $0028B4入力ブロック?
0DF38BJSL $C1E59CSR: $01E59C 引数:1#$003CBGM停止
0DF391BCC #$F4if(c==off) goto $0DF387
0DF393JSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0DF397LDA #$0038A=#$0038
0DF39AJSL $C74B39SR: $074B39処理にインターバルを置く?
0DF39EJSL $CA1DB1SR: $0A1DB1岩を砕くBGM?
0DF3A2JSL $CDE1BDSR: $0DE1BD画面を揺らす効果?
0DF3A6LDA #$0048A=#$0048
0DF3A9JSL $C74B39SR: $074B39処理にインターバルを置く?
0DF3ADJSL $CA1DB1SR: $0A1DB1岩を砕くBGM?
0DF3B1JSL $CDE1BDSR: $0DE1BD画面を揺らす効果?
0DF3B5LDA #$0010A=#$0010
0DF3B8JSL $C74B39SR: $074B39処理にインターバルを置く?
0DF3BCJSL $C1E32ESR: $01E32E 引数:1#$003F再生BGM設定?
0DF3C2JSL $CDF301SR: $0DF301バラモス城B1Fバラモスの間階段マップパーツ差し替え+移動データ設定
0DF3C6JSL $CCD066SR: $0CD066
0DF3CAJSL $CCD07DSR: $0CD07D
0DF3CEJSL $CDADFBSR: $0DADFBカウンタに5000をセット
0DF3D2JSL $CDAF31SR: $0DAF31カウンタが8000になるまで待機
0DF3D6JSL $CDF509SR: $0DF509イベント戦闘(vsキラーマジンガ+マジックアーマー)
0DF3DALDA #$0010A=#$0010
0DF3DDTSB $35B4A or $35B4
0DF3E0JSL $CDAE17SR: $0DAE17カウンタに9000をセット
0DF3E4JSL $CDAF51SR: $0DAF51カウンタが10000になるまで待機
0DF3E8JSL $C907CCSR: $0907CC 引数:1#$3638 引数:2#$7E 引数:3#$08 引数:4#$00 引数:5#$00RAM上情報変更(OFF)
0DF3F2JSL $CDD682SR: $0DD682PC再描画?
0DF3F6JSL $CDAE25SR: $0DAE25カウンタに11000をセット
0DF3FAJSL $CDAF71SR: $0DAF71カウンタが12000になるまで待機
0DF3FELDA #$0020A=#$0020
0DF401JSL $C74B8CSR: $074B8C行動対象キャラクター指定?
0DF405JSL $CDD65CSR: $0DD65CPC表示?
0DF409JSL $CCD298SR: $0CD298イベント終了時処理?
0DF40DRTLreturn

  • SR: $0DF40E NPC1_MoveSR_05A2(ガライのNPC)(新SR)
0DF40ECOPgoto $00FFE4
0DF40FJSL $CDAEB1SR: $0DAEB1カウンタが1000になるまで待機
0DF413JSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0DF417JSL $C4297CSR: $04297C 引数:1#$01 引数:2#$FFパーティ人数取得
0DF41DASLA<<1
0DF41ETAYY=A
0DF41FLDA $C5E5,YA=$C5E5+Y
0DF422LDX $C625,YX=$C625+Y
0DF425JSL $C7C85BSR: $07C85B出現先座標をWX,WYで指定
0DF429JSL $CCD857SR: $0CD857キャラクターを上に向かせる
0DF42DJSL $CDADE6SR: $0DADE6カウンタに2000をセット
0DF431JSL $CDAEE1SR: $0DAEE1カウンタが3000になるまで待機
0DF435LDX #$002CX=#$002C
0DF438LDA #$002CA=#$002C
0DF43BJSL $C75474SR: $075474キャラクター移動先座標指定
0DF43FJSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DF443JSL $CCD863SR: $0CD863キャラクターを右に向かせる
0DF447BRK $1052 ($0D1052)goto $00FFE6(メッセージ表示) #$1052
0DF44AJSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0DF44EJSL $CCD857SR: $0CD857キャラクターを上に向かせる
0DF452JSL $CDADF4SR: $0DADF4カウンタに4000をセット
0DF456JSL $CDAF41SR: $0DAF41カウンタが9000になるまで待機
0DF45AJSL $CCD863SR: $0CD863キャラクターを右に向かせる
0DF45EBRK $1054 ($0D1054)goto $00FFE6(メッセージ表示) #$1054
0DF461JSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0DF465JSL $C4297CSR: $04297C 引数:1#$01 引数:2#$FFパーティ人数取得
0DF46BASLA<<1
0DF46CADC #$002CA+=(#$002C+c)
0DF46FLDX #$0030X=#$0030
0DF472JSL $C75474SR: $075474キャラクター移動先座標指定
0DF476JSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0DF47AJSL $CCD857SR: $0CD857キャラクターを上に向かせる
0DF47EJSL $CDAE1ESR: $0DAE1Eカウンタに10000をセット
0DF482JSL $CDAF61SR: $0DAF61カウンタが11000になるまで待機
0DF486JSL $C75930SR: $075930キャラクター消滅
0DF48AJSL $CDAE2CSR: $0DAE2Cカウンタに12000をセット
0DF48ERTLreturn

  • SR: $0DF48F NPC1_MoveSR_059A(モンスター1体目NPC)(新SR)
0DF48FCOPgoto $00FFE4
0DF490JSL $CDAF01SR: $0DAF01カウンタが5000になるまで待機
0DF494LDA #$0030A=#$0030
0DF497LDX #$0022X=#$0022
0DF49AJSL $C75305SR: $075305キャラクター出現座標を指定
0DF49EJSL $CCD85DSR: $0CD85Dキャラクターを下に向かせる
0DF4A2JSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0DF4A6JSL $CC7289SR: $0C7289キャラクターがその場で飛び上がる処理
0DF4AAJSL $CCD35ESR: $0CD35E移動速度4/3倍速セット?
0DF4AELDX #$0030X=#$0030
0DF4B1LDA #$0024A=#$0024
0DF4B4JSL $C75474SR: $075474キャラクター移動先座標指定
0DF4B8JSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DF4BCJSL $CDAE02SR: $0DAE02カウンタに6000をセット
0DF4C0JSL $CDAF21SR: $0DAF21カウンタが7000になるまで待機
0DF4C4LDX #$0030X=#$0030
0DF4C7LDA #$002AA=#$002A
0DF4CAJSL $C75474SR: $075474キャラクター移動先座標指定
0DF4CEJSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DF4D2JSL $CDAE10SR: $0DAE10カウンタに8000をセット
0DF4D6RTLreturn

  • SR: $0DF4D7 NPC1_MoveSR_059A(モンスター2体目NPC)(新SR)
0DF4D7COPgoto $00FFE4
0DF4D8JSL $CDAF11SR: $0DAF11カウンタが6000になるまで待機
0DF4DCLDA #$0030A=#$0030
0DF4DFLDX #$0022X=#$0022
0DF4E2JSL $C75305SR: $075305キャラクター出現座標を指定
0DF4E6JSL $CCD85DSR: $0CD85Dキャラクターを下に向かせる
0DF4EAJSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0DF4EEJSL $CC7289SR: $0C7289キャラクターがその場で飛び上がる処理
0DF4F2JSL $CDAE09SR: $0DAE09カウンタに7000をセット
0DF4F6JSL $CCD35ESR: $0CD35E移動速度4/3倍速セット?
0DF4FALDX #$0030X=#$0030
0DF4FDLDA #$0028A=#$0028
0DF500JSL $C75474SR: $075474キャラクター移動先座標指定
0DF504JSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DF508RTLreturn

階段のマップパーツを動的に表示する部分はゾーマの城の1Fの隠し階段を見つける部分を参考にしました。また、モンスター登場時のエフェクトはノルドの洞窟(アッサラーム東)のホビットに抜け道を空けてもらう部分を参考にしました。この部分は珍しく一発でやりたいことが出来たので達成感は高かったですw。

1点心残りだったのが、戦闘背景を替えざるを得なかったことです。ボスモンスター「マジックアーマー」の色合い(紫)だともともとのバラモス城の戦闘背景だと見にくくなったため、仕方なくゾーマの城の背景に差し替えました。

20100326214358.jpg
うーん。やはり見にくい。床の色がもうちょっと赤っぽかったらねえ。
20100326214359.jpg

というわけで妥協の結果こうなりました。マジックアーマーの色を青くするのも試してみたのですが、いまいちしっくり来なかったのでやむを得ず。あと、原案では「キラーマジンガ1体+マジックアーマー2体」だったのですが、イオナズンを2体揃って連発されるともうどうしようもないのでやめましたw。しかしこいつら、スクルトの上限を守備力の2倍に制限したバージョン(現在開発中)だと鬼化する予感…。

ところで、この戦闘でこっちが全滅したら一人残されたガライはどういう扱いになるんでしょうかねえ…。

スポンサーリンク

コメントを書く

メールアドレスが公開されることはありません。コメントは管理者の承認後表示されます。