DQ3 まんたん処理の仕組み2

今回から実装を見ていきます。

  • SR: $091F27 まんたん処理メイン
091F27JSL $C1D832SR: $01D832呪文無効環境チェック(無効c=on)
091F2BBCS #$23if(c==on) goto $091F50
091F2DJSR $1F59SR: $091F59回復呪文習得状態・ステータス異常チェック
091F30JSR $204DSR: $09204Dキアリク詠唱
091F33JSR $20E4SR: $0920E4キアリー詠唱
091F36JSR $214FSR: $09214F必要HP回復量取得(回復不要c=on)
091F39BCS #$05if(c==on) goto $091F40
091F3BJSR $21ACSR: $0921ACまんたんHP回復処理
091F3EBCS #$F6if(c==on) goto $091F36
091F40LDA $2BBAA=$2BBA
091F43BNE #$06if(z==off) goto $091F4B$7E2BBAが0なら回復行動が実行された回数は0
091F45JSL $C1A8D4SR: $01A8D4 引数:1#$004Dメッセージ表示「しかし何も起こらなかった」
091F4BJSL $C340F7SR: $0340F7ウィンドウでのキー入力結果取得(キャンセルc=on)
091F4FRTLreturn
091F50JSL $C1A8D4SR: $01A8D4 引数:1#$005Aメッセージ表示「しかし呪文はかき消された」
091F56JMP $1F4B ($091F4B)goto $091F4B

メインの処理はかなりスッキリした構成になっています。その分各SRは結構長いのですが。

  • SR: $091F27 回復呪文習得状態・ステータス異常チェック
