[REQUEST] Moonstone Island

Ask about cheats/tables for single player games here
rafpoop
Novice Cheater
Novice Cheater
Posts: 24
Joined: Sat Jul 18, 2020 10:56 pm
Reputation: 11

Re: [REQUEST] Moonstone Island

Post by rafpoop »

leegao wrote:
Wed Oct 11, 2023 2:29 am
Oh make sure you select Runtime in the list of threads to suspend before you type this into the console. Construct 3 will set up up to 4-5 threads (the default is Main, but that's not where the game loop happens within)
I have no idea how you figure this stuff out, but thank you. I uploaded another mod with that loop suggestion to force them to be holographic all the time. Appreciate it, made sure to credit you in my mods where you helped me out. :ugeek:

Jessen
Expert Cheater
Expert Cheater
Posts: 220
Joined: Sat Mar 04, 2017 10:03 am
Reputation: 33

Re: [REQUEST] Moonstone Island

Post by Jessen »

now we just need to figure out how to change already gotten spirits to holo, or a way to make egg spirits holo as they come out, and we're good to go.

leegao
Noobzor
Noobzor
Posts: 10
Joined: Wed Oct 04, 2023 9:04 pm
Reputation: 4

Re: [REQUEST] Moonstone Island

Post by leegao »

rafpoop wrote:
Sun Oct 15, 2023 9:03 pm
I have no idea how you figure this stuff out, but thank you. I uploaded another mod with that loop suggestion to force them to be holographic all the time. Appreciate it, made sure to credit you in my mods where you helped me out. :ugeek:
All good, you're doing the real work out there making this actually useful for folks! Definitely give yourself the real credit here :)

I'm a (soon-to-be-ex) SWE and I've worked on debugging / reverse engineering a lot of apps/games in my line of work (though, mostly on Android) so I've got experience here. It's just my hobby these days to actually use those skills in something that's actually relevant to me :)
now we just need to figure out how to change already gotten spirits to holo, or a way to make egg spirits holo as they come out, and we're good to go.
I've been out for a bit, I'll take a whack at this to see if it's possible.

leegao
Noobzor
Noobzor
Posts: 10
Joined: Wed Oct 04, 2023 9:04 pm
Reputation: 4

Re: [REQUEST] Moonstone Island

Post by leegao »

Jessen wrote:
Sun Oct 15, 2023 11:42 pm
now we just need to figure out how to change already gotten spirits to holo, or a way to make egg spirits holo as they come out, and we're good to go.
So this is what I figured out. If you want to change every spirit you have (both in your medallion and in your barn) shiny, you can run the following loop

Code: Select all

for (let i of runtime$jscomp$1._instancesByUid.values()) {
    if (i._objectType._jsPropName == "spiritsJSON") {
        console.log(i._objectType._jsPropName, i._sdkInst._data);
        for (let spirit of i._sdkInst._data.spirits) {
            spirit.isShiny = 1;
        }
        break;
    }
}
That said, to just turn your first spirit shiny, you can do just

Code: Select all

for (let i of runtime$jscomp$1._instancesByUid.values()) {
    if (i._objectType._jsPropName == "spiritsJSON") {
        console.log(i._objectType._jsPropName, i._sdkInst._data);
        i._sdkInst._data.spirits[0].isShiny = 1;
        break;
    }
}
You can also check out all of the other fields of `i._sdkInst._data.spirits[0]` to see if there's anything else interesting you'd like to modify.

Jessen
Expert Cheater
Expert Cheater
Posts: 220
Joined: Sat Mar 04, 2017 10:03 am
Reputation: 33

Re: [REQUEST] Moonstone Island

Post by Jessen »

leegao wrote:
Tue Oct 17, 2023 3:10 am

Code: Select all

for (let i of runtime$jscomp$1._instancesByUid.values()) {
    if (i._objectType._jsPropName == "spiritsJSON") {
        console.log(i._objectType._jsPropName, i._sdkInst._data);
        for (let spirit of i._sdkInst._data.spirits) {
            spirit.isShiny = 1;
        }
        break;
    }
}

Code: Select all

for (let i of runtime$jscomp$1._instancesByUid.values()) {
    if (i._objectType._jsPropName == "spiritsJSON") {
        console.log(i._objectType._jsPropName, i._sdkInst._data);
        i._sdkInst._data.spirits[0].isShiny = 1;
        break;
    }
}
works a perfect treat! I'll explore more and poke around when I can. If you see anything you feel should be looked at though, by all means have a little fun experimenting. I 'think' I know whats needed for egg fields. like items, it has a spot for data on whats 'in' the egg. Long as that's set, it can force the egg to be specifically anything.

Jessen
Expert Cheater
Expert Cheater
Posts: 220
Joined: Sat Mar 04, 2017 10:03 am
Reputation: 33

Re: [REQUEST] Moonstone Island

Post by Jessen »

i can't seem to figure out the right code for changing what an egg contains within it.

for eggs I can tell field 5 count for what the spirit is, but I can't figure out how to properly utilize that. writing this kind of code to input isn't my strong point.

DemiDemon
What is cheating?
What is cheating?
Posts: 4
Joined: Mon Sep 26, 2022 5:17 pm
Reputation: 0

Re: [REQUEST] Moonstone Island

Post by DemiDemon »

leegao wrote:
Wed Oct 04, 2023 9:40 pm
Hey folks,

I've been playing around with trying to RE this game a bit deeper. It turns out that it's pretty easy to do. It looks like the game was packaged up using NW.js. This means that there's a package.nw file in the game directory (a zip file, if you `file` it). Now according to [Link], you can actually extract this file into a folder also named `package.nw`, and the game will happily take it and continue to run out of that folder.

Now, `package.nw` contains all of the code/configuration for this game, which is then rendered through Chrome/NW as a WebGL game. Just going through this directory should help you figure out how to change item stats or trace through the code. However, if you're willing to use the Chrome devtools, you can actually change the game to start in debug mode, and give you a Chrome dev console to play around with the game internals.

To do this, change package.nw/package.json's chromium-args and remove the --disable-devtools argument. After this, launch the game, and press F12 to open the dev console.

It looks like this game is produced using the Construct 3 engine (I see a c3runtime.js), and the core game logic is obfuscated/minified in that file. There's some generic handlers in main.js, and there are a lot of json configs in the Data/ directory.
I did extract the file with nw.js but the package inside the folder only got couple of text and nothing else regarding info around the game mechanics and stuff, i only want to know info about how plants work and harvest time and all that could you upload the file or tell me what i did wrong?

rafpoop
Novice Cheater
Novice Cheater
Posts: 24
Joined: Sat Jul 18, 2020 10:56 pm
Reputation: 11

Re: [REQUEST] Moonstone Island

Post by rafpoop »

leegao wrote:
Tue Oct 17, 2023 3:10 am
just quoting u to ping you
If you're still around, the developer has lovingly patched all of my cheaty mods. Intentionally or not, I'm not sure. But I can no longer find the place to paste javascript loops from before in your older posts.

This one seems to be gone or possibly regenerated into different code I cannot find:

Code: Select all

a=>{const b=a._GetNode(0),c=a._GetNode(1),d=a._GetNode(2),e=a._GetNode(3);return()=>and(and(Math.round(b.ExpInstVar()*(c.ExpObject()/(d.ExpObject()-16))),"/"),e.ExpInstVar())}
Thank you for any help, also totally cool if you're bored of this too/don't respond!

noircc
What is cheating?
What is cheating?
Posts: 4
Joined: Mon Nov 06, 2023 10:02 am
Reputation: 3

Re: [REQUEST] Moonstone Island

Post by noircc »

Hello,

Game version : 1.0.1686 (Build.12320008)

This code :
a) The tavern now sells all eggs
b) The "Random Crafting Recipe" (sell by Workshop) option is no longer limited to 1 per day but is unlimited (99999)
c) All items from all sellers are now $1

