Roll

faire des jets avec prise en comp des stats via des compétences

当前为 2017-06-01 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Roll
  3. // @namespace InGame
  4. // @include http://www.dreadcast.net/Main
  5. // @include https://www.dreadcast.eu/Main
  6. // @version 0.131
  7. // @grant none
  8. // @description faire des jets avec prise en comp des stats via des compétences
  9. // ==/UserScript==
  10.  
  11. var re = new RegExp("/roll [a-z]+");
  12.  
  13. var competenceFormule = new Object();
  14.  
  15. if (!String.prototype.contains) {
  16. String.prototype.contains = function(s, i) {
  17. return this.indexOf(s, i) != -1;
  18. }
  19. }
  20.  
  21. $.ajax({
  22. type: 'GET',
  23. url: "https://docs.google.com/uc?export=download&id=0B4Igp0h82K3yUDc4NWdQNEZQY0k",
  24. async: false,
  25. jsonpCallback: 'jsonCallbackComps_0',
  26. contentType: "application/json",
  27. dataType: 'jsonp',
  28. success: function(json) {
  29.  
  30. var tmpComp = json.comps.split("|");
  31. for(var j = 0; j < tmpComp.length; j++)
  32. competenceFormule[tmpComp[j].split(":")[0]] = tmpComp[j].split(":")[1];
  33. },
  34. error: function(e) {
  35. console.log(e.message);
  36. }
  37. });
  38. var getStats = function(stat){
  39. switch(stat){
  40. case "f" :
  41. return parseInt($('#statistiques .infos .stat_1_entier').text());
  42. break;
  43. case "a":
  44. return parseInt($('#statistiques .infos .stat_2_entier').text());
  45. break;
  46. case "r":
  47. return parseInt($('#statistiques .infos .stat_3_entier').text());
  48. break;
  49. case "p":
  50. return parseInt($('#statistiques .infos .stat_4_entier').text());
  51. break;
  52. case "fu":
  53. return parseInt($('#statistiques .infos .stat_5_entier').text());
  54. break;
  55. case "i":
  56. return parseInt($('#statistiques .infos .stat_6_entier').text());
  57. break;
  58. case "m":
  59. return parseInt($('#statistiques .infos .stat_7_entier').text());
  60. break;
  61. case "ing":
  62. return parseInt($('#statistiques .infos .stat_8_entier').text());
  63. break;
  64. }
  65. }
  66.  
  67. var computeValue = function(comp){
  68. if(competenceFormule[comp]!= undefined)
  69. {
  70. var compVal = 0;
  71. var tmpVal = competenceFormule[comp].split(",");
  72. for(var i = 0; i < tmpVal.length; i++)
  73. {
  74. var tmp = tmpVal[i].split(';');
  75. compVal += parseFloat(eval(tmp[0])) * getStats(tmp[1]);
  76. }
  77. compVal = parseInt(compVal/6);
  78. return (100- compVal);
  79. }
  80. else return undefined;
  81. }
  82.  
  83. var retrieveValue = function(facesde, comp, diff)
  84. {
  85. var chatContent = $("#chatContent").text();
  86. chatContent = chatContent.trim().replace(/[^\S\n]{2,}/g, ' ');
  87. if(chatContent != "")
  88. {
  89. var lignes = chatContent.split("\n");
  90. for(var i = lignes.length-1; i >= 0; i--)
  91. {
  92. var ligne = lignes[i].trim();
  93. if(ligne != "" && ligne.charAt(0) != "[" && ligne.contains("lance 1 dé de " + facesde+" et fait"))
  94. {
  95. var result = parseInt(ligne.substring(ligne.indexOf("et fait")+7).trim()) + 100 -facesde;
  96. if(diff == undefined)
  97. $("#chatForm .text_chat").val("/me [couleur=jaune]fait "+ result +" à son jet de "+comp+"[/couleur]");
  98. else if (diff == "f" && result >= 25)
  99. $("#chatForm .text_chat").val("/me [couleur=vert]réussit[/couleur] [couleur=jaune]un jet facile de "+comp+" et fait "+ result+"[/couleur]");
  100. else if (diff == "f" && result < 25)
  101. $("#chatForm .text_chat").val("/me [couleur=rouge]rate[/couleur] [couleur=jaune]son jet facile de "+comp+" et fait "+ result+"[/couleur]");
  102. else if (diff == "m" && result >= 50)
  103. $("#chatForm .text_chat").val("/me [couleur=vert]réussit[/couleur] [couleur=jaune]un jet moyen de "+comp+" et fait "+ result+"[/couleur]");
  104. else if (diff == "m" && result < 50)
  105. $("#chatForm .text_chat").val("/me [couleur=rouge]rate[/couleur] [couleur=jaune]un jet moyen de "+comp+" et fait "+ result+"[/couleur]");
  106. else if (diff == "d" && result >= 75)
  107. $("#chatForm .text_chat").val("/me [couleur=vert]réussit[/couleur] [couleur=jaune]un jet difficile de "+comp+" et fait "+ result+"[/couleur]");
  108. else if (diff == "d" && result < 75)
  109. $("#chatForm .text_chat").val("/me [couleur=rouge]rate[/couleur] [couleur=jaune]un jet difficile de "+comp+" et fait "+ result+"[/couleur]");
  110. else if (parseInt(diff) != NaN && result >= parseInt(diff))
  111. $("#chatForm .text_chat").val("/me [couleur=vert]réussit[/couleur] [couleur=jaune]un jet de "+comp+" en faisant "+ result+" contre un seuil de "+parseInt(diff)+"[/couleur]");
  112. else if (parseInt(diff) != NaN && result < parseInt(diff))
  113. $("#chatForm .text_chat").val("/me [couleur=rouge]rate[/couleur] [couleur=jaune]un jet de "+comp+" en faisant "+ result+" contre un seuil de "+parseInt(diff)+"[/couleur]");
  114. console.log($("#chatForm .text_chat").val);
  115. nav.getChat().send();
  116. break;
  117. }
  118. }
  119. }
  120. }
  121.  
  122. var jetDes = function(e) {
  123. if (e.keyCode==13) {
  124. value = $("#chatForm .text_chat").val();
  125. if(value.match(re))
  126. {
  127. var comp = value.trim().split(" ")[1];
  128. var diff = value.trim().split(" ")[2];
  129. var facesde = computeValue(comp);
  130. if(facesde != undefined){
  131. value = '/roll 1d'+facesde;
  132. setTimeout(function(){ retrieveValue(facesde, comp, diff)},500);
  133. }
  134. }
  135. $("#chatForm .text_chat").val(value);
  136. }
  137. }
  138. document.addEventListener('keypress', jetDes, false);