// ==UserScript==
// @name xpd
// @namespace http://d.hatena.ne.jp/gengar/
// @description GLCのパーティ構築システムの一括変更を使いやすくするスクリプト
// @include http://psense.lib.net/_/PDINPUT.cgi*
//
// ==/UserScript==
/*
* version 1.3.3
* Copyright (C) 2009-2010 kaki
*/
var $w = window.wrappedJSObject || window;
var $d = document.wrappedJSObject || document;
if (!$d.forms[0].S2) throw "一括変更で使用して下さい.";
if (window.xpd) throw "二重に実行しようとしました.";
var xpd = $w.xpd = {
version: "1.3.3"
};
var browser = {
camino: false,
firefox: false,
safari: false,
msie: false
};
if (navigator.userAgent.indexOf("Camino") != -1) {
browser.camino = true;
}
else if (navigator.userAgent.indexOf("Firefox") != -1) {
browser.firefox = true;
}
else if (navigator.userAgent.indexOf("Safari") != -1) {
browser.safari = true;
}
else if (navigator.userAgent.indexOf("MSIE") != -1) {
browser.msie = true;
}
var platform = {
windows: false,
macosx: false
};
if (navigator.userAgent.indexOf("Windows") != -1) {
platform.windows = true;
}
else if (navigator.userAgent.indexOf("Mac OS X") != -1) {
platform.macosx = true;
}
var pref = new function() {};
xpd.pref = pref;
pref.defaults = pref.constructor.prototype;
function PokeData(name, hp, spd, female) {
this.name = name;
this.hp = hp;
this.spd = spd;
this.female = female;
}
var pokelist = new Array;
pokelist[1] = new PokeData("フシギダネ", 45, 45, 2);
pokelist[2] = new PokeData("フシギソウ", 60, 60, 2);
pokelist[3] = new PokeData("フシギバナ", 80, 80, 2);
pokelist[4] = new PokeData("ヒトカゲ", 39, 65, 2);
pokelist[5] = new PokeData("リザード", 58, 80, 2);
pokelist[6] = new PokeData("リザードン", 78, 100, 2);
pokelist[7] = new PokeData("ゼニガメ", 44, 43, 2);
pokelist[8] = new PokeData("カメール", 59, 58, 2);
pokelist[9] = new PokeData("カメックス", 79, 78, 2);
pokelist[10] = new PokeData("キャタピー", 45, 45, 8);
pokelist[11] = new PokeData("トランセル", 50, 30, 8);
pokelist[12] = new PokeData("バタフリー", 60, 70, 8);
pokelist[13] = new PokeData("ビードル", 40, 50, 8);
pokelist[14] = new PokeData("コクーン", 45, 35, 8);
pokelist[15] = new PokeData("スピアー", 65, 75, 8);
pokelist[16] = new PokeData("ポッポ", 40, 56, 8);
pokelist[17] = new PokeData("ピジョン", 63, 71, 8);
pokelist[18] = new PokeData("ピジョット", 83, 91, 8);
pokelist[19] = new PokeData("コラッタ", 30, 72, 8);
pokelist[20] = new PokeData("ラッタ", 55, 97, 8);
pokelist[21] = new PokeData("オニスズメ", 40, 70, 8);
pokelist[22] = new PokeData("オニドリル", 65, 100, 8);
pokelist[23] = new PokeData("アーボ", 35, 55, 8);
pokelist[24] = new PokeData("アーボック", 60, 80, 8);
pokelist[25] = new PokeData("ピカチュウ", 35, 90, 8);
pokelist[26] = new PokeData("ライチュウ", 60, 100, 8);
pokelist[27] = new PokeData("サンド", 50, 40, 8);
pokelist[28] = new PokeData("サンドパン", 75, 65, 8);
pokelist[29] = new PokeData("ニドラン♀", 55, 41, 16);
pokelist[30] = new PokeData("ニドリーナ", 70, 56, 16);
pokelist[31] = new PokeData("ニドクイン", 90, 76, 16);
pokelist[32] = new PokeData("ニドラン♂", 46, 50, 0);
pokelist[33] = new PokeData("ニドリーノ", 61, 65, 0);
pokelist[34] = new PokeData("ニドキング", 81, 85, 0);
pokelist[35] = new PokeData("ピッピ", 70, 35, 12);
pokelist[36] = new PokeData("ピクシー", 95, 60, 12);
pokelist[37] = new PokeData("ロコン", 38, 65, 12);
pokelist[38] = new PokeData("キュウコン", 73, 100, 12);
pokelist[39] = new PokeData("プリン", 115, 20, 12);
pokelist[40] = new PokeData("プクリン", 140, 45, 12);
pokelist[41] = new PokeData("ズバット", 40, 55, 8);
pokelist[42] = new PokeData("ゴルバット", 75, 90, 8);
pokelist[43] = new PokeData("ナゾノクサ", 45, 30, 8);
pokelist[44] = new PokeData("クサイハナ", 60, 40, 8);
pokelist[45] = new PokeData("ラフレシア", 75, 50, 8);
pokelist[46] = new PokeData("パラス", 35, 25, 8);
pokelist[47] = new PokeData("パラセクト", 60, 30, 8);
pokelist[48] = new PokeData("コンパン", 60, 45, 8);
pokelist[49] = new PokeData("モルフォン", 70, 90, 8);
pokelist[50] = new PokeData("ディグダ", 10, 95, 8);
pokelist[51] = new PokeData("ダグトリオ", 35, 120, 8);
pokelist[52] = new PokeData("ニャース", 40, 90, 8);
pokelist[53] = new PokeData("ペルシアン", 65, 115, 8);
pokelist[54] = new PokeData("コダック", 50, 55, 8);
pokelist[55] = new PokeData("ゴルダック", 80, 85, 8);
pokelist[56] = new PokeData("マンキー", 40, 70, 8);
pokelist[57] = new PokeData("オコリザル", 65, 95, 8);
pokelist[58] = new PokeData("ガーディ", 55, 60, 4);
pokelist[59] = new PokeData("ウインディ", 90, 95, 4);
pokelist[60] = new PokeData("ニョロモ", 40, 90, 8);
pokelist[61] = new PokeData("ニョロゾ", 65, 90, 8);
pokelist[62] = new PokeData("ニョロボン", 90, 70, 8);
pokelist[63] = new PokeData("ケーシィ", 25, 90, 4);
pokelist[64] = new PokeData("ユンゲラー", 40, 105, 4);
pokelist[65] = new PokeData("フーディン", 55, 120, 4);
pokelist[66] = new PokeData("ワンリキー", 70, 35, 4);
pokelist[67] = new PokeData("ゴーリキー", 80, 45, 4);
pokelist[68] = new PokeData("カイリキー", 90, 55, 4);
pokelist[69] = new PokeData("マダツボミ", 50, 40, 8);
pokelist[70] = new PokeData("ウツドン", 65, 55, 8);
pokelist[71] = new PokeData("ウツボット", 80, 70, 8);
pokelist[72] = new PokeData("メノクラゲ", 40, 70, 8);
pokelist[73] = new PokeData("ドククラゲ", 80, 100, 8);
pokelist[74] = new PokeData("イシツブテ", 40, 20, 8);
pokelist[75] = new PokeData("ゴローン", 55, 35, 8);
pokelist[76] = new PokeData("ゴローニャ", 80, 45, 8);
pokelist[77] = new PokeData("ポニータ", 50, 90, 8);
pokelist[78] = new PokeData("ギャロップ", 65, 105, 8);
pokelist[79] = new PokeData("ヤドン", 90, 15, 8);
pokelist[80] = new PokeData("ヤドラン", 95, 30, 8);
pokelist[81] = new PokeData("コイル", 25, 45, -1);
pokelist[82] = new PokeData("レアコイル", 50, 70, -1);
pokelist[83] = new PokeData("カモネギ", 52, 60, 8);
pokelist[84] = new PokeData("ドードー", 35, 75, 8);
pokelist[85] = new PokeData("ドードリオ", 60, 100, 8);
pokelist[86] = new PokeData("パウワウ", 65, 45, 8);
pokelist[87] = new PokeData("ジュゴン", 90, 70, 8);
pokelist[88] = new PokeData("ベトベター", 80, 25, 8);
pokelist[89] = new PokeData("ベトベトン", 105, 50, 8);
pokelist[90] = new PokeData("シェルダー", 30, 40, 8);
pokelist[91] = new PokeData("パルシェン", 50, 70, 8);
pokelist[92] = new PokeData("ゴース", 30, 80, 8);
pokelist[93] = new PokeData("ゴースト", 45, 95, 8);
pokelist[94] = new PokeData("ゲンガー", 60, 110, 8);
pokelist[95] = new PokeData("イワーク", 35, 70, 8);
pokelist[96] = new PokeData("スリープ", 60, 42, 8);
pokelist[97] = new PokeData("スリーパー", 85, 67, 8);
pokelist[98] = new PokeData("クラブ", 30, 50, 8);
pokelist[99] = new PokeData("キングラー", 55, 75, 8);
pokelist[100] = new PokeData("ビリリダマ", 40, 100, -1);
pokelist[101] = new PokeData("マルマイン", 60, 140, -1);
pokelist[102] = new PokeData("タマタマ", 60, 40, 8);
pokelist[103] = new PokeData("ナッシー", 95, 55, 8);
pokelist[104] = new PokeData("カラカラ", 50, 35, 8);
pokelist[105] = new PokeData("ガラガラ", 60, 45, 8);
pokelist[106] = new PokeData("サワムラー", 50, 87, 0);
pokelist[107] = new PokeData("エビワラー", 50, 76, 0);
pokelist[108] = new PokeData("ベロリンガ", 90, 30, 8);
pokelist[109] = new PokeData("ドガース", 40, 35, 8);
pokelist[110] = new PokeData("マタドガス", 65, 60, 8);
pokelist[111] = new PokeData("サイホーン", 80, 25, 8);
pokelist[112] = new PokeData("サイドン", 105, 40, 8);
pokelist[113] = new PokeData("ラッキー", 250, 50, 16);
pokelist[114] = new PokeData("モンジャラ", 65, 60, 8);
pokelist[115] = new PokeData("ガルーラ", 105, 90, 16);
pokelist[116] = new PokeData("タッツー", 30, 60, 8);
pokelist[117] = new PokeData("シードラ", 55, 85, 8);
pokelist[118] = new PokeData("トサキント", 45, 63, 8);
pokelist[119] = new PokeData("アズマオウ", 80, 68, 8);
pokelist[120] = new PokeData("ヒトデマン", 30, 85, -1);
pokelist[121] = new PokeData("スターミー", 60, 115, -1);
pokelist[122] = new PokeData("バリヤード", 40, 90, 8);
pokelist[123] = new PokeData("ストライク", 70, 105, 8);
pokelist[124] = new PokeData("ルージュラ", 65, 95, 16);
pokelist[125] = new PokeData("エレブー", 65, 105, 4);
pokelist[126] = new PokeData("ブーバー", 65, 93, 4);
pokelist[127] = new PokeData("カイロス", 65, 85, 8);
pokelist[128] = new PokeData("ケンタロス", 75, 110, 0);
pokelist[129] = new PokeData("コイキング", 20, 80, 8);
pokelist[130] = new PokeData("ギャラドス", 95, 81, 8);
pokelist[131] = new PokeData("ラプラス", 130, 60, 8);
pokelist[132] = new PokeData("メタモン", 48, 48, -1);
pokelist[133] = new PokeData("イーブイ", 55, 55, 2);
pokelist[134] = new PokeData("シャワーズ", 130, 65, 2);
pokelist[135] = new PokeData("サンダース", 65, 130, 2);
pokelist[136] = new PokeData("ブースター", 65, 65, 2);
pokelist[137] = new PokeData("ポリゴン", 65, 40, -1);
pokelist[138] = new PokeData("オムナイト", 35, 35, 2);
pokelist[139] = new PokeData("オムスター", 70, 55, 2);
pokelist[140] = new PokeData("カブト", 30, 55, 2);
pokelist[141] = new PokeData("カブトプス", 60, 80, 2);
pokelist[142] = new PokeData("プテラ", 80, 130, 2);
pokelist[143] = new PokeData("カビゴン", 160, 30, 2);
pokelist[144] = new PokeData("フリーザー", 90, 85, -1);
pokelist[145] = new PokeData("サンダー", 90, 100, -1);
pokelist[146] = new PokeData("ファイヤー", 90, 90, -1);
pokelist[147] = new PokeData("ミニリュウ", 41, 50, 8);
pokelist[148] = new PokeData("ハクリュー", 61, 70, 8);
pokelist[149] = new PokeData("カイリュー", 91, 80, 8);
pokelist[150] = new PokeData("ミュウツー", 106, 130, -1);
pokelist[151] = new PokeData("ミュウ", 100, 100, -1);
pokelist[152] = new PokeData("チコリータ", 45, 45, 2);
pokelist[153] = new PokeData("ベイリーフ", 60, 60, 2);
pokelist[154] = new PokeData("メガニウム", 80, 80, 2);
pokelist[155] = new PokeData("ヒノアラシ", 39, 65, 2);
pokelist[156] = new PokeData("マグマラシ", 58, 80, 2);
pokelist[157] = new PokeData("バクフーン", 78, 100, 2);
pokelist[158] = new PokeData("ワニノコ", 50, 43, 2);
pokelist[159] = new PokeData("アリゲイツ", 65, 58, 2);
pokelist[160] = new PokeData("オーダイル", 85, 78, 2);
pokelist[161] = new PokeData("オタチ", 35, 20, 8);
pokelist[162] = new PokeData("オオタチ", 85, 90, 8);
pokelist[163] = new PokeData("ホーホー", 60, 50, 8);
pokelist[164] = new PokeData("ヨルノズク", 100, 70, 8);
pokelist[165] = new PokeData("レディバ", 40, 55, 8);
pokelist[166] = new PokeData("レディアン", 55, 85, 8);
pokelist[167] = new PokeData("イトマル", 40, 30, 8);
pokelist[168] = new PokeData("アリアドス", 70, 40, 8);
pokelist[169] = new PokeData("クロバット", 85, 130, 8);
pokelist[170] = new PokeData("チョンチー", 75, 67, 8);
pokelist[171] = new PokeData("ランターン", 125, 67, 8);
pokelist[172] = new PokeData("ピチュー", 20, 60, 8);
pokelist[173] = new PokeData("ピィ", 50, 15, 12);
pokelist[174] = new PokeData("ププリン", 90, 15, 12);
pokelist[175] = new PokeData("トゲピー", 35, 20, 2);
pokelist[176] = new PokeData("トゲチック", 55, 40, 2);
pokelist[177] = new PokeData("ネイティ", 40, 70, 8);
pokelist[178] = new PokeData("ネイティオ", 65, 95, 8);
pokelist[179] = new PokeData("メリープ", 55, 35, 8);
pokelist[180] = new PokeData("モココ", 70, 45, 8);
pokelist[181] = new PokeData("デンリュウ", 90, 55, 8);
pokelist[182] = new PokeData("キレイハナ", 75, 50, 8);
pokelist[183] = new PokeData("マリル", 70, 40, 8);
pokelist[184] = new PokeData("マリルリ", 100, 50, 8);
pokelist[185] = new PokeData("ウソッキー", 70, 30, 8);
pokelist[186] = new PokeData("ニョロトノ", 90, 70, 8);
pokelist[187] = new PokeData("ハネッコ", 35, 50, 8);
pokelist[188] = new PokeData("ポポッコ", 55, 80, 8);
pokelist[189] = new PokeData("ワタッコ", 75, 110, 8);
pokelist[190] = new PokeData("エイパム", 55, 85, 8);
pokelist[191] = new PokeData("ヒマナッツ", 30, 30, 8);
pokelist[192] = new PokeData("キマワリ", 75, 30, 8);
pokelist[193] = new PokeData("ヤンヤンマ", 65, 95, 8);
pokelist[194] = new PokeData("ウパー", 55, 15, 8);
pokelist[195] = new PokeData("ヌオー", 95, 35, 8);
pokelist[196] = new PokeData("エーフィ", 65, 110, 2);
pokelist[197] = new PokeData("ブラッキー", 95, 65, 2);
pokelist[198] = new PokeData("ヤミカラス", 60, 91, 8);
pokelist[199] = new PokeData("ヤドキング", 95, 30, 8);
pokelist[200] = new PokeData("ムウマ", 60, 85, 8);
pokelist[201] = new PokeData("アンノーン", 48, 48, -1);
pokelist[202] = new PokeData("ソーナンス", 190, 33, 8);
pokelist[203] = new PokeData("キリンリキ", 70, 85, 8);
pokelist[204] = new PokeData("クヌギダマ", 50, 15, 8);
pokelist[205] = new PokeData("フォレトス", 75, 40, 8);
pokelist[206] = new PokeData("ノコッチ", 100, 45, 8);
pokelist[207] = new PokeData("グライガー", 65, 85, 8);
pokelist[208] = new PokeData("ハガネール", 75, 30, 8);
pokelist[209] = new PokeData("ブルー", 60, 30, 12);
pokelist[210] = new PokeData("グランブル", 90, 45, 12);
pokelist[211] = new PokeData("ハリーセン", 65, 85, 8);
pokelist[212] = new PokeData("ハッサム", 70, 65, 8);
pokelist[213] = new PokeData("ツボツボ", 20, 5, 8);
pokelist[214] = new PokeData("ヘラクロス", 80, 85, 8);
pokelist[215] = new PokeData("ニューラ", 55, 115, 8);
pokelist[216] = new PokeData("ヒメグマ", 60, 40, 8);
pokelist[217] = new PokeData("リングマ", 90, 55, 8);
pokelist[218] = new PokeData("マグマッグ", 40, 20, 8);
pokelist[219] = new PokeData("マグカルゴ", 50, 30, 8);
pokelist[220] = new PokeData("ウリムー", 50, 50, 8);
pokelist[221] = new PokeData("イノムー", 100, 50, 8);
pokelist[222] = new PokeData("サニーゴ", 55, 35, 12);
pokelist[223] = new PokeData("テッポウオ", 35, 65, 8);
pokelist[224] = new PokeData("オクタン", 75, 45, 8);
pokelist[225] = new PokeData("デリバード", 45, 75, 8);
pokelist[226] = new PokeData("マンタイン", 65, 70, 8);
pokelist[227] = new PokeData("エアームド", 65, 70, 8);
pokelist[228] = new PokeData("デルビル", 45, 65, 8);
pokelist[229] = new PokeData("ヘルガー", 75, 95, 8);
pokelist[230] = new PokeData("キングドラ", 75, 85, 8);
pokelist[231] = new PokeData("ゴマゾウ", 90, 40, 8);
pokelist[232] = new PokeData("ドンファン", 90, 50, 8);
pokelist[233] = new PokeData("ポリゴン2", 85, 60, -1);
pokelist[234] = new PokeData("オドシシ", 73, 85, 8);
pokelist[235] = new PokeData("ドーブル", 55, 75, 8);
pokelist[236] = new PokeData("バルキー", 35, 35, 0);
pokelist[237] = new PokeData("カポエラー", 50, 70, 0);
pokelist[238] = new PokeData("ムチュール", 45, 65, 16);
pokelist[239] = new PokeData("エレキッド", 45, 95, 4);
pokelist[240] = new PokeData("ブビィ", 45, 83, 4);
pokelist[241] = new PokeData("ミルタンク", 95, 100, 16);
pokelist[242] = new PokeData("ハピナス", 255, 55, 16);
pokelist[243] = new PokeData("ライコウ", 90, 115, -1);
pokelist[244] = new PokeData("エンテイ", 115, 100, -1);
pokelist[245] = new PokeData("スイクン", 100, 85, -1);
pokelist[246] = new PokeData("ヨーギラス", 50, 41, 8);
pokelist[247] = new PokeData("サナギラス", 70, 51, 8);
pokelist[248] = new PokeData("バンギラス", 100, 61, 8);
pokelist[249] = new PokeData("ルギア", 106, 110, -1);
pokelist[250] = new PokeData("ホウオウ", 106, 90, -1);
pokelist[251] = new PokeData("セレビィ", 100, 100, -1);
function MoveData(name, pp) {
this.name = name;
this.pp = pp;
}
var movelist = new Array;
movelist[0] = new MoveData("", 0);
movelist[2] = new MoveData("はたく", 35);
movelist[3] = new MoveData("からてチョップ", 25);
movelist[4] = new MoveData("おうふくビンタ", 20);
movelist[5] = new MoveData("れんぞくパンチ", 15);
movelist[6] = new MoveData("メガトンパンチ", 20);
movelist[7] = new MoveData("ネコにこばん", 20);
movelist[8] = new MoveData("ほのおのパンチ", 15);
movelist[9] = new MoveData("れいとうパンチ", 15);
movelist[10] = new MoveData("かみなりパンチ", 15);
movelist[11] = new MoveData("ひっかく", 35);
movelist[12] = new MoveData("はさむ", 30);
movelist[13] = new MoveData("ハサミギロチン", 5);
movelist[14] = new MoveData("かまいたち", 10);
movelist[15] = new MoveData("つるぎのまい", 30);
movelist[16] = new MoveData("いあいぎり", 30);
movelist[17] = new MoveData("かぜおこし", 35);
movelist[18] = new MoveData("つばさでうつ", 35);
movelist[19] = new MoveData("ふきとばし", 20);
movelist[20] = new MoveData("そらをとぶ", 15);
movelist[21] = new MoveData("しめつける", 20);
movelist[22] = new MoveData("たたきつける", 20);
movelist[23] = new MoveData("つるのムチ", 10);
movelist[24] = new MoveData("ふみつけ", 20);
movelist[25] = new MoveData("にどげり", 30);
movelist[26] = new MoveData("メガトンキック", 5);
movelist[27] = new MoveData("とびげり", 25);
movelist[28] = new MoveData("まわしげり", 15);
movelist[29] = new MoveData("すなかけ", 15);
movelist[30] = new MoveData("ずつき", 15);
movelist[31] = new MoveData("つのでつく", 25);
movelist[32] = new MoveData("みだれづき", 20);
movelist[33] = new MoveData("つのドリル", 5);
movelist[34] = new MoveData("たいあたり", 35);
movelist[35] = new MoveData("のしかかり", 15);
movelist[36] = new MoveData("まきつく", 20);
movelist[37] = new MoveData("とっしん", 20);
movelist[38] = new MoveData("あばれる", 20);
movelist[39] = new MoveData("すてみタックル", 15);
movelist[40] = new MoveData("しっぽをふる", 30);
movelist[41] = new MoveData("どくばり", 35);
movelist[42] = new MoveData("ダブルニードル", 20);
movelist[43] = new MoveData("ミサイルばり", 20);
movelist[44] = new MoveData("にらみつける", 30);
movelist[45] = new MoveData("かみつく", 25);
movelist[46] = new MoveData("なきごえ", 40);
movelist[47] = new MoveData("ほえる", 20);
movelist[48] = new MoveData("うたう", 15);
movelist[49] = new MoveData("ちょうおんぱ", 20);
movelist[50] = new MoveData("ソニックブーム", 20);
movelist[51] = new MoveData("かなしばり", 20);
movelist[52] = new MoveData("ようかいえき", 30);
movelist[53] = new MoveData("ひのこ", 25);
movelist[54] = new MoveData("かえんほうしゃ", 15);
movelist[55] = new MoveData("しろいきり", 30);
movelist[56] = new MoveData("みずでっぽう", 25);
movelist[57] = new MoveData("ハイドロポンプ", 5);
movelist[58] = new MoveData("なみのり", 15);
movelist[59] = new MoveData("れいとうビーム", 10);
movelist[60] = new MoveData("ふぶき", 5);
movelist[61] = new MoveData("サイケこうせん", 20);
movelist[62] = new MoveData("バブルこうせん", 20);
movelist[63] = new MoveData("オーロラビーム", 20);
movelist[64] = new MoveData("はかいこうせん", 5);
movelist[65] = new MoveData("つつく", 35);
movelist[66] = new MoveData("ドリルくちばし", 20);
movelist[67] = new MoveData("じごくぐるま", 25);
movelist[68] = new MoveData("けたぐり", 20);
movelist[69] = new MoveData("カウンター", 20);
movelist[70] = new MoveData("ちきゅうなげ", 20);
movelist[71] = new MoveData("かいりき", 15);
movelist[72] = new MoveData("すいとる", 20);
movelist[73] = new MoveData("メガドレイン", 10);
movelist[74] = new MoveData("やどりぎのタネ", 10);
movelist[75] = new MoveData("せいちょう", 40);
movelist[76] = new MoveData("はっぱカッター", 25);
movelist[77] = new MoveData("ソーラービーム", 10);
movelist[78] = new MoveData("どくのこな", 35);
movelist[79] = new MoveData("しびれごな", 30);
movelist[80] = new MoveData("ねむりごな", 15);
movelist[81] = new MoveData("はなびらのまい", 20);
movelist[82] = new MoveData("いとをはく", 40);
movelist[83] = new MoveData("りゅうのいかり", 10);
movelist[84] = new MoveData("ほのおのうず", 15);
movelist[85] = new MoveData("でんきショック", 30);
movelist[86] = new MoveData("10まんボルト", 15);
movelist[87] = new MoveData("でんじは", 20);
movelist[88] = new MoveData("かみなり", 10);
movelist[89] = new MoveData("いわおとし", 15);
movelist[90] = new MoveData("じしん", 10);
movelist[91] = new MoveData("じわれ", 5);
movelist[92] = new MoveData("あなをほる", 10);
movelist[93] = new MoveData("どくどく", 10);
movelist[94] = new MoveData("ねんりき", 25);
movelist[95] = new MoveData("サイコキネシス", 10);
movelist[96] = new MoveData("さいみんじゅつ", 20);
movelist[97] = new MoveData("ヨガのポーズ", 40);
movelist[98] = new MoveData("こうそくいどう", 30);
movelist[99] = new MoveData("でんこうせっか", 30);
movelist[100] = new MoveData("いかり", 20);
movelist[101] = new MoveData("テレポート", 20);
movelist[102] = new MoveData("ナイトヘッド", 15);
movelist[103] = new MoveData("ものまね", 10);
movelist[104] = new MoveData("いやなおと", 40);
movelist[105] = new MoveData("かげぶんしん", 15);
movelist[106] = new MoveData("じこさいせい", 20);
movelist[107] = new MoveData("かたくなる", 30);
movelist[108] = new MoveData("ちいさくなる", 20);
movelist[109] = new MoveData("えんまく", 20);
movelist[110] = new MoveData("あやしいひかり", 15);
movelist[111] = new MoveData("からにこもる", 40);
movelist[112] = new MoveData("まるくなる", 40);
movelist[113] = new MoveData("バリアー", 30);
movelist[114] = new MoveData("ひかりのかべ", 30);
movelist[115] = new MoveData("くろいきり", 30);
movelist[116] = new MoveData("リフレクター", 20);
movelist[117] = new MoveData("きあいだめ", 30);
movelist[118] = new MoveData("がまん", 10);
movelist[119] = new MoveData("ゆびをふる", 10);
movelist[120] = new MoveData("オウムがえし", 20);
movelist[121] = new MoveData("じばく", 5);
movelist[122] = new MoveData("タマゴばくだん", 10);
movelist[123] = new MoveData("したでなめる", 30);
movelist[124] = new MoveData("スモッグ", 20);
movelist[125] = new MoveData("ヘドロこうげき", 20);
movelist[126] = new MoveData("ホネこんぼう", 20);
movelist[127] = new MoveData("だいもんじ", 5);
movelist[128] = new MoveData("たきのぼり", 15);
movelist[129] = new MoveData("からではさむ", 10);
movelist[130] = new MoveData("スピードスター", 20);
movelist[131] = new MoveData("ロケットずつき", 15);
movelist[132] = new MoveData("とげキャノン", 15);
movelist[133] = new MoveData("からみつく", 35);
movelist[134] = new MoveData("ドわすれ", 20);
movelist[135] = new MoveData("スプーンまげ", 15);
movelist[136] = new MoveData("タマゴうみ", 10);
movelist[137] = new MoveData("とびひざげり", 20);
movelist[138] = new MoveData("へびにらみ", 30);
movelist[139] = new MoveData("ゆめくい", 15);
movelist[140] = new MoveData("どくガス", 40);
movelist[141] = new MoveData("たまなげ", 20);
movelist[142] = new MoveData("きゅうけつ", 15);
movelist[143] = new MoveData("あくまのキッス", 10);
movelist[144] = new MoveData("ゴッドバード", 5);
movelist[145] = new MoveData("へんしん", 10);
movelist[146] = new MoveData("あわ", 30);
movelist[147] = new MoveData("ピヨピヨパンチ", 10);
movelist[148] = new MoveData("キノコのほうし", 15);
movelist[149] = new MoveData("フラッシュ", 20);
movelist[150] = new MoveData("サイコウェーブ", 15);
movelist[151] = new MoveData("はねる", 40);
movelist[152] = new MoveData("とける", 40);
movelist[153] = new MoveData("クラブハンマー", 10);
movelist[154] = new MoveData("だいばくはつ", 5);
movelist[155] = new MoveData("みだれひっかき", 15);
movelist[156] = new MoveData("ホネブーメラン", 10);
movelist[157] = new MoveData("ねむる", 10);
movelist[158] = new MoveData("いわなだれ", 10);
movelist[159] = new MoveData("ひっさつまえば", 15);
movelist[160] = new MoveData("かくばる", 30);
movelist[161] = new MoveData("テクスチャー", 30);
movelist[162] = new MoveData("トライアタック", 10);
movelist[163] = new MoveData("いかりのまえば", 10);
movelist[164] = new MoveData("きりさく", 20);
movelist[165] = new MoveData("みがわり", 10);
movelist[166] = new MoveData("わるあがき", -1);
movelist[167] = new MoveData("スケッチ", 1);
movelist[168] = new MoveData("トリプルキック", 10);
movelist[169] = new MoveData("どろぼう", 10);
movelist[170] = new MoveData("クモのす", 15);
movelist[171] = new MoveData("こころのめ", 5);
movelist[172] = new MoveData("あくむ", 15);
movelist[173] = new MoveData("かえんぐるま", 25);
movelist[174] = new MoveData("いびき", 15);
movelist[175] = new MoveData("のろい", 10);
movelist[176] = new MoveData("じたばた", 15);
movelist[177] = new MoveData("テクスチャー2", 30);
movelist[178] = new MoveData("エアロブラスト", 5);
movelist[179] = new MoveData("わたほうし", 40);
movelist[180] = new MoveData("きしかいせい", 15);
movelist[181] = new MoveData("うらみ", 10);
movelist[182] = new MoveData("こなゆき", 25);
movelist[183] = new MoveData("まもる", 10);
movelist[184] = new MoveData("マッハパンチ", 30);
movelist[185] = new MoveData("こわいかお", 10);
movelist[186] = new MoveData("だましうち", 20);
movelist[187] = new MoveData("てんしのキッス", 10);
movelist[188] = new MoveData("はらだいこ", 10);
movelist[189] = new MoveData("ヘドロばくだん", 10);
movelist[190] = new MoveData("どろかけ", 10);
movelist[191] = new MoveData("オクタンほう", 10);
movelist[192] = new MoveData("まきびし", 20);
movelist[193] = new MoveData("でんじほう", 5);
movelist[194] = new MoveData("みやぶる", 40);
movelist[195] = new MoveData("みちづれ", 5);
movelist[196] = new MoveData("ほろびのうた", 5);
movelist[197] = new MoveData("こごえるかぜ", 15);
movelist[198] = new MoveData("みきり", 5);
movelist[199] = new MoveData("ボーンラッシュ", 10);
movelist[200] = new MoveData("ロックオン", 5);
movelist[201] = new MoveData("げきりん", 15);
movelist[202] = new MoveData("すなあらし", 10);
movelist[203] = new MoveData("ギガドレイン", 5);
movelist[204] = new MoveData("こらえる", 10);
movelist[205] = new MoveData("あまえる", 20);
movelist[206] = new MoveData("ころがる", 10);
movelist[207] = new MoveData("みねうち", 40);
movelist[208] = new MoveData("いばる", 10);
movelist[209] = new MoveData("ミルクのみ", 10);
movelist[210] = new MoveData("スパーク", 20);
movelist[211] = new MoveData("れんぞくぎり", 20);
movelist[212] = new MoveData("はがねのつばさ", 25);
movelist[213] = new MoveData("くろいまなざし", 5);
movelist[214] = new MoveData("メロメロ", 15);
movelist[215] = new MoveData("ねごと", 10);
movelist[216] = new MoveData("いやしのすず", 5);
movelist[217] = new MoveData("おんがえし", 20);
movelist[218] = new MoveData("プレゼント", 15);
movelist[219] = new MoveData("やつあたり", 20);
movelist[220] = new MoveData("しんぴのまもり", 25);
movelist[221] = new MoveData("いたみわけ", 20);
movelist[222] = new MoveData("せいなるほのお", 5);
movelist[223] = new MoveData("マグニチュード", 30);
movelist[224] = new MoveData("ばくれつパンチ", 5);
movelist[225] = new MoveData("メガホーン", 10);
movelist[226] = new MoveData("りゅうのいぶき", 20);
movelist[227] = new MoveData("バトンタッチ", 40);
movelist[228] = new MoveData("アンコール", 5);
movelist[229] = new MoveData("おいうち", 20);
movelist[230] = new MoveData("こうそくスピン", 40);
movelist[231] = new MoveData("あまいかおり", 20);
movelist[232] = new MoveData("アイアンテール", 15);
movelist[233] = new MoveData("メタルクロー", 30);
movelist[234] = new MoveData("あてみなげ", 10);
movelist[235] = new MoveData("あさのひざし", 5);
movelist[236] = new MoveData("こうごうせい", 5);
movelist[237] = new MoveData("つきのひかり", 5);
movelist[238] = new MoveData("めざめるパワー", 15);
movelist[239] = new MoveData("クロスチョップ", 5);
movelist[240] = new MoveData("たつまき", 20);
movelist[241] = new MoveData("あまごい", 5);
movelist[242] = new MoveData("にほんばれ", 5);
movelist[243] = new MoveData("かみくだく", 15);
movelist[244] = new MoveData("ミラーコート", 20);
movelist[245] = new MoveData("じこあんじ", 10);
movelist[246] = new MoveData("しんそく", 5);
movelist[247] = new MoveData("げんしのちから", 5);
movelist[248] = new MoveData("シャドーボール", 15);
movelist[249] = new MoveData("みらいよち", 15);
movelist[250] = new MoveData("いわくだき", 15);
movelist[251] = new MoveData("うずしお", 15);
movelist[252] = new MoveData("ふくろだたき", 10);
function ItemData(name, effective) {
this.name = name;
this.effective = effective;
}
var itemlist = new Array;
itemlist[0] = new ItemData("", false);
itemlist[2] = new ItemData("マスターボール", false);
itemlist[3] = new ItemData("ハイパーボール", false);
itemlist[4] = new ItemData("ひかりのこな", true);
itemlist[5] = new ItemData("スーパーボール", false);
itemlist[6] = new ItemData("モンスターボール", false);
itemlist[7] = new ItemData("カビチュウ", false);
itemlist[8] = new ItemData("じてんしゃ", false);
itemlist[9] = new ItemData("つきのいし", false);
itemlist[10] = new ItemData("どくけし", false);
itemlist[11] = new ItemData("やけどなおし", false);
itemlist[12] = new ItemData("こおりなおし", false);
itemlist[13] = new ItemData("ねむけざまし", false);
itemlist[14] = new ItemData("まひなおし", false);
itemlist[15] = new ItemData("かいふくのくすり", false);
itemlist[16] = new ItemData("まんたんのくすり", false);
itemlist[17] = new ItemData("すごいキズぐすり", false);
itemlist[18] = new ItemData("いいキズぐすり", false);
itemlist[19] = new ItemData("キズぐすり", false);
itemlist[20] = new ItemData("あなぬけのヒモ", false);
itemlist[21] = new ItemData("むしよけスプレー", false);
itemlist[22] = new ItemData("ピーピーマックス", false);
itemlist[23] = new ItemData("ほのおのいし", false);
itemlist[24] = new ItemData("かみなりのいし", false);
itemlist[25] = new ItemData("みずのいし", false);
itemlist[27] = new ItemData("マックスアップ", false);
itemlist[28] = new ItemData("タウリン", false);
itemlist[29] = new ItemData("ブロムヘキシン", false);
itemlist[30] = new ItemData("インドメタシン", false);
itemlist[31] = new ItemData("ラッキーパンチ", false);
itemlist[32] = new ItemData("リゾチウム", false);
itemlist[33] = new ItemData("ふしぎなアメ", false);
itemlist[34] = new ItemData("ヨクアタール", false);
itemlist[35] = new ItemData("リーフのいし", false);
itemlist[36] = new ItemData("メタルパウダー", true);
itemlist[37] = new ItemData("きんのたま", false);
itemlist[38] = new ItemData("ピッピにんぎょう", false);
itemlist[39] = new ItemData("なんでもなおし", false);
itemlist[40] = new ItemData("げんきのかけら", false);
itemlist[41] = new ItemData("げんきのかたまり", false);
itemlist[42] = new ItemData("エフェクトガード", false);
itemlist[43] = new ItemData("シルバースプレー", false);
itemlist[44] = new ItemData("ゴールドスプレー", false);
itemlist[45] = new ItemData("クリティカッター", false);
itemlist[47] = new ItemData("おいしいみず", false);
itemlist[48] = new ItemData("サイコソーダ", false);
itemlist[49] = new ItemData("ミックスオレ", false);
itemlist[50] = new ItemData("プラスパワー", false);
itemlist[52] = new ItemData("ディフェンダー", false);
itemlist[53] = new ItemData("スピーダー", false);
itemlist[54] = new ItemData("スペシャルアップ", false);
itemlist[55] = new ItemData("コインケース", false);
itemlist[56] = new ItemData("ダウジングマシン", false);
itemlist[58] = new ItemData("がくしゅうそうち", false);
itemlist[59] = new ItemData("ぼろのつりざお", false);
itemlist[60] = new ItemData("いいつりざお", false);
itemlist[61] = new ItemData("ぎんのはっぱ", false);
itemlist[62] = new ItemData("すごいつりざお", false);
itemlist[63] = new ItemData("ポイントアップ", false);
itemlist[64] = new ItemData("ピーピーエイド", false);
itemlist[65] = new ItemData("ピーピーリカバー", false);
itemlist[66] = new ItemData("ピーピーエイダー", false);
itemlist[67] = new ItemData("あかいウロコ", false);
itemlist[68] = new ItemData("ひでんのくすり", false);
itemlist[69] = new ItemData("ふねのチケット", false);
itemlist[70] = new ItemData("ふしぎなタマゴ", false);
itemlist[72] = new ItemData("ぎんいろのはね", false);
itemlist[73] = new ItemData("モーモーミルク", false);
itemlist[74] = new ItemData("せんせいのツメ", true);
itemlist[75] = new ItemData("どくけしのみ", true);
itemlist[76] = new ItemData("きんのはっぱ", false);
itemlist[77] = new ItemData("やわらかいすな", true);
itemlist[78] = new ItemData("するどいくちばし", true);
itemlist[79] = new ItemData("まひなおしのみ", true);
itemlist[80] = new ItemData("やけたきのみ", true);
itemlist[81] = new ItemData("こおったきのみ", true);
itemlist[82] = new ItemData("どくバリ", true);
itemlist[83] = new ItemData("おうじゃのしるし", true);
itemlist[84] = new ItemData("にがいきのみ", true);
itemlist[85] = new ItemData("はっかのみ", true);
itemlist[86] = new ItemData("あかぼんぐり", false);
itemlist[87] = new ItemData("ちいさなキノコ", false);
itemlist[88] = new ItemData("おおきなキノコ", false);
itemlist[89] = new ItemData("ぎんのこな", true);
itemlist[90] = new ItemData("あおぼんぐり", false);
itemlist[92] = new ItemData("おまもりこばん", false);
itemlist[93] = new ItemData("きぼんぐり", false);
itemlist[94] = new ItemData("みどぼんぐり", false);
itemlist[95] = new ItemData("きよめのおふだ", false);
itemlist[96] = new ItemData("しんぴのしずく", true);
itemlist[97] = new ItemData("まがったスプーン", true);
itemlist[98] = new ItemData("しろぼんぐり", false);
itemlist[99] = new ItemData("くろおび", true);
itemlist[100] = new ItemData("くろぼんぐり", false);
itemlist[102] = new ItemData("ももぼんぐり", false);
itemlist[103] = new ItemData("くろいめがね", true);
itemlist[104] = new ItemData("おいしいシッポ", false);
itemlist[105] = new ItemData("ピンクのリボン", true);
itemlist[106] = new ItemData("ながねぎ", true);
itemlist[107] = new ItemData("けむりだま", false);
itemlist[108] = new ItemData("とけないこおり", true);
itemlist[109] = new ItemData("じしゃく", true);
itemlist[110] = new ItemData("きせきのみ", true);
itemlist[111] = new ItemData("しんじゅ", false);
itemlist[112] = new ItemData("おおきなしんじゅ", false);
itemlist[113] = new ItemData("かわらずのいし", false);
itemlist[114] = new ItemData("のろいのおふだ", true);
itemlist[115] = new ItemData("いかりまんじゅう", false);
itemlist[118] = new ItemData("きせきのタネ", true);
itemlist[119] = new ItemData("ふといホネ", true);
itemlist[120] = new ItemData("きあいのハチマキ", true);
itemlist[122] = new ItemData("ちからのこな", false);
itemlist[123] = new ItemData("ちからねっこ", false);
itemlist[124] = new ItemData("ばんのうごな", false);
itemlist[125] = new ItemData("ふっかつそう", false);
itemlist[126] = new ItemData("かたいいし", true);
itemlist[127] = new ItemData("しあわせタマゴ", false);
itemlist[128] = new ItemData("カードキー", false);
itemlist[129] = new ItemData("きかいのぶひん", false);
itemlist[131] = new ItemData("おとしもの", false);
itemlist[132] = new ItemData("ほしのすな", false);
itemlist[133] = new ItemData("ほしのかけら", false);
itemlist[134] = new ItemData("ちかのカギ", false);
itemlist[135] = new ItemData("ていきけん", false);
itemlist[139] = new ItemData("もくたん", true);
itemlist[140] = new ItemData("きのみジュース", true);
itemlist[141] = new ItemData("ピントレンズ", true);
itemlist[144] = new ItemData("メタルコート", true);
itemlist[145] = new ItemData("りゅうのキバ", false);
itemlist[147] = new ItemData("たべのこし", true);
itemlist[151] = new ItemData("ふしぎなきのみ", true);
itemlist[152] = new ItemData("りゅうのウロコ", true);
itemlist[153] = new ItemData("はかいのいでんし", true);
itemlist[157] = new ItemData("せいなるはい", false);
itemlist[158] = new ItemData("ヘビーボール", false);
itemlist[159] = new ItemData("はながらメール", false);
itemlist[160] = new ItemData("レベルボール", false);
itemlist[161] = new ItemData("ルアーボール", false);
itemlist[162] = new ItemData("スピードボール", false);
itemlist[164] = new ItemData("でんきだま", true);
itemlist[165] = new ItemData("フレンドボール", false);
itemlist[166] = new ItemData("ムーンボール", false);
itemlist[167] = new ItemData("ラブラブボール", false);
itemlist[168] = new ItemData("きのはこ", false);
itemlist[169] = new ItemData("きりのはこ", false);
itemlist[170] = new ItemData("たいようのいし", false);
itemlist[171] = new ItemData("みずたまリボン", true);
itemlist[173] = new ItemData("アップグレード", false);
itemlist[174] = new ItemData("きのみ", true);
itemlist[175] = new ItemData("おうごんのみ", true);
itemlist[176] = new ItemData("ゼニガメじょうろ", false);
itemlist[178] = new ItemData("パークボール", false);
itemlist[179] = new ItemData("にじいろのはね", false);
itemlist[181] = new ItemData("かわらのかけら", false);
itemlist[182] = new ItemData("なみのりメール", false);
itemlist[183] = new ItemData("みずいろメール", false);
itemlist[184] = new ItemData("にがおえメール", false);
itemlist[185] = new ItemData("ラブリーメール", false);
itemlist[186] = new ItemData("ブイブイメール", false);
itemlist[187] = new ItemData("へんしんメール", false);
itemlist[188] = new ItemData("あおぞらメール", false);
itemlist[189] = new ItemData("おんぷメール", false);
itemlist[190] = new ItemData("まぼろしメール", false);
itemlist[192] = new ItemData("わざましん01", false);
itemlist[193] = new ItemData("わざましん02", false);
itemlist[194] = new ItemData("わざましん03", false);
itemlist[195] = new ItemData("わざましん04", false);
itemlist[197] = new ItemData("わざましん05", false);
itemlist[198] = new ItemData("わざましん06", false);
itemlist[199] = new ItemData("わざましん07", false);
itemlist[200] = new ItemData("わざましん08", false);
itemlist[201] = new ItemData("わざましん09", false);
itemlist[202] = new ItemData("わざましん10", false);
itemlist[203] = new ItemData("わざましん11", false);
itemlist[204] = new ItemData("わざましん12", false);
itemlist[205] = new ItemData("わざましん13", false);
itemlist[206] = new ItemData("わざましん14", false);
itemlist[207] = new ItemData("わざましん15", false);
itemlist[208] = new ItemData("わざましん16", false);
itemlist[209] = new ItemData("わざましん17", false);
itemlist[210] = new ItemData("わざましん18", false);
itemlist[211] = new ItemData("わざましん19", false);
itemlist[212] = new ItemData("わざましん20", false);
itemlist[213] = new ItemData("わざましん21", false);
itemlist[214] = new ItemData("わざましん22", false);
itemlist[215] = new ItemData("わざましん23", false);
itemlist[216] = new ItemData("わざましん24", false);
itemlist[217] = new ItemData("わざましん25", false);
itemlist[218] = new ItemData("わざましん26", false);
itemlist[219] = new ItemData("わざましん27", false);
itemlist[220] = new ItemData("わざましん28", false);
itemlist[222] = new ItemData("わざましん29", false);
itemlist[223] = new ItemData("わざましん30", false);
itemlist[224] = new ItemData("わざましん31", false);
itemlist[227] = new ItemData("わざましん50", false);
itemlist[228] = new ItemData("ひでんましん01", false);
itemlist[229] = new ItemData("ひでんましん02", false);
itemlist[230] = new ItemData("ひでんましん03", false);
itemlist[231] = new ItemData("ひでんましん04", false);
itemlist[232] = new ItemData("ひでんましん05", false);
itemlist[233] = new ItemData("ひでんましん06", false);
itemlist[234] = new ItemData("ひでんましん07", false);
var effectiveItems = [];
(function() {
for (var i in itemlist) {
var s = itemlist[i];
s.effective && (effectiveItems[i] = s);
}
})();
function roma(str) {
var re = /(([b-df-hj-mp-tv-z])\2*(?=\2))|((?:[b-df-hj-np-tv-z]|[cw]h|[b-df-hj-npr-tvxz]y|[bdgkmpstz][hw]|ts|)[aiueo]|[-0-9])|(xts?u)|(nn?)/gi;
function f(sub, gs1, _, s, gs2, sn) {
if (gs1) {
if (gs1.length == 1) {
return "[っッ]";
}
else {
return "[っッ]{" + gs1.length + "}";
}
}
else if (s) {
return roma.table[s];
}
else if (gs2) {
return "[っッ]";
}
else if (sn) {
return "[んン]";
}
else {
throw "error! " + sub;
}
}
return str.replace(re, f);
}
roma.table = {
a: "[あア]", i: "[いイ]", u: "[うウ]", e: "[えエ]", o: "[おオ]",
ba: "[ばバ]", bi: "[びビ]", bu: "[ぶブ]", be: "[べベ]", bo: "[ぼボ]",
bya: "[びビ][ゃャ]", byi: "[びビ][ぃィ]", byu: "[びビ][ゅュ]", bye: "[びビ][ぇェ]", byo: "[びビ][ょョ]",
bha: "[ばバ][ぁァ]", bhi: "[ばバ][ぃィ]", bhi: "[ばバ][ぃィ]", bhe: "[ばバ][ぃィ]", bho: "[ばバ][ぃィ]",
bwa: "[びビ][ゎヮ]", bwi: "[びビ][ぃィ]", bwu: "[びビ][ぅゥ]", bwe: "[びビ][ぇェ]", bwo: "[びビ][ぉォ]",
ca: "[かカ]", ci: "[しシ]", cu: "[くク]", ce: "[せセ]", co: "[こコ]",
cya: "[ちチ][ゃャ]", cyi: "[ちチ][ぃィ]", cyu: "[ちチ][ゅュ]", cye: "[ちチ][ぇェ]", cyo: "[ちチ][ょョ]",
cha: "[ちチ][ゃャ]", chi: "[ちチ]", chu: "[ちチ][ゅュ]", che: "[ちチ][ぇェ]", cho: "[ちチ][ょョ]",
da: "[だダ]", di: "[ぢヂ]", du: "[づヅ]", de: "[でデ]", "do": "[どド]",
dya: "[ぢヂ][ゃャ]", dyi: "[ぢヂ][ぃィ]", dyu: "[ぢヂ][ゅュ]", dye: "[ぢヂ][ぇェ]", dyo: "[ぢヂ][ょョ]",
dha: "[でデ][ゃャ]", dhi: "[でデ][ぃィ]", dhu: "[でデ][ゅュ]", dhe: "[でデ][ぇェ]", dho: "[でデ][ょョ]",
dwa: "[どド][ぁァ]", dwi: "[どド][ぃィ]", dwu: "[どド][ぅゥ]", dwe: "[どド][ぇェ]", dwo: "[どド][ぉォ]",
fa: "[ふフ][ぁァ]", fi: "[ふフ][ぃィ]", fu: "[ふフ]", fe: "[ふフ][ぇェ]", fo: "[ふフ][ぉォ]",
fya: "[ふフ][ゃャ]", fyi: "[ふフ][ぃィ]", fyu: "[ふフ][ゅュ]", fye: "[ふフ][ぇェ]", fyo: "[ふフ][ょョ]",
ga: "[がガ]", gi: "[ぎギ]", gu: "[ぐグ]", ge: "[げゲ]", go: "[ごゴ]",
gya: "[ぎギ][ゃャ]", gyi: "[ぎギ][ぃィ]", gyu: "[ぎギ][ゅュ]", gye: "[ぎギ][ぇェ]", gyo: "[ぎギ][ょョ]",
gha: "[ぐグ][ぁァ]", ghi: "[ぐグ][ぃィ]", ghu: "[ぐグ][ぅゥ]", ghe: "[ぐグ][ぇェ]", gho: "[ぐグ][ぉォ]",
gwa: "[ぐグ][ぁァ]", gwi: "[ぐグ][ぃィ]", gwu: "[ぐグ][ぅゥ]", gwe: "[ぐグ][ぇェ]", gwo: "[ぐグ][ぉォ]",
ha: "[はハ]", hi: "[ひヒ]", hu: "[ふフ]", he: "[へヘ]", ho: "[ほホ]",
hya: "[ひヒ][ゃャ]", hyi: "[ひヒ][ぃィ]", hyu: "[ひヒ][ゅュ]", hye: "[ひヒ][ぇェ]", hyo: "[ひヒ][ょョ]",
ja: "[じジ][ゃャ]", ji: "[じジ]", ju: "[じジ][ゅュ]", je: "[じジ][ぇェ]", jo: "[じジ][ょョ]",
jya: "[じジ][ゃャ]", jyi: "[じジ][ぃィ]", jyu: "[じジ][ゅュ]", jye: "[じジ][ぇェ]", jyo: "[じジ][ょョ]",
ka: "[かカ]", ki: "[きキ]", ku: "[くク]", ke: "[けケ]", ko: "[こコ]",
kya: "[きキ][ゃャ]", kyi: "[きキ][ぃィ]", kyu: "[きキ][ゅュ]", kye: "[きキ][ぇェ]", kyo: "[きキ][ょョ]",
kha: "[くク][ぁァ]", khi: "[くク][ぃィ]", khu: "[くク][ぅゥ]", khe: "[くク][ぇェ]", kho: "[くク][ぉォ]",
kwa: "[くク][ぁァ]", kwi: "[くク][ぃィ]", kwu: "[くク][ぅゥ]", kwe: "[くク][ぇェ]", kwo: "[くク][ぉォ]",
la: "[らラ]", li: "[りリ]", lu: "[るル]", le: "[れレ]", lo: "[ろロ]",
lya: "[りリ][ゃャ]", lyi: "[りリ][ぃィ]", lyu: "[りリ][ゅュ]", lye: "[りリ][ぇェ]", lyo: "[りリ][ょョ]",
ma: "[まマ]", mi: "[みミ]", mu: "[むム]", me: "[めメ]", mo: "[もモ]",
mya: "[みミ][ゃャ]", myi: "[みミ][ぃィ]", myu: "[みミ][ゅュ]", mye: "[みミ][ぇェ]", myo: "[みミ][ょョ]",
mha: "[むム][ぁァ]", mhi: "[むム][ぃィ]", mhu: "[むム][ぅゥ]", mhe: "[むム][ぇェ]", mho: "[むム][ぉォ]",
mwa: "[むム][ゎヮ]", mwi: "[むム][ぃィ]", mwu: "[むム][ぅゥ]", mwe: "[むム][ぇェ]", mwo: "[むム][ぉォ]",
na: "[なナ]", ni: "[にニ]", nu: "[ぬヌ]", ne: "[ねネ]", no: "[のノ]",
nya: "[にニ][ゃャ]", nyi: "[にニ][ぃィ]", nyu: "[にニ][ゅュ]", nye: "[にニ][ぇェ]", nyo: "[にニ][ょョ]",
pa: "[ぱパ]", pi: "[ぴピ]", pu: "[ぷプ]", pe: "[ぺペ]", po: "[ぽポ]",
pya: "[ぴピ][ゃャ]", pyi: "[ぴピ][ぃィ]", pyu: "[ぴピ][ゅュ]", pye: "[ぴピ][ぇェ]", pyo: "[ぴピ][ょョ]",
pha: "[ぷプ][ぁァ]", phi: "[ぷプ][ぃィ]", phu: "[ぷプ][ぅゥ]", phe: "[ぷプ][ぇェ]", pho: "[ぷプ][ぉォ]",
pwa: "[ぷプ][ゎヮ]", pwi: "[ぷプ][ぃィ]", pwu: "[ぷプ][ぅゥ]", pwe: "[ぷプ][ぇェ]", pwo: "[ぷプ][ぉォ]",
qa: "[くク][ぁァ]", qi: "[くク][ぃィ]", qu: "[くク][ぅゥ]", qe: "[くク][ぇェ]", qo: "[くク][ぉォ]",
ra: "[らラ]", ri: "[りリ]", ru: "[るル]", re: "[れレ]", ro: "[ろロ]",
rya: "[りリ][ゃャ]", ryi: "[りリ][ぃィ]", ryu: "[りリ][ゅュ]", rye: "[りリ][ぇェ]", ryo: "[りリ][ょョ]",
sa: "[さサ]", si: "[しシ]", su: "[すス]", se: "[せセ]", so: "[そソ]",
sya: "[しシ][ゃャ]", syi: "[しシ][ぃィ]", syu: "[しシ][ゅュ]", sye: "[しシ][ぇェ]", syo: "[しシ][ょョ]",
sha: "[しシ][ゃャ]", shi: "[しシ]", shu: "[しシ][ゅュ]", she: "[しシ][ぇェ]", sho: "[しシ][ょョ]",
swa: "[すス][ぁァ]", swi: "[すス][ぃィ]", swu: "[すス][ぅゥ]", swe: "[すス][ぇェ]", swo: "[すス][ぉォ]",
ta: "[たタ]", ti: "[ちチ]", tu: "[つツ]", te: "[てテ]", to: "[とト]",
tya: "[ちチ][ゃャ]", tyi: "[ちチ][ぃィ]", tyu: "[ちチ][ゅュ]", tye: "[ちチ][ぇェ]", tyo: "[ちチ][ょョ]",
tha: "[てテ][ゃャ]", thi: "[てテ][ぃィ]", thu: "[てテ][ゅュ]", the: "[てテ][ぇェ]", tho: "[てテ][ょョ]",
twa: "[とト][ぁァ]", twi: "[とト][ぃィ]", twu: "[とト][ぅゥ]", twe: "[とト][ぇェ]", two: "[とト][ぉォ]",
va: "[ゔヴ][ぁァ]", vi: "[ゔヴ][ぃィ]", vu: "[ゔヴ]", ve: "[ゔヴ][ぇェ]", vo: "[ゔヴ][ぉォ]",
vya: "[ゔヴ][ゃャ]", vyi: "[ゔヴ][ぃィ]", vyu: "[ゔヴ][ゅュ]", vye: "[ゔヴ][ぇェ]", vyo: "[ゔヴ][ょョ]",
wa: "[わワ]", wi: "[うウ][ぃィ]", wu: "[うウ]", we: "[うウ][ぇェ]", wo: "[をヲ]", wyi: "[ゐヰ]", wye: "[ゑヱ]",
wha: "[うウ][ぁァ]", whi: "[うウ][ぃィ]", whu: "[うウ]", whe: "[うウ][ぇェ]", who: "[うウ][ぉォ]",
xa: "[ぁァ]", xi: "[ぃィ]", xu: "[ぅゥ]", xe: "[ぇェ]", xo: "[ぉォ]",
xya: "[ゃャ]", xyi: "[ぃィ]", xyu: "[ゅュ]", xye: "[ぇェ]", xyo: "[ょョ]",
ya: "[やヤ]", yi: "[いイ]", yu: "[ゆユ]", ye: "[いイ][ぇェ]", yo: "[よヨ]",
za: "[ざザ]", zi: "[じジ]", zu: "[ずズ]", ze: "[ぜゼ]", zo: "[ぞゾ]",
zya: "[じジ][ゃャ]", zyi: "[じジ][ぃィ]", zyu: "[じジ][ゅュ]", zye: "[じジ][ぇェ]", zyo: "[じジ][ょョ]",
zha: "[ずズ][ぁァ]", zhi: "[ずズ][ぃィ]", zhu: "[ずズ][ぅゥ]", zhe: "[ずズ][ぇェ]", zho: "[ずズ][ぉォ]",
zwa: "[ずズ][ゎヮ]", zwi: "[ずズ][ぃィ]", zwu: "[ずズ][ぅゥ]", zwe: "[ずズ][ぇェ]", zwo: "[ずズ][ぉォ]",
tsa: "[つツ][ぁァ]", tsi: "[つツ][ぃィ]", tsu: "[つツ]", tse: "[つツ][ぇェ]", tso: "[つツ][ぉォ]",
0: "0", 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", "-": "ー"
};
/*command*/
xpd.command = {};
function interactive(f, doc) {
if (doc) {
f.document = doc;
}
if (f.name) {
var name = f.name.replace(/([A-Z]+(?:(?=[A-Z][a-z])|$)|[A-Z][a-z]*)/g, "-$1").toLowerCase();
f.commandName = name;
xpd.command[name] = f;
}
else {
throw "anonymous function is invalid";
}
}
function interactiveInsideForm(f, doc) {
f.onlyInsideForm = true;
interactive(f, doc);
}
function commandExists(command) {
return xpd.command.hasOwnProperty(command);
}
function callInteractively(command, e) {
if (commandExists(command)) {
return xpd.command[command](e);
}
else {
throw "command `" + command + "' is not defined";
}
}
pref.defaults.descriptiveMode = true;
function get_table() {
return $d.getElementsByTagName('table')[0];
}
function setInputs() {
var table = get_table();
for (var i = 1; i < 7; i++){
var row = table.rows[i].cells;
var cell = table.rows[i].cells[1];
cell.replaceChild(createPokeInput(cell.innerHTML, i - 1), cell.firstChild);
}
}
pref.defaults.formPokeSize = 10 - platform.macosx * 2 - browser.firefox;
function createPokeInput(text, no){
var input = $d.createElement('input');
input.value = text;
input.size = pref.formPokeSize;
input.setAttribute("name", "POKE" + no);
return input;
}
function setButtons() {
var b = $d.getElementsByName("submit");
b[0].type = "button";
setButtonAttr(b[0], change);
b[1].type = "button";
setButtonAttr(b[1], save, "上書保存", "パーティを保存します.");
setButtonAttr(b[2], rebuild, "再現", "新規保存");
$d.forms[0].appendChild(createInput({type: "hidden", name: "C", value: ""}));
}
function setButtonAttr(b, fn, value, title) {
b.onclick = fn;
if (value) {
b.value = value;
}
if (pref.descriptiveMode) {
b.title = title || "undocumented";
}
}
function setOnChange() {
var form = $d.forms[0];
for (var i = 0; i < 6; i++) {
form["POKE" + i].onblur = set_status;
form["KO" + i].onblur = formRefresh;
form["LV" + i].onblur = set_hp;
form["EF" + i + "_0"].onblur = set_hp;
for (var j = 0; j < 4; j++) {
form["WAZA" + i + "_" + j].onblur = set_hiddenpower;
}
}
}
function createInput(attr) {
var input = $d.createElement("input");
for (var i in attr) {
if (/^on/.test(i)) input[i] = attr[i];
else input.setAttribute(i, attr[i]);
}
return input;
}
pref.defaults.formEffortSize = 2 - (platform.macosx && browser.firefox);
function createEffortColumn() {
var table = get_table();
table.rows[0].insertCell(-1);
table.rows[0].cells[8].innerHTML = "HPこぼすと";
for (var i = 0; i < 6; i++) {
var row = table.rows[i + 1];
row.insertCell(8);
for (var j = 0; j < 5; j++) {
row.cells[8].appendChild(createInput({
value: poke[i].ef[j],
name: "EF" + i + "_" + j,
size: pref.formEffortSize,
maxLength: 2
}));
}
}
}
function createHiddenpowerColumn() {
var table = get_table();
table.rows[0].insertCell(7);
table.rows[0].cells[7].innerHTML = "め";
for (var i = 1; i < 7; i++) {
var row = table.rows[i];
row.insertCell(7);
row.cells[7].id = "hiddenpower" + (i - 1);
row.cells[7].bgColor = "c0c0c0";
}
}
function createHPColumn() {
var table = get_table();
table.rows[0].insertCell(7);
table.rows[0].cells[7].innerHTML = "HP";
for (var i = 1; i < 7; i++) {
var row = table.rows[i];
row.insertCell(7);
row.cells[7].id = "hp" + (i - 1);
row.cells[7].bgColor = "c0c0c0";
}
}
function createSexColumn() {
var table = get_table();
table.rows[0].insertCell(2);
table.rows[0].cells[2].innerHTML = " ";
for (var i = 1; i < 7; i++) {
var row = table.rows[i];
row.insertCell(2);
row.cells[2].id = "sex" + (i - 1);
row.cells[2].bgColor = "c0c0c0";
}
}
function createSwapCheckBox() {
var table = get_table();
table.rows[0].insertCell(0);
table.rows[0].cells[0].innerHTML = "";
table.rows[0].cells[0].bgColor = "snow";
for (var i = 0; i < 6; i++) {
var row = table.rows[i + 1];
row.insertCell(0);
var attr = {
type: "checkbox",
name: "swap" + i,
onchange: swap_poke
};
if (pref.descriptiveMode) {
attr.title = "2つチェックすると,それらの行を入れ替えます.";
}
row.cells[0].appendChild(createInput(attr));
table.rows[i + 1].cells[0].bgColor = "snow";
}
}
function stripTableHeader() {
var table = get_table();
for (var k = 1; k < 7; k++) {
var cell = table.rows[0].cells[k];
cell.innerHTML = cell.innerHTML.replace(/ /g, "");
}
}
pref.defaults.formLvSize = 3 - (platform.macosx && browser.firefox);
function fixLvSize() {
if (pref.formLvSize != $d.forms[0].LV0.size) {
for (var i = 0; i < 6; i++) {
$d.forms[0]["LV" + i].size = pref.formLvSize;
}
}
}
pref.defaults.formKoSize = 4 - (platform.macosx && browser.firefox);
function fixKoSize() {
if (pref.formKoSize != $d.forms[0].KO0.size) {
for (var i = 0; i < 6; i++) {
$d.forms[0]["KO" + i].size = pref.formKoSize;
}
}
}
pref.defaults.formItemSize = 14 - (platform.macosx && (browser.firefox ? 2 : 1));
function fixItemSize() {
if (pref.formItemSize != $d.forms[0].ITEM0.size) {
for (var i = 0; i < 6; i++) {
$d.forms[0]["ITEM" + i].size = pref.formItemSize;
}
}
}
pref.defaults.formMoveSize = 13 - (platform.macosx && (browser.firefox ? 3 : 1));
function fixMoveSize() {
if (pref.formMoveSize != $d.forms[0].WAZA0_0.size) {
for (var i = 0; i < 6; i++) {
for (var j = 0; j < 4; j++) {
$d.forms[0]["WAZA" + i + "_" + j].size = pref.formMoveSize;
}
}
}
}
function fixFormSizes() {
fixLvSize();
fixKoSize();
fixItemSize();
fixMoveSize();
}
/*echo-area*/
function createEchoArea() {
var buf = $d.createElement("div");
buf.id = "echo-area";
buf.setAttribute("style", "margin-left: 2em");
$d.body.appendChild(buf);
}
function message(obj) {
var echoArea = $d.getElementById("echo-area");
if (obj.appendChild) {
echoArea.innerHTML = "";
echoArea.appendChild(obj);
}
else {
echoArea.innerHTML = obj;
}
}
function getMessage() {
return $d.getElementById("echo-area").innerHTML;
}
var isMinibuffer;
function createMiniBuffer() {
var mini = createInput({id: "mini-buffer", name: "minibuffer", type: "text", size: 32});
isMinibuffer = function(obj) { return obj === mini; };
mini.style.display = "none";
$d.forms[0].appendChild(mini);
$d.styleSheets[0].insertRule("#mini-buffer{margin-left: 1em}", 0);
}
var commandTarget = null;
function displayMinibuffer(e) {
var mini = $d.getElementById("mini-buffer");
mini.value = "";
mini.style.display = "";
mini.focus();
commandTarget = e.target;
}
function blurIfHtmlElement(element) {
if (element == document.documentElement) {
element.blur();
}
}
function quitCommand(e) {
if (commandTarget) {
commandTarget.focus();
var mini = $d.getElementById("mini-buffer");
mini.style.display = "none";
blurIfHtmlElement(commandTarget);
commandTarget = null;
}
message("Quit");
}
function executeCommand(e) {
var mini = $d.getElementById("mini-buffer");
if (mini == e.target) {
if (commandExists(mini.value)) {
var event = {target: commandTarget};
mini.style.display = "none";
commandTarget.focus();
callInteractively(mini.value, event);
blurIfHtmlElement(commandTarget);
commandTarget = null;
}
else {
complete({target: mini});
}
}
return false;
}
function min(x, y) {
return x < y ? x : y;
}
function getLineNumber(input) {
var n = /\d/.exec(input.name);
if (n === null) {
throw "error: getLineNumber(" + input.name + ")";
}
else {
return Number(n[0]);
}
}
/*complete*/
pref.defaults.smartCompletionMode = true;
function smartCompletionMode() {
pref.smartCompletionMode = !pref.smartCompletionMode;
message("smart-completion-mode " + (pref.smartCompletionMode ? "enabled" : "disabled"));
}
interactive(smartCompletionMode);
function commonPrefix(s, t) {
var len = min(s.length, t.length);
var i;
for (i = 0; i < len && s[i] == t[i]; i++);
return s.substring(0, i);
}
roma.suffixes = ["a", "i", "u", "e", "o", "ya", "yi", "yu", "ye", "yo", "ha", "hi", "hu", "he", "ho", "wa", "wi", "wu", "we", "wo"];
function makeCompleteRegAryWithSuffix(base, sufs, flag, len) {
var regary = flag ? [roma(base).toString()] : [];
len = len || sufs.length;
for (var i = 0; i < len; i++) {
var temp = roma(base + sufs[i]).toString();
if (temp[0] == "[" && temp[temp.length - 1] == "]") {
regary.push(temp);
}
}
return regary;
}
function makeCompleteRegExp(str) {
var regbase;
var regary;
var ma;
var ary;
str = nobashi(str);
if (/[^n]n$/.test(str)) {
regbase = str.slice(0, -1);
regary = makeCompleteRegAryWithSuffix("n", roma.suffixes, true, 10);
}
else if (!/nn$/.test(str) && (ma = /[b-df-hj-np-tv-z]+$/.exec(str))) {
if (/[^b-df-hj-np-tv-z][b-df-hj-np-tv-z]$/.test(str)) {
regbase = str.slice(0, -1);
regary = makeCompleteRegAryWithSuffix(ma, roma.suffixes).concat(
makeCompleteRegAryWithSuffix(ma + ma, roma.suffixes));
}
else {
regbase = RegExp.leftContext;
regary = makeCompleteRegAryWithSuffix(ma, roma.suffixes);
}
regary.push(str.substr(-1, 1)); /* 最後の文字そのもの */
/* ポケモン用 最後の♂♀をmfで入力 */
if ("m" == str[str.length - 1]) {
regary.push(roma(ma.toString().slice(0, -1)).toString() + "♂");
}
else if ("f" == str[str.length - 1]) {
regary.push(roma(ma.toString().slice(0, -1)).toString() + "♀");
}
}
else {
return new RegExp("^" + roma(str).toString());
}
return new RegExp("^" + roma(regbase).toString() + "(?:" + regary.join("|") + ")");
}
function completeFromDataArray(data, node) {
var re = makeCompleteRegExp(node.value);
var ary = [];
for (var i in data) {
if (re.test(data[i].name)) {
ary.push(data[i].name);
}
}
return ary;
}
function completeFromPoke(node) {
return completeFromDataArray(pokelist, node);
}
function completeFromMove(node) {
return completeFromDataArray(movelist, node);
}
function completeFromItem(node) {
return completeFromDataArray(pref.smartCompletionMode ? effectiveItems : itemlist, node);
}
// RegExp.quote がないので 応急処置
function makeMinibufferCompleteRegexp(str) {
try {
return RegExp("^" + str);
}
catch (e) {
var ma;
if (/^unterminated character class/(e.message)) {
throw "[Incomplete input]";
}
else if (ma = /^invalid quantifier (.*)/(e.message)) {
throw "[Invalid quantifier " + ma[1] + "]";
}
else {
throw "[Error]: " + e.message;
}
}
}
function completeFromCommand(node) {
var re = makeMinibufferCompleteRegexp(node.value);
var ary = [];
var insideFormFlag = $d.forms[0] === commandTarget.form && /\d/.test(commandTarget.name);
for (var i in xpd.command) {
if (!xpd.command[i].onlyInsideForm || insideFormFlag) {
if (re.test(i)) {
ary.push(i);
}
}
}
return ary;
}
function nodeKind(node) {
return node.name.substring(0, 4);
}
function finishesCompeletion(node) {
var kind = nodeKind(node);
var source = {
POKE: name_to_i,
WAZA: move_to_i,
ITEM: item_to_i,
mini: function (command) {
return xpd.command.hasOwnProperty(command) ? -1 : 1;
}
};
return source[kind](node.value) != -1;
}
/* modestly: 真なら"かみなり"等のとき補完しない(C-n等で移動時の自動補完用). */
function completeGetCandidates(node, modestly) {
var f = completer(node);
if (f && !(modestly && finishesCompeletion(node))) {
return f(node);
}
else {
return null;
}
}
function completer(node) {
return completer.sourceTable[nodeKind(node)];
}
completer.sourceTable = {
POKE: completeFromPoke,
WAZA: completeFromMove,
ITEM: completeFromItem,
mini: completeFromCommand
};
pref.defaults.completeListingMax = 21;
function complete(e, modestly) {
var node = e.target;
var ary = completeGetCandidates(node, modestly);
if (ary != null) {
var r = ary[0];
if (ary.length > 1) {
for (var i = 1; i < ary.length; i++) {
r = commonPrefix(r, ary[i]);
if (r == "") break;
}
/* kir で キ にしてしまわないように(キrとはならない) */
if ((isMinibuffer(node) ? makeMinibufferCompleteRegexp : makeCompleteRegExp)(node.value).test(r)) {
node.value = r;
}
}
else if (ary.length == 1) {
node.value = ary[0];
}
message(ary.length == 0 ? "[No match]" :
ary.length == 1 ? "[Sole completion]" :
ary.length <= pref.completeListingMax ? ary.sort().join("
") : "[" + ary.length.toString() + " possibilities]");
}
return ary;
}
function completeCommand(e) {
complete(e, false);
return false;
}
function autoMessageCandidates(e) {
if (e.target.value) {
var ary = completeGetCandidates(e.target);
if (ary != null) {
message(ary.length == 0 ? "[No match]" :
ary.length == 1 ? ary[0] :
ary.length < pref.completeListingMax ? ary.sort().join("
") : "[" + ary.length.toString() + " possibilities]");
}
}
}
function isTabKey(e) {
return (keyNumber(e) & 65535) == 9;
}
/*
* 補完と移動の二つの役割をTABキーに持たせるコマンド.
* ユーザが補完してほしいのか移動してほしいのかを状況から推測する.
*/
function completeForTabCommand0(e) {
if (!completer(e.target)) {
return true;
}
else if (isMinibuffer(e.target)) {
complete(e);
return false;
}
else {
if (!e.target.value) {
return true;
}
var candidates = complete(e, true);
if (candidates == null || candidates.length == 1) {
return true;
}
else {
return false;
}
}
}
function completeForTabCommand(e, back) {
if (completeForTabCommand0(e)) {
if (isTabKey(e)) {
return true;
}
else {
if (back) {
return backwardTextbox(e);
}
else {
return forwardTextbox(e);
}
}
}
else {
return false;
}
}
function completeForTabCommand2(e) {
return completeForTabCommand(e, true);
}
pref.defaults.autoCompleteMode = true;
function initializeAutoCompleteMode() {
var i;
for (i = 48; i <= 50; i++) {
keyupmap[i] = autoMessageCandidates;
}
for (i = 65; i <= 90; i++) {
keyupmap[i] = autoMessageCandidates;
}
keyupmap[8] = autoMessageCandidates; /* DEL */
keyupmap[109] = autoMessageCandidates; /* - */
keydownmap[Key.shift + 9] = completeForTabCommand;
keydownmap[9] = completeForTabCommand;
}
/*speed*/
var speedList;
var speed2pokes; /* spd -> array of pokedata */
var ruleTable = {};
ruleTable[2000] = [3, 6, 9, 12, 15, 18, 20, 22, 24, 25, 26, 28, 31, 34, 36, 38, 40, 45, 47, 49, 51, 53, 55, 57, 59, 62, 65, 68, 71, 73, 76, 78, 80, 82, 83, 85, 87, 89, 91, 93, 94, 97, 99, 101, 103, 105, 106, 107, 108, 110, 112, 113, 114, 115, 119, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 132, 134, 135, 136, 139, 141, 142, 143, 144, 145, 146, 148, 149, 154, 157, 160, 162, 164, 166, 168, 169, 171, 176, 178, 181, 182, 184, 185, 186, 189, 190, 192, 193, 195, 196, 197, 198, 199, 200, 201, 202, 203, 205, 206, 207, 208, 210, 211, 212, 213, 214, 215, 217, 219, 221, 222, 224, 225, 226, 227, 229, 230, 232, 233, 234, 235, 237, 241, 242, 243, 244, 245, 248];
pref.defaults.rule = 2000;
function eachPokeInRule(f) {
if (pref.rule) {
for (var i = 0; i < ruleTable[pref.rule].length; i++) {
f(pokelist[ruleTable[pref.rule][i]]);
}
}
else {
for (var i = 1; i < pokelist.length; i++) {
f(pokelist[i]);
}
}
}
function makeSpeedTableBases() {
speedList = [];
speed2pokes = {};
eachPokeInRule(function (poke) {
var spd = poke.spd;
if (speed2pokes[spd]) {
speed2pokes[spd].push(poke);
}
else {
speed2pokes[spd] = [poke];
speedList.push(spd);
}
});
speedList.sort(function (x, y) {return x - y;});
}
function calcSpeed(lv, spd, ko, ef) {
return Math.floor(((spd + (ko == undefined ? 15 : ko)) * 2 + (ef == undefined ? 63 : ef)) * lv / 100) + 5;
}
var speedTable;
pref.defaults.speedTableBorder = 1;
pref.defaults.speedTableDetailed = true;
function createSpeedTable() {
makeSpeedTableBases();
speedTable = $d.createElement("table");
speedTable.border = pref.speedTableBorder;
speedTable.setAttribute("style", "empty-cells: show; float: left");
for (var i = 0; i < speedList.length; i++) {
var row = speedTable.insertRow(0);
row.className = "speed-table-row" + speedList[i];
var cell0 = row.insertCell(0);
cell0.className = "number-cell";
cell0.innerHTML = speedList[i];
for (var lv = 50; lv <= 55; lv++) {
var cell = row.insertCell(-1);
var speed = calcSpeed(lv, speedList[i]);
cell.className = "number-cell speed-table" + speed;
cell.innerHTML = speed;
}
if (pref.speedTableDetailed) {
var last_cell = row.insertCell(-1);
var ary = speed2pokes[speedList[i]].map(function (x) { return x.name; });
if (ary.length > 10) {
last_cell.style.fontSize = "xx-small";
}
else if (ary.length > 10) {
last_cell.style.fontSize = "x-small";
}
else if (ary.length > 8) {
last_cell.style.fontSize = "small";
}
else {
last_cell.style.fontSize = "smaller";
}
last_cell.innerHTML = ary.join(",");
}
}
var hrow = speedTable.insertRow(0);
hrow.appendChild($d.createElement("th"));
for (i = 50; i <= 55; i++) {
var th = $d.createElement("th");
th.innerHTML = i;
hrow.appendChild(th);
}
if (pref.speedTableDetailed) {
var th = $d.createElement("th");
hrow.appendChild(th);
}
}
function cssInsertRule(sheet, selector, body, index) {
return browser.msie ? sheet.addRule(selector, body, index) : sheet.insertRule(selector + "{" + body + "}", index);
}
function cssDeleteRule(sheet, index) {
return browser.msie ? sheet.removeRule(index) : sheet.deleteRule(index);
}
var speedTableSheet =
(function () {
var element = $d.createElement('style');
$d.getElementsByTagName('head')[0].appendChild(element);
cssInsertRule(element.sheet, ".number-cell", "text-align: right", 0);
return element.sheet;
})();
pref.defaults.sameSpeedCellStyle = "color: red";
pref.defaults.sameSpeedRowStyle = "background-color: #ffe4e4";
displaySpeedTable.partial = false;
displaySpeedTable.previousNumber = null;
function displaySpeedTable(e) {
var number = /\d/.exec(e.target.name)[0];
var form = e.target.form;
var box = form["POKE" + number];
var poke = pokelist[name_to_i(box.value)];
if (!poke) {
throw "種族名が不正です";
}
var lv = parseInt(box.form["LV" + box.name.slice(-1)].value, 10);
if (isNaN(lv) || lv < 1 || lv > 100) {
throw "Lvが不正です";
}
var ko = parseInt(get_id(number)[2], 16);
var ef = parseInt(form["EF" + number + "_3"].value, 10);
if (isNaN(ef) || ef < 0 || ef > 63) {
throw "努力値が不正です";
}
var speed = calcSpeed(lv, poke.spd, ko, ef);
var speedMax = calcSpeed(55, poke.spd, ko, ef);
var speedMin = calcSpeed(50, poke.spd, ko, ef);
var rows = speedTable.rows;
var partialFlag = previousCommand === displaySpeedTable && displaySpeedTable.partial && displaySpeedTable.previousNumber == number;
for (var i = 1; i < rows.length; i++) {
var row = rows[i];
var spd = Number(row.cells[0].innerHTML);
if (partialFlag || calcSpeed(50, spd) <= speedMax && calcSpeed(55, spd) >= speedMin) {
row.style.display = "";
}
else {
row.style.display = "none";
}
}
displaySpeedTable.partial = !partialFlag;
displaySpeedTable.previousNumber = number;
while (speedTableSheet.cssRules[displaySpeedTable.csslen]) {
cssDeleteRule(speedTableSheet, displaySpeedTable.csslen);
}
if (pref.sameSpeedCellStyle) {
cssInsertRule(speedTableSheet, ".speed-table" + speed, pref.sameSpeedCellStyle, displaySpeedTable.csslen);
}
if (pref.sameSpeedRowStyle) {
cssInsertRule(speedTableSheet, ".speed-table-row" + poke.spd, pref.sameSpeedRowStyle, displaySpeedTable.csslen);
}
var echo = $d.getElementById("echo-area");
echo.innerHTML = "";
var div = $d.createElement("div");
div.innerHTML = speed;
div.setAttribute("style", "float: left; width: 2.5em");
echo.appendChild(div);
echo.appendChild(speedTable);
}
displaySpeedTable.csslen = speedTableSheet.cssRules.length;
interactiveInsideForm(displaySpeedTable, "素早さ表を表示");
function nextLine(e) {
complete(e, true);
var target = e.target;
if (isMinibuffer(target)) return false;
var n = Number(/\d/.exec(target.name)[0]);
$d.forms[0][RegExp.leftContext + (n + 1) % 6 + RegExp.rightContext].select();
return false;
}
interactiveInsideForm(nextLine, "次の行へ移動");
function previousLine(e) {
complete(e, true);
var target = e.target;
if (isMinibuffer(target)) return false;
var n = Number(/\d/.exec(target.name)[0]);
$d.forms[0][RegExp.leftContext + (n + 5) % 6 + RegExp.rightContext].select();
return false;
}
interactiveInsideForm(previousLine, "前の行へ移動");
var textboxIndexes = {};
var textboxes = [];
function initializeTextboxIndexes() {
var t = $d.getElementsByTagName("input");
for (var i = 0; i < t.length; i++) {
if (t[i].type == "text") {
textboxIndexes[t[i].name] = textboxes.length;
textboxes.push(t[i]);
}
}
textboxes[-1] = textboxes[textboxes.length - 1];
textboxes[textboxes.length] = textboxes[0];
}
function forwardTextbox(e) {
complete(e, true);
var target = e.target;
if (isMinibuffer(target)) return false;
textboxes[textboxIndexes[target.name] + 1].select();
return false;
}
interactiveInsideForm(forwardTextbox, "前方のテキストボックスへ移動");
function backwardTextbox(e) {
complete(e, true);
var target = e.target;
if (isMinibuffer(target)) return false;
textboxes[textboxIndexes[target.name] - 1].select();
return false;
}
interactiveInsideForm(backwardTextbox, "後方のテキストボックスへ移動");
var lineWidth = 13;
pref.defaults.blockStartIndexes = [1, 2, 7];
function findIndexN(ary, f) {
for (var i = 0; i < ary.length; i++) {
if (f(ary[i], i, ary)) {
return i;
}
}
return i;
}
function currentBlockIndex(name) {
var indexes = pref.blockStartIndexes;
var k = textboxIndexes[name] % lineWidth;
return findIndexN(indexes, function(i) {
return k < i;
}) - 1;
}
function switchBlock(e) {
complete(e, true);
var target = e.target;
var name = target.name;
if (isMinibuffer(target)) return false;
var index = textboxIndexes[name];
var blockIndex = currentBlockIndex(name);
var blockIndexes = pref.blockStartIndexes;
var len = blockIndexes.length;
var base = index - index % lineWidth;
var newBlockIndex = blockIndex == len - 1 ? 0 : blockIndex + 1;
textboxes[base + blockIndexes[newBlockIndex]].select();
return false;
}
interactiveInsideForm(switchBlock, "ブロック単位で移動");
function getBeginningOfLine(textbox) {
var index = textboxIndexes[textbox.name];
var base = index - index % lineWidth;
return textboxes[base];
}
function beginningOfLine(e) {
complete(e, true);
var target = e.target;
if (isMinibuffer(target)) return false;
getBeginningOfLine(target).select();
return false;
}
interactiveInsideForm(beginningOfLine, "行頭へ移動");
function beginningOfNextLine(e) {
var target = e.target;
if (isMinibuffer(target)) {
executeCommand(e);
}
else {
if (completeForTabCommand0(e)) {
target.form["POKE" + (getLineNumber(target) + 7) % 6].select();
}
}
return false;
}
interactiveInsideForm(beginningOfNextLine, "次の行の種族へ移動");
function transposeMoves(e) {
var src = e.target;
var ma;
if ((ma = /^(WAZA\d_)(\d)/.exec(src.name)) == null) return;
var form = $d.forms[0];
var dest = form[ma[1] + (Number(ma[2]) + 1 & 3)];
var temp = src.value;
src.value = dest.value;
dest.value = temp;
dest.select();
}
interactiveInsideForm(transposeMoves, "技の並び替え");
function killLineN(n) {
var f = $d.forms[0];
f["LV" + n].value = pref.defaultLevel;
f["POKE" + n].value = "";
for (var i = 0; i < 4; i++) {
f["WAZA" + n + "_" + i].value = "";
}
f["ITEM" + n].value = "";
f["KO" + n].value = "FFFF";
for (i = 0; i < 5; i++) {
f["EF" + n + "_" + i].value = "63";
}
if (pref.killLineKillPP) {
poke[n].p_up = [3, 3, 3, 3];
}
}
pref.defaults.defaultLevel = 50;
pref.defaults.killLineKillPP = true;
function killLine(e) {
var target = e.target;
if (isMinibuffer(target)) return false;
killLineN(getLineNumber(target));
formRefresh();
return false;
}
interactiveInsideForm(killLine, "一行削除");
function clearAll() {
for (var i = 0; i < 6; i++) {
killLineN(i);
}
formRefresh();
}
interactive(clearAll, "全て削除");
function version() {
message(xpd.version);
}
interactive(version, "バージョンを表示");
function messageWithTextbox(str) {
message('');
var box = $d.getElementById("message-textbox");
box.value = str;
box.select();
}
/*export*/
function exportPD() {
messageWithTextbox(get_PD());
}
interactive(exportPD);
/*import*/
function importPD() {
var pd = prompt("PD-string");
if (pd) {
var ma;
if (ma = /^1_x_(.*)$/(pd)) {
pd = ma[1];
}
if (!/^1(?:_x_(?:\d{1,3}_){2}(?:[0-9a-f]_){4}(?:\d{1,2}_){5}(?:\d{1,3}_){4}(?:\d{1,2}_){4}(?:[0-3]_){4}\d{1,3}_0_\d{1,3}){6}/i("1_x_" + pd)) {
throw "PD値が正しくありません";
}
var poke = new Array(get_poke_num());
var ary = pd.split("_x_");
for (var i = 0; i < poke.length; i++) {
poke[i] = new Poke(ary[i]);
}
/* text box に反映させる */
var len = get_poke_num();
var form = $d.forms[0];
for (i = 0; i < len; i++) {
form["POKE" + i].value = pokelist[poke[i].no].name;
form["LV" + i].value = poke[i].lv;
form["KO" + i].value = poke[i].id.join("");
for (var j = 0; j < 5; j++) {
form["EF" + i + "_" + j].value = poke[i].ef[j];
}
for (j = 0; j < 4; j++) {
form["WAZA" + i + "_" + j].value = movelist[poke[i].mv[j]].name;
}
form["ITEM" + i].value = itemlist[poke[i].item].name;
}
formRefresh();
}
}
interactive(importPD);
var generateId = (
function () {
var base = "generatedId";
var seed = 0;
return function () {
return base + (seed++);
};
})();
pref.defaults.partyBoxURL = "http://www.q9con.net/pokemon/PartyBox/convert.php";
function openInPartyBox() {
open(pref.partyBoxURL + "?pd=1_x_" + get_PD(), "partybox_" + generateId());
}
interactive(openInPartyBox, "パーティをParty Boxで開く");
/*write-rebuild-form*/
function writeRebuildForm() {
messageWithTextbox('