ドラクエウォークのサブコンテンツ「あるくんですw」にドラクエ2ストーリーが追加され、70万歩に到達すると「いなずまの剣」が入手でき、さらに周回することで最大5本手に入れることができるといいます。必要な歩数は70万歩×5周=350万歩!私はというと現在の累計歩数が610万歩、累計ログイン日数が660日なので、1年以上かかる何とも遠大な報酬ですが、今回驚いたのはそこではなく、武器のスキル、これほんとビビりました。メインスキルである「まとい三閃斬り」はなんと3種類もの属性が複合した斬撃となっていたのです。最適なこころシミュレーションする者にとっては非常に頭の痛いスキルです。
というのも過去に複数の属性を組み合わせる武器は唯一「クレセントムーン」だけが存在し、そのメインスキルである「しおさいのセレナーデ」は「敵全体に160%のバギ属性体技ダメージと160%の体技ダメージを与え、ショータイム発動時に仲間全員のHPを20回復」というもの。火力シミュレーションする際、通常の武器であれば1種類の属性ダメージアップ率を掛け合わせればよいのですが、2種類の属性複合となるとその処理を2回行わなければならず、「こころ」によってダメージアップする属性が個別に定められているため計算が面倒になるわけです。この「しおさいのセレナーデ」、あのコロドラさんですら「未対応」(2021/07/10時点)となっているくらい厄介なんですね。
「しおさいのセレナーデ」、当方の「こころマクロ」では、例外として計算処理を分岐、なんとか対応していました。こんな感じです。ちなみに、最後の乗算に使用しているTUpはアバン先生のためのものです。
1 2 3 4 |
Dmg(r, 5) = Round(((攻撃力 + Kihon) / 2 - 守備力 / 4) * スキル倍率(1) * (1 + DUp) * (1 + ZUp) * (1 + KUp) * (1 + TUp), 0) If 複合F Then Dmg(r, 5) = Dmg(r, 5) + Round(((攻撃力 + Kihon) / 2 - 守備力 / 4) * スキル倍率(2) * (1 + DUp) * (1 + ZUp2) * (1 + KUp) * (1 + TUp), 0) End If |
それが「いなずまの剣」は、2種のみならず3種!「バギ」「イオ」「デイン」それぞれのアップ率によるダメージを計算し、合算しなければならない!
この武器を見た瞬間思いましたね。これは対応せねばなるまいと。それも例外処理で逃げるのではなく、3種だろうが7種だろうが増えた分だけ計算できるロジックとせねばなるまいと。そして出来上がった処理はこんな感じです
1 2 3 4 |
KihonDmg(1) = (攻撃力 + Kihon) / 2 - 守備力 / 4 '既存配列変数を流用(配列に意味はなし) For i6 = 1 To 3 '属性複合対応 Dmg(r, 5) = Dmg(r, 5) + Round(KihonDmg(1) * スキル倍率(i6) * (1 + DUp) * (1 + Zup(i6)) * (1 + KUp) * (1 + TUp), 0) Next i6 |
ほとんど変わってないじゃん!いやいやここに至るまでは色々考えたのですよ。属性ダメージアップ変数を配列として、複数分の値を格納しループで処理できるようにしました。いやあスッキリした!
実際にバトルマスターでシミュレーションしてみると、バギ属性ダメージアップを持つ「ヘルコンドル」やイオ属性ダメージアップを持つ「アークデーモン」などが、しっかりと上位にセットされています。よし、これでもう、何種類の属性が来ても大丈夫だ!
コメント