最近のDQではおなじみ(っていっても8以降はプレイしたことないんですが)、「強攻撃」(ダメージ1.25倍?)と「グループ攻撃」(ダメージ1/2で全員対象、低減あり)を戦闘行動に追加します。これらの行動で通常の直接攻撃を差し替えるとかなりモンスター行動のバリエーションが豊かになるのではないかと。本家では改変度合い強すぎてバランスが大きく変わってしまうために絶対導入されないと思いますが。「強攻撃」はどこの攻略サイトを見ても「ダメージが1.25倍」と説明されていて、「行動主体者の攻撃力1.25倍」とは書いてありません。つまり、結果として最終的に算出されるダメージが1.25倍になるということのようです。まあDQ6の実装を見ればいいのですが、時間もないので「ダメージ基礎値を1.25倍する」ことにします。「ダメージ基礎値」というのは攻撃力-守備力/2のことです。例外としてダメージ基礎値がマイナス(FFXX)の場合には1.25倍しません。
- SR: $02DBC9 直接攻撃(強)後半(新SR)
| 02DBC9 |
JSR $DBD0 |
SR: $02DBD0 |
直接攻撃(強)基本ダメージ計算 |
| 02DBCC |
JSR $8E70 |
SR: $028E70 |
ダメージ確定メイン |
| 02DBCF |
RTL |
return |
|
- SR: $02DBD0 直接攻撃(強)基本ダメージ計算(新SR)
| 02DBD0 |
LDX $23E4 |
X=$23E4 |
|
| 02DBD3 |
LDY $23E8 |
Y=$23E8 |
|
| 02DBD6 |
JSL $C2CA62 |
SR: $02CA62 引数:1#$2041 |
守備力取得 |
| 02DBDC |
LSR |
A>>1 |
|
| 02DBDD |
PHA |
Push A |
|
| 02DBDE |
JSL $C2CA5B |
SR: $02CA5B 引数:1#$203F |
攻撃力取得 |
| 02DBE4 |
STA $02 |
DP($02)=A |
|
| 02DBE6 |
PHA |
Push A |
|
| 02DBE7 |
LSR |
A>>1 |
|
| 02DBE8 |
LSR |
A>>1 |
|
| 02DBE9 |
LSR |
A>>1 |
|
| 02DBEA |
STA $04 |
DP($04)=A |
|
| 02DBEC |
PLA |
Pull A |
|
| 02DBED |
SEC |
c=on |
|
| 02DBEE |
SBC $01,S |
A-=(Stack($01)+c) |
ダメージ基礎値作成 |
| 02DBF0 |
BMI #$08 |
if(n==on) goto $02DBFA |
n=onになっていれば1.25倍化処理を飛ばす |
| 02DBF2 |
PHA |
Push A |
|
| 02DBF3 |
LSR |
A>>1 |
|
| 02DBF4 |
LSR |
A>>1 |
|
| 02DBF5 |
STA $00 |
DP($00)=A |
|
| 02DBF7 |
PLA |
Pull A |
|
| 02DBF8 |
ADC $00 |
A+=(DP($00)+c) |
ダメージ基礎値1.25倍 |
| 02DBFA |
STA $00 |
DP($00)=A |
|
| 02DBFC |
PLA |
Pull A |
|
| 02DBFD |
JSL $C2CAD9 |
SR: $02CAD9 引数:1#$203C 引数:2#$00FF |
|
| 02DC05 |
CMP #$0005 |
A>=#$0005? |
|
| 02DC08 |
BCS #$04 |
if(c==on) goto $02DC0E |
|
| 02DC0A |
JSR $8E0E |
SR: $028E0E |
|
| 02DC0D |
RTS |
return |
|
| 02DC0E |
JSR $8DEB |
SR: $028DEB |
|
| 02DC11 |
JSR $8E4A |
SR: $028E4A |
|
| 02DC14 |
RTS |
return |
|
- SR: $02E18B 直接攻撃(グループ)後半(新SR)
| 02E18B |
JSR $E192 |
SR: $02E192 |
直接攻撃(グループ)基本ダメージ計算 |
| 02E18E |
JSR $8E70 |
SR: $028E70 |
ダメージ確定メイン |
| 02E191 |
RTL |
return |
|
- SR: $02E192 直接攻撃(グループ)基本ダメージ計算(新SR)
| 02E192 |
LDX $23E4 |
X=$23E4 |
|
| 02E195 |
LDY $23E8 |
Y=$23E8 |
|
| 02E198 |
JSL $C2CA62 |
SR: $02CA62 引数:1#$2041 |
|
| 02E19E |
LSR |
A>>1 |
|
| 02E19F |
PHA |
Push A |
|
| 02E1A0 |
JSL $C2CA5B |
SR: $02CA5B 引数:1#$203F |
|
| 02E1A6 |
STA $02 |
DP($02)=A |
|
| 02E1A8 |
PHA |
Push A |
|
| 02E1A9 |
LSR |
A>>1 |
|
| 02E1AA |
LSR |
A>>1 |
|
| 02E1AB |
LSR |
A>>1 |
|
| 02E1AC |
STA $04 |
DP($04)=A |
|
| 02E1AE |
PLA |
Pull A |
|
| 02E1AF |
SEC |
c=on |
|
| 02E1B0 |
SBC $01,S |
A-=(Stack($01)+c) |
|
| 02E1B2 |
BMI #$01 |
if(n==on) goto $02E1B5 |
|
| 02E1B4 |
LSR |
A>>1 |
ダメージ基礎値0.5倍 |
| 02E1B5 |
STA $00 |
DP($00)=A |
|
| 02E1B7 |
PLA |
Pull A |
|
| 02E1B8 |
JSL $C2CAD9 |
SR: $02CAD9 引数:1#$203C 引数:2#$00FF |
|
| 02E1C0 |
CMP #$0005 |
A>=#$0005? |
|
| 02E1C3 |
BCS #$04 |
if(c==on) goto $02E1C9 |
|
| 02E1C5 |
JSR $8E0E |
SR: $028E0E |
|
| 02E1C8 |
RTS |
return |
|
| 02E1C9 |
JSR $8DEB |
SR: $028DEB |
|
| 02E1CC |
JSR $8E4A |
SR: $028E4A |
|
| 02E1CF |
RTS |
return |
|
| 028F4B |
JSR $E3F0 |
SR: $02E3F0 |
|
| 028F4E-55 |
NOP |
|
|
| 028F56 |
BCC #$1D |
if(c==off) goto $028F75 |
|
| 略 |
|
|
|
- SR: $02E3F0 戦闘行動が複数対象武器による低減対象か(該当c=on)
| 02E3F0 |
LDA $23EE |
A=$23EE |
|
| 02E3F3 |
CMP #$00AC |
A==#$00AC? |
グループ攻撃か |
| 02E3F6 |
BEQ #$16 |
if(z==on) goto $02E40E |
|
| 02E3F8 |
CMP #$00AD |
A==#$00AD? |
全体攻撃か |
| 02E3FB |
BEQ #$11 |
if(z==on) goto $02E40E |
|
| 02E3FD |
CMP #$0121 |
A==#$0121? |
げはげは笑いか |
| 02E400 |
BEQ #$0C |
if(z==on) goto $02E40E |
|
| 02E402 |
CMP #$012F |
A==#$012F? |
なぎはらいか |
| 02E405 |
BEQ #$07 |
if(z==on) goto $02E40E |
|
| 02E407 |
CMP #$0133 |
A==#$0133? |
|
| 02E40A |
BEQ #$02 |
if(z==on) goto $02E40E |
|
| 02E40C |
CLC |
c=off |
|
| 02E40D |
RTS |
return |
|
| 02E40E |
SEC |
c=on |
|
| 02E40F |
RTS |
return |
|
やっていることはほとんどSR: $028DA9 直接攻撃後半と同じです。ダメージ基礎値を作成したときにネガティブフラグを見ないで1.25倍、0.5倍してしまうと(おそらく倍化処理中にネガティブフラグがoffになるためか)ダメージが5桁に到達しておかしなことになってしまいます。ネガティブフラグがonになるということは攻撃対象者の守備力が攻撃主体者の攻撃力を大幅に上回っていることになるので、倍化をスキップしても問題はないと思われます。今回はグラコス専用の「げはげは笑いながらなぎはらい」と通常の「なぎはらい」をモンスター側の打撃系グループ攻撃としました。ただ、「げはげは笑い」はグラコス先生に敬意を払ってダメージ計算は通常攻撃のものを使用しています(つまり通常の「なぎはらい」よりも強い)。
というわけで、通常攻撃のパターンが2パターン増えました。実際には「強攻撃」には表示メッセージ(「○○は××をいきなり わしづかみにした!」)のバリエーションを増やしているので、効果は同じでもう何種類かの戦闘行動を定義しています。これを通常攻撃しかパターンがないモンスターに割り当てました。
コメント