Page 4 of 7

Re: [REQUEST] Moonstone Island

Posted: Thu Oct 05, 2023 7:17 am
by Jessen
leegao wrote:
Thu Oct 05, 2023 3:35 am
You could also add/change the first (or nth) item of your inventory with this loop (I haven't actually tested this)
I tried this and it didn't work. Wanted to try and give myself more psychic eggs to speed up my time.

Re: [REQUEST] Moonstone Island

Posted: Thu Oct 05, 2023 7:43 am
by tripledj21
I have tried to modify my time speed and stamina by modifying the c3runtine.js and nothing seems to be happening.

Re: [REQUEST] Moonstone Island

Posted: Thu Oct 05, 2023 8:19 pm
by Jessen
anyone find a way to increase the chance of shiny holo spirits?

Re: [REQUEST] Moonstone Island

Posted: Fri Oct 06, 2023 1:36 am
by hudell
tripledj21 wrote:
Thu Oct 05, 2023 7:43 am
I have tried to modify my time speed and stamina by modifying the c3runtine.js and nothing seems to be happening.
If you see no change at all in the game then maybe the original package.nw file is still there? You need to rename it to something else so when the game looks for 'package.nw' it should only find the folder you modified.

Re: [REQUEST] Moonstone Island

Posted: Fri Oct 06, 2023 2:07 am
by leegao
Jessen wrote:
Thu Oct 05, 2023 7:17 am
leegao wrote:
Thu Oct 05, 2023 3:35 am
You could also add/change the first (or nth) item of your inventory with this loop (I haven't actually tested this)
I tried this and it didn't work. Wanted to try and give myself more psychic eggs to speed up my time.
It turns out there was another structure that actually tracked the inventory (the one I saw was only used to render the Inventory Container slots' UI)

Here's one that sets the last item in your inventory (index 38) to 99 moonstones

Code: Select all

         for (let i of runtime$jscomp$1._instancesByUid.values()) {
             if (i._objectType._jsPropName == "inventoryArray" 
                 && i._sdkInst._arr
                 && i._sdkInst._arr.length > 0) {
                     i._sdkInst._arr[38][0][0] = 99; // count of items
                     i._sdkInst._arr[38][1][0] = "moonstone"; // type of item, check out itemArray.json
                     break;
             }
         }
you can add this loop to the same function I posted above, and it'll perpetually set the last item in the inventory to 99 moonstones (even if you move the stack away, it'll immediately give you more).

If you remove the "moonstone" part (and maybe do a check for i._sdkInst._arr[38][0][0] > 0), you can also use this to easily 99x any item (by just putting it in the last slot of your inventory)


Note that I'm also on `1.0.1674.1` (I think this might be an older version now). That said, the main state variables (e.g. runtime$jscomp$1) shouldn't change

Re: [REQUEST] Moonstone Island

Posted: Fri Oct 06, 2023 4:46 am
by Jessen
leegao wrote:
Thu Oct 05, 2023 3:35 am

Code: Select all

         for (let i of runtime$jscomp$1._instancesByUid.values()) {
             if (i._objectType._jsPropName == "inventoryArray" 
                 && i._sdkInst._arr
                 && i._sdkInst._arr.length > 0) {
                     i._sdkInst._arr[38][0][0] = 99; // count of items
                     i._sdkInst._arr[38][1][0] = "moonstone"; // type of item, check out itemArray.json
                     break;
             }
         }
now THIS one works just right. Thanks =3

now if only we can find a way to force holographic spirits, or change ones we have holographic.

Re: [REQUEST] Moonstone Island

Posted: Fri Oct 06, 2023 7:49 pm
by fostot
Is there a way to freeze the fight energy you have so that you can do all of your cards until you decide to end turn? or better yet is there a way to freeze your spirits hp so they just dont die? finding it impossible on some of these dungeons to get by some of these guardians.

Re: [REQUEST] Moonstone Island

Posted: Sat Oct 07, 2023 12:36 am
by leegao
fostot wrote:
Fri Oct 06, 2023 7:49 pm
Is there a way to freeze the fight energy you have so that you can do all of your cards until you decide to end turn? or better yet is there a way to freeze your spirits hp so they just dont die? finding it impossible on some of these dungeons to get by some of these guardians.
Unfortunately I'm out for a bit on vacation. Here's what I remember to change all energy requirements for every card to 0:

Code: Select all

         for (let i of runtime$jscomp$1._instancesByUid.values()) {
             if (i._objectType._jsPropName == "card") {
                     i._instVarValues[4] = 0; // 4 or maybe 5 corresponds to the energy spend of the card
             }
         }
You'll need to add this into one of the (several possible) functions that are triggered multiple times during a battle. The one I used was the function that returned the name of the audio file to use when the user hovers over a card.

You can try adding console.log to a couple of the functions that just return a single constant string related to battle/cards using the Chrome dev console.

Similarly, you can also pause here and look for instances (in runtime$jscomp$1._instancesByUid.values()) that correspond to your spirits and change the associated HP or status values. The _objectType._instVars array contains plaintext descriptions of all of the _instVarValues, so that'll be helpful to figure out what you need to change.

Jessen wrote:
Fri Oct 06, 2023 4:46 am
now if only we can find a way to force holographic spirits, or change ones we have holographic.

I did a quick attempt before I had to go pack last night and couldn't zero in on what needs to be changed to boost holographic chances, I'll take another look when I'm back.

BUT I think changing spirits to be holographic may be easier to do/search for. Here's how I would do it:

1. Go into your spirit medallion (so your spirits are loaded), if this doesn't work, maybe try going into their stats
2. In the dev console, pause the thread for the Runtime thread
3. Do a search of all loaded instances (see below)
4. Check out all of the logged instances (including their _objectType.instVars to see what the var values correspond to) and see if you can find something that's related to the spirit stats
5. Change a couple of them, until you get the desired results

Code: Select all

         for (let i of runtime$jscomp$1._instancesByUid.values()) {
             console.log(i._objectType._jsPropName, i._instVarValues, i);
         }

Re: [REQUEST] Moonstone Island

Posted: Sat Oct 07, 2023 1:33 pm
by rafpoop
leegao wrote:
Wed Oct 04, 2023 9:40 pm
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).
Thank you for figuring this out, I was going to mess around with my in-game time speed but I noticed all the sprites are also sitting right there. I started modding my game to get rid of the eye design on all the characters dialogue portraits, game is already starting to look so much better. The game happily takes new sprites if you put an edited sheet back, here's me testing a line on a random sprite to check if it was working. Appreciate it!

Image

This also appears to be an easy way to change all your in-game music if you want different background music. Haven't tested that yet though.

Re: [REQUEST] Moonstone Island

Posted: Sun Oct 08, 2023 1:47 am
by leegao
Ooooh, making game mods w/ custom characters/dialogues would be really cool!

Re: [REQUEST] Moonstone Island

Posted: Sun Oct 08, 2023 2:09 pm
by rafpoop
leegao wrote:
Sun Oct 08, 2023 1:47 am
Ooooh, making game mods w/ custom characters/dialogues would be really cool!
[Link]

I made a guide on the subreddit to hopefully get the word out to any modders who are curious about this game!

Re: [REQUEST] Moonstone Island

Posted: Sun Oct 08, 2023 2:27 pm
by DxDW
leegao wrote:
Thu Oct 05, 2023 3:35 am
And to pin your stamina, do the same thing with c3runtime.js

Search for this string (it may have changed in an update)

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())}
and replace it with

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()) {
            if (i._objectType._jsPropName == "Moon") {
                i._instVarValues[15] = i._instVarValues[14]; // 15 = current stamina, 14 = max? stamina
                break;
            }
        }
        return and(and(Math.round(b.ExpInstVar() * (c.ExpObject() / (d.ExpObject() - 16))), "/"), e.ExpInstVar());
    };
}
If you'd rather do this directly in the dev console, then here's what you can do:

1. Open the dev console
2. Go to sources
3. In the Threads tab (on the right side), click on the "Runtime" thread and suspend it's execution (pause button)
4. Go to console, and type in the following code
5. Continue

Code: Select all

        for (let i of runtime$jscomp$1._instancesByUid.values()) {
            if (i._objectType._jsPropName == "Moon") {
                i._instVarValues[15] = i._instVarValues[14]; // 15 = current stamina, 14 = max? stamina
                break;
            }
        }
So I am inputting the code via DevTools, it is replenishing my Stamina, but it is not Pinning it (Stopping it from depleting?)

leegao wrote:
Fri Oct 06, 2023 2:07 am
Jessen wrote:
Thu Oct 05, 2023 7:17 am
leegao wrote:
Thu Oct 05, 2023 3:35 am
You could also add/change the first (or nth) item of your inventory with this loop (I haven't actually tested this)
I tried this and it didn't work. Wanted to try and give myself more psychic eggs to speed up my time.
It turns out there was another structure that actually tracked the inventory (the one I saw was only used to render the Inventory Container slots' UI)

Here's one that sets the last item in your inventory (index 38) to 99 moonstones

Code: Select all

 for (let i of runtime$jscomp$1._instancesByUid.values()) {
 if (i._objectType._jsPropName == "inventoryArray" 
 && i._sdkInst._arr
 && i._sdkInst._arr.length > 0) {
 i._sdkInst._arr[38][0][0] = 99; // count of items
 i._sdkInst._arr[38][1][0] = "moonstone"; // type of item, check out itemArray.json
 break;
 }
 }
you can add this loop to the same function I posted above, and it'll perpetually set the last item in the inventory to 99 moonstones (even if you move the stack away, it'll immediately give you more).

If you remove the "moonstone" part (and maybe do a check for i._sdkInst._arr[38][0][0] > 0), you can also use this to easily 99x any item (by just putting it in the last slot of your inventory)


Note that I'm also on `1.0.1674.1` (I think this might be an older version now). That said, the main state variables (e.g. runtime$jscomp$1) shouldn't change
I also added this code and it doesn't seem to loop, I get 1 stack of 99 once then I have to input the code again whilst the RunTime is Paused.

Re: [REQUEST] Moonstone Island

Posted: Sun Oct 08, 2023 10:41 pm
by Jessen
leegao wrote:
Sat Oct 07, 2023 12:36 am
I did a quick attempt before I had to go pack last night and couldn't zero in on what needs to be changed to boost holographic chances, I'll take another look when I'm back.

BUT I think changing spirits to be holographic may be easier to do/search for. Here's how I would do it:

1. Go into your spirit medallion (so your spirits are loaded), if this doesn't work, maybe try going into their stats
2. In the dev console, pause the thread for the Runtime thread
3. Do a search of all loaded instances (see below)
4. Check out all of the logged instances (including their _objectType.instVars to see what the var values correspond to) and see if you can find something that's related to the spirit stats
5. Change a couple of them, until you get the desired results

Code: Select all

         for (let i of runtime$jscomp$1._instancesByUid.values()) {
             console.log(i._objectType._jsPropName, i._instVarValues, i);
         }
I'm not sure what i'm looking for, so this can wait a bit for a while till you're back from vacay.

Re: [REQUEST] Moonstone Island

Posted: Mon Oct 09, 2023 12:40 pm
by DxDW
So I noticed something when injecting items, if you do food/crops, you wont get the effect of the item, for example Stonefruits', +50 Stamina, or Magic Mushrooms' +100 Stamina

Anyone else had the same issue, if so anyone found a workaround/solve?

Re: [REQUEST] Moonstone Island

Posted: Tue Oct 10, 2023 1:41 am
by leegao
DxDW wrote:
Mon Oct 09, 2023 12:40 pm
So I noticed something when injecting items, if you do food/crops, you wont get the effect of the item, for example Stonefruits', +50 Stamina, or Magic Mushrooms' +100 Stamina

Anyone else had the same issue, if so anyone found a workaround/solve?
So to create new items, you actually have to/get to specify the effects you get from the consumable.

To do this, you'll need to change the 3rd (index 2) item in the sdkInst arr.

For example, here's a way to turn your stack of stoneFruitCrops to be extra OP - not only will it grant you 500 stamina when consumed, but it'll give your spirit +20 of each stat, as well as heal them +100.

Code: Select all

        for (let i of runtime$jscomp$1._instancesByUid.values()) {
            if (i._objectType._jsPropName == "inventoryArray" 
                && i._sdkInst._arr
                && i._sdkInst._arr.length > 0) {
                     i._sdkInst._arr[38][0][0] = 99;
                     i._sdkInst._arr[38][1][0] = 'stoneFruitCrop';
                     i._sdkInst._arr[38][2][0] = 'Stamina:500,Speed:20,Vitality:20,Power:20,Armor:20,Hp:100';
                    break;
            }
        }
You can also do something similar with flax that has the opposite + negative effect on your enemies (including +200 tame)

Code: Select all

        for (let i of runtime$jscomp$1._instancesByUid.values()) {
            if (i._objectType._jsPropName == "inventoryArray" 
                && i._sdkInst._arr
                && i._sdkInst._arr.length > 0) {
                     i._sdkInst._arr[38][0][0] = 99;
                     i._sdkInst._arr[38][1][0] = 'flaxCrop';
                     i._sdkInst._arr[38][2][0] = 'Stamina:500,Speed:-20,Vitality:-20,Power:-20,Armor:-20,Tame:200';
                    break;
            }
        }