Code: Select all

			if (i._objectType._jsPropName == "shopStockJSON") {
				// console.log(i._objectType._jsPropName, i._sdkInst._data);
				for (let profession in i._sdkInst._data) {
					if (i._sdkInst._data.hasOwnProperty(profession)) {
						if (profession == "Tavern") {
							let eggs = ["eggFire", "eggWater", "eggIce", "eggElectric", "eggEarth", "eggPoison", "eggPsychic", "eggDark"];
							for (let egg of eggs) {
								i._sdkInst._data[profession][egg] = {
									Quantity: 10,
									Price: 1
								};
							}
						}
						
						for (let key in i._sdkInst._data[profession]) {
							if (key === "randomCraftingRecipe") {
								if (i._sdkInst._data[profession][key].Quantity == 1) { i._sdkInst._data[profession][key].Quantity = 99999; }
							}
							if (typeof i._sdkInst._data[profession][key] === 'object') {
								if (i._sdkInst._data[profession][key].Price !== 1) { i._sdkInst._data[profession][key].Price = 1; }
							}
						}
					}
				}
				//break;
			} // fin shopStockJSON
[Link]


When you don't acquire eggs in the normal way, they are "unfertilized" and you end up with an earth spirit (default).
This code allows you to detect if an egg is “unfertilized” and “fertilize” it randomly.

Code: Select all

            			
			if (i._objectType._jsPropName == "inventoryArray" && i._sdkInst._arr && i._sdkInst._arr.length > 0) {		
				for (let j = 0; j <= 38; j++) {
					if ( i._sdkInst._arr[j][1][0].includes("egg") && !/[a-zA-Z]/.test(i._sdkInst._arr[j][2][0]) ) {
						let RandomSpirits;

					if (i._sdkInst._arr[j][1][0] === "eggEarth") { RandomSpirits = ["Ankylo", "Brickhouse", "Coolslime", "Dusty", "Fluffox", "Gemlin", "Hopstraw", "Longlog", "Mumbleweed", "Oaken", "Pappus", "Punchypot", "Womr"]; }
					if (i._sdkInst._arr[j][1][0] === "eggPoison") { RandomSpirits = ["Baebaeu", "Claudio", "Dropple", "Fishbo", "Flote", "Octopup", "Sandcrashle", "Snorcko", "Starsee", "Torble"]; }
					if (i._sdkInst._arr[j][1][0] === "eggWater") { RandomSpirits = ["Birdbrain", "Emoshroom", "Marsha", "Radlad", "Ribbite", "Snaplant", "Taddle", "Trunkle"]; }
					if (i._sdkInst._arr[j][1][0] === "eggElectric") { RandomSpirits = ["Armbot", "Bulbot", "Burgloon", "Capacibee", "Cumulo", "Sparky"]; }
					if (i._sdkInst._arr[j][1][0] === "eggFire") { RandomSpirits = ["Bonefire", "Carkey", "Flamane", "Flambit", "Lucerna", "Prikli", "Sheemp", "Sinjin"]; }
					if (i._sdkInst._arr[j][1][0] === "eggIce") { RandomSpirits = ["Bandicle", "Bonguin", "Sorbaton"]; }
					if (i._sdkInst._arr[j][1][0] === "eggPsychic") { RandomSpirits = ["Beardini", "Lookachoo", "Loonylid", "Magicat", "Minoot", "Mystislime", "Posho", "Rablit", "Taro"]; }
					if (i._sdkInst._arr[j][1][0] === "eggDark") { RandomSpirits = ["Arkeya", "Catsket", "Darkoffee", "Evileye", "Karyote", "Puppox", "Wolfbane"]; }

					if (RandomSpirits) {
						let randomIndex = Math.floor(Math.random() * RandomSpirits.length);
						let randomSpirit = RandomSpirits[randomIndex];
						
						// console.log("inventory test", randomSpirit);
						// console.log(i._objectType._jsPropName, i._sdkInst._arr);
						
						i._sdkInst._arr[j][2][0] = randomSpirit;
						}
					}
				}
			} // fin inventoryArray

This code, If your 1st spirit is at a level lower than 54, put all your spirits at level 55 + configure their stats

