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

1つ前のエントリを投下したのがちょうど1ヶ月前。正直自分でもかなり忘却のかなたに行ってしまってるのと、「需要あんのかこれ」という気もするので投下モチベーションはかなり低いのですが、残りの変更点はあと2箇所なのでグダグダながらやりきりたいと思います。ここ最近はDQ3SFC K.Mixの追加改造というか一応自分の中では最終稿扱いのバージョン1.0.0リリースに向けてつらつらと作業をしているわけですが、作業速度は低下気味。手のつけやすいところからちょこちょこと作業をしているのですが、モンスターネタが枯渇気味です。今のところ自分の中では没扱いのこんなモンスターも。

20100306213743.jpg

犬っぽいグラのモンスターもそろってるので(こっちは腐ってるけどw)、PS版DQ4のエグチキみたいにセットで出てくるって言うのもありかなーとも思ったんですが、おふざけが過ぎると思い直したので没にしました。現在はゾーマの城に無限回廊のフロアを追加しようと思ってるんですが、これまたいろいろ面倒っぽい(っていうかお手本になるいいフロアがない)のでこちらもモチベーション低下中です。

さて本題に入ります。前回までで、「ガライが仲間になる条件を満たしているフロアに侵入時に5人目を透明のキャラクターとして初期化する」ところまで終わっています。残りは「ガライとの会話終了後にガライが5人目の座標に移動し向きを変えた瞬間にガライを消し、代わりに5人目を可視化してPCを再描画する」処理を実装すればいいことになります。

例によってまずイベントの設計を行います。

カウンタ処理内容
1000ガライとの会話終了
2000ガライが5人目の座標に移動完了し「ガライが仲間になった」フラグON、5人目を実体化させてPC再描画
3000ガライのNPC消滅
4000「ガライが 仲間に加わった!」メッセージ表示
  • SR: $0CE694 メルキド宿屋イベント処理
0CE6B9JSL $CDEFACSR: $0DEFAC

  • SR: $0DEFAC メルキド宿屋追加イベント処理(新SR)
0DEFACLDA $35B4A=$35B4
0DEFAFAND #$0004A&=#$0004ガライを仲間にしたか
0DEFB2BEQ #$06if(z==on) goto $0DEFBA
0DEFB4JSL $CCD298SR: $0CD298イベント終了時処理?
0DEFB8BRA #$0Agoto $0DEFC4
0DEFBAJSL $CCF2E1SR: $0CF2E1メルキド襲撃イベントが終わっているか(該当c=on)
0DEFBEBCC #$06if(c==off) goto $0DEFC6
0DEFC0JSL $CDE9EESR: $0DE9EEメルキド宿屋追加イベント処理(ガライ仲間追加)
0DEFC4BRA #$04goto $0DEFCA
0DEFC6JSL $CCFC10SR: $0CFC10メルキド宿屋追加イベント処理(魔物襲撃)
0DEFCARTLreturn
  • SR: $0DE9EE メルキド宿屋追加イベント処理(ガライ仲間追加)(新SR)
0DE9EELDA $35B4A=$35B4
0DE9F1AND #$0002A&=#$0002バラモス城の骸骨に光の鎧の隠し場所の情報を聞いた
0DE9F4BEQ #$05if(z==on) goto $0DE9FB
0DE9F6JSL $CCFF31SR: $0CFF31メルキド宿屋追加イベント処理(ガライ仲間追加)
0DE9FARTLreturn
0DE9FBJSL $CCD298SR: $0CD298イベント終了時処理?
0DE9FFRTLreturn

  • SR: $0BF1BE メルキド宿屋ガライ会話追加処理(以前新規追加したSRに追記)
0BF1BELDA $35B4A=$35B4
0BF1C1AND #$0008A&=#$0008ガライと別れた
0BF1C4BEQ #$05if(z==on) goto $0BF1CB
0BF1C6BRK $1050 ($0B1050)goto $00FFE6(メッセージ表示) #$1050
0BF1C9BRA #$0Bgoto $0BF1D6
0BF1CBLDA $35B4A=$35B4
0BF1CEAND #$0002A&=#$0002
0BF1D1BEQ #$0Bif(z==on) goto $0BF1DE
0BF1D3BRK $104E ($0B104E)goto $00FFE6(メッセージ表示) #$104E
0BF1D6-BNOP
0BF1DCBRA #$41goto $0BF21F$0BF21Fでカウンタに1000をセットするSR実行

  • SR: $0DEFDB メルキド宿屋ガライMove処理(新SR)
0DEFDBLDA $35B4A=$35B4
0DEFDEAND #$0008A&=#$0008
0DEFE1BNE #$10if(z==off) goto $0DEFF3
0DEFE3JSL $CDF5C1SR: $0DF5C1バラモス城の骸骨から光のよろいのヒントをもらっていていてマップIDがメルキド宿屋orバラモスの間か(該当c=on)
0DEFE7BCS #$06if(c==on) goto $0DEFEF
0DEFE9JSL $CDE518SR: $0DE518メルキド襲撃イベント時のガライMove処理
0DEFEDBRA #$04goto $0DEFF3
0DEFEFJSL $CDEFF6SR: $0DEFF6ガライが仲間に加わる処理
0DEFF3RTLreturn

  • SR: $0DEFF6 ガライが仲間に加わる処理(新SR)
