[GC] - Enhanced Relic Log View

See additional details related to your relic log, included view filter options.

  1. // ==UserScript==
  2. // @name [GC] - Enhanced Relic Log View
  3. // @namespace https://greasyfork.org/en/users/1225524-kaitlin
  4. // @version 3.10
  5. // @license MIT
  6. // @description See additional details related to your relic log, included view filter options.
  7. // @author Cupkait
  8. // @match https://www.grundos.cafe/space/warehouse/*
  9. // @match https://www.grundos.cafe/search/items/*
  10. // @match https://www.grundos.cafe/space/warehouse/relics/#details
  11. // @match https://www.grundos.cafe/safetydeposit/*&category=999*
  12. // @grant none
  13. // @icon https://i.imgur.com/4Hm2e6z.png
  14. // ==/UserScript==
  15.  
  16. const relicArray = [
  17. {
  18. "name": "Air Faerie Crown",
  19. "rarity": "",
  20. "origin": "<ul><li>Possible reward when completing any Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li></ul>"
  21. },
  22. {
  23. "name": "Air Faerie Token",
  24. "rarity": "",
  25. "origin": "<ul><li>Possible reward when completing an Air Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li></ul>"
  26. },
  27. {
  28. "name": "Ancient Lupe Wand",
  29. "rarity": "",
  30. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  31. },
  32. {
  33. "name": "Aquatic Gem",
  34. "rarity": "",
  35. "origin": "<ul><li>Possible prize item from <a href='/games/html5/sutekstomb/'>Sutek's Tomb</a>.</li></ul>"
  36. },
  37. {
  38. "name": "Army Math Tools",
  39. "rarity": "",
  40. "origin": "<ul><li>Possible reward for completing History NeoSchool Course.</li></ul>"
  41. },
  42. {
  43. "name": "Attack Cape",
  44. "rarity": "",
  45. "origin": "<ul><li>Originally available as a prize in the 2023 Haunted House prize shop.</li></ul>"
  46. },
  47. {
  48. "name": "Attack Fork",
  49. "rarity": "",
  50. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li></ul>"
  51. },
  52. {
  53. "name": "Bag of Occult Jelly",
  54. "rarity": "",
  55. "origin": "<ul><li>Possible reward when collecting from the <a href='/jelly/greenjelly/'>Green Jelly</a>.</li></ul>"
  56. },
  57. {
  58. "name": "Battle Plunger",
  59. "rarity": "",
  60. "origin": "<ul><li>Possible reward from <a href='/water/fishing/'>Underwater Fishing</a>.</li></ul>"
  61. },
  62. {
  63. "name": "Battle Quill",
  64. "rarity": "",
  65. "origin": "<ul><li>Guaranteed reward for receiving an A or higher in Early Neopian History, Grammar and Language, Simple Spelling, Art, Geography, or Spanish NeoSchool Course.</li></ul>"
  66. },
  67. {
  68. "name": "Bit of Evil Clown",
  69. "rarity": "",
  70. "origin": "<ul><li>Possible prize item from <a href='/games/html5/carnivalofterror/'>Carnival of Terror</a>.</li></ul>"
  71. },
  72. {
  73. "name": "Blizzard Ring",
  74. "rarity": "",
  75. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  76. },
  77. {
  78. "name": "Blood Grub",
  79. "rarity": "",
  80. "origin": "<ul><li>Possible prize from scratching a <a href='search/items/?item_name=Pustravaganza%20Scratchcard'>Pustravaganza Scratchcard</a> or <a href='/search/items/?item_name=Rotting%20Riches%20Scratchcard'>Rotting Riches Scratchcard</a>.</li></ul>"
  81. },
  82. {
  83. "name": "Boom Sticks",
  84. "rarity": "",
  85. "origin": "<ul><li>Possible prize item from <a href='/games/html5/tntstaffsmasher/'>TNT Staff Smasher</a>.</li></ul>"
  86. },
  87. {
  88. "name": "Brain Tree Branch",
  89. "rarity": "",
  90. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li></ul>"
  91. },
  92. {
  93. "name": "Brain Tree Knife",
  94. "rarity": "",
  95. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=spooky'>Spooky Treasure Map</a>.</li></ul>"
  96. },
  97. {
  98. "name": "Brain Tree Mace",
  99. "rarity": "",
  100. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li></ul>"
  101. },
  102. {
  103. "name": "Brain Tree Root",
  104. "rarity": "",
  105. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=spooky'>Spooky Treasure Map</a>.</li></ul>"
  106. },
  107. {
  108. "name": "Brain Tree Splinters",
  109. "rarity": "",
  110. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li></ul>"
  111. },
  112. {
  113. "name": "Cabbage of Mystery",
  114. "rarity": "",
  115. "origin": "<ul><li>Possible reward from <a href='/guilds'>Guild Gardens</a> with an inventory above 1,000.</li></ul>"
  116. },
  117. {
  118. "name": "Candy Club",
  119. "rarity": "",
  120. "origin": "<ul><li>Previously awarded during the annual Celebration Calendar.</li></ul>"
  121. },
  122. {
  123. "name": "Castle Defenders Shield",
  124. "rarity": "",
  125. "origin": "<ul><li>Possible reward for completing all 10 missions in <a href='/games/invasionofmeridell/'>Invasion of Meridell</a>.</li></ul>"
  126. },
  127. {
  128. "name": "Castle Defenders Sword",
  129. "rarity": "",
  130. "origin": "<ul><li>Possible reward for completing all 10 missions in <a href='/games/invasionofmeridell/'>Invasion of Meridell</a>.</li></ul>"
  131. },
  132. {
  133. "name": "Caustic Potion",
  134. "rarity": "",
  135. "origin": "<ul><li>Guaranteed reward when completing level 17 <a href='/faerieland/darkfaerie/'>Jhudora's Quest</a>.</li></ul>"
  136. },
  137. {
  138. "name": "Charles' Torch",
  139. "rarity": "",
  140. "origin": "<ul><li>Originally available as a prize in 2023 Haunted House prize shop.</li></ul>"
  141. },
  142. {
  143. "name": "Cobrall Wand",
  144. "rarity": "",
  145. "origin": "<ul><li>Possible reward when winning a round of <a href='/games/sakhmet_solitaire/'>Sakhmet Solitaire</a>.</li></ul>"
  146. },
  147. {
  148. "name": "Dark Faerie Dagger",
  149. "rarity": "",
  150. "origin": "<ul><li>Possible prize item from <a href='/games/html5/faeriebubbles'>Faerie Bubbles</a>.</li></ul>"
  151. },
  152. {
  153. "name": "Dark Faerie Token",
  154. "rarity": "",
  155. "origin": "<ul><li>Possible reward when completing a Dark Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li></ul>"
  156. },
  157. {
  158. "name": "Donny's Mallet",
  159. "rarity": "",
  160. "origin": "<ul><li>Originally awarded following the 2022 Snowball Fight.</li></ul>"
  161. },
  162. {
  163. "name": "Earth Faerie Dagger",
  164. "rarity": "",
  165. "origin": "<ul><li>Possible prize item from <a href='/games/html5/faeriebubbles'>Faerie Bubbles</a>.</li></ul>"
  166. },
  167. {
  168. "name": "Earth Faerie Token",
  169. "rarity": "",
  170. "origin": "<ul><li>Possible reward when completing an Earth Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li></ul>"
  171. },
  172. {
  173. "name": "Earth Stone Gem",
  174. "rarity": "",
  175. "origin": "<ul><li>Possible prize item from <a href='/games/html5/sutekstomb/'>Sutek's Tomb</a>.</li></ul>"
  176. },
  177. {
  178. "name": "Elephante Lamp",
  179. "rarity": "",
  180. "origin": "<ul><li>Possible reward when visiting <a href='/desert/shrine/'>Coltzan's Shrine</a>.</li></ul>"
  181. },
  182. {
  183. "name": "Eraser of the Dark Faerie",
  184. "rarity": "",
  185. "origin": "<ul><li>Guaranteed reward for receiving an A or higher in Potion Brewing Basics NeoSchool Course.</li></ul>"
  186. },
  187. {
  188. "name": "Exploding Space Bugs",
  189. "rarity": "",
  190. "origin": "<ul><li>Possible reward for defeating an <a href='/dome/1p/select/?arena=5'>Space Arena</a> challenger.</li></ul>"
  191. },
  192. {
  193. "name": "Faerie Eraser",
  194. "rarity": "",
  195. "origin": "<ul><li>Guaranteed reward for receiving an A or higher in Faerie Studies NeoSchool Course.</li></ul>"
  196. },
  197. {
  198. "name": "Fat Red Pen",
  199. "rarity": "",
  200. "origin": "<ul><li>Possible reward for completing History NeoSchool Course.</li></ul>"
  201. },
  202. {
  203. "name": "Fire Faerie Token",
  204. "rarity": "",
  205. "origin": "<ul><li>Possible reward when completing a Fire Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li></ul>"
  206. },
  207. {
  208. "name": "Fire Stone Gem",
  209. "rarity": "",
  210. "origin": "<ul><li>Possible prize item from <a href='/games/html5/sutekstomb/'>Sutek's Tomb</a>.</li></ul>"
  211. },
  212. {
  213. "name": "Frostbite Dart",
  214. "rarity": "",
  215. "origin": "<ul><li>Sold for 3,000 points in the 2023 Snowball Fight Prize Shop.</li></ul>"
  216. },
  217. {
  218. "name": "Fumpu Leaf Medallion",
  219. "rarity": "",
  220. "origin": "<ul><li>Possible reward when playing <a href='/island/tombola/'>Tombola</a>.</li></ul>"
  221. },
  222. {
  223. "name": "Garin's Sword",
  224. "rarity": "",
  225. "origin": "<ul><li>Possible prize item from <a href='/games/html5/attackoftherevenge/'>Attack of the Revenge</a>.</li></ul>"
  226. },
  227. {
  228. "name": "Genie Orb",
  229. "rarity": "",
  230. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  231. },
  232. {
  233. "name": "Ghost Lupe Sword",
  234. "rarity": "",
  235. "origin": "<ul><li>Possible reward for defeating an <a href='/dome/1p/select/?arena=4'>Island Arena</a> challenger.</li></ul>"
  236. },
  237. {
  238. "name": "Golden Aisha Wand",
  239. "rarity": "",
  240. "origin": "<ul><li>Possible prize when you wish for the word 'relic' at the <a href='/wishing/'>Wishing Well</a> and have your wish granted.</li></ul>"
  241. },
  242. {
  243. "name": "Golden Meepit Statue",
  244. "rarity": "",
  245. "origin": "<ul><li>Possible prize item from <a href='/games/html5/meepitjuicebreak/'>Meepit Juice Break</a>.</li><li>Possible reward from <a href='/water/fishing/'>Underwater Fishing</a>.</li></ul>"
  246. },
  247. {
  248. "name": "Golden Pirate Amulet",
  249. "rarity": "",
  250. "origin": "<ul><li>Possible reward when looking for <a href='/pirates/buriedtreasure/'>Buried Treasure</a>.</li></ul>"
  251. },
  252. {
  253. "name": "Good Snowball",
  254. "rarity": "",
  255. "origin": "<ul><li>Possible reward when visiting <a href='/island/mystichut/'>Island Music</a>.</li><li>Possible reward when stealing from the <a href='/winter/snowager/'>Snowager</a>.</li></ul>"
  256. },
  257. {
  258. "name": "Grarrg Tooth",
  259. "rarity": "",
  260. "origin": "<ul><li>Possible prize for landing on the Grarrl space at the <a href='/prehistoric/wheel'>Wheel of Mediocrity</a>.</li></ul>"
  261. },
  262. {
  263. "name": "Great Snowball",
  264. "rarity": "",
  265. "origin": "<ul><li>Sold for 3,000 points in the 2023 Snowball Fight Prize Shop.</li></ul>"
  266. },
  267. {
  268. "name": "Grundo Gavel",
  269. "rarity": "",
  270. "origin": "<ul><li>Possible prize item from <a href='/games/html5/staffsmasher/'>GC Staff Smasher</a>.</li></ul>"
  271. },
  272. {
  273. "name": "Halloween Aisha Bucket",
  274. "rarity": "",
  275. "origin": "<ul><li>Possible reward for completing History NeoSchool Course.</li></ul>"
  276. },
  277. {
  278. "name": "Happy Anniversary Negg",
  279. "rarity": "",
  280. "origin": "<ul><li>Possible reward when feeding a <strong>Very Sad</strong> kad at the <a href='/games/kadoatery/'>Kadoatery</a>.</li></ul>"
  281. },
  282. {
  283. "name": "Happy Negg Eraser",
  284. "rarity": "",
  285. "origin": "<ul><li>Guaranteed reward for receiving an A or higher in Basic Mathematics or Fishing NeoSchool Course.</li></ul>"
  286. },
  287. {
  288. "name": "Hawk Bracelet",
  289. "rarity": "",
  290. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  291. },
  292. {
  293. "name": "Hawk Wand",
  294. "rarity": "",
  295. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  296. },
  297. {
  298. "name": "Iced Wand",
  299. "rarity": "",
  300. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  301. },
  302. {
  303. "name": "Iceray Bracelet",
  304. "rarity": "",
  305. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  306. },
  307. {
  308. "name": "Illusens Bow",
  309. "rarity": "",
  310. "origin": "<ul><li>Guaranteed reward when completing level 23 <a href='/faerieland/earthfaerie/'>Illusen's Quest</a>.</li></ul>"
  311. },
  312. {
  313. "name": "Irregulation Chainmail",
  314. "rarity": "",
  315. "origin": "<ul><li>Possible prize item from <a href='/games/html5/castleescape'>Escape from Meridell Castle</a>.</li></ul>"
  316. },
  317. {
  318. "name": "Jar of Spiders",
  319. "rarity": "",
  320. "origin": "<ul><li>Possible prize item from <a href='/games/html5/webofvernax'>Web of Vernax</a>.</li></ul>"
  321. },
  322. {
  323. "name": "King Kelpbeards Blessing",
  324. "rarity": "",
  325. "origin": "<ul><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=underwater'>Underwater Treasure Map</a>.</li><li>Possible reward from <a href='/water/fishing/'>Underwater Fishing</a>.</li></ul>"
  326. },
  327. {
  328. "name": "Lava Rock",
  329. "rarity": "",
  330. "origin": "<ul><li>Possible prize item from <a href='/games/html5/destructomatch'>Destruct-O-Match</a>.</li></ul>"
  331. },
  332. {
  333. "name": "Legendary von Roo Ring",
  334. "rarity": "",
  335. "origin": "<ul><li>Possible prize for landing on the Gift space at the <a href='/halloween/wheel'>Wheel of Misfortune</a>.</li></ul>"
  336. },
  337. {
  338. "name": "Light Faerie Dagger",
  339. "rarity": "",
  340. "origin": "<ul><li>Possible prize item from <a href='/games/html5/faeriebubbles'>Faerie Bubbles</a>.</li></ul>"
  341. },
  342. {
  343. "name": "Light Faerie Token",
  344. "rarity": "",
  345. "origin": "<ul><li>Possible reward when completing an Light Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li></ul>"
  346. },
  347. {
  348. "name": "Magic Branch",
  349. "rarity": "",
  350. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li></ul>"
  351. },
  352. {
  353. "name": "Magnus Club",
  354. "rarity": "",
  355. "origin": "<ul><li>Possible reward for defeating an <a href='/dome/1p/select/?arena=7'>Tyrannian Arena</a> challenger.</li></ul>"
  356. },
  357. {
  358. "name": "Malice Potion",
  359. "rarity": "",
  360. "origin": "<ul><li>Guaranteed reward when completing level 20 <a href='/faerieland/darkfaerie/'>Jhudora's Quest</a>.</li></ul>"
  361. },
  362. {
  363. "name": "Melting Mirror",
  364. "rarity": "",
  365. "origin": "<ul><li>Possible prize from scratching a <a href='search/items/?item_name=Pustravaganza%20Scratchcard'>Pustravaganza Scratchcard</a> or <a href='/search/items/?item_name=Rotting%20Riches%20Scratchcard'>Rotting Riches Scratchcard</a>.</li></ul>"
  366. },
  367. {
  368. "name": "Mystic Guitar",
  369. "rarity": "",
  370. "origin": "<ul><li>Possible reward when visiting <a href='/island/mystichut/'>Island Music</a>.</li></ul>"
  371. },
  372. {
  373. "name": "Mystic Jelly Bean Necklace",
  374. "rarity": "",
  375. "origin": "<ul><li>Possible prize item from <a href='/games/html5/jellyblobs'>Jelly Blobs of Doom</a>.</li></ul>"
  376. },
  377. {
  378. "name": "Mystical Fish Lobber",
  379. "rarity": "",
  380. "origin": "<ul><li>Possible reward from <a href='/water/fishing/'>Underwater Fishing</a>.</li></ul>"
  381. },
  382. {
  383. "name": "Neutron Wand",
  384. "rarity": "",
  385. "origin": "<ul><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=space'>Space Map</a>.</li></ul>"
  386. },
  387. {
  388. "name": "Nimmo Finger",
  389. "rarity": "",
  390. "origin": "<ul><li>Possible prize from scratching a <a href='search/items/?item_name=Pustravaganza%20Scratchcard'>Pustravaganza Scratchcard</a> or <a href='/search/items/?item_name=Rotting%20Riches%20Scratchcard'>Rotting Riches Scratchcard</a>.</li></ul>"
  391. },
  392. {
  393. "name": "Official Prissy Miss Hair Brush",
  394. "rarity": "",
  395. "origin": "<ul><li>Possible prize item from <a href='/games/html5/usukifrenzy/'>Usuki Frenzy</a>.</li></ul>"
  396. },
  397. {
  398. "name": "Patched Magic Hat",
  399. "rarity": "",
  400. "origin": "<ul><li>Possible reward when completing an <a href='/halloween/witchtower/'>Edna's Quest</a>.</li><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=spooky'>Spooky Treasure Map</a>.</li></ul>"
  401. },
  402. {
  403. "name": "Pear of Disintegration",
  404. "rarity": "",
  405. "origin": "<ul><li>Possible reward from <a href='/gulids/'>Guild Gardens</a> with an inventory above 1,000.</li></ul>"
  406. },
  407. {
  408. "name": "Petpet Bone",
  409. "rarity": "",
  410. "origin": "<ul><li>Possible reward when waking <a href='/medieval/turmaculus/'>Turmaculus</a>.</li></ul>"
  411. },
  412. {
  413. "name": "Platinum Dubloon",
  414. "rarity": "",
  415. "origin": "<ul><li>Possible prize item from <a href='/games/html5/dubloondisaster'>Dubloon Disaster</a>.</li></ul>"
  416. },
  417. {
  418. "name": "Poké Ball",
  419. "rarity": "",
  420. "origin": "<ul><li>Randomly awarded through an extremely rare site-wide random event.</li></ul>"
  421. },
  422. {
  423. "name": "Power Negg Eraser",
  424. "rarity": "",
  425. "origin": "<ul><li>Guaranteed reward for receiving an A or higher in Neopian Driver's Ed or Physical Education NeoSchool Course.</li></ul>"
  426. },
  427. {
  428. "name": "Pumpkin Stick",
  429. "rarity": "",
  430. "origin": "<ul><li>Possible prize from scratching a <a href='search/items/?item_name=Pustravaganza%20Scratchcard'>Pustravaganza Scratchcard</a> or <a href='/search/items/?item_name=Rotting%20Riches%20Scratchcard'>Rotting Riches Scratchcard</a>.<li>Possible prize item from <a href='/games/html5/carnivakofterror'>Carnival of Terror</a>.</li></ul>"
  431. },
  432. {
  433. "name": "Radish Bow",
  434. "rarity": "",
  435. "origin": "<ul><li>Possible prize item from <a href='/games/html5/bullseye'>Ultimate Bullseye</a>.</li></ul>"
  436. },
  437. {
  438. "name": "Rainbow Cybunny Wand",
  439. "rarity": "",
  440. "origin": "<ul><li>Possible prize when you wish for the word 'relic' at the <a href='/wishing/'>Wishing Well</a> and have your wish granted.</li></ul>"
  441. },
  442. {
  443. "name": "Rainbow Kacheek Pendant",
  444. "rarity": "",
  445. "origin": "<ul><li>Possible reward for completing History NeoSchool Course.</li></ul>"
  446. },
  447. {
  448. "name": "Rainbow Negg Eraser",
  449. "rarity": "",
  450. "origin": "<ul><li>Guaranteed reward for receiving an A or higher in Science or Computer Science NeoSchool Course.</li></ul>"
  451. },
  452. {
  453. "name": "Rainbow Pteri Feather",
  454. "rarity": "",
  455. "origin": "<ul><li>Possible reward when playing <a href='/island/tombola/'>Tombola</a>.</li><li>Randomly dropped when receiving the 'golden pteri' site-wide random event.</li></ul>"
  456. },
  457. {
  458. "name": "Reinvented Wheel",
  459. "rarity": "",
  460. "origin": "<ul><li>Randomly available to purchase for 14 credits from the <a href='/games/emporium/'>Puzzle Emporium</a>.</li></ul>"
  461. },
  462. {
  463. "name": "Ring of the Lost",
  464. "rarity": "",
  465. "origin": "<ul><li>Possible prize from scratching <a href='/search/items/?item_name=Bagguss%20Bonanza%20Scratchcard'>Bagguss Bonanza Scratchcard</a> or <a href='/search/items/?item_name=Sandtravaganza%20Scratchcard'>Sandtravaganza Scratchcard</a>.</li></ul>"
  466. },
  467. {
  468. "name": "Robo Sloth Fist of Power",
  469. "rarity": "",
  470. "origin": "<ul><li>Guaranteed reward for receiving an A or higher in Back to Business NeoSchool Course.</li></ul>"
  471. },
  472. {
  473. "name": "Royal Wedding Ring",
  474. "rarity": "",
  475. "origin": "<ul><li>Possible prize from scratching <a href='/search/items/?item_name=Bagguss%20Bonanza%20Scratchcard'>Bagguss Bonanza Scratchcard</a> or <a href='/search/items/?item_name=Sandtravaganza%20Scratchcard'>Sandtravaganza Scratchcard</a>.</li></ul>"
  476. },
  477. {
  478. "name": "Rusty Garden Pitchfork",
  479. "rarity": "",
  480. "origin": "<ul><li>Possible item you can find during <a href='/medieval/pickyourown/index/'>Pick Your Own</a>.</li></ul>"
  481. },
  482. {
  483. "name": "Rutabaga Lance",
  484. "rarity": "",
  485. "origin": "<ul><li>Possible reward when guessing correctly at <a href='/medieval/potatocounter/'>Potato Counter</a>.</li></ul>"
  486. },
  487. {
  488. "name": "Scarab Amulet",
  489. "rarity": "",
  490. "origin": "<ul><li>Possible reward when winning a round of <a href='/games/sakhmet_solitaire/'>Sakhmet Solitaire</a>.</li></ul>"
  491. },
  492. {
  493. "name": "Scroll of Ultimate Knowledge",
  494. "rarity": "",
  495. "origin": "<ul><li>Possible reward for completing History NeoSchool Course.</li></ul>"
  496. },
  497. {
  498. "name": "Snow Beast Horn",
  499. "rarity": "",
  500. "origin": "<ul><li>Possible reward for defeating an <a href='/dome/1p/select/?arena=3'>Ice Arena</a> challenger.</li></ul>"
  501. },
  502. {
  503. "name": "Snowager Pendant",
  504. "rarity": "",
  505. "origin": "<ul><li>Possible reward when stealing from the <a href='/winter/snowager/'>Snowager</a>.</li></ul>"
  506. },
  507. {
  508. "name": "Snowager Sleep Ray",
  509. "rarity": "",
  510. "origin": "<ul><li>Sold for 3,000 points in the 2023 Snowball Fight Prize Shop.</li></ul>"
  511. },
  512. {
  513. "name": "Snowflake Pendant",
  514. "rarity": "",
  515. "origin": "<ul><li>Possible prize item from <a href='/games/html5/icecreammachine'>Ice Cream Machine</a>.</li></ul>"
  516. },
  517. {
  518. "name": "Snowglobe Staff",
  519. "rarity": "",
  520. "origin": "<ul><li>Possible prize from scratching <a href='search/items/?item_name=Faeries%20Fortune%20Scratchcard'>Faeries Fortune Scratchcard</a>, <a href='/search/items/?item_name=Peak%20O%20Plenty%20Scratchcard'>Peak O Plenty Scratchcard</a>, or <a href='/search/items/?item_name=Icetravaganza%20Scratchcard'>Icetravaganza Scratchcard</a>.</li></ul>"
  521. },
  522. {
  523. "name": "Soul Stone",
  524. "rarity": "",
  525. "origin": "<ul><li>Possible reward for completing a <a href='/island/kitchen/'>Kitchen Quest</a>.</li></ul>"
  526. },
  527. {
  528. "name": "Space Amulet",
  529. "rarity": "",
  530. "origin": "<ul><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=space'>Space Map</a>.</li></ul>"
  531. },
  532. {
  533. "name": "Space Faerie Token",
  534. "rarity": "",
  535. "origin": "<ul><li>Possible reward when completing a Space Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li></ul>"
  536. },
  537. {
  538. "name": "Space Faeries Shield",
  539. "rarity": "",
  540. "origin": "<ul><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=space'>Space Map</a>.</li></ul>"
  541. },
  542. {
  543. "name": "Spider Grundo Sword",
  544. "rarity": "",
  545. "origin": "<ul><li>Possible reward for defeating a <a href='/dome/1p/select/?arena=2'>Stone Dome</a> challenger.</li></ul>"
  546. },
  547. {
  548. "name": "Spirited Fiddle",
  549. "rarity": "",
  550. "origin": "<ul><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=spooky'>Spooky Treasure Map</a>.<li>Possible prize item from <a href='/games/html5/korbatslab'>Korbat's Lab</a>.</li></ul>"
  551. },
  552. {
  553. "name": "Spooky Slime",
  554. "rarity": "",
  555. "origin": "<ul><li>Possible reward for completing an <a href='/halloween/esophagor/'>Esophagor Quest</a>.</li><li>Randomly dropped when a slorg is thrown at you.</li></ul>"
  556. },
  557. {
  558. "name": "Squash Club",
  559. "rarity": "",
  560. "origin": "<ul><li>Possible reward when guessing correctly at <a href='/medieval/potatocounter/'>Potato Counter</a>.</li></ul>"
  561. },
  562. {
  563. "name": "Staff of Brain",
  564. "rarity": "",
  565. "origin": "<ul><li>Possible reward when completing a <a href='/halloween/braintree/'>Brain Tree Quest</a>.</li></ul>"
  566. },
  567. {
  568. "name": "Starry Scorchio Wand",
  569. "rarity": "",
  570. "origin": "<ul><li>Possible prize when you wish for the word 'relic' at the <a href='/wishing/'>Wishing Well</a> and have your wish granted.</li></ul>"
  571. },
  572. {
  573. "name": "Superior Battle Plunger",
  574. "rarity": "",
  575. "origin": "<ul><li>Possible item you can find when jumping into the <a href='/halloween/toilet/'>Spooky Toilet</a>.</li></ul>"
  576. },
  577. {
  578. "name": "Trident of Chiazilla",
  579. "rarity": "",
  580. "origin": "<ul><li>Possible reward for defeating a <a href='/dome/1p/select/?arena=6'>Water Arena</a> challenger.</li></ul>"
  581. },
  582. {
  583. "name": "Trusty Hand Cannon",
  584. "rarity": "",
  585. "origin": "<ul><li>Possible prize item from <a href='/games/html5/attackoftherevenge'>Attack of the Revenge</a>.</li></ul>"
  586. },
  587. {
  588. "name": "Tyrannian Amulet",
  589. "rarity": "",
  590. "origin": "<ul><li>Possible prize item from <a href='/games/html5/volcanorun'>Volcano Run</a>.</li></ul>"
  591. },
  592. {
  593. "name": "Ultra Fire Gem",
  594. "rarity": "",
  595. "origin": "<ul><li>Possible prize item from <a href='/games/html5/sutekstomb/'>Sutek's Tomb</a>.</li></ul>"
  596. },
  597. {
  598. "name": "Wand of the Snow Faerie",
  599. "rarity": "",
  600. "origin": "<ul><li>Possible reward for completing a <a href='/winter/snowfaerie/'>Snow Faerie Quest</a>.</li></ul>"
  601. },
  602. {
  603. "name": "Water Faerie Dagger",
  604. "rarity": "",
  605. "origin": "<ul><li>Possible prize item from <a href='/games/html5/faeriebubbles'>Faerie Bubbles</a>.</li></ul>"
  606. },
  607. {
  608. "name": "Water Faerie Token",
  609. "rarity": "",
  610. "origin": "<ul><li>Possible reward when completing a Water Faerie Quest.</li><li>Possible prize item from <a href='/games/html5/faeriecloudracers/'>Faerie Cloud Racers</a>.</li><li>Possible reward when turning in a <a href='/games/treasurehunt/?type=underwater'>Underwater Treasure Map</a>.</li></ul>"
  611. },
  612. {
  613. "name": "Wind Up Rat",
  614. "rarity": "",
  615. "origin": "<ul><li>Guaranteed reward when completing level 32 <a href='/faerieland/darkfaerie/'>Jhudora's Quest</a>.</li></ul>"
  616. },
  617. {
  618. "name": "Witches Orb",
  619. "rarity": "",
  620. "origin": "<ul><li>Possible reward when completing an <a href='/halloween/witchtower/'>Edna's Quest</a>.</li></ul>"
  621. },
  622. {
  623. "name": "Wooden Compass",
  624. "rarity": "",
  625. "origin": "<ul><li>Guaranteed reward when turning in a <a href='/games/treasurehunt/?type=original'>Original Treasure Map</a>.</li></ul>"
  626. },
  627. {
  628. "name": "Zucchini Bat",
  629. "rarity": "",
  630. "origin": "<ul><li>Possible reward when guessing correctly at <a href='/medieval/potatocounter/'>Potato Counter</a>.</li></ul>"
  631. },
  632. {
  633. "name": "Bismuth",
  634. "rarity": "",
  635. "origin": "<ul><li>Originally available as a prize in 2024 Volcano Plot prize shop.</li></ul>"
  636. },
  637. {
  638. "name": "Gilly's Lantern",
  639. "rarity": "",
  640. "origin": "<ul><li>Originally available as a prize in 2024 Haunted House prize shop.</li></ul>"
  641. },
  642. {
  643. "name": "Hannahs Magic Rope",
  644. "rarity": "",
  645. "origin": "<ul><li>Possible prize item from <a href='/games/html5/piratecaves'>Hannah and the Pirate Caves</a>.</li></ul>"
  646. },
  647. {
  648. "name": "Heart of the Ocean",
  649. "rarity": "",
  650. "origin": "<ul><li>Possible reward when visiting <a href='/island/mystichut/'>Island Music</a>.</li></ul>"
  651. },
  652. {
  653. "name": "Lenny de Barcelos",
  654. "rarity": "",
  655. "origin": "<ul><li>Possible reward for completing Portuguese NeoSchool Course.</li></ul>"
  656. },
  657. {
  658. "name": "Portable Seismometer",
  659. "rarity": "",
  660. "origin": "<ul><li>Originally available as a prize in 2024 Volcano Plot prize shop.</li></ul>"
  661. },
  662. {
  663. "name": "Stump of Despair",
  664. "rarity": "",
  665. "origin": "<ul><li>Possible prize item from <a href='/games/html5/turmacroll'>Turmac Roll</a>.</li></ul>"
  666. },
  667. {
  668. "name": "The Bat",
  669. "rarity": "",
  670. "origin": "<ul><li>Possible prize item from <a href='/games/html5/kassbasher'>Kass Basher</a>.</li></ul>"
  671. },
  672. {
  673. "name": "Monotonous Dial",
  674. "rarity": "",
  675. "origin": "<ul><li>Possible prize for landing on the Paper space at the <a href='/prehistoric/monotony'>Wheel of Mediocrity</a>.</li></ul>"
  676. }
  677. ]
  678.  
  679. if (window.location.href.includes('/warehouse/relics/')) {
  680. const pageContent = document.getElementById('page_content');
  681. const relicCountElement = document.querySelector("#page_content > main > div.center > p:nth-child(2)");
  682.  
  683. const relicCount = relicCountElement.innerText.replace(/[^\d/]/g, '');
  684. const [countLogged, relicTotal] = relicCount.split('/').map(value => parseInt(value.trim(), 10));
  685.  
  686. const countNeeded = relicTotal - countLogged;
  687. const relicPercent = ((countLogged / relicTotal) * 100).toFixed(1);
  688.  
  689. relicCountElement.innerHTML += `
  690. <br>Your collection is <strong>${relicPercent}%</strong> complete.
  691. <br>You are missing <strong>${countNeeded}</strong> relics.
  692. <br>Click <a href="https://www.grundos.cafe/safetydeposit/?query=&category=999&sort=count">here</a> to check for them in your SDB.<p style="font-size:9px"><i>https://www.grundos.cafe/space/warehouse/relics/?user=</i></p>`;
  693.  
  694. createDropdown(relicCountElement);
  695.  
  696. const flexColumns = document.querySelectorAll('.flex-column');
  697. const notLoggedSet = getNotLoggedRelics(flexColumns);
  698.  
  699. if (!window.location.href.includes('/?user=')) {
  700. localStorage.setItem('notLoggedRelic', JSON.stringify(Array.from(notLoggedSet)));
  701. console.log("Logged list updated.");
  702. }
  703.  
  704. applySelectedOption();
  705. highlightRarities();
  706.  
  707. }
  708.  
  709. if (window.location.href.includes('/safetydeposit/') && window.location.href.includes('&category=999')) {
  710. highlightMissingRelics('.flex-column.small-gap.break');
  711. }
  712.  
  713. if (window.location.href === 'https://www.grundos.cafe/space/warehouse/') {
  714. highlightMissingRelics('.centered-item');
  715. }
  716.  
  717. if (window.location.href.includes('/items/')) {
  718. displayRelicOrigin();
  719. }
  720.  
  721. if (window.location.href.includes('#details')) {
  722. createDivs();
  723. }
  724.  
  725. // Helper Functions
  726.  
  727. function createDropdown(parentElement) {
  728. const dropdown = document.createElement('select');
  729. dropdown.id = 'orderDropdown';
  730. dropdown.style.marginLeft = '10px';
  731. dropdown.style.marginBottom = '10px';
  732.  
  733. const options = [
  734. { value: 'choose_view', text: 'Choose View', disabled: true, selected: true },
  735. { value: 'show_needed', text: 'Show Needed' },
  736. { value: 'show_logged', text: 'Show Logged' },
  737. { value: 'show_all', text: 'Show All' }
  738. ];
  739.  
  740. options.forEach(({ value, text, disabled = false, selected = false }) => {
  741. const option = document.createElement('option');
  742. option.value = value;
  743. option.text = text;
  744. option.disabled = disabled;
  745. option.selected = selected;
  746. dropdown.add(option);
  747. });
  748.  
  749. const selectedOption = localStorage.getItem('selectedOption');
  750. if (selectedOption) dropdown.value = selectedOption;
  751.  
  752. parentElement.parentNode.insertBefore(dropdown, parentElement.nextSibling);
  753.  
  754. dropdown.addEventListener('change', () => {
  755. applySelectedOption();
  756. localStorage.setItem('selectedOption', dropdown.value);
  757. });
  758. }
  759.  
  760. function toggleVisibility(elements, displayValue) {
  761. elements.forEach(element => {
  762. element.style.display = displayValue;
  763. });
  764. }
  765.  
  766. function applySelectedOption() {
  767. const relicLoggedDivs = document.querySelectorAll('#reliclogged');
  768. const notLoggedDivs = document.querySelectorAll('#notlogged');
  769. const dropdown = document.getElementById('orderDropdown');
  770.  
  771. if (dropdown.value === 'show_all') {
  772. toggleVisibility(relicLoggedDivs, '');
  773. toggleVisibility(notLoggedDivs, '');
  774. } else if (dropdown.value === 'show_needed') {
  775. toggleVisibility(relicLoggedDivs, 'none');
  776. toggleVisibility(notLoggedDivs, '');
  777. } else if (dropdown.value === 'show_logged') {
  778. toggleVisibility(notLoggedDivs, 'none');
  779. toggleVisibility(relicLoggedDivs, '');
  780. }
  781. }
  782.  
  783. function getNotLoggedRelics(flexColumns) {
  784. const notLoggedSet = new Set();
  785.  
  786. flexColumns.forEach(flexColumn => {
  787. const imagesWithOpacity = flexColumn.querySelectorAll('img[style*="opacity"]');
  788. const id = imagesWithOpacity.length > 0 ? 'notlogged' : 'reliclogged';
  789. flexColumn.setAttribute('id', id);
  790.  
  791. if (id === 'notlogged') {
  792. const relicName = flexColumn.querySelector('strong').innerText;
  793. notLoggedSet.add(relicName);
  794. }
  795. });
  796.  
  797. return notLoggedSet;
  798. }
  799.  
  800. function highlightRarities() {
  801. const itemCards = document.querySelectorAll('.center-items');
  802.  
  803. // Shoutout to Matt/masterofdarkness for TP link suggestion + leg work!
  804. itemCards.forEach(item => {
  805. const itemName = item.querySelector('strong').innerText;
  806. const tplink = ` <a target="_blank" class="searchhelp" href="https://www.grundos.cafe/island/tradingpost/browse/?query=${itemName}&autosubmit=1"><img src="https://grundoscafe.b-cdn.net/searchicons/coloured/trade.png"></a>`;
  807.  
  808. item.querySelector('strong').insertAdjacentHTML('beforeend', tplink);
  809.  
  810. const relic = relicArray.find(relic => relic.name === itemName);
  811. const relicRarity = relic?.rarity || null;
  812.  
  813. if (relicRarity === 'Rarest') {
  814. item.style.border = '5px solid #bb3d3d4f';
  815. } else if (relicRarity === 'Common') {
  816. item.style.border = '5px solid #76da5d70';
  817. }
  818.  
  819. // Set background color to red if no matching relic is found
  820. if (!relic) {
  821. item.style.backgroundColor = 'red';
  822. }
  823. });
  824. }
  825.  
  826.  
  827.  
  828. function highlightMissingRelics(selector) {
  829. const items = document.querySelectorAll(selector);
  830. const notLoggedArray = JSON.parse(localStorage.getItem('notLoggedRelic')) || [];
  831.  
  832. items.forEach(item => {
  833. const itemName = item.querySelector('strong')?.innerText || item.querySelector('img')?.alt;
  834. if (notLoggedArray.includes(itemName)) {
  835. item.style.backgroundColor = 'yellow';
  836. }
  837. });
  838. }
  839.  
  840.  
  841.  
  842. function displayRelicOrigin() {
  843. const itemCard = document.querySelector('.item-search-container');
  844. const itemName = itemCard.querySelector('.nomargin').innerText.trim();
  845. const relicOrigin = relicArray.find(item => item.name === itemName)?.origin || null;
  846.  
  847. if (relicOrigin !== null) {
  848. const originDetails = document.createElement('div');
  849. originDetails.style.backgroundColor = 'beige';
  850. originDetails.style.padding = '30px';
  851. originDetails.style.border = '3px solid purple';
  852. originDetails.innerHTML = `
  853. <span style="font-weight: bold; color: purple; font-size: 16px;">Where is this relic from?</span>
  854. <span style="text-align:left;">${relicOrigin}</span>`;
  855.  
  856. const parentElement = document.querySelector(".item-search-container");
  857. parentElement.insertAdjacentElement('afterend', originDetails);
  858. }
  859. }
  860.  
  861. function createDivs() {
  862. const centerDiv = document.querySelector('#page_content');
  863. const container = document.createElement('div');
  864. container.style.display = 'flex';
  865. container.style.flexWrap = 'wrap';
  866. container.style.width = '595px';
  867. centerDiv.innerHTML = null;
  868. centerDiv.appendChild(container);
  869.  
  870. relicArray.forEach(relic => {
  871. const div = document.createElement('div');
  872. div.style.width = '575px';
  873. div.style.margin = '5px';
  874. div.style.padding = '10px';
  875. div.style.border = '1px solid black';
  876.  
  877. const header = document.createElement('h3');
  878. header.textContent = relic.name;
  879.  
  880. const body = document.createElement('p');
  881. body.innerHTML = relic.origin;
  882.  
  883. div.appendChild(header);
  884. div.appendChild(body);
  885. container.appendChild(div);
  886. });
  887. }