Code: Select all

     
			if (i._objectType._jsPropName == "spiritsJSON") {
				// console.log(i._objectType._jsPropName, i._sdkInst._data);
				if (i._sdkInst._data.spirits[0].Level < 54) {
					for (let spirit of i._sdkInst._data.spirits) {
						spirit.Level = 55;
						spirit.Vitality = 25;
						spirit.CurVitality = 25;
						spirit.Power = 25;
						spirit.CurPower = 25;
						spirit.Speed = 25;
						spirit.CurSpeed = 25;
						spirit.Armor = 25;
						spirit.MaxArmor = 25;
						spirit.CurArmor = 25;
						spirit.HP = 334;
						spirit.CurHP = 334;
						spirit.Vulnerabilities = "";
						spirit.XP = 174999.06199998225;
						spirit.CardUpgradePoints = 0;
						spirit.StatUpgradePoints = 0;
					}
				}
				// break;
			} // fin spiritsJSON
[Link]

DABhand
Cheater
Cheater
Posts: 30
Joined: Tue Dec 25, 2018 4:43 am
Reputation: 3

Re: [REQUEST] Moonstone Island

Post by DABhand »

If people are wondering about time with the latest patch

Search for

Code: Select all

multiply$jscomp$1(.375,b(c(subtract$jscomp$1(d.ExpObject("gameplay_day_length")
Change the .375 to say .032 for 10x longer, and so on. .000 will give you no time loss at all, but that will make the game difficult considering you might want to shop etc...

I am sure there is a guide here to enable the console, so when playing press F12 and search for the above coding and change the time on the fly, so if you are going into caves etc set it to .000 and when you want time to return to whatever speed you want set it that way, .375 is default.

Jessen
Expert Cheater
Expert Cheater
Posts: 220
Joined: Sat Mar 04, 2017 10:03 am
Reputation: 33

Re: [REQUEST] Moonstone Island

Post by Jessen »

noircc wrote:
Mon Nov 06, 2023 10:16 am
When you don't acquire eggs in the normal way, they are "unfertilized" and you end up with an earth spirit (default).
This code allows you to detect if an egg is “unfertilized” and “fertilize” it randomly.

Code: Select all

            			
			if (i._objectType._jsPropName == "inventoryArray" && i._sdkInst._arr && i._sdkInst._arr.length > 0) {		
				for (let j = 0; j <= 38; j++) {
					if ( i._sdkInst._arr[j][1][0].includes("egg") && !/[a-zA-Z]/.test(i._sdkInst._arr[j][2][0]) ) {
						let RandomSpirits;

					if (i._sdkInst._arr[j][1][0] === "eggEarth") { RandomSpirits = ["Ankylo", "Brickhouse", "Coolslime", "Dusty", "Fluffox", "Gemlin", "Hopstraw", "Longlog", "Mumbleweed", "Oaken", "Pappus", "Punchypot", "Womr"]; }
					if (i._sdkInst._arr[j][1][0] === "eggPoison") { RandomSpirits = ["Baebaeu", "Claudio", "Dropple", "Fishbo", "Flote", "Octopup", "Sandcrashle", "Snorcko", "Starsee", "Torble"]; }
					if (i._sdkInst._arr[j][1][0] === "eggWater") { RandomSpirits = ["Birdbrain", "Emoshroom", "Marsha", "Radlad", "Ribbite", "Snaplant", "Taddle", "Trunkle"]; }
					if (i._sdkInst._arr[j][1][0] === "eggElectric") { RandomSpirits = ["Armbot", "Bulbot", "Burgloon", "Capacibee", "Cumulo", "Sparky"]; }
					if (i._sdkInst._arr[j][1][0] === "eggFire") { RandomSpirits = ["Bonefire", "Carkey", "Flamane", "Flambit", "Lucerna", "Prikli", "Sheemp", "Sinjin"]; }
					if (i._sdkInst._arr[j][1][0] === "eggIce") { RandomSpirits = ["Bandicle", "Bonguin", "Sorbaton"]; }
					if (i._sdkInst._arr[j][1][0] === "eggPsychic") { RandomSpirits = ["Beardini", "Lookachoo", "Loonylid", "Magicat", "Minoot", "Mystislime", "Posho", "Rablit", "Taro"]; }
					if (i._sdkInst._arr[j][1][0] === "eggDark") { RandomSpirits = ["Arkeya", "Catsket", "Darkoffee", "Evileye", "Karyote", "Puppox", "Wolfbane"]; }

					if (RandomSpirits) {
						let randomIndex = Math.floor(Math.random() * RandomSpirits.length);
						let randomSpirit = RandomSpirits[randomIndex];
						
						// console.log("inventory test", randomSpirit);
						// console.log(i._objectType._jsPropName, i._sdkInst._arr);
						
						i._sdkInst._arr[j][2][0] = randomSpirit;
						}
					}
				}
			} // fin inventoryArray
I don't know if theres something wrong, but I can't get this code to work at all.

when I tried to use it I got:

Code: Select all

Uncaught ReferenceError: i is not defined
    at eval (eval at CheckActiveIdleTimeouts (c3runtime.js:1:1), <anonymous>:1:1)
    at CheckActiveIdleTimeouts (c3runtime.js:405:36)
eval @ VM597:1
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405

noircc
What is cheating?
What is cheating?
Posts: 4
Joined: Mon Nov 06, 2023 10:02 am
Reputation: 3

Re: [REQUEST] Moonstone Island

Post by noircc »

Jessen wrote:
Fri Nov 10, 2023 12:27 am
I don't know if theres something wrong, but I can't get this code to work at all.

when I tried to use it I got:

Code: Select all

Uncaught ReferenceError: i is not defined
    at eval (eval at CheckActiveIdleTimeouts (c3runtime.js:1:1), <anonymous>:1:1)
    at CheckActiveIdleTimeouts (c3runtime.js:405:36)
eval @ VM597:1
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
setTimeout (async)
CheckActiveIdleTimeouts @ c3runtime.js:405
Hello,
It tells you that the variable "i" is not defined. They are code before and after the code i've put (missing "for (let i..."), see post of leegao of Thu Oct 05, 2023 5:35 am : here.

Code: Select all

a=> {
    const b = a._GetNode(0)
      , c = a._GetNode(1)
      , d = a._GetNode(2)
      , e = a._GetNode(3);
    return ()=> {
	for (let i of runtime$jscomp$1._instancesByUid.values()) {
		
//code

	}
	return and(and(Math.round(b.ExpInstVar() * (c.ExpObject() / (d.ExpObject() - 16))), "/"), e.ExpInstVar());
    };
},

Jessen
Expert Cheater
Expert Cheater
Posts: 220
Joined: Sat Mar 04, 2017 10:03 am
Reputation: 33

Re: [REQUEST] Moonstone Island

Post by Jessen »

I don't really understand it that well so I'm not exactly sure what needs to be done.

MarshmallowChest
What is cheating?
What is cheating?
Posts: 3
Joined: Sat Nov 18, 2023 12:06 am
Reputation: 0

Re: [REQUEST] Moonstone Island

Post by MarshmallowChest »

I don't really know how y'all geniuses figure these things out, but with the recent update (11/16) there is no Runtime thread anymore and the

Code: Select all

runtime$jscomp$1._instancesByUid.values()
(specifically the runtime$jscomp$1 part) doesn't work anymore.

I have found that I can access the inventory array by using

Code: Select all

this._localRuntime._instancesByUid.get(16)
in the Main thread but it was easier to use the previously mentioned methods where you can reference the _jsPropName to do other things like modify spirit stats and cards and such.

Since I like to tinker, before this last update, I was playing with loops and things to add items to free spaces in the inventory instead of some of the other posts I say where they were specifying a slot and that would just overwrite whatever was there... and now with the update I fell down the rabbit hole of trying to find the inventory array again just so I could have my 1,000 stack of bridges again, lol.

Shimmerstrike
What is cheating?
What is cheating?
Posts: 1
Joined: Thu Nov 23, 2023 12:12 pm
Reputation: 0

Re: [REQUEST] Moonstone Island

Post by Shimmerstrike »

I have managed to get the Chrome Developer Console to pop up for the game by pressing F12 while in-game. Could anyone help me figure out how to add Moonstone quality Sparkstar and Cinderfish? I need 1 of each.

Post Reply

Who is online

Users browsing this forum: kisokii, LIOBOSS, Zeroroom