0DEFF6COPgoto $00FFE4
0DEFF7JSL $CDAEB1SR: $0DAEB1カウンタが1000になるまで待機
0DEFFBJSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0DEFFFJSL $C4297CSR: $04297C 引数:1#$01 引数:2#$FFパーティ人数取得
0DF005ASLA<<1
0DF006TAYY=A
0DF007LDA $CFA5,YA=$CFA5+Y5人目の向き状態取得
0DF00APHAPush A
0DF00BLDX $C5E5,YX=$C5E5+Y5人目のX座標取得?
0DF00ELDA $C625,YA=$C625+Y5人目のY座標取得?
0DF011PHAPush A
0DF012LDY $7F2AY=$7F2A
0DF015STA $D625,Y$D625+Y=Aガライの移動先X座標を実座標で指定
0DF018TXAA=X
0DF019STA $D5E5,Y$D5E5+Y=Aガライの移動先Y座標を実座標で指定
0DF01CPLAPull A
0DF01DCMP #$08F7A>=#$08F7?
0DF020BCS #$06if(c==on) goto $0DF028
0DF022JSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0DF026BRA #$04goto $0DF02C
0DF028JSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DF02CPLAPull A
0DF02DLSRA>>1
0DF02ECMP #$0000A==#$0000?5人目の向きが上
0DF031BNE #$06if(z==off) goto $0DF039
0DF033JSL $CCD837SR: $0CD837キャラクターを上に向かせる
0DF037BRA #$1Agoto $0DF053
0DF039CMP #$0001A==#$0001?5人目の向きが右
0DF03CBNE #$06if(z==off) goto $0DF044
0DF03EJSL $CCD83FSR: $0CD83Fキャラクターを右に向かせる
0DF042BRA #$0Fgoto $0DF053
0DF044CMP #$0002A==#$0002?5人目の向きが下
0DF047BNE #$06if(z==off) goto $0DF04F
0DF049JSL $CCD847SR: $0CD847キャラクターを下に向かせる
0DF04DBRA #$04goto $0DF053
0DF04FJSL $CCD84FSR: $0CD84Fキャラクターを左に向かせる
0DF053JSL $CDADE6SR: $0DADE6カウンタに2000をセット
0DF057LDA #$0004A=#$0004
0DF05ATSB $35B4A or $35B4
0DF05DJSL $CDAEE1SR: $0DAEE1カウンタが3000になるまで待機
0DF061JSL $C75930SR: $075930キャラクター消滅
0DF065JSL $CDADF4SR: $0DADF4カウンタに4000をセット
0DF069RTLreturn

  • SR: $0CFF31 メルキド宿屋追加イベント処理(ガライ仲間追加)(新SR)
0CFF31COPgoto $00FFE4
0CFF32JSL $CCE1D1SR: $0CE1D1イベント開始待ち?
0CFF36JSL $CDAED1SR: $0DAED1カウンタが2000になるまで待機
0CFF3AJSL $C3BD64SR: $03BD64仲間増減時再描画処理?
0CFF3EJSL $CDADEDSR: $0DADEDカウンタに3000をセット
0CFF42JSL $CDAEF1SR: $0DAEF1カウンタが4000になるまで待機
0CFF46JSL $C737BESR: $0737BE 引数:1#$104Fメッセージ表示
0CFF4CJSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0CFF50JSL $CCD298SR: $0CD298イベント終了時処理?
0CFF54RTLreturn

2点ほど注意点があります。1つ目は、5人目の座標に応じてガライの移動方法をX座標を先に合わせるか、Y座標を先に合わせるか変えることです。どうでもいいといえばいいのですが、これを無視するとガライが壁を突き破って移動することになるので。2つ目は、「ガライが仲間になった」フラグONのタイミングです。意味的にはガライとの会話が終わり移動を開始する寸前にONするほうが正しいようにも思えるのですが、それだと再描画のタイミングによってはガライが移動を開始する前に5人目が実体化されてしまうため、ガライの移動が完了した直後にONにする必要があります。実際便利ボタンでガライに話し掛けるとこの現象は起きず、メニューを表示させ「はなす」を選んでガライに話し掛けるとこの問題が起きるようです。おそらくガライに話し掛けた後にPC再描画処理が行われているためだと思われます(この問題は巨年末のファーストリリース直前に見つけました)。ちなみに、PCを再描画するだけでなぜ5人目が実体化されるかというと、「ガライが仲間になったフラグ」がONになっている状態でPC再描画処理を呼び出しているため、いままで透明で描画されていた5人目が実体化されて再描画される、という仕組みになっています。一度この仕組みを使いこなせるようになれば他の場所でも5人目の切り離し+つけ戻しはフラグのON/OFFをしてからPC再描画をすればいいだけになります。

というわけで懸案だった「5人目をNPCからPCに変える」処理は終わりです。次回は5人目がいることで影響のある部分の対応を行います。

コメント

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