耐性表示に立ちはだかったドラゴンキッズ!

文字列で表示していた見づらい耐性表示、これをすっきりとかつ機能的に見せるべく、耐性項目別の列として、こころセットの合計%値を表示するように次のようなコードで改善を試みました。

まずは、耐性一つずつ見ていきます。こころが4つあるので、それを順にみていくループで、こころが空でなければ(セットが4つではなく1~3つの場合もあるので)、当該耐性の値をToTalVに加算、ここまでは前回の文字列表示と同じです。異なるのは、その次のDoループ。TotalVが0より大きい場合、つまり耐性があった場合、その耐性項目名と耐性値を、結果一覧に表示するための配列Kekka2()に格納します。当該耐性が、既に格納済みの耐性と一致していたら、その耐性値に加算、そうでない、新しく登場した耐性値であれば、新たに耐性項目と耐性値を格納するというループです。最終的に値が0より大きい耐性がいくつあったか、変数i3に格納しています。この値は後ほどの処理、結果表示の際の列表示非表示設定で使用します。

前回の文字列表示よりコードも短くスッキリ!これで実際にうまくいったんですよ・・・やつが登場するまでは。そう、やつの名はドラゴンキッズ。

ガオー!
ドラゴンゾンビへの耐性+10%


耐性が「ドラゴンゾンビへの耐性+10%」?、こんな特殊な耐性項目はありません。あるとしたら、こころ全種類の耐性項目を新設せねばならなくなり、とんでもないことです。実は、こころマクロで利用させていただいている、心の一覧データを公開されている「ドラクエウォークVIEW」さんでは、そのあたり適切に表現されいて「特定耐性」という項目を設け、その値として「ドラゴンゾンビへの耐性+10%」という文字列が表記されています。
https://dqw-view.com/kokoro/

耐性値が数字という前提で加算している次の処理において、文字列が混在することでエラーが発生してしまうのです。

可愛い顔して、おそるべし「ドラゴンキッズ」・・・・
というわけで、「ドラゴンゾンビへの耐性+10%」のような文字列から10%を取り出すことに、またこれらは「ドラゴンゾンビへの耐性+10%、ヘルジュラシックへの耐性+10%」のように複数存在することもあるので、ループで処理する必要もありました。

耐性値が数字でないなら、ドラゴンキッズのようなパターンと判断し、「+」と「%」の間にある数字を探して取得してTotalVに加算、次の「%」が見つからなくなるまで繰り返すループ処理です。取り出した数字は整数となるので、0.01を乗算し%として計算できるようにしています。

今のところ、これらの特殊な特定まものに対する耐性を持つこころは「ドラゴンキッズ」と「りゅうせんし」だけでした。いやあ、良く気づけたな、これ。ということで、完成した耐性一覧はこんな感じ。

値がある耐性のみ、整然と並んでいます

うん!スッキリ!耐性項目名をダブルクリックしてソートもできます。耐性数値表示にも対応した「こころマクロ」ダウンロードはこちらからどうぞ。

ダウンロードはこちらの記事から(ファイルは随時更新中)

コメント

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