// maps name -> [id] WEAPON_NAME_IDX = {}; // maps id -> dict with keys: // ["name", "wtype", "final", "element", "element_2", "awaken"] WEAPON_ID_IDX = {}; // maps weapon name name -> calculating palico id string PALICO_ID = {}; _ITEM_NAME_SPECIAL = { "welldonesteak": "Well-done Steak", "lrgelderdragonbone": "Lrg ElderDragon Bone", "highqualitypelt": "High-quality Pelt", "kingsfrill": "King's Frill", "btetsucabrahardclaw": "B.TetsucabraHardclaw", "heartstoppingbeak": "Heart-stopping Beak", "dsqueenconcentrate": "D.S.QueenConcentrate", "dahrenstone": "Dah'renstone", "championsweapon": "Champion's Weapon", "championsarmor": "Champion's Armor", "popeyedgoldfish": "Pop-eyed Goldfish", "100mwantedposter": "100m+ Wanted Poster", "goddesssmelody": "Goddess's Melody", "goddesssembrace": "Goddess's Embrace", "capcommhspissue": "Capcom MH Sp. Issue", "goddesssfire": "Goddess's Fire", "huntersticket": "Hunter's Ticket", "herosseal": "Hero's Seal", "thetaleofpoogie": "The Tale of Poogie", "goddesssgrace": "Goddess's Grace", "conquerorsseal": "Conqueror's Seal", "conquerorssealg": "Conqueror's Seal G", "questersticket": "Quester's Ticket", "instructorsticket":"Instructor's Ticket", "veticket": "VE Ticket", "vedeluxeticket": "VE Deluxe Ticket", "vebronzeticket": "VE Bronze Ticket", "vesilverticket": "VE Silver Ticket", "vegoldenticket": "VE Golden Ticket", "vecosmicticket": "VE Cosmic Ticket" }; WEAPON_TYPE_ABBR = { "Great Sword": "GS", "Long Sword": "LS", "Sword and Shield": "Sw", "Dual Blades": "DB", "Hammer": "Ha", "Hunting Horn": "HH", "Lance": "La", "Gunlance": "GL", "Switch Axe": "SA", "Charge Blade": "CB", "Insect Glaive": "IG", "Light Bowgun": "LBG", "Heavy Bowgun": "HBG", "Bow": "Bow" }; ELEMENT_ABBR = { "Fire": "Fi", "Water": "Wa", "Thunder": "Th", "Ice": "Ic", "Dragon": "Dr", "Poison": "Po", "Paralysis": "Pa", "Sleep": "Sl", "Blashblight": "Bl" }; (function($) { $.QueryString = (function(a) { if (a == "") return {}; var b = {}; for (var i = 0; i < a.length; ++i) { var p=a[i].split('='); if (p.length != 2) continue; b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); } return b; })(window.location.search.substr(1).split('&')) })(jQuery); function encode_utf8(s) { return unescape(encodeURIComponent(s)); } function encode_qs(obj) { var params = []; for (var key in obj) { if (!obj.hasOwnProperty(key)) continue; params.push(encodeURIComponent(key) + "=" + encodeURIComponent(obj[key])); } return params.join("&"); } function get_base_path() { var path = document.location.pathname; return path.substring(0, path.lastIndexOf('/')); } function _item_name_key(s) { return s.replace(RegExp("[ .'+-]","g"), '').toLowerCase(); } function normalize_name(s) { var key = _item_name_key(s); if (_ITEM_NAME_SPECIAL[key]) { return _ITEM_NAME_SPECIAL[key]; } var chars = s.split(""); var cap_next = true; var i; for (i=0; i max_len) max_len = k.length }); */ var keys = Object.keys(obj); keys.sort(); var lines = []; $.each(keys, function(i, key) { //var space = Array(2 + max_len - key.length).join(" "); lines.push(key + " " + obj[key]); }); return lines.join(", "); } function object_add_values(dst_obj, src_obj) { // update dst_obj with values from src_obj, adding them together if // the key is already in dst_obj $.each(src_obj, function(k, v) { if (k in dst_obj) { dst_obj[k] += v; } else { dst_obj[k] = v; } }); } function get_calculating_palico_setup(weapon_data) { // NB: load_calculating_palico_data must be called first var name = weapon_data["name"]; if (! (name in PALICO_ID)) { return ""; } var setup = []; setup.push(PALICO_ID[name]); var sharpness_plus = weapon_data["sharpness_plus"]; var max_sharpness = -1; for (var i=0; i < sharpness_plus.length; i++) { if (sharpness_plus[i] == 0) { break; } max_sharpness = i; } setup.push(max_sharpness); setup.push("0.1.awk,shp"); return setup.join("."); } function get_calculating_palico_uri(setups) { // m=31 is Great Jaggi var base = "http://minyoung.ch/calculatingpalico/?m=31&s="; return base + encodeURIComponent(JSON.stringify(setups)); } function get_weapon_sort_values(weapon_data) { // Note: javascript does string coersion when comparing lists, // so this can't be used directly, see cmp_arrays. var sharp_reverse; if (weapon_data["sharpness"]) { sharp_reverse = Array.prototype.slice.call(weapon_data["sharpness"]); sharp_reverse.reverse(); } else { sharp_reverse = null; } return [ weapon_data["attack"], sharp_reverse, weapon_data["element_attack"], weapon_data["affinity"], weapon_data["num_slots"], weapon_data["defense"] ]; } function cmp_arrays(alist, blist) { var cmp; for (var i=0; i b) { return 1; } } } return 0; }