091F59STZ $2BBA$2BBA=#$00
091F5CJSL $C4297CSR: $04297C 引数:1#$01 引数:2#$FFパーティ人数取得
091F62STA $2BB2$2BB2=A
091F65ASLA<<1
091F66STA $2BB4$2BB4=A
091F69LDX #$0028X=#$0028ベホマラーの戦闘行動ID
091F6CJSR $24EDSR: $0924ED回復最小量取得
091F6FSTA $2BCA$2BCA=A
091F72LDX #$002BX=#$002Bベホマズンの戦闘行動ID
091F75JSR $24EDSR: $0924ED回復最小量取得
091F78STA $2BCC$2BCC=A
091F7BLDX #$0000X=#$0000
091F7ESTZ $2BB6$2BB6=#$00
091F81JSL $C43F87SR: $043F87 引数:1#$01 引数:2#$FE 引数:3#$FFステータス取得(健全c=off?)
091F88TAYY=A
091F89AND #$0010A&=#$0010死亡判定
091F8CBEQ #$09if(z==on) goto $091F97
091F8ELDA #$4000A=#$4000死亡フラグと行動不能フラグON
091F91ORA #$8000Aor=#$8000
091F94TSB $2BB6A or $2BB6
091F97TYAA=Y
091F98AND #$0002A&=#$0002麻痺判定
091F9BBEQ #$09if(z==on) goto $091FA6
091F9DLDA #$2000A=#$2000麻痺フラグと行動不能フラグON
091FA0ORA #$8000Aor=#$8000
091FA3TSB $2BB6A or $2BB6
091FA6TYAA=Y
091FA7AND #$0001A&=#$0001毒判定
091FAABEQ #$06if(z==on) goto $091FB2
091FACLDA #$1000A=#$1000毒フラグON
091FAFTSB $2BB6A or $2BB6
091FB2TXAA=X
091FB3JSL $C3AEE8SR: $03AEE8般若の面を装備しているか調べる(装備しているc=on)
091FB7BCC #$09if(c==off) goto $091FC2
091FB9LDA #$0400A=#$0400般若装備中と行動不能フラグON
091FBCORA #$8000Aor=#$8000
091FBFTSB $2BB6A or $2BB6
091FC2JSL $C455FDSR: $0455FD 引数:1#$01 引数:2#$FE移動呪文情報取得
091FC8LDA #$001FA=#$001Fホイミの戦闘行動ID
091FCBJSR $203DSR: $09203D指定呪文を覚えているか(該当c=on)
091FCEBCC #$06if(c==off) goto $091FD6
091FD0LDA #$0004A=#$0004ホイミ習得フラグON
091FD3TSB $2BB6A or $2BB6
091FD6LDA #$0022A=#$0022ベホイミの戦闘行動ID
091FD9JSR $203DSR: $09203D指定呪文を覚えているか(該当c=on)
091FDCBCC #$06if(c==off) goto $091FE4
091FDELDA #$0008A=#$0008ベホイミ習得フラグON
091FE1TSB $2BB6A or $2BB6
091FE4LDA #$0025A=#$0025ベホマの戦闘行動ID
091FE7JSR $203DSR: $09203D指定呪文を覚えているか(該当c=on)
091FEABCC #$06if(c==off) goto $091FF2
091FECLDA #$0010A=#$0010ベホマ習得フラグON
091FEFTSB $2BB6A or $2BB6
091FF2LDA #$0028A=#$0028ベホマラーの戦闘行動ID
091FF5JSR $203DSR: $09203D指定呪文を覚えているか(該当c=on)
091FF8BCC #$06if(c==off) goto $092000
091FFALDA #$0020A=#$0020ベホマラー習得フラグON
091FFDTSB $2BB6A or $2BB6
092000LDA #$002BA=#$002Bベホマズンの戦闘行動ID
092003JSR $203DSR: $09203D指定呪文を覚えているか(該当c=on)
092006BCC #$06if(c==off) goto $09200E
092008LDA #$0040A=#$0040ベホマズン習得フラグON
09200BTSB $2BB6A or $2BB6
09200ELDA #$0046A=#$0046キアリーの戦闘行動ID
092011JSR $203DSR: $09203D指定呪文を覚えているか(該当c=on)
092014BCC #$06if(c==off) goto $09201C
092016LDA #$0002A=#$0002キアリー習得フラグON
092019TSB $2BB6A or $2BB6
09201CLDA #$0047A=#$0047キアリクの戦闘行動ID
09201FJSR $203DSR: $09203D指定呪文を覚えているか(該当c=on)
092022BCC #$06if(c==off) goto $09202A
092024LDA #$0001A=#$0001キアリク習得フラグON
092027TSB $2BB6A or $2BB6
09202ATXAA=X
09202BASLA<<1
09202CTAYY=A
09202DLDA $2BB6A=$2BB6
092030STA $2BE8,Y$2BE8+Y=A
092033INXX++
092034CPX $2BB2X>=$2BB2?人数分だけループ
092037BCS #$03if(c==on) goto $09203C
092039JMP $1F7E ($091F7E)goto $091F7E
09203CRTSreturn

ここではまず各キャラクターについてステータス及び各回復呪文の習得状態のチェックを行なってその結果をメモリにセットしています。このチェック結果に基づいて回復呪文の実行を決定していきます。単純にまんたんの時にベホマラー・ベホマズンを使わせたくない場合は、$091FF8、$092006のBCCをBRAに変えればベホマラー・ベホマズンを習得していても習得フラグが立たずに実行されなくなります。

コメント

  1. AKV より:

    3の「まんたん」は、ベホマラーを使ってオトクな場合が、全員にベホイミを使う場合だけなので(多分)、「まんたん」で使う呪文からベホマラー・ベホマズンをつぶして、使わなくすることで対処しちゃいました。
    ただそれだけだと、492さんの「専門職以外の回復魔法弱体化」が影響されていないようで、例えばベホマは一発で全快しちゃってます。Lv50賢者の消費MP3/4は有効でした。

    管理者より返信:

    その問題は認識していて現在リリースしている1.4.4で修正済みです。ベホマラー・ベホマズンを使わないことを前提にすればかなり処理が簡単になります。ベホイミ4回とベホマラー1回の消費MPの差は20と18で2しか違わないので習得レベルを考えるとこの際目をつぶってももあまり問題ないかと思います。

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