Advertisement
QuadFeed

Untitled

Nov 12th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.32 KB | None | 0 0
  1. var mobViewer = {
  2. /*
  3. Object structure for mobData:
  4.  
  5. {
  6. location: [x, y, z],
  7. primary: "primary mob str",
  8. mobs: [array, of, mobs],
  9. avgTier: ""
  10. }
  11. */
  12.  
  13. mobData: [],
  14. npcData: [],
  15. dungeonData: [],
  16. init: function() {
  17. $.get("dat/gms_parsed.dat", function(data) {
  18. if (data == null || data.indexOf("@") == -1) return;
  19. var clusters = data.split("\n");
  20.  
  21. for (i in clusters) {
  22. var cluster = clusters[i];
  23. if (cluster != null && cluster != "") {
  24. var mobs = {};
  25. var mobArr = cluster.split("@")[1].split(",");
  26. var avgTier = 0;
  27. for (j in mobArr) {
  28. if (mobArr[j] != "") {
  29. avgTier += parseFloat(mobArr[j].split(":")[1].split("-")[0]);
  30. var mob = mobArr[j].split(":")[0];
  31. if (!mobs.hasOwnProperty(mob)) {
  32. mobs[mob] = 1;
  33. } else {
  34. mobs[mob] ++;
  35. }
  36. }
  37. }
  38. avgTier /= mobArr.length-1;
  39. avgTier = Math.round(avgTier);
  40. avgTier = String(avgTier);
  41.  
  42. // Find most frequent mob for primary mob
  43. var primaryMob = "";
  44. var primaryMobC = -1;
  45. for (j in mobs) {
  46. if (mobs[j] > primaryMobC) {
  47. primaryMob = j;
  48. primaryMobC = mobs[j];
  49. }
  50. }
  51.  
  52. var obj = {
  53. location: {
  54. x: parseFloat(cluster.split("=")[0].split(",")[0]),
  55. y: parseFloat(cluster.split("=")[0].split(",")[1]),
  56. z: parseFloat(cluster.split("=")[0].split(",")[2])
  57. },
  58. primary: primaryMob,
  59. name: primaryMob,
  60. mobs: mobs,
  61. avgTier: avgTier
  62. };
  63.  
  64. mobViewer.mobData.push(obj);
  65. }
  66. }
  67.  
  68. for (i in mobViewer.mobData) {
  69. mobViewer.instantiateMarker(mobViewer.mobData[i]);
  70. }
  71. });
  72.  
  73. // OPTIONAL: Make a separate plguin for NPCs (or just keep the code here...)
  74. $.get("dat/npcs", function(data) {
  75. if (data == null || data.indexOf(":") == -1) return;
  76. var clusters = data.split("\n");
  77.  
  78. for (i in clusters) {
  79. var cluster = clusters[i];
  80. if (cluster != null && cluster != "") {
  81. var obj = {
  82. location: {
  83. x: parseFloat(cluster.split(":")[1].split(",")[0]),
  84. y: parseFloat(cluster.split(":")[1].split(",")[1]),
  85. z: parseFloat(cluster.split(":")[1].split(",")[2])
  86. },
  87. primary: "npc",
  88. name: cluster.split(":")[0],
  89. mobs: {},
  90. avgTier: ""
  91. };
  92.  
  93. mobViewer.npcData.push(obj);
  94. }
  95. }
  96.  
  97. for (i in mobViewer.npcData) {
  98. mobViewer.instantiateMarker(mobViewer.npcData[i]);
  99. }
  100. });
  101.  
  102. // OPTIONAL: Make a separate plugin for Dungeons (or just keep the code here...)
  103. $.get("dat/dungeons", function(data) {
  104. if (data == null || data.indexOf(":") == -1) return;
  105. var clusters = data.split("\n");
  106.  
  107. for (i in clusters) {
  108. var cluster = clusters[i];
  109. if (cluster != null && cluster != "") {
  110. var obj = {
  111. location: {
  112. x: parseFloat(cluster.split(":")[1].split(",")[0]),
  113. y: parseFloat(cluster.split(":")[1].split(",")[1]),
  114. z: parseFloat(cluster.split(":")[1].split(",")[2])
  115. },
  116. name: cluster.split(":")[0]
  117. };
  118.  
  119. mobViewer.dungeonData.push(obj);
  120. }
  121. }
  122.  
  123. for (i in mobViewer.dungeonData) {
  124. mobViewer.instantiateDungeonMarker(mobViewer.dungeonData[i]);
  125. }
  126. });
  127. },
  128.  
  129. instantiateMarker: function(obj) {
  130. var blacklist = ["slime", "cow", "pig", "ocelot", "mooshroom", "bat"];
  131. if (blacklist.indexOf(obj.primary) > -1) return;
  132. var tCap = 5;
  133.  
  134. // Image size determined by if legendary mob or regular
  135. var iconSize = obj.primary.indexOf("*") > -1 ? 28 : 21;
  136.  
  137. // Add Primary Mob icon
  138. var markerIcon = L.icon({
  139. iconUrl: "img/MobIcons/" + mobViewer.mobMatcher(obj.primary) + ".png",
  140. iconSize: [iconSize, iconSize],
  141. iconAnchor: [iconSize/2, iconSize/2]
  142. });
  143. var markerOptions = {
  144. icon: markerIcon,
  145. title: (obj.avgTier == "" || parseFloat(obj.avgTier) > tCap || location.href.indexOf("/debug") == -1 ? "" : "T"+obj.avgTier+" ") + (obj.primary.indexOf("*") > -1 ? "Elite " : "") + (obj.primary==obj.name ? mobViewer.mobMatcher(obj.primary).capitalize() : obj.name) + " (" + obj.location.x + ", " + obj.location.y + ", " + obj.location.z + ")"
  146. };
  147.  
  148. var markerLatLngPos = overviewer.util.fromWorldToLatLng(obj.location.x, obj.location.y, obj.location.z);
  149. var markerInstance = new L.marker(markerLatLngPos, markerOptions);
  150. core.markerClusters["mob"].addLayer(markerInstance);
  151.  
  152. if (overviewerConfig.settings.enableWiki) {
  153. markerInstance.on("click", function(e) {
  154. mapUi.openWiki(obj.primary.indexOf("*") > -1 ? "Elite" : mobViewer.mobMatcherWiki(obj), overviewerConfig.settings.wikiDiv!=="undefined" ? overviewerConfig.settings.wikiDiv : "#firstHeading");
  155. });
  156. }
  157. },
  158.  
  159. instantiateDungeonMarker: function(obj) {
  160. var blacklist = [];
  161. if (blacklist.indexOf(obj.name) > -1) return;
  162.  
  163. // Add Primary Mob icon
  164. var markerIcon = L.icon({
  165. iconUrl: "img/dungeongem.png",
  166. iconSize: [26, 24],
  167. iconAnchor: [26/2, 24/2]
  168. });
  169. var markerOptions = {
  170. icon: markerIcon,
  171. title: obj.name + " (" + obj.location.x + ", " + obj.location.y + ", " + obj.location.z + ")"
  172. };
  173.  
  174. var markerLatLngPos = overviewer.util.fromWorldToLatLng(obj.location.x, obj.location.y, obj.location.z);
  175. var markerInstance = new L.marker(markerLatLngPos, markerOptions);
  176. core.markerClusters["dungeon"].addLayer(markerInstance);
  177.  
  178. if (overviewerConfig.settings.enableWiki) {
  179. markerInstance.on("click", function(e) {
  180. mapUi.openWiki(obj.name, overviewerConfig.settings.wikiDiv!=="undefined" ? overviewerConfig.settings.wikiDiv : "#firstHeading");
  181. });
  182. }
  183. },
  184.  
  185. mobMatcher: function(str) {
  186. var mobTypes = ["npc", "wolf", "zombie", "whither", "tripoli", "skeleton", "naga", "lizardman", "goblin", "troll", "bandit", "imp", "golem", "magmacube", "spider", "daemon"];
  187. for (i in mobTypes) {
  188. if (str.indexOf(mobTypes[i]) == 0) {
  189. return mobTypes[i];
  190. }
  191. }
  192. return str;
  193. },
  194.  
  195. mobMatcherWiki: function(obj) {
  196. var mobTypes = {
  197. troll: "Trolls Warriors",
  198. tripoli: "Tripoli Soldier",
  199. lizardman: "Lizardmen",
  200. whither: "Wither Skeleton",
  201. goblin: "Goblins"
  202. };
  203. var mob = mobViewer.mobMatcher(obj.primary);
  204. for (i in mobTypes) {
  205. if (i == mob) {
  206. return mobTypes[i];
  207. }
  208. }
  209.  
  210. // Edge case of NPCs
  211. if (mob == "npc") {
  212. return obj.name;
  213. }
  214. return mob;
  215. }
  216.  
  217. };
  218.  
  219. mobViewer.init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement