アーカイブドキュメントDQ DQのデータ等

1. SFC版DQ1のステータス決定ルーチン

DQ1の勇者が名前で強さが変わるのは有名な話だと思います。
公式ガイドブックにも計算式が載っているので試した人も多いコトでしょう。
でもSFC版だと微妙に間違ってるのをDQ1(SFC版)強さ判断プログラム作成中に気付いたので、メモしておきます。

(1) まず名前を数字に変換

勇者の名前を一文字ずつ数字に変換して、全て足します。
対応表は以下の通りです。
SFC版DQ1 勇者の名前文字変換表
文字          
             
 
 
数字0123456789101112131415
例: 「ゆうしゃ」なら「ゆ: 15」+「う: 13」+「し: 6」+「ゃ: 10」= 44 となります。

(2) 合計を16で割る

上記の表で求めた合計の数字を16で割り、その余りを求めます。
なお、名前が3文字以下の場合は自動的に余りが「15」となります。
求めた余りの数で、下記表から初期ステータス&成長タイプがわかります。
「A」が成長が早く、「B」が成長が遅いタイプです。
SFC版DQ1 成長タイプ判別表
余り0123456789101112131415
ちから6767676767676767
BABABABABABABABA
すばやさ6565656565656565
BBAABBAABBAABBAA
みのまもり3232323232323232
BBAABBAABBAABBAA
最大HP15151616151513131515141415151515
AABBAABBAABBAABB
LV3の最大MP4444444444444444
ABABABABABABABAB
例: 「ゆうしゃ」なら44 ÷ 16 = 2 余り 12 となります。
余りが12の場合はちから: 6(Bタイプ)、すばやさ: 6(Bタイプ)、みのまもり: 3(Bタイプ)、最大HP: 15(Aタイプ)、レベル3の最大MP: 4(Aタイプ)の勇者になります。
ゆうしゃ
レベル:1
ちから:6Bタイプ
すばやさ:6Bタイプ
みのまもり:3Bタイプ
さいだいHP:15Aタイプ
さいだいMP:0Aタイプ
Ex:0
 勇者「ゆうしゃ」のステータス
「アルス」なら3文字以下なので、自動的に余り 15 となります。
余りが15の場合はちから: 7(Aタイプ)、すばやさ: 5(Aタイプ)、みのまもり: 2(Aタイプ)、最大HP: 15(Bタイプ)、レベル3の最大MP: 4(Bタイプ)の勇者になります。
アルス
レベル:1
ちから:7Aタイプ
すばやさ:5Aタイプ
みのまもり:2Aタイプ
さいだいHP:15Bタイプ
さいだいMP:0Bタイプ
Ex:0
 勇者「アルス」のステータス

(3) しかし罠があった

上記が公式ガイドブックの解説です。
素直に考えると「これで、勝ったも同然!」なんですが、微妙に罠が潜んでいます。
例えば勇者の名前を「ガボ」にした場合はどうなるでしょうか?
「ガ」「ボ」だから2文字で、3文字以下なので余りは15
それとも「カ: 2」+「゛: 15」+「ホ: 10」+「゛: 15」= 42 ÷ 16 = 2 余り 10
この場合は後者で、FC版と同じような文字の数え方で余りは12となります。
勇者「ガボ」のステータス
そうなると「パパス」=「ハ: 6」+「゜: 14」+「ハ: 6」+「゜: 14」+「ス: 9」= 46 ÷ 16 = 2 余り 14
と考えられるのですが、実際は4文字目までしか判定に使っていません。
したがって「パパス」=「ハ: 6」+「゜: 14」+「ハ: 6」+「゜: 14」= 40 ÷ 16 = 2 余り 8 となります。
勇者「パパス」のステータス
同様に「ルイーダ」=「ル: 5」+「イ: 14」+「ー: 3」+「タ: 12」= 34 ÷ 16 = 2 余り 2 となります。
勇者「ルイーダ」のステータス
手計算で好みのキャラを作るも良し、プログラム使うのも良し…でしょう。
ところで手持ちの公式ガイドブックが初版なんですが、第2刷以降は訂正されてたり…しないよね?

(4) 参考資料

