Advertisement
Guest User

Untitled

a guest
Apr 25th, 2014
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name       l2d3 api
  3. // @namespace  http://use.i.E.your.homepage/
  4. // @version    0.1
  5. // @description  automatically download data from d3 api
  6. // @match      http://l2d3.com/calculator/
  7. // @copyright  2014+, lechium06@diablofans
  8. // ==/UserScript==
  9.  
  10.  
  11. // enter with a '-', not a '#'
  12. var user = "Misan-2129";
  13. var element = "Arcane";
  14.  
  15. function load(cb){
  16.     return function(resp){
  17.         if(resp.readyState != 4){
  18.             return;
  19.         }
  20.         console.log(resp);
  21.         var js = JSON.parse(resp.response);
  22.         cb(js);
  23.     };
  24. }
  25.  
  26. function get(url, callback){
  27.     GM_xmlhttpRequest({
  28.         method: 'GET',
  29.         url:    'http://eu.battle.net/api/d3/' + url,
  30.         accept: 'application/json',
  31.         onreadystatechange: load(callback)});
  32. }
  33.  
  34. function percent(val){
  35.     return val * 100.0;
  36. }
  37.  
  38. function capitalize(s){
  39.     return s[0].toUpperCase() + s.slice(1);
  40. }
  41.  
  42. var primary = { "wizard": "intelligence" };
  43.  
  44. var transf = { "Crit_Percent_Bonus_Capped": percent,
  45.                "critDamage": percent,
  46.                "damageIncrease": percent,
  47.                "Attacks_Per_Second_Percent": percent,
  48.                "Damage_Percent_Bonus_Vs_Elites": percent};
  49.  
  50. var stats = { "attackSpeed": "wep_speed",
  51.               "critChance": "crit_chance",
  52.               "critDamage": "crit_damage",
  53.               "damageIncrease": "pass_skill_dmg",
  54.               "Attacks_Per_Second_Percent": "atk_speed",
  55.               "Damage_Percent_Bonus_Vs_Elites": "elite_percent",
  56.               "Damage_Min#Physical": "item_min_dmg",
  57.               "Damage_Max": "item_max_dmg",
  58.               "Damage_Weapon_Min": "main_min_dmg",
  59.               "Damage_Weapon_Max": "main_max_dmg",
  60.               "Crit_Percent_Bonus_Capped": "crit_chance"
  61.             };
  62.  
  63. var agg = {};
  64. var items_done = 0;
  65. var items_count = 0;
  66.  
  67. function render(js){
  68.     for(var i in js){
  69.         console.log(i, js[i]);
  70.         var val = js[i];
  71.         if(transf[i]){
  72.             val = transf[i](val);  
  73.         }
  74.         if(stats[i]){
  75.             $("#" + stats[i]).attr("value", val.toString());
  76.             $("#" + stats[i]).html(val.toString());
  77.         }
  78.     }
  79. }
  80.  
  81. function postprocess(){
  82.     agg["Damage_Max"] = agg["Damage_Min#Physical"] + agg["Damage_Delta#Physical"];
  83.     min = 0;
  84.     delta = 0;
  85.     for(var i in agg){
  86.         if(i.indexOf("Damage_Weapon_Min") == 0){
  87.             min += agg[i];  
  88.         } else if(i.indexOf("Damage_Weapon_Delta") == 0){
  89.             delta += agg[i];  
  90.         }
  91.     }
  92.     agg["Damage_Weapon_Min"] = min;
  93.     agg["Damage_Weapon_Max"] = min + delta;
  94.     agg["Crit_Percent_Bonus_Capped"] += 0.05;
  95. }
  96.  
  97. function parse_item(js){
  98.     var attr = js.attributesRaw;
  99.     for(var i in attr){
  100.         if(!agg[i]){
  101.             agg[i] = attr[i].min;  
  102.         } else {
  103.             agg[i] += attr[i].min;  
  104.         }
  105.     }
  106.     if(++items_done == items_count){
  107.         postprocess();
  108.         render(agg);  
  109.     }
  110. }
  111.  
  112. function parse_hero(js){
  113.     render(js.stats);
  114.     items_count = Object.keys(js.items).length;
  115.    
  116.     for(var i in js.items){
  117.         get('data/' + js.items[i].tooltipParams, parse_item);  
  118.     }
  119. }
  120.  
  121. function parse(js){
  122.     var prim = primary[js.heroes[0].class];
  123.     stats[prim] = "prim_stat";
  124.     stats["Damage_Dealt_Percent_Bonus#" + element] = "ele_percent";
  125.     transf["Damage_Dealt_Percent_Bonus#" + element] = percent;
  126.     get('profile/' + user + '/hero/' + js.heroes[0].id, parse_hero);
  127. }
  128.  
  129. get('profile/' + user + '/', parse);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement