// ==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('
'); } interactive(writeRebuildForm, "HTMLの再現フォームを表示"); function writeRebuildJSCode() { messageWithTextbox('javascript:void(document.forms[0].PD.value="' + get_PD() + '");'); } interactive(writeRebuildJSCode); function markSwapingCheckbox(e) { if (isMinibuffer(e.target)) { return true; } else { e.target.form["swap" + getLineNumber(e.target)].click(); return false; } } interactiveInsideForm(markSwapingCheckbox, "ポケモンの並び替え"); /*level*/ pref.defaults.setLevels = [50, 51, 52, 53, 54, 55, 5, 100, 50, 50]; function getLevelFromCharCode(c) { return pref.setLevels[c - 48]; } function setLevelN(n, lv) { $d.forms[0]["LV" + n].value = lv; } function setLevel(e) { var target = e.target; setLevelN(getLineNumber(target), getLevelFromCharCode(e.charCode)); set_hp(); return false; } interactiveInsideForm(setLevel, "レベルを入力"); function setLevelAll0(lv) { for (var i = 0; i < 6; i++) { setLevelN(i, lv); } set_hp(); } function setLevelAll(e) { var lv = getLevelFromCharCode(e.charCode) || parseInt(prompt("Lv"), 10); if (isNaN(lv) || lv < 1 || lv > 100) { throw "1-100の数値を入力して下さい"; } else { setLevelAll0(lv); } return false; } interactive(setLevelAll, "レベル一括入力"); pref.defaults.toggleLevelTable = { 50: 51, 51: 50, 53: 55, 55: 53 }; function toggleLevelAll(e) { var form = $d.forms[0]; var table = pref.toggleLevelTable; for (var i = 0; i < 6; i++) { var box = form["LV" + i]; box.value = table[box.value]; } return false; } interactive(toggleLevelAll, "55-50編成と53-51編成をトグル"); /*describe*/ function keys(obj) { var ary = []; for (var i in obj) { ary.push(i); } return ary; } function commands(pred) { var ary = keys(xpd.command); if (pred) { function f(i) { return pred(xpd.command[i]); } ary = ary.filter(f); } return ary.sort(); } function makeTable(ary, header) { var table = $d.createElement("table"); var th = table.createTHead(); table.border = 1; table.setAttribute("style", "empty-cells: show; float: left"); if (header) { var row = th.insertRow(0); header.forEach(function (i) { var cell = row.insertCell(-1); cell.innerHTML = i[0]; if (i[1]) cell.title = i[1]; }); } ary.forEach(function (a) { var row = table.insertRow(-1); a.forEach(function (i) { row.insertCell(-1).innerHTML = i; }); }); return table; } var keybindCache = false; var command2keybind = null; var keybind2command = null; function updateKeybindCache() { if (!keybindCache) { command2keybind = {}; keybind2command = {}; function f(map, prefix) { for (var key in map) { if (key == "name" || key == "parent") continue; var val = map[key]; if (typeof(val) == "function") { if (!command2keybind[val.name]) { command2keybind[val.name] = []; } var keyString = prefix + " " + keyToString(key); keybind2command[keyString] = val.commandName; command2keybind[val.name].push(keyString); } else { f(val, prefix + " " + val.name); } } } f(keymap, ""); f(globalKeymap, ""); keybindCache = true; } } function commandToKeybind(i) { updateKeybindCache(); return command2keybind[i]; } function keybindToCommand(i) { updateKeybindCache(); return keybind2command[i]; } pref.defaults.describeFormats = { commandName: [["コマンド名"], function (name, _) { return name; }], document: [["説明", "詳細は xpd wiki を参照してください"], function (_, command) { return command.document || "(undocumented)"; }], keybind: [["キーバインド", "キーバインドがあるコマンドは,キーでコマンドを実行することができます"], function (_, command) { var a = commandToKeybind(command.name); return a ? (a.length > 6 ? a.slice(0, 6).concat("...") : a).join(", ") : ""; }], global: [["Global", "Global Command はフォームの外でも実行することができます"], function (_, command) { return command.onlyInsideForm ? "" : "○"; }] }; function describeCommand0(format_ary, pred) { var format = []; var header = []; var t = pref.describeFormats; format_ary.forEach(function (i) { var s = t[i]; format.push(s[1]); header.push(s[0]); }); message(makeTable(commands(pred).map( function (name) { var res = []; for each (var f in format) { res.push(f(name, xpd.command[name])); } return res; }), header)); } function describeAllCommand(e) { describeCommand0(keys(pref.describeFormats)); } interactive(describeAllCommand, "コマンド一覧を表示"); /* function describeGlobalCommand(e) { describeCommand0(["commandName", "document", "keybind"], function (command) { return !command.onlyInsideForm; }); } interactive(describeGlobalCommand); */ /*unfocus*/ function unfocus(e) { e.target.blur(); } interactive(unfocus, "フォーカスを外す"); /*help*/ function help(e) { message(help.string); } help.string = '

xpd wiki

'; interactive(help); /*key*/ var Key = {}; Key.shift = 65536; Key.ctrl = Key.shift << 1; Key.alt = Key.ctrl << 1; Key.meta = Key.alt << 1; Key.special = { TAB: 9, RET: 13, SPC: 32 }; (function (obj) { for (var i in obj) { obj[obj[i]] = i; } })(Key.special); function kbd(str) { var ma = /^(C-)?(M-)?(A-)?(S-)?(?:(TAB|RET|SPC)|(.))$/(str); if (!ma) throw 'wrong argument for kbd("' + str + '")'; var [_, c, m, a, s, sp, key] = ma; return (c ? Key.ctrl : 0) + (m ? Key.meta : 0) + (a ? Key.alt : 0) + (s ? Key.shift : 0) + (sp ? Key.special[sp] : key.charCodeAt(0)); } function keyToString(n) { var m = Key.shift - 1 & n; return (Key.ctrl & n ? "C-" : "") + (Key.meta & n ? "M-" : "") + (Key.alt & n ? "A-" : "") + (Key.shift & n ? "S-" : "") + (Key.special[m] || String.fromCharCode(m)); } function Keymap(name, parent, obj) { this.name = name || null; this.parent = parent || null; if (obj) { for (var i in obj) { this[i] = obj[i]; } } } Keymap.prototype.get = function(n) { return this[n] || (this.parent ? this.parent.get(n) : undefined); }; Keymap.prototype.define = function(str, command) { keybindCache = false; this[kbd(str)] = command; }; Keymap.prototype.remove = function(str) { keybindCache = false; this[kbd(str)] = undefined; }; Keymap.prototype.makeSubKeymap = function(name, parent, obj) { return this[kbd(name)] = new Keymap(name, parent, obj); }; var currentMap = null; var keyupmap = {}; var keydownmap = {}; var keyupIgnoreMap = {}; /* keyCode ベース */ var globalKeymap = xpd.globalKeymap = new Keymap(); var keymap = xpd.keymap = new Keymap(null, globalKeymap); var macOptionKeymap = { 229: 97, /* a */ 8747: 98, /* b */ 402: 102, /* f */ 730: 107, /* k */ 8224: 116, /* t */ 8776: 120 /* x */ }; function keyNumber(e) { var n = e.charCode || e.keyCode; var m; if (platform.macosx && (m = macOptionKeymap[n])) { return Key.alt + m; } if (e.shiftKey) { if (e.charCode && n >= 65 && n <= 90) { n += 32; } n += Key.shift; } if (e.ctrlKey) n += Key.ctrl; if (e.altKey) n += Key.alt; if (e.metaKey) n += Key.meta; return n; } var previousCommand; function runCommand(f, e) { if (typeof(f) == "function") { message(""); try { return Boolean(f(e)); } catch (er) { message(er); return false; } finally { previousCommand = f; currentMap = null; } } else if (typeof(f) == "object") { if (currentMap == null) { message(f.name); } else { message(getMessage() + " " + f.name); } currentMap = f; return false; } else if (typeof(f) == "undefined" && currentMap != null) { currentMap = null; quitCommand(e); message("Undefined key"); return false; } else { return true; } } var modifierKeyList = [16, 17, 18, 91, 92, 224]; function isModifierKey(e) { return modifierKeyList.indexOf(e.keyCode) >= 0; } function ignoreChar(c) { keyupIgnoreMap[c >= 97 && c <= 122 ? c - 32 : c] = true; } function setIgnoreKey(e) { var c = e.charCode; if (macOptionKeymap[c]) { keyupIgnoreMap[18] = true; keyupIgnoreMap[macOptionKeymap[c] - 32] = true; } else if (c && (e.ctrlKey || e.altKey)) { keyupIgnoreMap[e.ctrlKey ? 17 : 18] = true; ignoreChar(c); } else if (currentMap) { ignoreChar(c); } } function onKeyUp(e) { if (keyupIgnoreMap[e.keyCode]) { keyupIgnoreMap[e.keyCode] = false; return true; } else { return currentMap ? false : runCommand(keyupmap[keyNumber(e)], e); } } function onKeyDown(e) { return currentMap ? false : runCommand(keydownmap[keyNumber(e)], e); } function globalOnKeyPress(e) { setIgnoreKey(e); var n = keyNumber(e); return runCommand((currentMap || (e.target.form === $d.forms[0] ? keymap : globalKeymap)).get(keyNumber(e)), e); } function swap_value(a, b) { var temp = a.value; a.value = b.value; b.value = temp; } function swap_poke() { var ary = []; for (var i = 0; i < 6; i++) { if ($d.forms[0]["swap" + i].checked) ary.push(i); } if (ary.length == 2) { var f = $d.forms[0]; var attrs = ["LV", "POKE", "ITEM", "KO"]; for (i = 0; i < attrs.length; i++) { swap_value(f[attrs[i] + ary[0]], f[attrs[i] + ary[1]]); } for (i = 0; i < 4; i++) { swap_value(f["WAZA" + ary[0] + "_" + i], f["WAZA" + ary[1] + "_" + i]); } for (i = 0; i < 5; i++) { swap_value(f["EF" + ary[0] + "_" + i], f["EF" + ary[1] + "_" + i]); } formRefresh(); for (i = 0; i < 6; i++) { $d.forms[0]["swap" + i].checked = false; } } } function get_no() { return $d.forms[0].CBAN.value-0; } function get_cookie() { var a = $d.cookie.split(";"); for (var i = 0; i < a.length; i++) { if (new RegExp("PD" + (get_no() - 1) + "=(.+)").exec(a[i])) { return RegExp.$1.slice(4).split("_x_"); } } return null; } /*PDの形式からポケモンオブジェクトを生成するコンストラクタ*/ function Poke(pd_str) { if(!/^(?:\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}$/i(pd_str)) { throw "Poke: pd_str `" + pd_str + "' is wrong format"; } var a = pd_str.split("_"); this.no = a[0]; this.lv = a[1]; this.id = [a[2], a[3], a[4], a[5]]; this.ef = [a[6], a[7], a[8], a[9], a[10]]; this.mv = [a[11], a[12], a[13], a[14]]; this.pp = [a[15], a[16], a[17], a[18]]; this.p_up = [a[19], a[20], a[21], a[22]]; this.hp = a[23]; this.item = a[25]; /* validation check */ if (!(pokelist[this.no] && this.lv >= 1 && this.lv <= 100 && this.ef.every(function (i) { return i >= 0 && i <= 63; }) && this.mv.every(function (i) { return movelist[i]; }) && /*this.pp.every(function (i) { return ; }) &&*/ itemlist[this.item])) { throw "Poke: pd_str `" + pd_str + "' is wrong value"; } } /* "−" -> "ー" */ function nobashi(str) { return str.replace(/−|-/g, "ー").replace(/10/g, "10"); } function name_to_i(name) { name = nobashi(name); for (var i = 0; i < pokelist.length; i++) { if (pokelist[i] && name == pokelist[i].name) return i; } return -1; } function move_to_i(move) { move = nobashi(move); for (var i = 0; i < movelist.length; i++) { if (movelist[i] && move == movelist[i].name) return i; } return -1; } function item_to_i(item) { item = nobashi(item); for (var i = 0; i < itemlist.length; i++) { if (itemlist[i] && item == itemlist[i].name) return i; } return -1; } function get_poke_num() { return $d.getElementsByTagName('table')[0].rows.length - 1; } function calc_hp(no, lv, hp_id, hp_ef) { return Math.floor(((pokelist[no].hp + hp_id) * 2 + hp_ef) * lv / 100) + lv + 10; } function calc_hp_id(id) { var result = 0; for (var i = 0; i < 4; i++) { result += (parseInt("0x" + id[i]) % 2) * Math.pow(2, 3 - i); } return result; } function get_id(n) { var ko = $d.forms[0]["KO" + n].value; if (ko.length != 4 || isNaN(parseInt("0x" + ko))) throw (parseInt(n) + 1) + "匹目の個体値が不正です."; return ko.split(""); } function set_poke() { var poke_num = get_poke_num(); var f = $d.forms[0]; for (var i = 0; i < poke_num; i++) { var lv = parseInt(f["LV" + i].value); if (isNaN(lv) || lv < 1 || lv > 100) throw (i + 1) + "匹目のレベルが不正です."; poke[i].lv = lv; var no = name_to_i(f["POKE" + i].value); if (!pokelist[no]) throw (i + 1) + "匹目の種族名が不正です."; poke[i].no = no; for (var j = 0; j < 4; j++) { var mv = move_to_i(f["WAZA" + i + "_" + j].value); if (!movelist[mv]) throw (i + 1) + "匹目の技" + (j + 1) + "が不正です."; poke[i].mv[j] = mv; poke[i].pp[j] = movelist[mv].pp * (5 + Number(poke[i].p_up[j])) / 5; } poke[i].id = get_id(i); for (j = 0; j < 5; j++) { var ef = Number(f["EF" + i + "_" + j].value); if (isNaN(ef) || ef < 0 || ef > 63) throw (i + 1) + "匹目の努力値が不正です."; poke[i].ef[j] = ef; } var item = item_to_i(f["ITEM" + i].value); if (itemlist[item] == undefined) throw (i + 1) + "匹目のアイテム名が不正です."; poke[i].item = item; with(poke[i]) { poke[i].hp = calc_hp(no, lv, calc_hp_id(id), parseInt(ef[0])); } } } /*pokeの状態からPDに値をget*/ function get_PD() { function f(ary) { return ary.join("_"); } var poke_num = get_poke_num(); var ary = new Array(poke_num); for (var i = 0; i < poke_num; i++) { with(poke[i]) { ary[i] = f([no, lv, f(id), f(ef), f(mv), f(pp), f(p_up), hp, 0, item]); } } return ary.join("_x_"); } /*pokeの状態からPDに値をset*/ function set_PD() { $d.forms[0].PD.value = get_PD(); } function change() { try { set_poke(); set_PD(); } catch (e) { message(e); return false; } return true; } var backButton; function back() { backButton && backButton.click(); return false; } interactive(back, "前画面へ戻る"); function initializeBackButton() { var buttons = $d.getElementsByName("submit"); for (var i = 0; i < buttons.length; i++) { if (buttons[i].value == "戻る") { backButton = buttons[i]; return; } } message("warning: 戻るボタンが見つかりません"); backButton = null; } function save() { if (change()) { message("Saving..."); var httpRequest = new XMLHttpRequest(); httpRequest.open('POST', 'PDINPUT.cgi', true); httpRequest.overrideMimeType('text/xml'); httpRequest.onreadystatechange = function() { if(httpRequest.readyState == 4) { if(httpRequest.status == 200) { if (get_PD() == /PD VALUE=([^>]*)/(httpRequest.responseText)[1]) { message("Saving...succeeded"); } else { message("Saving...failed"); } } else { message("Error " + httpRequest.status); } } }; httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); var form = $d.forms[0]; httpRequest.send('ACTION=RE&CBAN=' + form.CBAN.value + '&PD=' + get_PD() + '&sim=&CH=on&submit=%CA%DD%C2%B8'); } return false; } interactive(save, "保存"); function quit() { $d.location = "http://psense.lib.net/_/PDINPUT.cgi"; return false; } interactive(quit, "パーティ一覧に戻る"); function newParty() { var b = $d.getElementsByName("submit")[2]; if (b.value != "再現") { throw "再現ボタンがみつかりません(value=\"" + b.value + "\")"; } b.click(); return false; } interactive(newParty, "新規保存"); function set_hp() { for (var i = 0; i < 6; i++) { var no = name_to_i($d.forms[0]["POKE" + i].value); var hp; if (no >= 0) { var lv = parseInt($d.forms[0]["LV" + i].value, 10); var ef = parseInt($d.forms[0]["EF" + i + "_" + 0].value, 10); if (isNaN(lv) || lv < 1 || lv > 100 || isNaN(ef)) { hp = ""; } else { hp = calc_hp(no, lv, calc_hp_id(get_id(i)), ef); } } else { hp = ""; } $d.getElementById("hp" + i).innerHTML = hp; } } function set_sex() { var form = $d.forms[0]; for (var i = 0; i < 6; i++) { var str; try { var female = pokelist[name_to_i(form["POKE" + i].value)].female; if (female < 0) { str = " "; } else if (female > Number("0x" + form["KO" + i].value.slice(0, 1))) { str = "♀"; } else { str = "♂"; } } catch (e) { str = " "; } $d.getElementById("sex" + i).innerHTML = str; } } function getMove(i, j) { return $d.forms[0]["WAZA" + i + "_" + j].value; } function getMoves(i) { var form = $d.forms[0]; var ary = new Array(4); for (var j = 0; j < ary.length; j++) { ary[j] = getMove(i, j); } return ary; } pref.defaults.hiddenpowerColofulMode = true; pref.defaults.hiddenpowerNames = ["格","飛","毒","地","岩","虫","霊","鋼","炎","水","草","電","エ","氷","竜","悪"]; pref.defaults.hiddenpowerColors = ["#d0a0a0", "#d0ffd0", "#c080ff", "#f0a060", "#d0d0a0", "#80d080", "#b0a0e0", "#e0e0e0", "#ffa0a0", "#a0a0ff", "#a0ffa0", "#ffffa0", "#ffa0ff", "#c0c0ff", "#ffa060", "#909090"]; function set_hiddenpower() { var form = $d.forms[0]; for (var i = 0; i < 6; i++) { var str = " "; var color = "c0c0c0"; try { if (getMoves(i).map(move_to_i).some(function (i) { return i == 238; })) { /* 個体値から計算 */ var ary = get_id(i); str = pref.hiddenpowerNames[parseInt(ary[0], 16) % 4 * 4 + parseInt(ary[1], 16) % 4]; if (pref.hiddenpowerColofulMode) { color = pref.hiddenpowerColors[parseInt(ary[0], 16) % 4 * 4 + parseInt(ary[1], 16) % 4]; } } } catch (e) { message(e); } var hid = $d.getElementById("hiddenpower" + i); hid.innerHTML = str; hid.bgColor = color; } } function set_status() { try { set_sex(); set_hp(); } catch (e) { message(e); } } function formRefresh() { set_status(); set_hiddenpower(); } function rebuild() { if ($d.cookie.split(";").length >= 17) { message("パーティが多すぎます"); return false; } var r = change(); if (r) { $d.forms[0].C.value = "1_x_" + $d.forms[0].PD.value; $d.forms[0].ACTION.value = "RECEPT"; } return r; } function setTableStyleNowrap() { var element = $d.createElement('style'); element.appendChild($d.createTextNode('')); $d.getElementsByTagName('head')[0].appendChild(element); if (browser.msie) { element.sheet.addRule("td", "white-space:nowrap", 0); } else if (!browser.camino) { element.sheet.insertRule("td{white-space:nowrap;}", 0); } } var systemCommandMap = new Keymap("C-x"); pref.defaults.aggressiveKeybindMode = true; function setAggressiveKeybind() { var k = "C-x"; pref.aggressiveKeybindMode ? globalKeymap.define(k, systemCommandMap) : globalKeymap.remove(k); } function aggressiveKeybindMode(e) { pref.aggressiveKeybindMode = !pref.aggressiveKeybindMode; setAggressiveKeybind(); message("aggressive-keybind-mode " + (pref.aggressiveKeybindMode ? "enabled" : "disabled")); } interactive(aggressiveKeybindMode); var poke; function initializeKeymap() { keymap.define("SPC", completeCommand); keymap.define("C-i", completeForTabCommand); keymap.define("C-n", nextLine); keymap.define("C-p", previousLine); keymap.define("A-k", killLine); keymap.define("A-f", forwardTextbox); keymap.define("A-b", backwardTextbox); keymap.define("A-t", transposeMoves); keymap.define("C-o", switchBlock); keymap.define("A-a", beginningOfLine); keymap.define("C-j", beginningOfNextLine); keymap.define("C-S-i", completeForTabCommand2); keymap.define("@", markSwapingCheckbox); var globalSetLevelMap = globalKeymap.makeSubKeymap("C-l"); globalSetLevelMap.define("C-t", toggleLevelAll); var setLevelMap = keymap.makeSubKeymap("C-l", globalSetLevelMap); var setLevelAllMap = globalSetLevelMap.makeSubKeymap("C-a"); for (var i = 0; i < 10; i++) { setLevelMap.define(i, setLevel); setLevelAllMap.define(i, setLevelAll); } globalKeymap.define("A-x", displayMinibuffer); globalKeymap.define("C-g", quitCommand); keymap.define("C-m", executeCommand); keymap.define("RET", executeCommand); keymap.define("C-s", displaySpeedTable); systemCommandMap.define("C-s", save); systemCommandMap.define("C-c", quit); systemCommandMap.define("C-b", back); systemCommandMap.define("C-k", clearAll); systemCommandMap.define("C-w", newParty); systemCommandMap.define("C-u", unfocus); setAggressiveKeybind(); } pref.defaults.formSizeEconomyMode = true; function initialize() { try { var a = $d.forms[0].PD.value ? $d.forms[0].PD.value.split("_x_") : get_cookie(); poke = new Array(a.length); for (var i = 0; i < a.length; i++) { poke[i] = new Poke(a[i]); } stripTableHeader(); pref.formSizeEconomyMode && fixFormSizes(); setTableStyleNowrap(); $d.forms[0].onkeyup = onKeyUp; $d.forms[0].onkeydown = onKeyDown; $w.onkeypress = globalOnKeyPress; setInputs(); setButtons(); createEffortColumn(); createHiddenpowerColumn(); createHPColumn(); createSexColumn(); createSwapCheckBox(); createEchoArea(); initializeTextboxIndexes(); createMiniBuffer(); setOnChange(); set_status(); set_hiddenpower(); createSpeedTable(); initializeKeymap(); pref.autoCompleteMode && initializeAutoCompleteMode(); initializeBackButton(); } catch (e) { alert(e); } } with (pref) { /* 設定ここから */ /* * ここにユーザ設定を書くことで,xpdをカスタマイズすることができます. * 例:めざパの色をカラフルにしない * hiddenpowerColofulMode = false; */ } /* 設定ここまで */ initialize();