ドラゴンクエストI・II 公式ガイドブック エニックス刊 ISBN4-87025-741-6
より「名前による成長の変化」


2. スマホ版DQ1のステータス決定ルーチン

スマホ版DQ1でも勇者の名前で強さが変わります。
SFC版と同じかと思いましたが、使える文字が増えた分微妙に違ってました。

(1) まず名前を数字に変換

勇者の名前を一文字ずつ数字に変換して、全て足します。
対応表は以下の通りです。
スマホ版DQ1 勇者の名前文字変換表
文字          
             
 
 
           
             
              
               
               
               
               
               
数字0123456789101112131415
例: 「ゆうしゃ」なら「ゆ: 15」+「う: 13」+「し: 6」+「ゃ: 10」= 44 となります。

しかし増えた文字の割り当てが適当に思える。

(2) 合計を16で割る

上記の表で求めた合計の数字を16で割り、その余りを求めます。
なお、名前が3文字以下の場合は自動的に余りが「15」となります。
求めた余りの数で、下記表から初期ステータス&成長タイプがわかります。
「A」が成長が早く、「B」が成長が遅いタイプです。
スマホ版DQ1 成長タイプ判別表
余り0123456789101112131415
ちから6767676767676767
BABABABABABABABA
すばやさ6565656565656565
BBAABBAABBAABBAA
みのまもり3232323232323232
BBAABBAABBAABBAA
最大HP15151616151513131515141415151515
AABBAABBAABBAABB
LV3の最大MP4444444444444444
ABABABABABABABAB
例: 「ゆうしゃ」なら44 ÷ 16 = 2 余り 12 となります。
余りが12の場合はちから: 6(Bタイプ)、すばやさ: 6(Bタイプ)、みのまもり: 3(Bタイプ)、最大HP: 15(Aタイプ)、レベル3の最大MP: 4(Aタイプ)の勇者になります。
ゆうしゃ
レベル:1
ちから:6Bタイプ
すばやさ:6Bタイプ
みのまもり:3Bタイプ
さいだいHP:15Aタイプ
さいだいMP:0Aタイプ
Ex:0
 勇者「ゆうしゃ」のステータス
「アルス」なら3文字以下なので、自動的に余り 15 となります。
余りが15の場合はちから: 7(Aタイプ)、すばやさ: 5(Aタイプ)、みのまもり: 2(Aタイプ)、最大HP: 15(Bタイプ)、レベル3の最大MP: 4(Bタイプ)の勇者になります。
アルス
レベル:1
ちから:7Aタイプ
すばやさ:5Aタイプ
みのまもり:2Aタイプ
さいだいHP:15Bタイプ
さいだいMP:0Bタイプ
Ex:0
 勇者「アルス」のステータス

実際の所はこの通りの成長をするかまでは調べていません。
初期ステータスは一通り同じコトは確認しています。

(3) ツッコミどころ

濁音、半濁音を2文字と数えるのはSFC版と一緒。
ただし「ヴ」だけは「ウ: 15」+「゛: 15」= 30 とはならずに一文字と数えて「ヴ: 0」なのです。
その他の追加された文字「.」「…」「?」「!」も全て「0」。
とりあえず「使える文字が増えました!」感があるなぁ。
「ぁ」「ァ」なんかも「あ」「ア」と同じだし。
判定に使用する文字数も4つまでで同じでした。
基本的に文字の数字変換だけを調べれば良かったので楽だったんですけどね。

(4) 参考資料

ドラゴンクエストI・II 公式ガイドブック エニックス刊 ISBN4-87025-741-6
より「名前による成長の変化」


3. FC版DQ2の仲間の名前決定ルーチン

DQ2をやっていればローレシアの王子の名前でサマルトリアの王子とムーンブルクの王女の名前が変わるのは当たり前のコトだと思います。
どこかよそで解説してそうですが、気にせず解説してしまいます。(オイ)

(1) まず名前を数字に変換

ローレシアの王子の名前を一文字ずつ数字に変換して、全て足します。
2文字以上の名前の場合はその足した数から1引きます。
対応表は以下の通りです。
FC版DQ2 ローレシアの王子の名前文字変換表
文字
数字434445464748495051525354555657
文字
数字5859606162636412345678
文字
数字91011121314151617181920212223
文字        
数字24252627281314        
例: 「ろらん」なら「ろ: 21」+「ら: 17」+「ん: 24」- 1 = 61 となります。

