Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name l2d3 api
- // @namespace http://use.i.E.your.homepage/
- // @version 0.1
- // @description automatically download data from d3 api
- // @match http://l2d3.com/calculator/
- // @copyright 2014+, lechium06@diablofans
- // ==/UserScript==
- // enter with a '-', not a '#'
- var user = "Misan-2129";
- var element = "Arcane";
- function load(cb){
- return function(resp){
- if(resp.readyState != 4){
- return;
- }
- console.log(resp);
- var js = JSON.parse(resp.response);
- cb(js);
- };
- }
- function get(url, callback){
- GM_xmlhttpRequest({
- method: 'GET',
- url: 'http://eu.battle.net/api/d3/' + url,
- accept: 'application/json',
- onreadystatechange: load(callback)});
- }
- function percent(val){
- return val * 100.0;
- }
- function capitalize(s){
- return s[0].toUpperCase() + s.slice(1);
- }
- var primary = { "wizard": "intelligence" };
- var transf = { "Crit_Percent_Bonus_Capped": percent,
- "critDamage": percent,
- "damageIncrease": percent,
- "Attacks_Per_Second_Percent": percent,
- "Damage_Percent_Bonus_Vs_Elites": percent};
- var stats = { "attackSpeed": "wep_speed",
- "critChance": "crit_chance",
- "critDamage": "crit_damage",
- "damageIncrease": "pass_skill_dmg",
- "Attacks_Per_Second_Percent": "atk_speed",
- "Damage_Percent_Bonus_Vs_Elites": "elite_percent",
- "Damage_Min#Physical": "item_min_dmg",
- "Damage_Max": "item_max_dmg",
- "Damage_Weapon_Min": "main_min_dmg",
- "Damage_Weapon_Max": "main_max_dmg",
- "Crit_Percent_Bonus_Capped": "crit_chance"
- };
- var agg = {};
- var items_done = 0;
- var items_count = 0;
- function render(js){
- for(var i in js){
- console.log(i, js[i]);
- var val = js[i];
- if(transf[i]){
- val = transf[i](val);
- }
- if(stats[i]){
- $("#" + stats[i]).attr("value", val.toString());
- $("#" + stats[i]).html(val.toString());
- }
- }
- }
- function postprocess(){
- agg["Damage_Max"] = agg["Damage_Min#Physical"] + agg["Damage_Delta#Physical"];
- min = 0;
- delta = 0;
- for(var i in agg){
- if(i.indexOf("Damage_Weapon_Min") == 0){
- min += agg[i];
- } else if(i.indexOf("Damage_Weapon_Delta") == 0){
- delta += agg[i];
- }
- }
- agg["Damage_Weapon_Min"] = min;
- agg["Damage_Weapon_Max"] = min + delta;
- agg["Crit_Percent_Bonus_Capped"] += 0.05;
- }
- function parse_item(js){
- var attr = js.attributesRaw;
- for(var i in attr){
- if(!agg[i]){
- agg[i] = attr[i].min;
- } else {
- agg[i] += attr[i].min;
- }
- }
- if(++items_done == items_count){
- postprocess();
- render(agg);
- }
- }
- function parse_hero(js){
- render(js.stats);
- items_count = Object.keys(js.items).length;
- for(var i in js.items){
- get('data/' + js.items[i].tooltipParams, parse_item);
- }
- }
- function parse(js){
- var prim = primary[js.heroes[0].class];
- stats[prim] = "prim_stat";
- stats["Damage_Dealt_Percent_Bonus#" + element] = "ele_percent";
- transf["Damage_Dealt_Percent_Bonus#" + element] = percent;
- get('profile/' + user + '/hero/' + js.heroes[0].id, parse_hero);
- }
- get('profile/' + user + '/', parse);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement