/** to use, replace the "replace me" text with your name. then paste this code in your browser's console enter the save codes into castle quests' save/load menu */ const playerName = 'replace me'; const playerLevel = 960; const hasRod = true; const hasSuperRod = true; const fishingLevel = 960; const titles = { "(clear special title)": true, "Kawaii Cat Slayer": true, "Challenger": true, "Arena Breaker": true, "Fishing Master": true, "Co-Owner": true, "Epic Gamer": true, "Warlord": true, "Pretty Good at Mining": true, "Legend Angler": true, "Dev": true, "High Roller": true, "Jester": true, "Bounty Hunter": true, "Mage Masher": true, "Noumenon": true, "Little old Lady": true, "Total Jerk": true, "Yes": true, "Spirit of Virgo": true, "Cloud Rider": true, "β Tester": true, "Fallen Angel": true, "Lord Blorb": true, "Keeper of the Key": true, "Treasure Hunter": true, "Frightening": true, "Fishy": true, "Easter Bunny": true, "Squire's Master": true, "Next In Line": true, "Chaos Bringer": true, "Punch the Treasure Goblin!": true, "Egg Hunter": true, "The Crasher": true, "Local Hero": true, "?36": true, "?37": true, "?38": true, "?39": true, "?40": true, "?41": true, "?42": true, "?43": true, "Max Limit Test": true, "?45": true, "?46": true, "Max Limit Test 2": true, }; const fish = { "Friar Goby": true, "Templar Tuna": true, "Silver Snapper": true, "Spadefish": true, "Silver Perch": true, "Red Grouper": true, "Sword Fish": true, "Blue Marlin": true, "Hog Fish": true, "Triggerfish": true, "Magefish": true, "Mako Shark": true, "Castle Koi": true, "Moat Sturgeon": true, "Coelacanth": true, "Alpha Fish": true, "Tropical Tuna": true, "Wave Surfer": true, "Angel Fish": true, "Beluga Sturgeon": true, "Sterlet": true, "Teoprid": true, "King's Cade": true, "Lionfish": true, }; const convertArray = (arr) => { let a = 0; for (let i = 0; i < arr.length; i++) a += ((arr[i] * 2) ** i); return a; }; const genCode = (data) => { let str = ''; for (let i = 0; i < 20; i++) { str = str + data[~~playerMenuData[i]]; if ((i + true) % 4 == 0 && i < 19) str = str + '-'; } str = str.replace("HHH", "GHF"); str = str.replace("HH", "GF"); return str; } const menuData = "HU4DK2NVCERTXSAQ175BL6P93J8ZYWM".split(''); const editorRefs = [1.110, null, 31, 12]; playerMenuData = []; playerMenuData[20] = playerName.length; playerMenuData[6] = Math.floor(editorRefs[0]); playerMenuData[7] = ((editorRefs[0]) - playerMenuData[6]) * 100; playerMenuData[30] = playerMenuData[7] + playerMenuData[6] + playerMenuData[20]; playerMenuData[22] = Math.min(playerLevel, editorRefs[2] ** 2 - 1); playerMenuData[23] = Math.floor(playerMenuData[22] / editorRefs[2]); playerMenuData[24] = playerMenuData[22] + playerMenuData[20]; playerMenuData[25] = Math.floor(playerMenuData[24] / editorRefs[2]); playerMenuData[27] = Math.min(12, playerMenuData[20]); playerMenuData[0] = (playerMenuData[25] + playerMenuData[20]) % editorRefs[2]; playerMenuData[12] = playerMenuData[24] % editorRefs[2]; playerMenuData[2] = (playerMenuData[0] + playerMenuData[12] - playerMenuData[20]) % editorRefs[2]; playerMenuData[3] = playerMenuData[20]; playerMenuData[21] = playerMenuData[0] + playerMenuData[2] + playerMenuData[3] + playerMenuData[12]; playerMenuData[4] = Math.floor(playerMenuData[21] / editorRefs[2]); playerMenuData[5] = playerMenuData[21] % editorRefs[2]; playerMenuData[30] = playerMenuData[6] + playerMenuData[7] + playerMenuData[20]; const titleArr = Object.values(titles); playerMenuData[25] = convertArray(titleArr.slice(0, 24).map(Boolean)); playerMenuData[26] = convertArray(titleArr.slice(24, 48).map(Boolean)); playerMenuData[1] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 4) + playerMenuData[20] + 4 + playerMenuData[30]) % editorRefs[2]; playerMenuData[13] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 3) + 3 + playerMenuData[30]) % editorRefs[2]; playerMenuData[14] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 2) + 2 + playerMenuData[30]) % editorRefs[2]; playerMenuData[15] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 1) + 1 + playerMenuData[30]) % editorRefs[2]; playerMenuData[16] = (playerMenuData[25] + playerMenuData[30]) % editorRefs[2]; playerMenuData[11] = (Math.floor(playerMenuData[26] / editorRefs[2] ** 4) + playerMenuData[20] + 9 + playerMenuData[30]) % editorRefs[2]; playerMenuData[19] = (Math.floor(playerMenuData[26] / editorRefs[2] ** 3) + 8 + playerMenuData[30]) % editorRefs[2]; playerMenuData[8] = (Math.floor(playerMenuData[26] / editorRefs[2] ** 2) + 7 + playerMenuData[30]) % editorRefs[2]; playerMenuData[9] = (Math.floor(playerMenuData[26] / editorRefs[2] ** 1) + 6 + playerMenuData[30]) % editorRefs[2]; playerMenuData[10] = (playerMenuData[26] + 5 + playerMenuData[30]) % editorRefs[2]; playerMenuData[28] = playerMenuData[0] + playerMenuData[1] + playerMenuData[3] + playerMenuData[8] + playerMenuData[9] + playerMenuData[10] + playerMenuData[11] + playerMenuData[13] + playerMenuData[14] + playerMenuData[15] + playerMenuData[16] + playerMenuData[19]; playerMenuData[17] = Math.floor(playerMenuData[28] / editorRefs[2]) + playerMenuData[4]; playerMenuData[18] = playerMenuData[28] % editorRefs[2]; console.log('level code', genCode(menuData)); playerMenuData = []; playerMenuData[20] = playerName.length; playerMenuData[7] = Math.floor((editorRefs[0])); playerMenuData[6] = ((editorRefs[0]) - playerMenuData[7]) * 100; playerMenuData[30] = playerMenuData[7] + playerMenuData[6] + playerMenuData[20]; playerMenuData[22] = Math.min(fishingLevel, editorRefs[2] ** 2 - 1); playerMenuData[21] = (hasRod ? 1 : 0) + (hasSuperRod ? 2 : 0); playerMenuData[0] = (playerMenuData[21] * 3 + playerMenuData[30]) % editorRefs[2]; playerMenuData[1] = Math.floor((playerMenuData[22] + playerMenuData[20]) / editorRefs[2]) % editorRefs[2]; playerMenuData[2] = hasSuperRod * 4; playerMenuData[3] = playerMenuData[20]; playerMenuData[8] = (playerMenuData[22] + playerMenuData[20]) % editorRefs[2]; playerMenuData[9] = Math.abs(playerMenuData[8] + playerMenuData[1] - playerMenuData[20]) % editorRefs[2]; playerMenuData[22] = playerMenuData[0] + playerMenuData[1] + playerMenuData[2] + playerMenuData[3] + playerMenuData[9]; playerMenuData[15] = playerMenuData[22] % editorRefs[2]; playerMenuData[19] = Math.floor(playerMenuData[22] / editorRefs[2]); const fishArr = Object.values(fish); playerMenuData[25] = convertArray(fishArr.slice(0, 24).map(Boolean)); playerMenuData[26] = convertArray(fishArr.slice(24, 48).map(Boolean)); playerMenuData[14] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 4) - playerMenuData[20] + playerMenuData[30] + 14) % editorRefs[2]; playerMenuData[5] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 3) + playerMenuData[30] + 13) % editorRefs[2]; playerMenuData[11] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 2) + playerMenuData[30] + 12) % editorRefs[2]; playerMenuData[13] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 1) + playerMenuData[30] + 11) % editorRefs[2]; playerMenuData[10] = (Math.floor(playerMenuData[25] / editorRefs[2] ** 0) + playerMenuData[30] + 10) % editorRefs[2]; playerMenuData[4] = (Math.floor(playerMenuData[26] / editorRefs[2] ** 2) - playerMenuData[20] + playerMenuData[30] + 17) % editorRefs[2]; playerMenuData[16] = (Math.floor(playerMenuData[26] / editorRefs[2] ** 1) + playerMenuData[30] + 16) % editorRefs[2]; playerMenuData[17] = (Math.floor(playerMenuData[26] / editorRefs[2] ** 0) + playerMenuData[30] + 15) % editorRefs[2]; playerMenuData[23] = playerMenuData[3] + playerMenuData[4] + playerMenuData[5] + playerMenuData[10] + playerMenuData[11] + playerMenuData[13] + playerMenuData[14] + playerMenuData[16] + playerMenuData[17] + playerMenuData[19]; playerMenuData[12] = playerMenuData[23] % editorRefs[2]; playerMenuData[18] = Math.floor(playerMenuData[23] / editorRefs[2] + playerMenuData[30]) % editorRefs[2]; console.log('fishing code', genCode(menuData));