(2) 合計を63以下になるまで64を引く

上記の表で求めた数が64以上なら、63以下になるまで64を引き続けます。
その63以下になった数と下記表からサマルトリアの王子とムーンブルクの王女がわかります。
FC版DQ2 サマ王子・ムン王女名前判別表
サマルトリアの王子

ムーンブルクの王女
トンヌラすけさんパウロランドカインアーサーコナンクッキー
アイリン435159311192735
マリア445260412202836
ナナ455361513212937
あきな465462614223038
プリン475563715233139
まいこ48560816243240
リンダ49571917253341
サマンサ505821018263442
例: 「ろらん」なら 61 なので、サマ王子「パウロ」、ムン王女「ナナ」となります。
なまえLVHPMP
 ろらん502400
 パウロ45200160
 ナナ35180210
 「ろらん」と仲間たち

(3) 逆算してみる

ローレシアの王子の名前を決めてる時は計算するなり、プログラムを使うなりで良いと思います。
…が、逆にサマ王子とムン王女の名前を狙い撃ちしたい場合は逆算する必要があります。
例: サマ王子「クッキー」、ムン王女「プリン」したい場合は合計の数字が 39 になります。
  1文字で 39 になる文字は無いので、計算結果で 39 になるような文字を選びます。
  簡単なのは 「39 = x + y - 1」 となるような2文字を選ぶコトでしょうか。
  「ろ: 21」+「る: 19」- 1 = 39 となるので、ローレシアの王子「ろる」だと望みのパーティになるハズです。
なまえLVHPMP
 ろる502400
 クッキー45200160
 プリン35180210
 「ろる」と仲間たち

(4) 逆算用プログラム

この計算が面倒なので、これもプログラムにしてみたいと思います。
数学がダメな理系(爆)ですが、「組み合わせ」で行けば良いくらいはわかります。
以下、ローレシアの王子が3文字の場合に望みの仲間の名前を導き出せるプログラムのソース(Perl)です。
#!/usr/local/bin/perl

require "cgi-lib.pl";
&ReadParse;
$name5 = $in{"name5"};
# 組み合わせ用モジュールを読み込む
use lib qw(.);
use Math::Combinatorics;

# 名前選択部分表示
print "Content-type: text/html\n\n";
print << "EOM";
<HTML>
<HEAD><TITLE>DQ2名前判断プログラム</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=EUC">
</HEAD>
<BODY BGCOLOR="#000000" TEXT="#FFFFFF" ALINK="#FFD8A0" VLINK="#FF7830">
<FONT SIZE=5>DQ2(FC版)名前判断プログラム</FONT> <SMALL>FC版DQ2のサマ王子・ムン王女の名前がわかります</SMALL>
<HR>
<FORM METHOD="POST" ACTION="dq2x.cgi">
<TABLE BORDER>
<TR><TH></TH><TH>トンヌラ</TH><TH>すけさん</TH><TH>パウロ</TH><TH>ランド</TH><TH>カイン</TH><TH>アーサー</TH><TH>コナン</TH><TH>クッキー</TH>
<TR><TH>アイリン</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="43"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="51"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="59"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="3"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="11"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="19"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="27"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="35"></TD>
<TR><TH>マリア</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="44"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="52"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="60"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="4"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="12"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="20"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="28"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="36"></TD>
<TR><TH>ナナ</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="45"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="53"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="61"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="5"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="13"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="21"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="29"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="37"></TD>
<TR><TH>あきな</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="46"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="54"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="62"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="6"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="14"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="22"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="30"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="38"></TD>
<TR><TH>プリン</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="47"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="55"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="63"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="7"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="15"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="23"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="31"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="39"></TD>
<TR><TH>まいこ</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="48"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="56"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="0"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="8"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="16"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="24"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="32"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="40"></TD>
<TR><TH>リンダ</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="49"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="57"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="1"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="9"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="17"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="25"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="33"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="41"></TD>
<TR><TH>サマンサ</TH><TD><INPUT TYPE=RADIO NAME="name5" VALUE="50"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="58"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="2"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="10"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="18"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="26"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="34"></TD><TD><INPUT TYPE=RADIO NAME="name5" VALUE="42"></TD>
</TABLE>
<INPUT TYPE="reset" VALUE="もどる">
<INPUT TYPE="submit" VALUE="おわり">
</FORM>
EOM

