Merge++

Best and only free Farm Merge Valley script

  1. // ==UserScript==
  2. // @name Merge++
  3. // @namespace http://tampermonkey.net/
  4. // @version 2.14
  5. // @description Best and only free Farm Merge Valley script
  6. // @author vk.com/downcasted
  7. // @match *://*.discordsays.com/*
  8. // @match https://farm-merge-valley.game-files.crazygames.com/farm-merge-valley/*
  9. // @icon https://files.catbox.moe/d5dxaj.png
  10. // @discord https://discord.gg/PtF4maDP9D
  11. // @license GPL
  12. // @grant none
  13. // ==/UserScript==
  14.  
  15. XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send
  16. XMLHttpRequest.prototype.send = function(data) {
  17. this.addEventListener('readystatechange', function() {
  18. const url = this.responseURL
  19. if (url.includes("lucky_merge_config")) { // always lucky merge
  20. Object.defineProperty(this, "responseText", {writable: true})
  21. this.responseText = '{"CHANCE":100}';
  22. } else if(url.includes("crate_regeneration_config")) { // infinite crates
  23. Object.defineProperty(this, "responseText", {writable: true})
  24. this.responseText = '{"MAX_AMOUNT":100,"AMOUNT_PER_INTERVAL":100,"SPAWN_INTERVAL":1}'
  25. } else if(url.includes("energy_regeneration_config.json")) { // infinite energy
  26. this.responseText = '{"MAX_AMOUNT":100,"AMOUNT_PER_INTERVAL":100,"SPAWN_INTERVAL":1}'
  27. } else if (url.includes("marketplace_items_config")) { // Free shop
  28. Object.defineProperty(this, "responseText", {writable: true})
  29. const shop = JSON.parse(this.response)
  30. for (const item in shop['items']) {
  31. let itemrec = shop["items"][item]
  32. if (itemrec["payment"]["type"] == "iap") {
  33. itemrec["payment"] = {"type": "inventory", "key": "gems", "amount": 0}
  34. } else {
  35. itemrec["payment"]["amount"] = 0
  36. };
  37. if (itemrec["id"] == "energy_80") { // Replace 2nd energy offer with coins
  38. itemrec["reward"]["data"]["key"] = "coins"
  39. itemrec["reward"]["data"]["amount"] = 1200
  40. }
  41. }
  42. this.responseText = JSON.stringify(shop)
  43. } else if(this.responseURL.includes("blueprints/base_")) {
  44. Object.defineProperty(this, "responseText", {writable: true})
  45. const components = JSON.parse(this.response)
  46. components["components"]["shovelable"] = {};
  47. this.responseText = JSON.stringify(components)
  48. };
  49. });
  50. this.realSend(data)
  51. };