DQ3 すごろくシステム変更7

長々とやってきましたが今回で最後です。?マークで止まったときに「次の戦闘で獲得コイン2倍、同5倍、経験値とコインが逆」が候補に含まれるようにします。?マークに止まった時に実行される各処理のSRアドレスリスト($08F188-)を余裕のある場所に移動してレコードを3つ追加します。追加処理自体はこれといって難しいことはなく、それっぽいメッセージを表示してフラグを立てるだけです。

  • SR: $05FADF すごろく?マークパネルイベントアドレスSR_0024(経験値コイン入れ替え)(新SR)
05FADFJSL $C737BESR: $0737BE 引数:1#$106Aメッセージ表示
05FAE5JSL $C737BESR: $0737BE 引数:1#$0150メッセージ表示
05FAEBJSL $C737BESR: $0737BE 引数:1#$106Bメッセージ表示
05FAF1JSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
05FAF5JSL $C58ECDSR: $058ECDすごろくイベントエフェクト処理?
05FAF9JSL $C90789SR: $090789 引数:1#$35B5 引数:2#$7E 引数:3#$08 引数:4#$00 引数:5#$00RAM上情報変更(ON)
05FB03RTLreturn

他の2つについては表示するメッセージ、立てるフラグが違うだけなので省略します。次にこれら追加イベントを?マークパネルに止まったときに選ばれるようにします。

  • SR: $01C9BA すごろく?マークパネル処理決定?
01C9E5JSL $C90566SR: $090566 引数:1#$00 引数:2#$0036 引数:3#$C8F323 引数:4#$0020 引数:5#$00000F構造体アクセス
01C9F4TAYY=A
01C9F5JSL $C90501SR: $090501 引数:1#$00 引数:2#$0030 引数:3#$C8F1F4 引数:4#$00構造体アクセス Y番目の先頭アドレスを$00,第4引数にセット
01CA00LDA $C1EFA=$C1EF
01CA03BEQ #$03if(z==on) goto $01CA08
01CA05DECA–
01CA06BRA #$26goto $01CA2E
01CA08LDA #$FFFFA=#$FFFF
01CA0BSTA $18DP($18)=A
01CA0DLDA #$FFFFA=#$FFFF
01CA10STA $1ADP($1A)=A
01CA12LDA #$FFFFA=#$FFFF
01CA15STA $1CDP($1C)=A
01CA17STZ $1EDP($1E)=#$00
01CA19JSR $CA3CSR: $01CA3Cすごろくプレイヤー入れ替え用フラグOFF?
01CA1CJSR $CA49SR: $01CA49宿屋に飛ばされるフラグOFF?
01CA1FNOP
01CA20NOP
01CA21NOP
01CA22LDX #$0018X=#$0018
01CA25JSL $C01396SR: $001396乱数発生 $0000000000000000-FFFFFFFFFFFFFFFF dp,Xの1になっているビットをランダムで0にする?
01CA29BCS #$03if(c==on) goto $01CA2E
01CA2BLDA #$0000A=#$0000
01CA2ECLCc=off
01CA2FADC #$0000A+=(#$0000+c)
01CA32TAYY=A
01CA33LDA $00A=$(DP[$00])+Y
01CA35AND #$00FFA&=#$00FF
01CA38STA $C1F5$C1F5=A
01CA3BRTLreturn

やってる事自体は基本パルプンテの効果リストから1つ選ぶというのとほとんど同じです。少し違うのは、ONになったビットの参照先が直接結果リストになるのではなく、各すごろく場ごとに決められた結果リストテーブル($08F1F4-)の値になっているというだけです。また、状況に応じて実行しても意味がない(パーティがひとりだけ、残りが全員死んでるなどにより入れ替えできないなど)フラグは事前にOFFにするようになっています。というわけで、追加イベントを発生させるには結果リストテーブル($08F1F4-)のいらなそうなものと取り替えてしまえばいいわけです。単純に1つ入れ替えれば1/48(約2%)の確率で選ばれることになるので、だいたいどのすごろく場も1-2ずつ追加イベントに差し替えてみました。

コメント

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