# 計算に使う文字の定義
my @n = qw(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64);

# 3文字抜き出す
my @c = combine(3,@n);

$num = @c;
$i = 0;
@name = ();

# 総当たりで計算して合致した場合のみ出力する
while ($i <= $num){
    @name[$i] = map { @$_[0]+@$_[1]+@$_[2]+@$_[3] } @c[$i];
    $name6 = $name[$i];
    $name6 = ($name6 - 1) % 64;
    if($name5 == $name6){
    print map { join " ", @$_ } @c[$i];
    print "<br>\n";
    }
    $i++;
}

print << "EOM";
</BODY>
</HTML>
EOM
ま、結果は組み合わせの数字が出るだけなんですけどね。
※下記はサマ王子が「クッキー」、ムン王女が「プリン」となる「39」の場合の組み合わせ。

この結果を文字に置換して…と思ってたんですが、4文字対応にするとムチャクチャ重くなる。
マルチスレッド対応も考えましたが、なかなか難しそうなので断念。
ステキプログラマーの方、後はよろしくお願い致します。(爆)

(5) 参考資料

ファミリーコンピュータMagazine増刊 合本 ドラゴンクエストII 悪霊の神々 必勝ガイド
より「超ウルトラ技50+1 Part3」の特別技「ひとりめの名前であとのふたりの名前もわかる!」


4. SFC版DQ2の仲間の名前決定ルーチン

SFC版DQ2でもローレシアの王子の名前でサマルトリアの王子とムーンブルクの王女の名前が変わります。
ただSFC版は裏技でずっと変えられるし、カタカナも使えるので最初に苦労する必要はあまり無い気がします。
それでも調べてみたいと思うのが漢のロマンなのです。(オイ)

(1) まず名前を数字に変換

FC版と同じようにローレシアの王子の名前を一文字ずつ数字に変換して、全て足します。
対応表は以下の通りです。
SFC版DQ2 ローレシアの王子の名前文字変換表
文字
数字18192021222324252627282930313233343536373839404142
文字
数字43444546474849505152535455565758596061636364123
文字
数字45678910111213141516171819202122232425262728
文字
数字29303132333435363738394041424344454647484950515253
文字
数字26272829303132333435363738394046474849504546474849
文字
数字12131415161718192021222324252632333435363132333435
文字                        
数字58                        
例: 「ロラン」なら「ロ: 46」+「ラ: 42」+「ン: 49」= 137 となります。

(2) 名前の文字数からある数を引く

ローレシアの王子の名前が4文字なら「9」、3文字なら「6」、2文字なら「3」、1文字なら「0」を合計から引きます。
例: 「ロラン」なら3文字なので、137 - 6 = 131 となります。

(3) 合計を63以下になるまで64を引く

前述の数が64以上なら、63以下になるまで64を引き続けます。
その63以下になった数と下記表からサマルトリアの王子とムーンブルクの王女がわかります。
SFC版DQ2 サマ王子・ムン王女名前判別表
サマルトリアの王子

ムーンブルクの王女
トンヌラすけさんパウロランドカインアーサーコナンクッキー
アイリン435159311192735
マリア445260412202836
ナナ455361513212937
あきな465462614223038
プリン475563715233139
まいこ48560816243240
リンダ49571917253341
サマンサ505821018263442
例: 「ロラン」なら 3 なので、サマ王子「ランド」、ムン王女「アイリン」となります。
なまえLVHPMP
 ロラン502400
 ランド45200160
 アイリン35180210
 「ロラン」と仲間たち

(4) 参考資料

ファミリーコンピュータMagazine増刊 合本 ドラゴンクエストII 悪霊の神々 必勝ガイド
より「超ウルトラ技50+1 Part3」の特別技「ひとりめの名前であとのふたりの名前もわかる!」


[スットン共和国] / [国連G対策センター] / アーカイブドキュメントDQ