PageRenderTime 56ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/talents/raw/talentimages/shaman_files/functions.js

https://bitbucket.org/Unity/unity-gamehead
JavaScript | 489 lines | 347 code | 132 blank | 10 comment | 102 complexity | 6c103933ffc5963a3d74cbccbece582d MD5 | raw file
Possible License(s): LGPL-2.1
  1. var colorGreen = "#1AFF1A";
  2. var colorYellow = "#FFD100";
  3. var colorWhite = "#FFFFFF";
  4. function resetTree(theTree) {
  5. if (pointsTree[theTree] == 0)
  6. return;
  7. maxTierArray[theTree] = 1;
  8. rankPoints += pointsTree[theTree];
  9. pointsTree[theTree] = 0;
  10. document.getElementById(tree[theTree]+'PointsTopRight').innerHTML = 0;
  11. for (var y = 0; y < tierNum; y++)
  12. pointsTier[theTree][y] = 0;
  13. var i;
  14. var iStop;
  15. if (theTree == 0)
  16. i = 0;
  17. else
  18. i = treeStartStop[theTree-1] + 1;
  19. iStop = treeStartStop[theTree];
  20. while (i <= iStop) {
  21. rankTop[i][0] = 0;
  22. rankTop[i][1] = rank[i][0];
  23. rankTop[i][2] = rank[i][1];
  24. document.getElementById("modifyRankTopColor"+ i).style.color = colorWhite;
  25. document.getElementById("modifyRankTop"+ i).style.color = colorWhite;
  26. document.getElementById('modifyDescriptionTop'+i).innerHTML = rankTop[i][1];
  27. if (talent[i][5]) {
  28. document.getElementById("arrowYellow"+ i).style.visibility = "hidden";
  29. document.getElementById("arrowGreen"+ i).style.visibility = "hidden";
  30. }
  31. document.getElementById('modifyRankTopDescription'+i).innerHTML = 0;
  32. document.getElementById('modifyRankTop'+i).innerHTML = 0;
  33. document.getElementById('talentThumb'+ i).style.visibility = "hidden";
  34. document.getElementById('iconOverGreen'+ i).style.visibility = "hidden";
  35. document.getElementById('iconOverYellow'+ i).style.visibility = "hidden";
  36. if (talent[i][4] == 1 && (!talent[i][5])) {
  37. document.getElementById("modifyRankTopColor"+ i).style.color = colorGreen;
  38. document.getElementById("modifyRankTop"+ i).style.color = colorGreen;
  39. }
  40. i++;
  41. }
  42. document.getElementById('levelRequired').innerHTML = rankPointsMax - rankPoints + levelMin - 1;
  43. document.getElementById('modifyRankPoints').innerHTML = rankPointsMax - rankPoints;
  44. document.getElementById('tabPointsAvailable').innerHTML = rankPoints;
  45. document.getElementById(tree[theTree]+'tabPoints').innerHTML = 0;
  46. changeCopyURL();
  47. }
  48. function resetTreeAll() {
  49. for (var i = 0; i < tree.length; i++) {
  50. resetTree(i);
  51. }
  52. }
  53. function getMaxTier(theTree) {
  54. var maxTier = 0;
  55. for (var loopMaxTier = 0; loopMaxTier < tierNum; loopMaxTier++) {
  56. if (pointsTier[theTree][loopMaxTier] != 0)
  57. maxTier = loopMaxTier;
  58. }
  59. maxTier++;
  60. return maxTier;
  61. }
  62. function getPointsAboveAndCurrent(theTree, maxTier) {
  63. var pointsTierTotalAboveAndCurrent = 0;
  64. var loopPointsTierAbove = 0;
  65. for (loopPointsTierAbove; loopPointsTierAbove < maxTier; loopPointsTierAbove++) {
  66. pointsTierTotalAboveAndCurrent += pointsTier[theTree][loopPointsTierAbove];
  67. }
  68. return pointsTierTotalAboveAndCurrent;
  69. }
  70. function canUnlearn(talentID, clickLeftRight, maxTier) {
  71. var treeID = talent[talentID][0];
  72. var maxRank = talent[talentID][2];
  73. var treePoints = pointsTree[treeID];
  74. var necessaryPoints;
  75. var projectedPoints;
  76. var pointsAboveAndCurrent;
  77. if (hasDependentTalentWithPoints(talentID))
  78. return false;
  79. if (clickLeftRight == 0) { //left click
  80. var theCurrentRank = rankTop[talentID][0];
  81. if (theCurrentRank < maxRank) {
  82. necessaryPoints = (talent[talentID][4] - 1) * 5;
  83. if (treePoints < necessaryPoints)
  84. return false;
  85. if (rankPoints == 0)
  86. return false;
  87. if (!checkRequiredTalent(talentID) && theCurrentRank == 0)
  88. return false;
  89. projectedPoints = pointsAboveAndCurrent++;
  90. } else {
  91. return false;
  92. }
  93. } else { //right click
  94. if (rankTop[talentID][0] != 0){
  95. pointsAboveAndCurrent = getPointsAboveAndCurrent(treeID, maxTier-1);
  96. projectedPoints = pointsAboveAndCurrent - 1 + pointsTier[treeID][maxTier-1];
  97. for (var thisTier = talent[talentID][4]; thisTier < maxTier; maxTier--) {
  98. necessaryPoints = (maxTier-1) *5;
  99. projectedPoints -= pointsTier[treeID][maxTier-1];
  100. if (projectedPoints < necessaryPoints)
  101. return false;
  102. }
  103. } else { //if the rank is 0
  104. return false;
  105. }
  106. }
  107. return true;
  108. }
  109. function getTalentID(talentName) {
  110. var theTalentID;
  111. for (theTalentID = 0; talent[theTalentID]; theTalentID++) {
  112. if (talent[theTalentID][1] == talentName)
  113. return theTalentID;
  114. }
  115. }
  116. function getMinLevel(talentID) {
  117. return ((talent[talentID][4] -1)* 5 + 10);
  118. }
  119. function hasDependentTalentWithPoints(talentID) {
  120. var loopStart;
  121. var loopStop;
  122. var theTree = talent[talentID][0];
  123. if (talentID != 0)
  124. loopStart = talentID - 1;
  125. else
  126. loopStart = talentID;
  127. loopStop = treeStartStop[theTree];
  128. while (loopStart <= loopStop){
  129. if (talent[loopStart][5] && talent[loopStart][5][0] == talentID && rankTop[loopStart][0] != 0)
  130. return true;
  131. loopStart++;
  132. }
  133. return false;
  134. }
  135. function canTurnGreen(totalPoints, tree, oldMaxTier) {
  136. var i;
  137. var necessaryPoints;
  138. var iStop;
  139. var thisTier;
  140. if (tree == 0)
  141. i = 0;
  142. else
  143. i = treeStartStop[tree-1] + 1;
  144. iStop = treeStartStop[tree];
  145. while (i <= iStop) {
  146. thisTier = talent[i][4];
  147. necessaryPoints = (thisTier-1) * 5;
  148. if (thisTier <= oldMaxTier+3 || necessaryPoints <= totalPoints){
  149. var noRequirement = checkRequiredTalent(i);
  150. var theCurrentRank = rankTop[i][0];
  151. var theMaxRank = talent[i][2];
  152. if ((talent[i][4] * 5) <= totalPoints && theCurrentRank != theMaxRank && noRequirement
  153. ||
  154. (theCurrentRank < theMaxRank && necessaryPoints <= totalPoints && noRequirement)
  155. ) {
  156. document.getElementById("modifyRankTopColor"+ i).style.color = colorGreen;
  157. document.getElementById("modifyRankTop"+ i).style.color = colorGreen;
  158. if (canUnlearn(i, 0, oldMaxTier)) {
  159. if (talent[i][5])
  160. document.getElementById("arrowGreen"+ i).style.visibility = "visible";
  161. }
  162. } else if (theCurrentRank == theMaxRank) {
  163. document.getElementById("modifyRankTopColor"+ i).style.color = colorYellow;
  164. document.getElementById("modifyRankTop"+ i).style.color = colorYellow;
  165. } else if (theCurrentRank > 0 ) {
  166. document.getElementById("modifyRankTopColor"+ i).style.color = colorGreen;
  167. document.getElementById("modifyRankTop"+ i).style.color = colorGreen;
  168. document.getElementById("iconOverGreen"+ i).style.visibility = "visible";
  169. } else {
  170. document.getElementById("modifyRankTopColor"+ i).style.color = colorWhite;
  171. document.getElementById("modifyRankTop"+ i).style.color = colorWhite;
  172. document.getElementById("iconOverGreen"+ i).style.visibility = "hidden";
  173. if (talent[i][5])
  174. document.getElementById("arrowGreen"+ i).style.visibility = "hidden";
  175. }
  176. }
  177. i++;
  178. }
  179. i=0;
  180. if (rankPoints == 0) {
  181. while (talent[i]){
  182. if (rankTop[i][0] == 0) {
  183. document.getElementById("modifyRankTopColor"+ i).style.color = colorWhite;
  184. document.getElementById("modifyRankTop"+ i).style.color = colorWhite;
  185. document.getElementById("iconOverGreen"+ i).style.visibility = "hidden";
  186. }
  187. i++;
  188. }
  189. }
  190. }
  191. function checkRequiredTalent(talentID) {
  192. var reqTalent;
  193. if (reqTalent = talent[talentID][5]) {
  194. reqTalentID = reqTalent[0];
  195. reqTalentPoints = reqTalent[1];
  196. if (rankTop[reqTalentID][0] != reqTalentPoints)
  197. return false;
  198. }
  199. return true;
  200. }
  201. function rankTopOnClick(talentID) {
  202. if (!variableIsSite)
  203. return false;
  204. var theTree = talent[talentID][0];
  205. // var oldMaxTier = getMaxTier(theTree);
  206. var oldMaxTier = maxTierArray[theTree];
  207. if (!canUnlearn(talentID, 0, oldMaxTier))
  208. return;
  209. maxRank = talent[talentID][2]; //maximum rank possible
  210. var theTier = talent[talentID][4];
  211. var theTierIndex = theTier - 1;
  212. var rankString = rankTop[talentID][1];
  213. var theCurrentRank = rankTop[talentID][0];
  214. if (theCurrentRank < maxRank) { //see if you hit max rank
  215. rankTop[talentID][1] = rank[talentID][theCurrentRank];
  216. rankTop[talentID][0]++; //if you haven't hit max rank, increment
  217. theUpdatedRank = rankTop[talentID][0];
  218. rankTop[talentID][2] = rank[talentID][theUpdatedRank];
  219. rankPoints--;
  220. if (theUpdatedRank != maxRank) {
  221. rankString = rankTop[talentID][1] +'<br><br><font color = "ffffff">'+ textNextRank +'</font><br>'+ rankTop[talentID][2];
  222. document.getElementById('iconOverGreen'+ talentID).style.visibility = "visible";
  223. } else {
  224. rankString = rankTop[talentID][1];
  225. document.getElementById('iconOverYellow'+ talentID).style.visibility = "visible";
  226. }
  227. if (talent[talentID][5])
  228. document.getElementById("arrowYellow"+ talentID).style.visibility = "visible";
  229. //keep track of points in the tier
  230. pointsTree[theTree]++;
  231. pointsTier[theTree][theTierIndex] = pointsTier[theTree][theTierIndex] + 1;
  232. }
  233. if (theUpdatedRank == 1 && theTier > oldMaxTier)
  234. maxTierArray[theTree] = theTier;
  235. document.getElementById("talentThumb"+ talentID).style.visibility = "visible";
  236. if (pointsTree[theTree] == 1)
  237. document.getElementById(tree[theTree]+'tabPointsText').innerHTML = textPoint;
  238. else
  239. document.getElementById(tree[theTree]+'tabPointsText').innerHTML = textPoints;
  240. document.getElementById('modifyDescriptionTop'+talentID).innerHTML = rankString;
  241. document.getElementById('modifyRankTop'+talentID).innerHTML = rankTop[talentID][0];
  242. document.getElementById('modifyRankTopDescription'+talentID).innerHTML = rankTop[talentID][0];
  243. document.getElementById('modifyRankPoints').innerHTML = rankPointsMax - rankPoints;
  244. document.getElementById('levelRequired').innerHTML = rankPointsMax - rankPoints + levelMin - 1;
  245. document.getElementById(tree[theTree]+'PointsTopRight').innerHTML = pointsTree[theTree];
  246. document.getElementById('tabPointsAvailable').innerHTML = rankPoints;
  247. document.getElementById(tree[theTree]+'tabPoints').innerHTML = pointsTree[theTree];
  248. canTurnGreen(pointsTree[theTree], theTree, oldMaxTier);
  249. changeCopyURL();
  250. }
  251. function changeCopyURL(){
  252. templateString = "";
  253. var sPath = window.location.pathname;
  254. var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
  255. // loopStop = treeStartStop[0] + 1;
  256. /*
  257. for (var bah = 0; bah < loopStop; bah++) {
  258. templateString = templateString + rankTop[bah][0];
  259. } */
  260. for (i = 0; talent[i]; i++) {
  261. templateString = templateString + rankTop[i][0]
  262. }
  263. var link = talentPath+sPage+"?"+templateString;
  264. document.getElementById('copyURL').innerHTML = "<a href=\""+link+"\">"+ link +"</a>";
  265. }
  266. function rankTopOnRightClick(talentID) {
  267. if (!variableIsSite)
  268. return false;
  269. var theTree = talent[talentID][0];
  270. // var oldMaxTier = getMaxTier(theTree);
  271. var oldMaxTier = maxTierArray[theTree];
  272. if (!canUnlearn(talentID, 1, oldMaxTier))
  273. return;
  274. var maxRank = talent[talentID][2]; //maximum rank possible
  275. var theTier = talent[talentID][4];
  276. var theTierIndex = theTier - 1;
  277. var rankString = rankTop[talentID][1];
  278. if (rankTop[talentID][0] > 0) {
  279. rankTop[talentID][0]--;
  280. if (rankTop[talentID][0]-1 != -1) {
  281. rankTop[talentID][1] = rank[talentID][(rankTop[talentID][0]-1)];
  282. rankTop[talentID][2] = rank[talentID][(rankTop[talentID][0])];
  283. rankString = rankTop[talentID][1] +'<br><br><font color = "ffffff">'+ textNextRank +'</font><br>'+ rankTop[talentID][2];
  284. } else {
  285. rankTop[talentID][1] = rank[talentID][rankTop[talentID][0]];
  286. rankString = rankTop[talentID][1];
  287. }
  288. rankPoints++;
  289. //keep track of points in the tier
  290. pointsTree[theTree]--;
  291. pointsTier[theTree][theTierIndex]--;
  292. document.getElementById('iconOverYellow'+ talentID).style.visibility = "hidden";
  293. document.getElementById('iconOverGreen'+ talentID).style.visibility = "visible";
  294. if (rankTop[talentID][0] == 0) {
  295. document.getElementById('iconOverGreen'+ talentID).style.visibility = "hidden";
  296. document.getElementById('iconOverYellow'+ talentID).style.visibility = "hidden";
  297. document.getElementById("talentThumb"+ talentID).style.visibility = "hidden";
  298. if (talent[talentID][5])
  299. document.getElementById("arrowYellow"+ talentID).style.visibility = "hidden";
  300. oldMaxTier = getMaxTier(theTree);
  301. maxTierArray[theTree] = oldMaxTier;
  302. }
  303. if (rankPoints == 1) {
  304. canTurnGreen(pointsTree[0], 0, maxTierArray[0]);
  305. canTurnGreen(pointsTree[1], 1, maxTierArray[1]);
  306. canTurnGreen(pointsTree[2], 2, maxTierArray[2]);
  307. }
  308. }
  309. if (pointsTree[theTree] == 1)
  310. document.getElementById(tree[theTree]+'tabPointsText').innerHTML = textPoint;
  311. else
  312. document.getElementById(tree[theTree]+'tabPointsText').innerHTML = textPoints;
  313. document.getElementById('modifyDescriptionTop'+talentID).innerHTML = rankString;
  314. document.getElementById('modifyRankTop'+talentID).innerHTML = rankTop[talentID][0];
  315. document.getElementById('modifyRankTopDescription'+talentID).innerHTML = rankTop[talentID][0];
  316. document.getElementById('modifyRankPoints').innerHTML = rankPointsMax - rankPoints;
  317. document.getElementById('levelRequired').innerHTML = rankPointsMax - rankPoints + levelMin - 1;
  318. document.getElementById(tree[theTree]+'PointsTopRight').innerHTML = pointsTree[theTree];
  319. document.getElementById(tree[theTree]+'tabPoints').innerHTML = pointsTree[theTree];
  320. document.getElementById('tabPointsAvailable').innerHTML = rankPoints;
  321. if (rankPoints != 1)
  322. canTurnGreen(pointsTree[theTree], theTree, oldMaxTier);
  323. changeCopyURL();
  324. }
  325. function unhideTalent(input) {
  326. if (variableIsSite)
  327. document.getElementById("talentMouseOver"+ input).style.visibility = "visible";
  328. else
  329. showTip(document.getElementById("armoryOver"+ input).innerHTML);
  330. }
  331. function hideTalent(input) {
  332. if (variableIsSite)
  333. document.getElementById("talentMouseOver"+ input).style.visibility = "hidden";
  334. else
  335. hideTip();
  336. }
  337. function bottombox() {
  338. var bbreplace = '<table class="tal" border = "0" width = "100%" cellpadding = "0" cellspacing = "0"><tr><td></td><td></td><td></td></tr><tr><td><img src = "'+ pixelGif +'"></td><td style = "padding: 7;" bgcolor = "#000000" width = "350">';
  339. bbreplace += '<table width = "100%"><tr><td nowrap width = "50%"><span class = "mySmallWhite"><b>'+ textPointsLeft +'</b> <span id = "tabPointsAvailable" class = "mySmallWhite">'+ rankPoints +'</span><br><b>'+ textPointsSpent +'</b> <span id = "modifyRankPoints" class = "mySmallWhite">'+ eval(theRequiredLevel - 9) +'</span><br><b>'+ textLevelRequired +'</b> <span id = "levelRequired" class = "mySmallWhite">'+ theRequiredLevel +'</span></span></td>';
  340. bbreplace += '<td rowspan = "2">&nbsp;&nbsp;&nbsp;</td><td align = "right" valign = "bottom">';
  341. bbreplace += '<table border = "0" cellpadding = "0" cellspacing = "0">';
  342. for (var jia = 0; jia < tree.length; jia++){
  343. bbreplace += '<tr><td width = "50%"><nobr><span class = "mySmallWhite"><b>'+tree[jia]+'</b>'+ textColon +'</td><td align = "right">&nbsp;&nbsp;<span id="'+ tree[jia] +'PointsTopRight" class = "mySmallWhite">'+ pointsTree[jia] +'</span></span></nobr></td></tr>';
  344. }
  345. bbreplace += "</table>";
  346. bbreplace += "</td></tr>";
  347. bbreplace += "</table>";
  348. bbreplace += '<img src = "'+ pixelGif +'" height = "10" width = "300">';
  349. bbreplace += '<table border = "0" cellpadding = "0" cellspacing = "0" width = "100%"><tr><td width = "100%"><a onClick = "printableVersion();" style="cursor:pointer"><img src = "'+ imgPath +'/includes/images'+ lg +'/printableversion.gif" border = "0"></a></td>';
  350. bbreplace += '<td><a href = #none onClick=resetTreeAll()><img src = \"'+ imgPath +'/includes/images'+ lg +'/resetall.gif\" border = 0></a></td>';
  351. bbreplace += "</table>";
  352. //box bottom
  353. bbreplace += '</td><td><img src = "'+ pixelGif +'"></td></tr>';
  354. bbreplace += '</table>';
  355. return bbreplace;
  356. }
  357. jsLoaded=true;//needed for ajax script loading=======