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

正直実装したのがずいぶん前すぎて、この部分どうしてちゃんと動いてるのか仕組みを忘れてしまいました。あんまり思い出したくない部分なのでこのままになるかも。

さて、フィールド上のガライの動作がおおむねうまくいったので「ガライが仲間になるイベント」の実装を行います。ポイントは2点あります。

  1. NPCだったガライを仲間として動作する(5人目としてPCの一部として動く)部分をどう実装するか。
  2. ガライが5人目としてパーティに追加される際に「5人目」の座標をどうやって得るか。

お手本としてDQ6のレイドック王妃がパーティに加わる動画を見てみましたが「あらかじめ整列していたPCの後ろに5人目が加わる」となっていました。おそらく移動先の座標を固定で指定しているものと思われます。最後の手段として以前ロマリアの変更で使ったように、ガライに話し掛けたタイミングでPCを整列させることも考えましたが、試行錯誤した結果、以下の方法で違和感なくイベントの演出ができるようになりました。PCの整列も不要です。

  1. ガライが仲間になる条件を満たしていて(バラモス城の骸骨から光の鎧のヒントをもらっている)、かつマップがメルキド宿屋(フロアID=#$58)の場合では、PCの最後に「透明なPC」をもう一人つけた状態で初期化を行う。
  2. ガライに話しかけたあと、ガライは「透明なPC」の座標、向きを取得し、そこに向かって移動を行う。
  3. ガライが2の座標に移動し、「透明なPC」と同じ向きを向いたところで(透明でない)5人目を含んだ状態でPC再描画を行い、その後ガライのNPCを消滅させる。

というわけで実装に移ります。

  • SR: $063033 PC+NPCグラフィック描画?
063033JSL $CDF97CSR: $0DF97C5人目を透明にするべき条件か(該当c=on)
063037BCC #$03if(c==off) goto $06303C
063039LDA #$FFFFA=#$FFFF
06303CCMP #$FFFFA==#$FFFF?
06303FBEQ #$33if(z==on) goto $063074
063041JSR $F512SR: $06F512追加NPCキャラクターインデックス置き換え(置換済c=on)
063044BCS #$10if(c==on) goto $063056
063046JSR $F56BSR: $06F56B追加NPC用キャラクターインデックス取得(実体)
063049-55NOP
  • SR: $0DF97C 5人目を透明にするべき条件か(該当c=on)
0DF97CPHAPush A
0DF97DJSL $CDF5C1SR: $0DF5C1バラモス城の骸骨から光のよろいのヒントをもらっていていてマップIDがメルキド宿屋orバラモスの間か(該当c=on)
0DF981BCS #$04if(c==on) goto $0DF987
0DF983JSL $CDF92ESR: $0DF92E地球のへそ帰還時にガライ表示するか(該当c=on)
0DF987BCS #$04if(c==on) goto $0DF98D
0DF989JSL $CDF9E4SR: $0DF9E4アッサラームぱふぱふ中か(該当c=on)
0DF98DPLAPull A
0DF98ERTLreturn
  • SR: $0DF5C1 バラモス城の骸骨から光のよろいのヒントをもらっていていてマップIDがメルキド宿屋orバラモスの間か(該当c=on)
  • SR: $0DF92E 地球のへそ帰還時にガライ表示するか(該当c=on)
  • SR: $0DF9E4 アッサラームぱふぱふ中か(該当c=on)

省略

  • SR: $06F512 追加NPCキャラクターインデックス置き換え(置換済c=on)
06F512PHXPush X
06F513PHYPush Y
06F514PHAPush A
06F515LDA $7E353BA=$7E353B
06F519AND #$0010A&=#$0010
06F51CBNE #$09if(z==off) goto $06F527
06F51ELDA $7E353BA=$7E353B
06F522AND #$0020A&=#$0020
06F525BEQ #$18if(z==on) goto $06F53F
06F527JSL $C90572SR: $090572 引数:1#$00 引数:2#$0009 引数:3#$CE2000 引数:4#$0002 引数:5#$0000FF
06F536CMP #$0000A==#$0000?
06F539BEQ #$04if(z==on) goto $06F53F
06F53BSTA $01,SStack($01)=A
06F53DBRA #$24goto $06F563
06F53FLDA $7E353BA=$7E353B
06F543AND #$0040A&=#$0040
06F546BEQ #$16if(z==on) goto $06F55E
06F548LDX $3530X=$3530
06F54BJSL $C90572SR: $090572 引数:1#$00 引数:2#$0002 引数:3#$C89839 引数:4#$0000 引数:5#$0000FF
06F55ASTA $01,SStack($01)=A
06F55CBRA #$05goto $06F563
06F55EPLAPull A
06F55FPLYPull Y
06F560PLXPull X
06F561CLCc=off
06F562RTSreturn
06F563PLAPull A
06F564PLYPull Y
06F565PLXPull X
06F566JSR $F58ASR: $06F58A追加NPC用キャラクターインデックス取得(空)
06F569SECc=on
06F56ARTSreturn
  • SR: $06F58A 追加NPC用キャラクターインデックス取得(空)
06F58APHXPush X
06F58BPHAPush A
06F58CAND #$7FFFA&=#$7FFF
06F58FTAXX=A
06F590LDA #$0000A=#$0000
06F593STA $EA21$EA21=A
06F596LDA #$00FFA=#$00FF
06F599STA $EA23$EA23=A
06F59CPLAPull A
06F59DPLXPull X
06F59ERTSreturn

これで、バラモス城で骸骨からヒントをもらった後、メルキドの宿屋に入ると、見た目は4人ですが、内部では5人目が透明の状態で付いているPCで初期化されます。

コメント

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